QgsGrassShell::QgsGrassShell( QgsGrassTools *tools, QTabWidget *parent, const char *name ) : QFrame( parent ), mTools( tools ), mTabWidget( parent ) { Q_UNUSED( name ); QVBoxLayout *mainLayout = new QVBoxLayout( this ); QTermWidget *mTerminal = new QTermWidget( 0, this ); initTerminal( mTerminal ); QShortcut *pasteShortcut = new QShortcut( QKeySequence( tr( "Ctrl+Shift+V" ) ), mTerminal ); QShortcut *copyShortcut = new QShortcut( QKeySequence( tr( "Ctrl+Shift+C" ) ), mTerminal ); mainLayout->addWidget( mTerminal ); setLayout( mainLayout ); connect( mTerminal, SIGNAL( finished() ), this, SLOT( closeShell() ) ); connect( pasteShortcut, SIGNAL( activated() ), mTerminal, SLOT( pasteClipboard() ) ); connect( copyShortcut, SIGNAL( activated() ), mTerminal, SLOT( copyClipboard() ) ); // TODO: find a better way to manage the lockfile. // Locking should not be done here, a mapset is either locked by GRASS if QGIS is started from GRASS or it is created by QgsGrass::openMapset /* mLockFilename = QgsGrass::lockFilePath(); QFile::remove( mLockFilename + ".qgis" ); if ( !QFile::rename( mLockFilename, mLockFilename + ".qgis" ) ) { QMessageBox::warning( this, tr( "Warning" ), tr( "Cannot rename the lock file %1" ).arg( mLockFilename ) ); } */ mTerminal->setSize( 80, 25 ); mTerminal->setColorScheme( COLOR_SCHEME_BLACK_ON_LIGHT_YELLOW ); mTerminal->startShellProgram(); mTerminal->setFocus( Qt::MouseFocusReason ); }
//paste the keys we have in each stored clipboard using the specified parameters. //will paste the default layer and each animlayer MStatus atomLayerClipboard::pasteKeys(const MTime& startTime, const MTime& endTime, float startUnitless, float endUnitless,const MString &pasteFlags) { MString animLayerName; //empty first time for the first default empty layer bool oneWasGood = pasteClipboard(fEmptyLayerArray, startTime,endTime, startUnitless, endUnitless,pasteFlags,animLayerName); //now go through and do each one that's in an animation layer for(ArrayMap::iterator p = fArray.begin(); p!= fArray.end(); ++p) { if(p->second) //double check but should not be NULL { animLayerName= MString(p->first.c_str()); bool good = pasteClipboard(*(p->second), startTime,endTime, startUnitless, endUnitless,pasteFlags,animLayerName); if(good == true) oneWasGood = true; } } //if not one was good then something failed. if(oneWasGood==false) { MStatus stringStat; MString msg = MStringResource::getString(kClipboardFailure, stringStat); MGlobal::displayError(msg); } return (MS::kSuccess); }
void TermTab::handleTermContextMenu (const QPoint& point) { QMenu menu; AddUrlActions (menu, point); const auto& selected = Term_->selectedText (); AddLocalFileActions (menu, selected); const auto itm = CoreProxy_->GetIconThemeManager (); const auto copyAct = menu.addAction (itm->GetIcon ("edit-copy"), tr ("Copy selected text"), Term_, SLOT (copyClipboard ())); copyAct->setEnabled (!Term_->selectedText ().isEmpty ()); const auto pasteAct = menu.addAction (itm->GetIcon ("edit-paste"), tr ("Paste from clipboard"), Term_, SLOT (pasteClipboard ())); pasteAct->setEnabled (!QApplication::clipboard ()->text (QClipboard::Clipboard).isEmpty ()); new Util::StdDataFilterMenuCreator { selected, CoreProxy_->GetEntityManager (), &menu }; menu.exec (Term_->mapToGlobal (point)); }
void TermTab::SetupShortcuts (Util::ShortcutManager *manager) { auto copySc = new QShortcut { { "Ctrl+Shift+C" }, Term_, SLOT (copyClipboard ()) }; manager->RegisterShortcut ("org.LeechCraft.Eleeminator.Copy", {}, copySc); auto pasteSc = new QShortcut { { "Ctrl+Shift+V" }, Term_, SLOT (pasteClipboard ()) }; manager->RegisterShortcut ("org.LeechCraft.Eleeminator.Paste", {}, pasteSc); auto closeSc = new QShortcut { QString { "Ctrl+Shift+W" }, Term_ }; new Util::SlotClosure<Util::NoDeletePolicy> { [this] { Remove (); }, closeSc, SIGNAL (activated ()), this }; manager->RegisterShortcut ("org.LeechCraft.Eleeminator.Close", {}, closeSc); }
void NodeGraph::showMenu(const QPoint & pos) { _imp->_menu->clear(); QAction* findAction = new ActionWithShortcut(kShortcutGroupNodegraph, kShortcutActionGraphFindNode, kShortcutActionGraphFindNodeLabel, _imp->_menu); _imp->_menu->addAction(findAction); _imp->_menu->addSeparator(); //QFont font(appFont,appFontSize); Menu* editMenu = new Menu(tr("Edit"), _imp->_menu); //editMenu->setFont(font); _imp->_menu->addAction( editMenu->menuAction() ); QAction* copyAction = new ActionWithShortcut(kShortcutGroupNodegraph, kShortcutActionGraphCopy, kShortcutActionGraphCopyLabel, editMenu); QObject::connect( copyAction, SIGNAL(triggered()), this, SLOT(copySelectedNodes()) ); editMenu->addAction(copyAction); QAction* cutAction = new ActionWithShortcut(kShortcutGroupNodegraph, kShortcutActionGraphCut, kShortcutActionGraphCutLabel, editMenu); QObject::connect( cutAction, SIGNAL(triggered()), this, SLOT(cutSelectedNodes()) ); editMenu->addAction(cutAction); QAction* pasteAction = new ActionWithShortcut(kShortcutGroupNodegraph, kShortcutActionGraphPaste, kShortcutActionGraphPasteLabel, editMenu); bool cbEnabled = false; { QClipboard* clipboard = QApplication::clipboard(); const QMimeData* data = clipboard->mimeData(); if (data && data->hasFormat(QLatin1String("text/plain"))) { cbEnabled = true; } } pasteAction->setEnabled(cbEnabled); editMenu->addAction(pasteAction); QAction* deleteAction = new ActionWithShortcut(kShortcutGroupNodegraph, kShortcutActionGraphRemoveNodes, kShortcutActionGraphRemoveNodesLabel, editMenu); QObject::connect( deleteAction, SIGNAL(triggered()), this, SLOT(deleteSelection()) ); editMenu->addAction(deleteAction); QAction* renameAction = new ActionWithShortcut(kShortcutGroupNodegraph, kShortcutActionGraphRenameNode, kShortcutActionGraphRenameNodeLabel, editMenu); QObject::connect( renameAction, SIGNAL(triggered()), this, SLOT(renameNode()) ); editMenu->addAction(renameAction); QAction* duplicateAction = new ActionWithShortcut(kShortcutGroupNodegraph, kShortcutActionGraphDuplicate, kShortcutActionGraphDuplicateLabel, editMenu); editMenu->addAction(duplicateAction); QAction* cloneAction = new ActionWithShortcut(kShortcutGroupNodegraph, kShortcutActionGraphClone, kShortcutActionGraphCloneLabel, editMenu); editMenu->addAction(cloneAction); QAction* decloneAction = new ActionWithShortcut(kShortcutGroupNodegraph, kShortcutActionGraphDeclone, kShortcutActionGraphDecloneLabel, editMenu); QObject::connect( decloneAction, SIGNAL(triggered()), this, SLOT(decloneSelectedNodes()) ); editMenu->addAction(decloneAction); QAction* switchInputs = new ActionWithShortcut(kShortcutGroupNodegraph, kShortcutActionGraphExtractNode, kShortcutActionGraphExtractNodeLabel, editMenu); QObject::connect( switchInputs, SIGNAL(triggered()), this, SLOT(extractSelectedNode()) ); editMenu->addAction(switchInputs); QAction* extractNode = new ActionWithShortcut(kShortcutGroupNodegraph, kShortcutActionGraphSwitchInputs, kShortcutActionGraphSwitchInputsLabel, editMenu); QObject::connect( extractNode, SIGNAL(triggered()), this, SLOT(switchInputs1and2ForSelectedNodes()) ); editMenu->addAction(extractNode); QAction* disableNodes = new ActionWithShortcut(kShortcutGroupNodegraph, kShortcutActionGraphDisableNodes, kShortcutActionGraphDisableNodesLabel, editMenu); QObject::connect( disableNodes, SIGNAL(triggered()), this, SLOT(toggleSelectedNodesEnabled()) ); editMenu->addAction(disableNodes); QAction* groupFromSel = new ActionWithShortcut(kShortcutGroupNodegraph, kShortcutActionGraphMakeGroup, kShortcutActionGraphMakeGroupLabel, editMenu); QObject::connect( groupFromSel, SIGNAL(triggered()), this, SLOT(createGroupFromSelection()) ); editMenu->addAction(groupFromSel); QAction* expandGroup = new ActionWithShortcut(kShortcutGroupNodegraph, kShortcutActionGraphExpandGroup, kShortcutActionGraphExpandGroupLabel, editMenu); QObject::connect( expandGroup, SIGNAL(triggered()), this, SLOT(expandSelectedGroups()) ); editMenu->addAction(expandGroup); QAction* displayCacheInfoAction = new ActionWithShortcut(kShortcutGroupNodegraph, kShortcutActionGraphShowCacheSize, kShortcutActionGraphShowCacheSizeLabel, _imp->_menu); displayCacheInfoAction->setCheckable(true); displayCacheInfoAction->setChecked( _imp->_cacheSizeText->isVisible() ); QObject::connect( displayCacheInfoAction, SIGNAL(triggered()), this, SLOT(toggleCacheInfo()) ); _imp->_menu->addAction(displayCacheInfoAction); NodesGuiList selectedNodes = getSelectedNodes(); if ( !selectedNodes.empty() ) { QAction* turnOffPreviewAction = new ActionWithShortcut(kShortcutGroupNodegraph, kShortcutActionGraphTogglePreview, kShortcutActionGraphTogglePreviewLabel, _imp->_menu); turnOffPreviewAction->setCheckable(true); turnOffPreviewAction->setChecked(false); QObject::connect( turnOffPreviewAction, SIGNAL(triggered()), this, SLOT(togglePreviewsForSelectedNodes()) ); _imp->_menu->addAction(turnOffPreviewAction); if (selectedNodes.size() == 1) { QAction* openNodePanelAction = new ActionWithShortcut(kShortcutGroupNodegraph, kShortcutActionGraphOpenNodePanel, kShortcutActionGraphOpenNodePanelLabel, _imp->_menu); openNodePanelAction->setCheckable(true); openNodePanelAction->setChecked(false); QObject::connect( openNodePanelAction, SIGNAL(triggered()), this, SLOT(showSelectedNodeSettingsPanel()) ); _imp->_menu->addAction(openNodePanelAction); } } QAction* autoHideInputs = new ActionWithShortcut(kShortcutGroupNodegraph, kShortcutActionGraphAutoHideInputs, kShortcutActionGraphAutoHideInputsLabel, _imp->_menu); autoHideInputs->setCheckable(true); autoHideInputs->setChecked( appPTR->getCurrentSettings()->areOptionalInputsAutoHidden() ); QObject::connect( autoHideInputs, SIGNAL(triggered()), this, SLOT(toggleAutoHideInputs()) ); _imp->_menu->addAction(autoHideInputs); QAction* hideInputs = new ActionWithShortcut(kShortcutGroupNodegraph, kShortcutActionGraphHideInputs, kShortcutActionGraphHideInputsLabel, _imp->_menu); hideInputs->setCheckable(true); bool hideInputsVal = false; if ( !selectedNodes.empty() ) { hideInputsVal = selectedNodes.front()->getNode()->getEffectInstance()->getHideInputsKnobValue(); } hideInputs->setChecked(hideInputsVal); QObject::connect( hideInputs, SIGNAL(triggered()), this, SLOT(toggleHideInputs()) ); _imp->_menu->addAction(hideInputs); QAction* knobLinks = new ActionWithShortcut(kShortcutGroupNodegraph, kShortcutActionGraphShowExpressions, kShortcutActionGraphShowExpressionsLabel, _imp->_menu); knobLinks->setCheckable(true); knobLinks->setChecked( areKnobLinksVisible() ); QObject::connect( knobLinks, SIGNAL(triggered()), this, SLOT(toggleKnobLinksVisible()) ); _imp->_menu->addAction(knobLinks); QAction* autoPreview = new ActionWithShortcut(kShortcutGroupNodegraph, kShortcutActionGraphToggleAutoPreview, kShortcutActionGraphToggleAutoPreviewLabel, _imp->_menu); autoPreview->setCheckable(true); autoPreview->setChecked( getGui()->getApp()->getProject()->isAutoPreviewEnabled() ); QObject::connect( autoPreview, SIGNAL(triggered()), this, SLOT(toggleAutoPreview()) ); QObject::connect( getGui()->getApp()->getProject().get(), SIGNAL(autoPreviewChanged(bool)), autoPreview, SLOT(setChecked(bool)) ); _imp->_menu->addAction(autoPreview); QAction* autoTurbo = new ActionWithShortcut(kShortcutGroupNodegraph, kShortcutActionGraphToggleAutoTurbo, kShortcutActionGraphToggleAutoTurboLabel, _imp->_menu); autoTurbo->setCheckable(true); autoTurbo->setChecked( appPTR->getCurrentSettings()->isAutoTurboEnabled() ); QObject::connect( autoTurbo, SIGNAL(triggered()), this, SLOT(toggleAutoTurbo()) ); _imp->_menu->addAction(autoTurbo); QAction* forceRefreshPreviews = new ActionWithShortcut(kShortcutGroupNodegraph, kShortcutActionGraphForcePreview, kShortcutActionGraphForcePreviewLabel, _imp->_menu); QObject::connect( forceRefreshPreviews, SIGNAL(triggered()), this, SLOT(forceRefreshAllPreviews()) ); _imp->_menu->addAction(forceRefreshPreviews); QAction* frameAllNodes = new ActionWithShortcut(kShortcutGroupNodegraph, kShortcutActionGraphFrameNodes, kShortcutActionGraphFrameNodesLabel, _imp->_menu); QObject::connect( frameAllNodes, SIGNAL(triggered()), this, SLOT(centerOnAllNodes()) ); _imp->_menu->addAction(frameAllNodes); _imp->_menu->addSeparator(); std::list<ToolButton*> orederedToolButtons = getGui()->getToolButtonsOrdered(); for (std::list<ToolButton*>::iterator it = orederedToolButtons.begin(); it != orederedToolButtons.end(); ++it) { (*it)->getMenu()->setIcon( (*it)->getMenuIcon() ); _imp->_menu->addAction( (*it)->getMenu()->menuAction() ); } QAction* ret = _imp->_menu->exec(pos); if (ret == findAction) { popFindDialog(); } else if (ret == duplicateAction) { QRectF rect = visibleSceneRect(); duplicateSelectedNodes( rect.center() ); } else if (ret == cloneAction) { QRectF rect = visibleSceneRect(); cloneSelectedNodes( rect.center() ); } else if (ret == pasteAction) { QRectF rect = visibleSceneRect(); pasteClipboard( rect.center() ); } } // NodeGraph::showMenu
TermWidgetImpl::TermWidgetImpl(const QString & wdir, const QString & shell, QWidget * parent) : QTermWidget(0, parent) { TermWidgetCount++; QString name("TermWidget_%1"); setObjectName(name.arg(TermWidgetCount)); setFlowControlEnabled(FLOW_CONTROL_ENABLED); setFlowControlWarningEnabled(FLOW_CONTROL_WARNING_ENABLED); propertiesChanged(); setHistorySize(5000); if (!wdir.isNull()) setWorkingDirectory(wdir); if (shell.isNull()) { if (!Properties::Instance()->shell.isNull()) setShellProgram(Properties::Instance()->shell); } else { qDebug() << "Settings custom shell program:" << shell; QStringList parts = shell.split(QRegExp("\\s+"), QString::SkipEmptyParts); qDebug() << parts; setShellProgram(parts.at(0)); parts.removeAt(0); if (parts.count()) setArgs(parts); } setMotionAfterPasting(Properties::Instance()->m_motionAfterPaste); actionMap[COPY_SELECTION] = new QAction(QIcon(":/icons/edit-copy.png"), tr(COPY_SELECTION), this); connect(actionMap[COPY_SELECTION], SIGNAL(triggered()), this, SLOT(copyClipboard())); addAction(actionMap[COPY_SELECTION]); actionMap[PASTE_CLIPBOARD] = new QAction(QIcon(":/icons/edit-paste.png"), tr(PASTE_CLIPBOARD), this); connect(actionMap[PASTE_CLIPBOARD], SIGNAL(triggered()), this, SLOT(pasteClipboard())); addAction(actionMap[PASTE_CLIPBOARD]); actionMap[PASTE_SELECTION] = new QAction(QIcon(":/icons/edit-paste.png"), tr(PASTE_SELECTION), this); connect(actionMap[PASTE_SELECTION], SIGNAL(triggered()), this, SLOT(pasteSelection())); addAction(actionMap[PASTE_SELECTION]); actionMap[ZOOM_IN] = new QAction(QIcon(":/icons/zoom-in.png"), tr(ZOOM_IN), this); connect(actionMap[ZOOM_IN], SIGNAL(triggered()), this, SLOT(zoomIn())); addAction(actionMap[ZOOM_IN]); actionMap[ZOOM_OUT] = new QAction(QIcon(":/icons/zoom-out.png"), tr(ZOOM_OUT), this); connect(actionMap[ZOOM_OUT], SIGNAL(triggered()), this, SLOT(zoomOut())); addAction(actionMap[ZOOM_OUT]); actionMap[ZOOM_RESET] = new QAction(QIcon(":/icons/zoom-out.png"), tr(ZOOM_RESET), this); connect(actionMap[ZOOM_RESET], SIGNAL(triggered()), this, SLOT(zoomReset())); addAction(actionMap[ZOOM_RESET]); QAction *act = new QAction(this); act->setSeparator(true); addAction(act); actionMap[CLEAR_TERMINAL] = new QAction(tr(CLEAR_TERMINAL), this); connect(actionMap[CLEAR_TERMINAL], SIGNAL(triggered()), this, SLOT(clear())); addAction(actionMap[CLEAR_TERMINAL]); actionMap[SPLIT_HORIZONTAL] = new QAction(tr(SPLIT_HORIZONTAL), this); connect(actionMap[SPLIT_HORIZONTAL], SIGNAL(triggered()), this, SLOT(act_splitHorizontal())); addAction(actionMap[SPLIT_HORIZONTAL]); actionMap[SPLIT_VERTICAL] = new QAction(tr(SPLIT_VERTICAL), this); connect(actionMap[SPLIT_VERTICAL], SIGNAL(triggered()), this, SLOT(act_splitVertical())); addAction(actionMap[SPLIT_VERTICAL]); actionMap[SUB_COLLAPSE] = new QAction(tr(SUB_COLLAPSE), this); connect(actionMap[SUB_COLLAPSE], SIGNAL(triggered()), this, SLOT(act_splitCollapse())); addAction(actionMap[SUB_COLLAPSE]); //act = new QAction(this); //act->setSeparator(true); //addAction(act); // //act = new QAction(tr("&Rename session..."), this); //act->setShortcut(Properties::Instance()->shortcuts[RENAME_SESSION]); //connect(act, SIGNAL(triggered()), this, SIGNAL(renameSession())); //addAction(act); setContextMenuPolicy(Qt::CustomContextMenu); connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(customContextMenuCall(const QPoint &))); updateShortcuts(); //setKeyBindings("linux"); startShellProgram(); }
void LIB_EDIT_FRAME::HandleBlockPlace( wxDC* DC ) { BLOCK_SELECTOR* block = &GetScreen()->m_BlockLocate; wxPoint pt; if( !m_canvas->IsMouseCaptured() ) { DisplayError( this, wxT( "HandleBlockPLace : m_mouseCaptureCallback = NULL" ) ); } block->SetState( STATE_BLOCK_STOP ); switch( block->GetCommand() ) { case BLOCK_IDLE: break; case BLOCK_DRAG: // Drag case BLOCK_DRAG_ITEM: case BLOCK_MOVE: // Move case BLOCK_DUPLICATE: // Duplicate if( GetCurPart() && !block->AppendUndo() ) SaveCopyInUndoList( GetCurPart() ); pt = block->GetMoveVector(); if( GetCurPart() ) BlockMoveSelectedItems( pt, GetCurPart(), block ); block->ClearItemsList(); break; case BLOCK_PASTE: // Paste (recopy the last block saved) if( GetCurPart() ) SaveCopyInUndoList( GetCurPart() ); pt = block->GetMoveVector(); pasteClipboard( pt ); block->ClearItemsList(); break; case BLOCK_ZOOM: // Handled by HandleBlockEnd case BLOCK_DELETE: case BLOCK_COPY: case BLOCK_ABORT: default: break; } RebuildView(); GetCanvas()->Refresh(); OnModify(); block->SetState( STATE_NO_BLOCK ); block->SetCommand( BLOCK_IDLE ); GetScreen()->SetCurItem( NULL ); m_canvas->EndMouseCapture( GetToolId(), GetGalCanvas()->GetCurrentCursor(), wxEmptyString, false ); GetCanvas()->GetView()->ClearPreview(); GetCanvas()->GetView()->ClearHiddenFlags(); }
void TermMainWindow::setup_ActionsMenu_Actions() { QSettings settings; settings.beginGroup("Shortcuts"); QKeySequence seq; Properties::Instance()->actions[CLEAR_TERMINAL] = new QAction(QIcon::fromTheme("edit-clear"), tr("Clear Current Tab"), this); seq = QKeySequence::fromString(settings.value(CLEAR_TERMINAL, CLEAR_TERMINAL_SHORTCUT).toString()); Properties::Instance()->actions[CLEAR_TERMINAL]->setShortcut(seq); connect(Properties::Instance()->actions[CLEAR_TERMINAL], SIGNAL(triggered()), consoleTabulator, SLOT(clearActiveTerminal())); menu_Actions->addAction(Properties::Instance()->actions[CLEAR_TERMINAL]); menu_Actions->addSeparator(); // Copy and Paste are only added to the table for the sake of bindings at the moment; there is no Edit menu, only a context menu. Properties::Instance()->actions[COPY_SELECTION] = new QAction(QIcon::fromTheme("edit-copy"), tr("Copy Selection"), this); seq = QKeySequence::fromString( settings.value(COPY_SELECTION, COPY_SELECTION_SHORTCUT).toString() ); Properties::Instance()->actions[COPY_SELECTION]->setShortcut(seq); connect(Properties::Instance()->actions[COPY_SELECTION], SIGNAL(triggered()), consoleTabulator, SLOT(copySelection())); menu_Edit->addAction(Properties::Instance()->actions[COPY_SELECTION]); Properties::Instance()->actions[PASTE_CLIPBOARD] = new QAction(QIcon::fromTheme("edit-paste"), tr("Paste Clipboard"), this); seq = QKeySequence::fromString( settings.value(PASTE_CLIPBOARD, PASTE_CLIPBOARD_SHORTCUT).toString() ); Properties::Instance()->actions[PASTE_CLIPBOARD]->setShortcut(seq); connect(Properties::Instance()->actions[PASTE_CLIPBOARD], SIGNAL(triggered()), consoleTabulator, SLOT(pasteClipboard())); menu_Edit->addAction(Properties::Instance()->actions[PASTE_CLIPBOARD]); Properties::Instance()->actions[PASTE_SELECTION] = new QAction(QIcon::fromTheme("edit-paste"), tr("Paste Selection"), this); seq = QKeySequence::fromString( settings.value(PASTE_SELECTION, PASTE_SELECTION_SHORTCUT).toString() ); Properties::Instance()->actions[PASTE_SELECTION]->setShortcut(seq); connect(Properties::Instance()->actions[PASTE_SELECTION], SIGNAL(triggered()), consoleTabulator, SLOT(pasteSelection())); menu_Edit->addAction(Properties::Instance()->actions[PASTE_SELECTION]); menu_Actions->addSeparator(); Properties::Instance()->actions[ZOOM_IN] = new QAction(QIcon::fromTheme("zoom-in"), tr("Zoom in"), this); seq = QKeySequence::fromString( settings.value(ZOOM_IN, ZOOM_IN_SHORTCUT).toString() ); Properties::Instance()->actions[ZOOM_IN]->setShortcut(seq); connect(Properties::Instance()->actions[ZOOM_IN], SIGNAL(triggered()), consoleTabulator, SLOT(zoomIn())); menu_Edit->addAction(Properties::Instance()->actions[ZOOM_IN]); Properties::Instance()->actions[ZOOM_OUT] = new QAction(QIcon::fromTheme("zoom-out"), tr("Zoom out"), this); seq = QKeySequence::fromString( settings.value(ZOOM_OUT, ZOOM_OUT_SHORTCUT).toString() ); Properties::Instance()->actions[ZOOM_OUT]->setShortcut(seq); connect(Properties::Instance()->actions[ZOOM_OUT], SIGNAL(triggered()), consoleTabulator, SLOT(zoomOut())); menu_Edit->addAction(Properties::Instance()->actions[ZOOM_OUT]); Properties::Instance()->actions[ZOOM_RESET] = new QAction(QIcon::fromTheme("zoom-original"), tr("Zoom reset"), this); seq = QKeySequence::fromString( settings.value(ZOOM_RESET, ZOOM_RESET_SHORTCUT).toString() ); Properties::Instance()->actions[ZOOM_RESET]->setShortcut(seq); connect(Properties::Instance()->actions[ZOOM_RESET], SIGNAL(triggered()), consoleTabulator, SLOT(zoomReset())); menu_Edit->addAction(Properties::Instance()->actions[ZOOM_RESET]); menu_Actions->addSeparator(); Properties::Instance()->actions[FIND] = new QAction(QIcon::fromTheme("edit-find"), tr("Find..."), this); seq = QKeySequence::fromString( settings.value(FIND, FIND_SHORTCUT).toString() ); Properties::Instance()->actions[FIND]->setShortcut(seq); connect(Properties::Instance()->actions[FIND], SIGNAL(triggered()), this, SLOT(find())); menu_Actions->addAction(Properties::Instance()->actions[FIND]); Properties::Instance()->actions[TOGGLE_MENU] = new QAction(tr("Toggle Menu"), this); seq = QKeySequence::fromString( settings.value(TOGGLE_MENU, TOGGLE_MENU_SHORTCUT).toString() ); Properties::Instance()->actions[TOGGLE_MENU]->setShortcut(seq); connect(Properties::Instance()->actions[TOGGLE_MENU], SIGNAL(triggered()), this, SLOT(toggleMenu())); // tis is correct - add action to main window - not to menu to keep toggle working settings.endGroup(); // apply props propertiesChanged(); }