DesktopViewProxy::DesktopViewProxy(MainWindow* mainWindow, KisMainWindow* parent) : QObject(parent) , d(new Private(mainWindow, parent)) { Q_ASSERT(parent); // "There MUST be a KisMainWindow assigned, otherwise everything will blow up"); // Hide this one... as it doesn't work at all well and release happens :P QAction* closeAction = d->desktopWindow->actionCollection()->action("file_close"); closeAction->setVisible(false); // Concept is simple - simply steal all the actions we require to work differently, and reconnect them to local functions QAction* newAction = d->desktopWindow->actionCollection()->action("file_new"); newAction->disconnect(d->desktopWindow); connect(newAction, SIGNAL(triggered(bool)), this, SLOT(fileNew())); QAction* openAction = d->desktopWindow->actionCollection()->action("file_open"); openAction->disconnect(d->desktopWindow); connect(openAction, SIGNAL(triggered(bool)), this, SLOT(fileOpen())); QAction* saveAction = d->desktopWindow->actionCollection()->action("file_save"); saveAction->disconnect(d->desktopWindow); connect(saveAction, SIGNAL(triggered(bool)), this, SLOT(fileSave())); QAction* saveasAction = d->desktopWindow->actionCollection()->action("file_save_as"); saveasAction->disconnect(d->desktopWindow); connect(saveasAction, SIGNAL(triggered(bool)), this, SLOT(fileSaveAs())); QAction* reloadAction = d->desktopWindow->actionCollection()->action("file_reload_file"); reloadAction->disconnect(d->desktopWindow); connect(reloadAction, SIGNAL(triggered(bool)), this, SLOT(reload())); QAction* loadExistingAsNewAction = d->desktopWindow->actionCollection()->action("file_import_file"); //Hide the "Load existing as new" action. It serves little purpose and currently //does the same as open. We cannot just remove it from the action collection though //since that causes a crash in KisMainWindow. loadExistingAsNewAction->setVisible(false); // Recent files need a touch more work, as they aren't simply an action. KRecentFilesAction* recent = qobject_cast<KRecentFilesAction*>(d->desktopWindow->actionCollection()->action("file_open_recent")); recent->disconnect(d->desktopWindow); connect(recent, SIGNAL(urlSelected(QUrl)), this, SLOT(slotFileOpenRecent(QUrl))); recent->clear(); recent->loadEntries(KGlobal::config()->group("RecentFiles")); connect(d->desktopWindow, SIGNAL(documentSaved()), this, SIGNAL(documentSaved())); // XXX: Shortcut editor is untested in Gemini since refactoring. connect(KisActionRegistry::instance(), SIGNAL(shortcutsUpdated()), this, SLOT(updateShortcuts())); }
void ndManager::setupActions() { //File Menu QMenu *fileMenu = menuBar()->addMenu(tr("&File")); mNewAction = fileMenu->addAction(tr("&New...")); mNewAction->setIcon(QPixmap(":/shared-icons/document-new")); mNewAction->setShortcut(QKeySequence::New); connect(mNewAction, SIGNAL(triggered()), this, SLOT(slotNewFile())); mOpenAction = fileMenu->addAction(tr("&Open...")); mOpenAction->setIcon(QPixmap(":/shared-icons/document-open")); mOpenAction->setShortcut(QKeySequence::Open); connect(mOpenAction, SIGNAL(triggered()), this, SLOT(slotFileOpen())); mFileOpenRecent = new QRecentFileAction(this); QSettings settings; mFileOpenRecent->setRecentFiles(settings.value(QLatin1String("Recent Files"),QStringList()).toStringList()); fileMenu->addAction(mFileOpenRecent); connect(mFileOpenRecent, SIGNAL(recentFileSelected(QString)), this, SLOT(slotFileOpenRecent(QString))); connect(mFileOpenRecent, SIGNAL(recentFileListChanged()), this, SLOT(slotSaveRecentFiles())); mUseTemplateAction = fileMenu->addAction(tr("Use &Template...")); connect(mUseTemplateAction, SIGNAL(triggered()), this, SLOT(slotImport())); fileMenu->addSeparator(); mSaveAction = fileMenu->addAction(tr("Save...")); mSaveAction->setIcon(QPixmap(":/shared-icons/document-save")); mSaveAction->setShortcut(QKeySequence::Save); connect(mSaveAction, SIGNAL(triggered()), this, SLOT(slotSave())); mSaveAsAction = fileMenu->addAction(tr("&Save As...")); mSaveAsAction->setIcon(QPixmap(":/shared-icons/document-save-as")); mSaveAsAction->setShortcut(QKeySequence::SaveAs); connect(mSaveAsAction, SIGNAL(triggered()), this, SLOT(slotSaveAs())); mSaveAsDefaultAction = fileMenu->addAction(tr("Save as &Default")); connect(mSaveAsDefaultAction, SIGNAL(triggered()), this, SLOT(slotSaveDefault())); mReloadAction = fileMenu->addAction(tr("&Reload")); mReloadAction->setShortcut(Qt::Key_F5); connect(mReloadAction, SIGNAL(triggered()), this, SLOT(slotReload())); fileMenu->addSeparator(); mCloseAction = fileMenu->addAction(tr("Close")); mCloseAction->setIcon(QPixmap(":/shared-icons/document-close")); mCloseAction->setShortcut(QKeySequence::Close); connect(mCloseAction, SIGNAL(triggered()), this, SLOT(slotFileClose())); fileMenu->addSeparator(); mQuitAction = fileMenu->addAction(tr("Quit")); mQuitAction->setIcon(QPixmap(":/shared-icons/window-close")); mQuitAction->setShortcut(QKeySequence::Quit); connect(mQuitAction, SIGNAL(triggered()), this, SLOT(close())); QMenu *actionMenu = menuBar()->addMenu(tr("&Actions")); mQueryAction = actionMenu->addAction(tr("&Query")); #ifndef Q_OS_UNIX mQueryAction->setEnabled(false); #endif connect(mQueryAction, SIGNAL(triggered()), this, SLOT(slotQuery())); //mProcessingManager = actionMenu->addAction(tr("Show Processing Manager")); QMenu *settingsMenu = menuBar()->addMenu(tr("&Settings")); //Settings mExpertMode = settingsMenu->addAction(tr("&Expert Mode")); mExpertMode->setCheckable(true); connect(mExpertMode, SIGNAL(triggered(bool)), this, SLOT(slotExpertMode())); settingsMenu->addSeparator(); settings.beginGroup("General"); if ( settings.contains("expertMode")) mExpertMode->setChecked(settings.value("expertMode").toBool()); else mExpertMode->setChecked(true); settings.endGroup(); viewMainToolBar = settingsMenu->addAction(tr("Show Main Toolbar")); viewMainToolBar->setCheckable(true); viewMainToolBar->setChecked(true); connect(viewMainToolBar,SIGNAL(triggered()), this,SLOT(slotViewMainToolBar())); viewStatusBar = settingsMenu->addAction(tr("Show StatusBar")); viewStatusBar->setCheckable(true); connect(viewStatusBar,SIGNAL(triggered()), this,SLOT(slotViewStatusBar())); viewStatusBar->setChecked(true); QMenu *helpMenu = menuBar()->addMenu(tr("Help")); QAction *handbook = helpMenu->addAction(tr("Handbook")); handbook->setShortcut(Qt::Key_F1); connect(handbook,SIGNAL(triggered()), this,SLOT(slotHanbook())); QAction *about = helpMenu->addAction(tr("About")); connect(about,SIGNAL(triggered()), this,SLOT(slotAbout())); mMainToolBar->addAction(mNewAction); mMainToolBar->addAction(mOpenAction); mMainToolBar->addAction(mSaveAction); resize(800,600); }