void MainWindow::createHelpMenu() { // Help menu QAction* manualAct = new QAction(QIcon(QString::fromLatin1(":/images/help.png")), tr("Open &Manual"), this); manualAct->setStatusTip(tr("Show the help file for this application")); manualAct->setShortcut(QKeySequence::HelpContents); connect(manualAct, &QAction::triggered, this, &MainWindow::showHelp); QAction* aboutAct = new QAction(tr("&About %1").arg(appName()), this); aboutAct->setStatusTip(tr("Show information about this application")); aboutAct->setMenuRole(QAction::AboutRole); connect(aboutAct, &QAction::triggered, this, &MainWindow::showAbout); QAction* aboutQtAct = new QAction(tr("About &Qt"), this); aboutQtAct->setStatusTip(tr("Show information about Qt")); aboutQtAct->setMenuRole(QAction::AboutQtRole); connect(aboutQtAct, &QAction::triggered, qApp, QApplication::aboutQt); if (show_menu) { QMenu* helpMenu = menuBar()->addMenu(tr("&Help")); helpMenu->addAction(manualAct); helpMenu->addAction(QWhatsThis::createAction(this)); helpMenu->addSeparator(); helpMenu->addAction(aboutAct); helpMenu->addAction(aboutQtAct); } }
int main(int argc, char *argv[]) { QApplication app(argc, argv); QMainWindow mw; #ifndef Q_WS_MAC app.setWindowIcon(QIcon(QLatin1String(":/trolltech/qdbusviewer/images/qdbusviewer.png"))); #else mw.setWindowTitle(qApp->translate("QtDBusViewer", "Qt D-Bus Viewer")); #endif QTabWidget *mainWidget = new QTabWidget; mw.setCentralWidget(mainWidget); QDBusViewer *sessionBusViewer = new QDBusViewer(QDBusConnection::sessionBus()); QDBusViewer *systemBusViewer = new QDBusViewer(QDBusConnection::systemBus()); mainWidget->addTab(sessionBusViewer, QObject::tr("Session Bus")); mainWidget->addTab(systemBusViewer, QObject::tr("System Bus")); QMenu *fileMenu = mw.menuBar()->addMenu(QObject::tr("&File")); QAction *quitAction = fileMenu->addAction(QObject::tr("&Quit"), &mw, SLOT(close())); Q_UNUSED(quitAction); QMenu *helpMenu = mw.menuBar()->addMenu(QObject::tr("&Help")); QAction *aboutAction = helpMenu->addAction(QObject::tr("&About")); aboutAction->setMenuRole(QAction::AboutRole); QObject::connect(aboutAction, SIGNAL(triggered()), sessionBusViewer, SLOT(about())); QAction *aboutQtAction = helpMenu->addAction(QObject::tr("About &Qt")); aboutQtAction->setMenuRole(QAction::AboutQtRole); QObject::connect(aboutQtAction, SIGNAL(triggered()), &app, SLOT(aboutQt())); mw.show(); return app.exec(); }
QAction* CWizActions::addAction(WIZACTION& action) { QString strText = action.strText; QString strIconName = action.strName; QString strShortcut = action.strShortcut; QString strSlot = "1on_" + action.strName + "_triggered()"; QAction* pAction = new QAction(strText, m_parent); if (!strIconName.isEmpty()) { pAction->setIcon(::WizLoadSkinIcon(m_app.userSettings().skin(), QColor(0xff, 0xff, 0xff), strIconName)); } if (!strShortcut.isEmpty()) { pAction->setShortcut(QKeySequence(strShortcut)); } if (action.strName == "actionAbout") pAction->setMenuRole(QAction::AboutRole); else if (action.strName == "actionPreference") pAction->setMenuRole(QAction::PreferencesRole); else if (action.strName == "actionExit") pAction->setMenuRole(QAction::QuitRole); // Used for building menu from ini file pAction->setObjectName(action.strName); m_actions[action.strName] = pAction; QObject::connect(pAction, "2triggered()", m_parent, strSlot.toUtf8()); return pAction; }
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { QMenu *fileMenu = menuBar()->addMenu(tr("&File")); QAction *quitAction = fileMenu->addAction(tr("&Quit"), this, SLOT(close())); quitAction->setShortcut(QKeySequence::Quit); quitAction->setMenuRole(QAction::QuitRole); QMenu *helpMenu = menuBar()->addMenu(tr("&Help")); QAction *aboutAction = helpMenu->addAction(tr("&About")); aboutAction->setMenuRole(QAction::AboutRole); QObject::connect(aboutAction, SIGNAL(triggered()), this, SLOT(about())); QAction *aboutQtAction = helpMenu->addAction(tr("About &Qt")); aboutQtAction->setMenuRole(QAction::AboutQtRole); QObject::connect(aboutQtAction, SIGNAL(triggered()), qApp, SLOT(aboutQt())); tabWidget = new QTabWidget; setCentralWidget(tabWidget); sessionBusViewer = new QDBusViewer(QDBusConnection::sessionBus()); systemBusViewer = new QDBusViewer(QDBusConnection::systemBus()); tabWidget->addTab(sessionBusViewer, tr("Session Bus")); tabWidget->addTab(systemBusViewer, tr("System Bus")); restoreSettings(); }
QAction *BApplicationPrivate::createStandardAction(BGuiTools::StandardAction type, QObject *parent) { if (!testInit("BApplicationPrivate")) return 0; QAction *act = 0; switch (type) { case BGuiTools::SettingsAction: act = new QAction(parent); act->setMenuRole(QAction::PreferencesRole); act->setObjectName("ActionSettings"); act->setIcon(BApplication::icon("configure")); act->setShortcut(QKeySequence::Preferences); connect(act, SIGNAL(triggered()), qs_func(), SLOT(showSettingsDialog())); break; case BGuiTools::HomepageAction: act = new QAction(parent); act->setObjectName("ActionHomepage"); act->setIcon(BApplication::icon("gohome")); connect(act, SIGNAL(triggered()), qs_func(), SLOT(openHomepage())); break; case BGuiTools::HelpContentsAction: act = new QAction(parent); act->setObjectName("ActionHelpContents"); act->setIcon(BApplication::beqtIcon("help_contents")); connect(act, SIGNAL(triggered()), qs_func(), SLOT(showHelpContents())); break; case BGuiTools::ContextualHelpAction: act = new QAction(parent); act->setObjectName("ActionContextualHelp"); act->setIcon(BApplication::icon("help_contextual")); connect(act, SIGNAL(triggered()), qs_func(), SLOT(showContextualHelp())); break; case BGuiTools::WhatsThisAction: act = QWhatsThis::createAction(parent); act->setObjectName("ActionWhatsThis"); act->setIcon(BApplication::beqtIcon("help_hint")); break; case BGuiTools::AboutAction: act = new QAction(parent); act->setMenuRole(QAction::AboutRole); act->setObjectName("ActionAbout"); act->setIcon(BApplication::icon("help_about")); connect(act, SIGNAL(triggered()), qs_func(), SLOT(showAboutDialog())); break; default: return 0; } act->setProperty("beqt/standard_action_type", type); qs_func()->ds_func()->actions.insert(act, act); connect(act, SIGNAL(destroyed(QObject *)), qs_func()->ds_func(), SLOT(actionDestroyed(QObject *))); retranslateStandardAction(act); return act; }
int main(int argc, char *argv[]) { QApplication app(argc, argv); QMainWindow mw; #ifndef Q_OS_MAC app.setWindowIcon(QIcon(QLatin1String(":/qt-project.org/qdbusviewer/images/qdbusviewer.png"))); #else mw.setWindowTitle(qApp->translate("QtDBusViewer", "Qt D-Bus Viewer")); #endif QTabWidget *mainWidget = new QTabWidget; mw.setCentralWidget(mainWidget); QDBusViewer *sessionBusViewer = new QDBusViewer(QDBusConnection::sessionBus()); QDBusViewer *systemBusViewer = new QDBusViewer(QDBusConnection::systemBus()); mainWidget->addTab(sessionBusViewer, QObject::tr("Session Bus")); mainWidget->addTab(systemBusViewer, QObject::tr("System Bus")); QStringList args = app.arguments(); while (args.count()) { QString arg = args.takeFirst(); if (arg == QLatin1String("--bus")) { QDBusConnection connection = QDBusConnection::connectToBus(args.takeFirst(), "QDBusViewer"); if (connection.isConnected()) { QDBusViewer *customBusViewer = new QDBusViewer(connection); mainWidget->addTab(customBusViewer, QObject::tr("Custom Bus")); } } } QMenu *fileMenu = mw.menuBar()->addMenu(QObject::tr("&File")); QAction *quitAction = fileMenu->addAction(QObject::tr("&Quit"), &mw, SLOT(close())); quitAction->setShortcut(QKeySequence::Quit); quitAction->setMenuRole(QAction::QuitRole); QMenu *helpMenu = mw.menuBar()->addMenu(QObject::tr("&Help")); QAction *aboutAction = helpMenu->addAction(QObject::tr("&About")); aboutAction->setMenuRole(QAction::AboutRole); QObject::connect(aboutAction, SIGNAL(triggered()), sessionBusViewer, SLOT(about())); QAction *aboutQtAction = helpMenu->addAction(QObject::tr("About &Qt")); aboutQtAction->setMenuRole(QAction::AboutQtRole); QObject::connect(aboutQtAction, SIGNAL(triggered()), &app, SLOT(aboutQt())); mw.show(); return app.exec(); }
QAction* ActionResource::toQAction() const { Log log( Log::LT_TRACE, Log::MOD_MAIN, "QAction* ActionResource::toQAction() const" ); if( !( m_Type == AT_ITEM || m_Type == AT_SEPARATOR ) ) { return NULL; }; log.write( Log::LT_TRACE, "Produce item %s", getText() ); QAction* act = new QAction( getText(), NULL ); act->setAutoRepeat( getAutoRepeat() ); act->setCheckable( getCheckable() ); act->setChecked( getChecked() ); act->setData( getData() ); act->setFont( getFont() ); act->setIcon( getIcon() ); act->setIconVisibleInMenu( getIconVisibleInMenu() ); act->setMenuRole( getMenuRole() ); act->setSeparator( m_Type == AT_SEPARATOR ); act->setShortcut( getShortcut() ); act->setShortcutContext( getShortcutContext() ); act->setStatusTip( getStatusTip() ); act->setToolTip( getTooltip() ); act->setVisible( getVisible() ); act->setWhatsThis( getWhatsThis() ); return act; };
void MainWindow::populateMenu() { m_acCloseSession = new QAction(tr("Close session"),this); m_acCloseSession->setShortcut(Qt::ALT + Qt::Key_F3); connect(m_acCloseSession,SIGNAL(triggered()),SLOT(closeSession())); m_acClose = new QAction(tr("Close"),this); m_acClose->setShortcut(Qt::ALT + Qt::Key_F4); connect(m_acClose, SIGNAL(triggered()), SLOT(close())); QAction *aboutQt = new QAction(tr("About Qt..."),this); aboutQt->setMenuRole(QAction::AboutQtRole); connect(aboutQt,SIGNAL(triggered()),qApp, SLOT(aboutQt())); registerAction("close_session", m_acCloseSession); registerAction("close",m_acClose); registerActions(ReportManager::instance()->actions()); registerActions(PluginManager::instance()->pluginActions()); //m_pluginActionById generateMenuFromXml(m_core->currentUser()->gui()); }
/** * @brief Add static entries to DP in menus **/ QAction *addDPStaticEntry( QMenu *menu, const QString& text, const char *icon, const char *member, const char *shortcut = NULL, QAction::MenuRole role = QAction::NoRole ) { QAction *action = NULL; #ifndef __APPLE__ /* We don't set icons in menus in MacOS X */ if( !EMPTY_STR( icon ) ) { if( !EMPTY_STR( shortcut ) ) action = menu->addAction( QIcon( icon ), text, THEDP, member, qtr( shortcut ) ); else action = menu->addAction( QIcon( icon ), text, THEDP, member ); } else #endif { if( !EMPTY_STR( shortcut ) ) action = menu->addAction( text, THEDP, member, qtr( shortcut ) ); else action = menu->addAction( text, THEDP, member ); } #ifdef __APPLE__ action->setMenuRole( role ); #else Q_UNUSED( role ); #endif action->setData( VLCMenuBar::ACTION_STATIC ); return action; }
MainWindowMenu::MainWindowMenu(widget::MainWindow *mainWindow) : ConcreteMenuable(menuName()), m_mainWindow(mainWindow) { Node *packages = new Node(tr("Packages")); m_file.append(packages); m_file.append(node(m_hideErrors = action(tr("Hide Errors"), QKeySequence::UnknownKey))); m_file.append(Node::separator()); m_file.append(m_nextNode = node(activeAction(QIcon(ResourceHelper::ref().lookup("arrow_right")), tr("Next"), QKeySequence::NextChild, this, "next"))); m_file.append(m_prevNode = node(activeAction(QIcon(ResourceHelper::ref().lookup("arrow_left")), tr("Previous"), QKeySequence::PreviousChild, this, "previous"))); m_file.append(m_closeNode = node(activeAction("cross", tr("Close"), QKeySequence::Close, this, "closeCurrentTab"))); m_file.append(Node::separator()); QAction *quit = activeAction("cross", tr("Quit"), QKeySequence::Quit, this, "close"); quit->setMenuRole(QAction::QuitRole); m_file.append(node(quit)); m_edit.append(Node::separator()); m_edit.append(node(activeAction("cog.png", tr("Settings"), QKeySequence::Preferences, this, "settings"))); m_edit.append(node(activeAction("palette.png", tr("Theme Settings"), QKeySequence::Preferences, this, "theme"))); QAction *about = activeAction("information", tr("About KISS IDE"), QKeySequence::UnknownKey, this, "about"); m_help.append(node(about)); #ifdef ENABLE_LOG_WINDOW m_help.append(node(m_errorLog = action(tr("Error Log"), QKeySequence::UnknownKey))); #endif }
QAction* addWindow(QWidget *pWindow) { QAction *pAction = 0; if ( pWindow && !m_regWindows.contains(pWindow->windowTitle())) { if (m_regWindows.size() < 2) m_pWindowMenu->addSeparator(); /* The main window always first */ pAction = new QAction(this); pAction->setText(pWindow->windowTitle()); pAction->setMenuRole(QAction::NoRole); pAction->setData(qVariantFromValue(pWindow)); pAction->setCheckable(true); /* The first registered one is always considered as the main window */ if (m_regWindows.size() == 0) pAction->setShortcut(QKeySequence("Ctrl+0")); m_pGroup->addAction(pAction); connect(pAction, SIGNAL(triggered(bool)), this, SLOT(raiseSender(bool))); m_pWindowMenu->addAction(pAction); m_regWindows[pWindow->windowTitle()] = pAction; } return pAction; }
void TomahawkWindow::setupUpdateCheck() { #ifndef Q_WS_MAC ui->menu_Help->insertSeparator( ui->actionAboutTomahawk ); #endif #if defined( Q_WS_MAC ) && defined( HAVE_SPARKLE ) QAction* checkForUpdates = ui->menu_Help->addAction( tr( "Check For Updates..." ) ); checkForUpdates->setMenuRole( QAction::ApplicationSpecificRole ); connect( checkForUpdates, SIGNAL( triggered( bool ) ), SLOT( checkForUpdates() ) ); #elif defined( Q_WS_WIN ) QUrl updaterUrl; if ( qApp->arguments().contains( "--debug" ) ) updaterUrl.setUrl( "http://download.tomahawk-player.org/sparklewin-debug" ); else updaterUrl.setUrl( "http://download.tomahawk-player.org/sparklewin" ); qtsparkle::Updater* updater = new qtsparkle::Updater( updaterUrl, this ); Q_ASSERT( TomahawkUtils::nam() != 0 ); updater->SetNetworkAccessManager( TomahawkUtils::nam() ); updater->SetVersion( TomahawkUtils::appFriendlyVersion() ); ui->menu_Help->addSeparator(); QAction* checkForUpdates = ui->menu_Help->addAction( tr( "Check For Updates..." ) ); connect( checkForUpdates, SIGNAL( triggered() ), updater, SLOT( CheckNow() ) ); #endif }
void ASpellTextEdit::contextMenuEvent (QContextMenuEvent* event) { QMenu* menu = createStandardContextMenu(); if (m_spellchecker != NULL) { QString selected_text = textCursor().selectedText(); if (selected_text.length() > 0) { m_suggest_list.clear(); if (m_spellchecker->spellWord(selected_text, &m_suggest_list) == 1) { if (m_suggest_list.count() > 0) { menu->addSeparator(); for (int i = 0; i < m_suggest_list.count() && i < 10; i++) { QAction* action = menu->addAction(m_suggest_list[i]); action->setMenuRole(QAction::ApplicationSpecificRole); } connect(menu, SIGNAL(triggered(QAction*)), this, SLOT(menu_triggered(QAction*))); menu->addSeparator(); QAction* action = menu->addAction(QString::fromUtf8("Добавить в словарь")); connect(action, SIGNAL(triggered()), this, SLOT(menu_add_triggered())); } }
void PsMainWindow::psFirstShow() { finished = false; psUpdateMargins(); bool showShadows = true; show(); _private.enableShadow(winId()); if (cWindowPos().maximized) { setWindowState(Qt::WindowMaximized); } if ((cFromAutoStart() && cStartMinimized()) || cStartInTray()) { setWindowState(Qt::WindowMinimized); if (cWorkMode() == dbiwmTrayOnly || cWorkMode() == dbiwmWindowAndTray) { hide(); } else { show(); } showShadows = false; } else { show(); } posInited = true; // init global menu QMenu *main = psMainMenu.addMenu(qsl("Telegram")); main->addAction(lng_mac_menu_about_telegram(lt_telegram, qsl("Telegram")), App::wnd()->getTitle(), SLOT(onAbout()))->setMenuRole(QAction::AboutQtRole); main->addSeparator(); QAction *prefs = main->addAction(lang(lng_mac_menu_preferences), App::wnd(), SLOT(showSettings()), QKeySequence(Qt::ControlModifier | Qt::Key_Comma)); prefs->setMenuRole(QAction::PreferencesRole); QMenu *file = psMainMenu.addMenu(lang(lng_mac_menu_file)); psLogout = file->addAction(lang(lng_mac_menu_logout), App::wnd(), SLOT(onLogout())); QMenu *edit = psMainMenu.addMenu(lang(lng_mac_menu_edit)); psUndo = edit->addAction(lang(lng_mac_menu_undo), this, SLOT(psMacUndo()), QKeySequence::Undo); psRedo = edit->addAction(lang(lng_mac_menu_redo), this, SLOT(psMacRedo()), QKeySequence::Redo); edit->addSeparator(); psCut = edit->addAction(lang(lng_mac_menu_cut), this, SLOT(psMacCut()), QKeySequence::Cut); psCopy = edit->addAction(lang(lng_mac_menu_copy), this, SLOT(psMacCopy()), QKeySequence::Copy); psPaste = edit->addAction(lang(lng_mac_menu_paste), this, SLOT(psMacPaste()), QKeySequence::Paste); psDelete = edit->addAction(lang(lng_mac_menu_delete), this, SLOT(psMacDelete()), QKeySequence(Qt::ControlModifier | Qt::Key_Backspace)); edit->addSeparator(); psSelectAll = edit->addAction(lang(lng_mac_menu_select_all), this, SLOT(psMacSelectAll()), QKeySequence::SelectAll); QMenu *window = psMainMenu.addMenu(lang(lng_mac_menu_window)); psContacts = window->addAction(lang(lng_mac_menu_contacts), App::wnd()->getTitle(), SLOT(onContacts())); psAddContact = window->addAction(lang(lng_mac_menu_add_contact), App::wnd(), SLOT(onShowAddContact())); window->addSeparator(); psNewGroup = window->addAction(lang(lng_mac_menu_new_group), App::wnd(), SLOT(onShowNewGroup())); psNewChannel = window->addAction(lang(lng_mac_menu_new_channel), App::wnd(), SLOT(onShowNewChannel())); window->addSeparator(); psShowTelegram = window->addAction(lang(lng_mac_menu_show), App::wnd(), SLOT(showFromTray())); psMacUpdateMenu(); }
void MainWindow::setupMenu() { menuBar()->clear(); // File QMenu *fileMenu = menuBar()->addMenu(tr("&File")); QAction *config = fileMenu->addAction(tr("&Configure"), this, SLOT(slotConfigure())); config->setMenuRole(QAction::PreferencesRole); fileMenu->addSeparator(); QAction *quit = fileMenu->addAction(tr("&Quit"), qApp, SLOT(quit())); quit->setMenuRole( QAction::QuitRole ); // Help QMenu *helpMenu = menuBar()->addMenu(tr("&Help")); helpMenu->addSeparator(); QAction *aboutQt = helpMenu->addAction(tr("About &Qt"), qApp, SLOT(aboutQt())); aboutQt->setMenuRole( QAction::AboutQtRole ); QAction *aboutTelldusCenter = helpMenu->addAction(tr("About &TelldusCenter"), this, SLOT(slotAboutApplication())); aboutTelldusCenter->setMenuRole( QAction::AboutRole ); }
// --------------------------------------------------------------------- QAction *Menus::makeact(string id, string p) { QStringList s=qsplit(p); QString text=s.value(0); QString shortcut=s.value(1); QAction *r = new QAction(text,widget); QString name=s2q(id); r->setObjectName(name); r->setMenuRole(QAction::NoRole); if (shortcut.size()) r->setShortcut(shortcut); items[name]=r; return r; }
AppSettingsGUIImpl::AppSettingsGUIImpl(QObject* p) : AppSettingsGUI(p) { registerBuiltinPages(); QMenu* m = AppContext::getMainWindow()->getTopLevelMenu(MWMENU_SETTINGS); QAction* settingsDialogAction = new QAction(QIcon(":ugene/images/preferences.png"), tr("Preferences..."), this); connect(settingsDialogAction, SIGNAL(triggered()), SLOT(sl_showSettingsDialog())); settingsDialogAction->setObjectName("action__settings"); #ifdef Q_OS_MAC settingsDialogAction->setMenuRole(QAction::ApplicationSpecificRole); settingsDialogAction->setShortcut(QKeySequence("Ctrl+,")); settingsDialogAction->setShortcutContext(Qt::ApplicationShortcut); #endif m->addAction(settingsDialogAction); AppContext::getMainWindow()->registerAction(settingsDialogAction); }
void AleatoriedadWidget::createMenus(){ aleatoriedadMenuBar = new QMenuBar; menu_Archivo = new QMenu(tr("&Archivo"),aleatoriedadMenuBar); menu_Archivo->addAction(guardarAction); menu_Archivo->addAction(exportarAction); menu_Archivo->addSeparator(); QAction *tmp = menu_Archivo->addAction(QIcon::fromTheme("application-exit"), tr("&Salir"), this, SLOT(close())); tmp->setMenuRole(QAction::QuitRole); tmp->setShortcut(QKeySequence(tr("CTRL+Q"))); menu_Archivo->addAction(tmp); menu_Ayuda = new QMenu(tr("&Ayuda")); menu_Ayuda->addAction(action_Sobre); menu_Ayuda->addAction(action_Sobre_Qt); aleatoriedadMenuBar->addAction(menu_Archivo->menuAction()); aleatoriedadMenuBar->addAction(menu_Ayuda->menuAction()); }
MainWindow::MainWindow( QWidget *parent ) : QWidget( parent ) , cardsGroup( new QActionGroup( this ) ) { qRegisterMetaType<QSslCertificate>("QSslCertificate"); setupUi( this ); cards->hide(); setWindowFlags( Qt::Window | Qt::CustomizeWindowHint | Qt::WindowMinimizeButtonHint | Qt::WindowTitleHint ); #if QT_VERSION >= 0x040500 setWindowFlags( windowFlags() | Qt::WindowCloseButtonHint ); #else setWindowFlags( windowFlags() | Qt::WindowSystemMenuHint ); #endif QApplication::instance()->installEventFilter( this ); Common *common = new Common( this ); QDesktopServices::setUrlHandler( "browse", common, "browse" ); QDesktopServices::setUrlHandler( "mailto", common, "mailTo" ); QButtonGroup *buttonGroup = new QButtonGroup( this ); buttonGroup->addButton( settings, HeadSettings ); buttonGroup->addButton( help, HeadHelp ); buttonGroup->addButton( homeCreate, HomeCreate ); buttonGroup->addButton( homeView, HomeView ); introNext = introButtons->addButton( tr( "Next" ), QDialogButtonBox::ActionRole ); buttonGroup->addButton( introNext, IntroNext ); buttonGroup->addButton( introButtons->button( QDialogButtonBox::Cancel ), IntroBack ); viewCrypt = viewButtons->addButton( tr("Encrypt"), QDialogButtonBox::ActionRole ); buttonGroup->addButton( viewCrypt, ViewCrypt ); buttonGroup->addButton( viewButtons->button( QDialogButtonBox::Close ), ViewClose ); connect( buttonGroup, SIGNAL(buttonClicked(int)), SLOT(buttonClicked(int)) ); appTranslator = new QTranslator( this ); commonTranslator = new QTranslator( this ); qtTranslator = new QTranslator( this ); QApplication::instance()->installTranslator( appTranslator ); QApplication::instance()->installTranslator( commonTranslator ); QApplication::instance()->installTranslator( qtTranslator ); doc = new CryptoDoc( this ); connect( cards, SIGNAL(activated(QString)), doc, SLOT(selectCard(QString)) ); connect( doc, SIGNAL(error(QString,int,QString)), SLOT(showWarning(QString,int,QString)) ); connect( doc, SIGNAL(dataChanged()), SLOT(showCardStatus()) ); connect( viewContentView, SIGNAL(remove(int)), SLOT(removeDocument(int)) ); connect( viewContentView, SIGNAL(save(int,QString)), doc, SLOT(saveDocument(int,QString)) ); cards->hack(); languages->hack(); lang << "et" << "en" << "ru"; QString deflang; switch( QLocale().language() ) { case QLocale::English: deflang = "en"; break; case QLocale::Russian: deflang = "ru"; break; case QLocale::Estonian: default: deflang = "et"; break; } on_languages_activated( lang.indexOf( Settings().value( "Main/Language", deflang ).toString() ) ); QActionGroup *langGroup = new QActionGroup( this ); QAction *etAction = langGroup->addAction( new QAction( langGroup ) ); QAction *enAction = langGroup->addAction( new QAction( langGroup ) ); QAction *ruAction = langGroup->addAction( new QAction( langGroup ) ); etAction->setData( 0 ); enAction->setData( 1 ); ruAction->setData( 2 ); etAction->setShortcut( Qt::CTRL + Qt::SHIFT + Qt::Key_1 ); enAction->setShortcut( Qt::CTRL + Qt::SHIFT + Qt::Key_2 ); ruAction->setShortcut( Qt::CTRL + Qt::SHIFT + Qt::Key_3 ); addAction( etAction ); addAction( enAction ); addAction( ruAction ); connect( langGroup, SIGNAL(triggered(QAction*)), SLOT(changeLang(QAction*)) ); connect( cardsGroup, SIGNAL(triggered(QAction*)), SLOT(changeCard(QAction*)) ); close = new QAction( tr("Close"), this ); close->setShortcut( Qt::CTRL + Qt::Key_W ); connect( close, SIGNAL(triggered()), this, SLOT(closeDoc()) ); addAction( close ); #if defined(Q_OS_MAC) QMenuBar *bar = new QMenuBar; QMenu *menu = bar->addMenu( tr("&File") ); QAction *pref = menu->addAction( tr("Settings"), this, SLOT(showSettings()) ); pref->setMenuRole( QAction::PreferencesRole ); menu->addAction( close ); #endif QStringList args = qApp->arguments(); if( args.size() > 1 ) { args.removeAt( 0 ); params = args; buttonClicked( HomeCreate ); } }
void MainWindow::registerDefaultActions() { ActionContainer *mfile = ActionManager::actionContainer(Constants::M_FILE); ActionContainer *medit = ActionManager::actionContainer(Constants::M_EDIT); ActionContainer *mtools = ActionManager::actionContainer(Constants::M_TOOLS); ActionContainer *mwindow = ActionManager::actionContainer(Constants::M_WINDOW); ActionContainer *mhelp = ActionManager::actionContainer(Constants::M_HELP); // File menu separators mfile->addSeparator(Constants::G_FILE_SAVE); mfile->addSeparator(Constants::G_FILE_PRINT); mfile->addSeparator(Constants::G_FILE_CLOSE); mfile->addSeparator(Constants::G_FILE_OTHER); // Edit menu separators medit->addSeparator(Constants::G_EDIT_COPYPASTE); medit->addSeparator(Constants::G_EDIT_SELECTALL); medit->addSeparator(Constants::G_EDIT_FIND); medit->addSeparator(Constants::G_EDIT_ADVANCED); // Return to editor shortcut: Note this requires Qt to fix up // handling of shortcut overrides in menus, item views, combos.... m_focusToEditor = new QAction(tr("Return to Editor"), this); Command *cmd = ActionManager::registerAction(m_focusToEditor, Constants::S_RETURNTOEDITOR); cmd->setDefaultKeySequence(QKeySequence(Qt::Key_Escape)); connect(m_focusToEditor, SIGNAL(triggered()), this, SLOT(setFocusToEditor())); // New File Action QIcon icon = QIcon::fromTheme(QLatin1String("document-new"), Icons::NEWFILE.icon()); m_newAction = new QAction(icon, tr("&New File or Project..."), this); cmd = ActionManager::registerAction(m_newAction, Constants::NEW); cmd->setDefaultKeySequence(QKeySequence::New); mfile->addAction(cmd, Constants::G_FILE_NEW); connect(m_newAction, &QAction::triggered, this, [this]() { ICore::showNewItemDialog(tr("New File or Project", "Title of dialog"), IWizardFactory::allWizardFactories(), QString()); }); connect(ICore::instance(), &ICore::newItemDialogRunningChanged, m_newAction, [this]() { m_newAction->setEnabled(!ICore::isNewItemDialogRunning()); }); // Open Action icon = QIcon::fromTheme(QLatin1String("document-open"), Icons::OPENFILE.icon()); m_openAction = new QAction(icon, tr("&Open File or Project..."), this); cmd = ActionManager::registerAction(m_openAction, Constants::OPEN); cmd->setDefaultKeySequence(QKeySequence::Open); mfile->addAction(cmd, Constants::G_FILE_OPEN); connect(m_openAction, SIGNAL(triggered()), this, SLOT(openFile())); // Open With Action m_openWithAction = new QAction(tr("Open File &With..."), this); cmd = ActionManager::registerAction(m_openWithAction, Constants::OPEN_WITH); mfile->addAction(cmd, Constants::G_FILE_OPEN); connect(m_openWithAction, SIGNAL(triggered()), this, SLOT(openFileWith())); // File->Recent Files Menu ActionContainer *ac = ActionManager::createMenu(Constants::M_FILE_RECENTFILES); mfile->addMenu(ac, Constants::G_FILE_OPEN); ac->menu()->setTitle(tr("Recent &Files")); ac->setOnAllDisabledBehavior(ActionContainer::Show); // Save Action icon = QIcon::fromTheme(QLatin1String("document-save"), Icons::SAVEFILE.icon()); QAction *tmpaction = new QAction(icon, tr("&Save"), this); tmpaction->setEnabled(false); cmd = ActionManager::registerAction(tmpaction, Constants::SAVE); cmd->setDefaultKeySequence(QKeySequence::Save); cmd->setAttribute(Command::CA_UpdateText); cmd->setDescription(tr("Save")); mfile->addAction(cmd, Constants::G_FILE_SAVE); // Save As Action icon = QIcon::fromTheme(QLatin1String("document-save-as")); tmpaction = new QAction(icon, tr("Save &As..."), this); tmpaction->setEnabled(false); cmd = ActionManager::registerAction(tmpaction, Constants::SAVEAS); cmd->setDefaultKeySequence(QKeySequence(UseMacShortcuts ? tr("Ctrl+Shift+S") : QString())); cmd->setAttribute(Command::CA_UpdateText); cmd->setDescription(tr("Save As...")); mfile->addAction(cmd, Constants::G_FILE_SAVE); // SaveAll Action m_saveAllAction = new QAction(tr("Save A&ll"), this); cmd = ActionManager::registerAction(m_saveAllAction, Constants::SAVEALL); cmd->setDefaultKeySequence(QKeySequence(UseMacShortcuts ? QString() : tr("Ctrl+Shift+S"))); mfile->addAction(cmd, Constants::G_FILE_SAVE); connect(m_saveAllAction, SIGNAL(triggered()), this, SLOT(saveAll())); // Print Action icon = QIcon::fromTheme(QLatin1String("document-print")); tmpaction = new QAction(icon, tr("&Print..."), this); tmpaction->setEnabled(false); cmd = ActionManager::registerAction(tmpaction, Constants::PRINT); cmd->setDefaultKeySequence(QKeySequence::Print); mfile->addAction(cmd, Constants::G_FILE_PRINT); // Exit Action icon = QIcon::fromTheme(QLatin1String("application-exit")); m_exitAction = new QAction(icon, tr("E&xit"), this); m_exitAction->setMenuRole(QAction::QuitRole); cmd = ActionManager::registerAction(m_exitAction, Constants::EXIT); cmd->setDefaultKeySequence(QKeySequence(tr("Ctrl+Q"))); mfile->addAction(cmd, Constants::G_FILE_OTHER); connect(m_exitAction, SIGNAL(triggered()), this, SLOT(exit())); // Undo Action icon = QIcon::fromTheme(QLatin1String("edit-undo"), Icons::UNDO.icon()); tmpaction = new QAction(icon, tr("&Undo"), this); cmd = ActionManager::registerAction(tmpaction, Constants::UNDO); cmd->setDefaultKeySequence(QKeySequence::Undo); cmd->setAttribute(Command::CA_UpdateText); cmd->setDescription(tr("Undo")); medit->addAction(cmd, Constants::G_EDIT_UNDOREDO); tmpaction->setEnabled(false); // Redo Action icon = QIcon::fromTheme(QLatin1String("edit-redo"), Icons::REDO.icon()); tmpaction = new QAction(icon, tr("&Redo"), this); cmd = ActionManager::registerAction(tmpaction, Constants::REDO); cmd->setDefaultKeySequence(QKeySequence::Redo); cmd->setAttribute(Command::CA_UpdateText); cmd->setDescription(tr("Redo")); medit->addAction(cmd, Constants::G_EDIT_UNDOREDO); tmpaction->setEnabled(false); // Cut Action icon = QIcon::fromTheme(QLatin1String("edit-cut"), Icons::CUT.icon()); tmpaction = new QAction(icon, tr("Cu&t"), this); cmd = ActionManager::registerAction(tmpaction, Constants::CUT); cmd->setDefaultKeySequence(QKeySequence::Cut); medit->addAction(cmd, Constants::G_EDIT_COPYPASTE); tmpaction->setEnabled(false); // Copy Action icon = QIcon::fromTheme(QLatin1String("edit-copy"), Icons::COPY.icon()); tmpaction = new QAction(icon, tr("&Copy"), this); cmd = ActionManager::registerAction(tmpaction, Constants::COPY); cmd->setDefaultKeySequence(QKeySequence::Copy); medit->addAction(cmd, Constants::G_EDIT_COPYPASTE); tmpaction->setEnabled(false); // Paste Action icon = QIcon::fromTheme(QLatin1String("edit-paste"), Icons::PASTE.icon()); tmpaction = new QAction(icon, tr("&Paste"), this); cmd = ActionManager::registerAction(tmpaction, Constants::PASTE); cmd->setDefaultKeySequence(QKeySequence::Paste); medit->addAction(cmd, Constants::G_EDIT_COPYPASTE); tmpaction->setEnabled(false); // Select All icon = QIcon::fromTheme(QLatin1String("edit-select-all")); tmpaction = new QAction(icon, tr("Select &All"), this); cmd = ActionManager::registerAction(tmpaction, Constants::SELECTALL); cmd->setDefaultKeySequence(QKeySequence::SelectAll); medit->addAction(cmd, Constants::G_EDIT_SELECTALL); tmpaction->setEnabled(false); // Goto Action icon = QIcon::fromTheme(QLatin1String("go-jump")); tmpaction = new QAction(icon, tr("&Go to Line..."), this); cmd = ActionManager::registerAction(tmpaction, Constants::GOTO); cmd->setDefaultKeySequence(QKeySequence(tr("Ctrl+L"))); medit->addAction(cmd, Constants::G_EDIT_OTHER); tmpaction->setEnabled(false); // Options Action mtools->appendGroup(Constants::G_TOOLS_OPTIONS); mtools->addSeparator(Constants::G_TOOLS_OPTIONS); m_optionsAction = new QAction(tr("&Options..."), this); m_optionsAction->setMenuRole(QAction::PreferencesRole); cmd = ActionManager::registerAction(m_optionsAction, Constants::OPTIONS); cmd->setDefaultKeySequence(QKeySequence::Preferences); mtools->addAction(cmd, Constants::G_TOOLS_OPTIONS); connect(m_optionsAction, SIGNAL(triggered()), this, SLOT(showOptionsDialog())); mwindow->addSeparator(Constants::G_WINDOW_LIST); if (UseMacShortcuts) { // Minimize Action QAction *minimizeAction = new QAction(tr("Minimize"), this); minimizeAction->setEnabled(false); // actual implementation in WindowSupport cmd = ActionManager::registerAction(minimizeAction, Constants::MINIMIZE_WINDOW); cmd->setDefaultKeySequence(QKeySequence(tr("Ctrl+M"))); mwindow->addAction(cmd, Constants::G_WINDOW_SIZE); // Zoom Action QAction *zoomAction = new QAction(tr("Zoom"), this); zoomAction->setEnabled(false); // actual implementation in WindowSupport cmd = ActionManager::registerAction(zoomAction, Constants::ZOOM_WINDOW); mwindow->addAction(cmd, Constants::G_WINDOW_SIZE); } // Full Screen Action QAction *toggleFullScreenAction = new QAction(tr("Full Screen"), this); toggleFullScreenAction->setCheckable(!HostOsInfo::isMacHost()); toggleFullScreenAction->setEnabled(false); // actual implementation in WindowSupport cmd = ActionManager::registerAction(toggleFullScreenAction, Constants::TOGGLE_FULLSCREEN); cmd->setDefaultKeySequence(QKeySequence(UseMacShortcuts ? tr("Ctrl+Meta+F") : tr("Ctrl+Shift+F11"))); if (HostOsInfo::isMacHost()) cmd->setAttribute(Command::CA_UpdateText); mwindow->addAction(cmd, Constants::G_WINDOW_SIZE); if (UseMacShortcuts) { mwindow->addSeparator(Constants::G_WINDOW_SIZE); QAction *closeAction = new QAction(tr("Close Window"), this); closeAction->setEnabled(false); cmd = ActionManager::registerAction(closeAction, Constants::CLOSE_WINDOW); cmd->setDefaultKeySequence(QKeySequence(tr("Ctrl+Meta+W"))); mwindow->addAction(cmd, Constants::G_WINDOW_SIZE); mwindow->addSeparator(Constants::G_WINDOW_SIZE); } // Show Sidebar Action m_toggleSideBarAction = new QAction(Icons::TOGGLE_SIDEBAR.icon(), QCoreApplication::translate("Core", Constants::TR_SHOW_SIDEBAR), this); m_toggleSideBarAction->setCheckable(true); cmd = ActionManager::registerAction(m_toggleSideBarAction, Constants::TOGGLE_SIDEBAR); cmd->setAttribute(Command::CA_UpdateText); cmd->setDefaultKeySequence(QKeySequence(UseMacShortcuts ? tr("Ctrl+0") : tr("Alt+0"))); connect(m_toggleSideBarAction, &QAction::triggered, this, &MainWindow::setSidebarVisible); m_toggleSideBarButton->setDefaultAction(cmd->action()); mwindow->addAction(cmd, Constants::G_WINDOW_VIEWS); m_toggleSideBarAction->setEnabled(false); // Show Mode Selector Action m_toggleModeSelectorAction = new QAction(tr("Show Mode Selector"), this); m_toggleModeSelectorAction->setCheckable(true); cmd = ActionManager::registerAction(m_toggleModeSelectorAction, Constants::TOGGLE_MODE_SELECTOR); connect(m_toggleModeSelectorAction, &QAction::triggered, ModeManager::instance(), &ModeManager::setModeSelectorVisible); mwindow->addAction(cmd, Constants::G_WINDOW_VIEWS); // Window->Views ActionContainer *mviews = ActionManager::createMenu(Constants::M_WINDOW_VIEWS); mwindow->addMenu(mviews, Constants::G_WINDOW_VIEWS); mviews->menu()->setTitle(tr("&Views")); // "Help" separators mhelp->addSeparator(Constants::G_HELP_SUPPORT); if (!HostOsInfo::isMacHost()) mhelp->addSeparator(Constants::G_HELP_ABOUT); // About IDE Action icon = QIcon::fromTheme(QLatin1String("help-about")); if (HostOsInfo::isMacHost()) tmpaction = new QAction(icon, tr("About &Qt Creator"), this); // it's convention not to add dots to the about menu else tmpaction = new QAction(icon, tr("About &Qt Creator..."), this); tmpaction->setMenuRole(QAction::AboutRole); cmd = ActionManager::registerAction(tmpaction, Constants::ABOUT_QTCREATOR); mhelp->addAction(cmd, Constants::G_HELP_ABOUT); tmpaction->setEnabled(true); connect(tmpaction, &QAction::triggered, this, &MainWindow::aboutQtCreator); //About Plugins Action tmpaction = new QAction(tr("About &Plugins..."), this); tmpaction->setMenuRole(QAction::ApplicationSpecificRole); cmd = ActionManager::registerAction(tmpaction, Constants::ABOUT_PLUGINS); mhelp->addAction(cmd, Constants::G_HELP_ABOUT); tmpaction->setEnabled(true); connect(tmpaction, &QAction::triggered, this, &MainWindow::aboutPlugins); // About Qt Action // tmpaction = new QAction(tr("About &Qt..."), this); // cmd = ActionManager::registerAction(tmpaction, Constants:: ABOUT_QT); // mhelp->addAction(cmd, Constants::G_HELP_ABOUT); // tmpaction->setEnabled(true); // connect(tmpaction, SIGNAL(triggered()), qApp, SLOT(aboutQt())); // About sep if (!HostOsInfo::isMacHost()) { // doesn't have the "About" actions in the Help menu tmpaction = new QAction(this); tmpaction->setSeparator(true); cmd = ActionManager::registerAction(tmpaction, "QtCreator.Help.Sep.About"); mhelp->addAction(cmd, Constants::G_HELP_ABOUT); } }
void MainWindow::setupMenu() { //Setup menu menuBar = new QMenuBar(centralWidget()); this->setMenuBar(menuBar); QMenu* fileMenu = new QMenu(tr("File"), menuBar); QAction *exitAction = new QAction(tr("Exit"), this); connect(exitAction, &QAction::triggered, this, &MainWindow::close); fileMenu->addAction(exitAction); // Profiles QMenu* profilesMenu = new QMenu(tr("Profiles")); QAction *backToMainPage = new QAction(tr("Back to main page"), this); connect(backToMainPage, &QAction::triggered, []() { SDK::ProfileManager::instance()->backToMainPage(); }); profilesMenu->addAction(backToMainPage); profilesMenu->addSection(tr("Profiles")); connect(profilesMenu, &QMenu::triggered, [=](QAction* action) { SDK::Profile* profile = SDK::ProfileManager::instance()->findById(action->data().toString()); if(profile != NULL) SDK::ProfileManager::instance()->setActiveProfile(profile); else WARN() << qPrintable(QString("Can't load profile %1 from profiles menu!").arg(action->data().toString())); }); connect(SDK::ProfileManager::instance(), &SDK::ProfileManager::profileChanged, [=](SDK::Profile* profile){ for(QAction* action: profilesMenu->actions()) { if(action->data().toString() == profile->getId()) { action->setChecked(true); profilesMenu->setActiveAction(action); } else { action->setChecked(false); } } }); for(const SDK::Profile* profile: SDK::ProfileManager::instance()->getProfiles()) { if(!profile->hasFlag(SDK::Profile::HIDDEN)) { QAction* loadProfile = new QAction(profile->getName(), profilesMenu); loadProfile->setData(profile->getId()); loadProfile->setCheckable(true); loadProfile->setChecked(false); profilesMenu->addAction(loadProfile); } } // Video menu QMenu* videoMenu = new QMenu(tr("Video"), menuBar); QMenu* aspectRatioMenu = new QMenu(tr("Aspect ratio"), videoMenu); connect(aspectRatioMenu, &QMenu::triggered, [=](QAction* action){ if(player()) player()->setAspectRatio((SDK::AspectRatio) action->data().toInt()); aspectRatioMenu->setActiveAction(action); for(QAction* a: aspectRatioMenu->actions()) { a->setChecked(a == action && player()); } }); connect(aspectRatioMenu, &QMenu::aboutToShow, [=]{ if(!player()) return; SDK::AspectRatio current_ratio = player()->getAspectRatio(); for(QAction* action: aspectRatioMenu->actions()) { SDK::AspectRatio ratio = (SDK::AspectRatio) action->data().toInt(); if(ratio == current_ratio) { action->setChecked(true); } else { action->setChecked(false); } } }); QList<QPair<QString, SDK::AspectRatio>> ratios; ratios.append(QPair<QString, SDK::AspectRatio>(tr("Auto"), SDK::ASPECT_RATIO_AUTO)); ratios.append(QPair<QString, SDK::AspectRatio>(tr("1:1"), SDK::ASPECT_RATIO_1_1)); ratios.append(QPair<QString, SDK::AspectRatio>(tr("5:4"), SDK::ASPECT_RATIO_5_4)); ratios.append(QPair<QString, SDK::AspectRatio>(tr("4:3"), SDK::ASPECT_RATIO_4_3)); ratios.append(QPair<QString, SDK::AspectRatio>(tr("11:8"), SDK::ASPECT_RATIO_11_8)); ratios.append(QPair<QString, SDK::AspectRatio>(tr("14:10"), SDK::ASPECT_RATIO_14_10)); ratios.append(QPair<QString, SDK::AspectRatio>(tr("3:2"), SDK::ASPECT_RATIO_3_2)); ratios.append(QPair<QString, SDK::AspectRatio>(tr("14:9"), SDK::ASPECT_RATIO_14_9)); ratios.append(QPair<QString, SDK::AspectRatio>(tr("16:10"), SDK::ASPECT_RATIO_16_10)); ratios.append(QPair<QString, SDK::AspectRatio>(tr("16:9"), SDK::ASPECT_RATIO_16_9)); ratios.append(QPair<QString, SDK::AspectRatio>(tr("2.35:1"), SDK::ASPECT_RATIO_2_35_1)); for(QPair<QString, SDK::AspectRatio> pair: ratios) { QString name = pair.first; SDK::AspectRatio ratio = pair.second; QAction* action = new QAction(name, aspectRatioMenu); action->setData(ratio); action->setCheckable(true); action->setChecked(false); aspectRatioMenu->addAction(action); } videoMenu->addMenu(aspectRatioMenu); // Audio menu QMenu* audioMenu = new QMenu(tr("Audio"), menuBar); QMenu* audioTrackMenu = new QMenu(tr("Track"), audioMenu); connect(audioTrackMenu, &QMenu::triggered, [=](QAction* action){ if(!player()) return; player()->setAudioLanguage(action->data().toInt()); audioTrackMenu->setActiveAction(action); for(QAction* a: audioTrackMenu->actions()) { action->setChecked(a == action); } }); connect(audioTrackMenu, &QMenu::aboutToShow, [=]{ audioTrackMenu->clear(); if(!player()) return; int index = player()->getAudioPID(); QList<AudioLangInfo> languages = player()->getAudioLanguages(); for(const AudioLangInfo &lang: languages) { QAction* action = new QAction(lang.m_code3, audioTrackMenu); action->setData(lang.m_pid); action->setCheckable(true); action->setChecked(lang.m_pid == index); audioTrackMenu->addAction(action); } }); audioMenu->addMenu(audioTrackMenu); // Settings QMenu* settingsMenu = new QMenu(tr("Settings")); QAction* settingsAction = new QAction(tr("Settings..."), settingsMenu); settingsAction->setMenuRole(QAction::PreferencesRole); connect(settingsAction, &QAction::triggered, [=]() { SettingsDialog* dialog = new SettingsDialog(this); dialog->setAttribute( Qt::WA_DeleteOnClose, true ); dialog->show(); }); settingsMenu->addAction(settingsAction); QAction* showDevTools = new QAction(tr("Developer tools..."), settingsMenu); connect(showDevTools, &QAction::triggered, SDK::Browser::instance(), &SDK::Browser::showDeveloperTools); settingsMenu->addAction(showDevTools); QAction* toggleFullscreenAction = new QAction(tr("Fullscreen mode"), settingsMenu); toggleFullscreenAction->setCheckable(true); connect(this, &MainWindow::fullScreenModeToggled, [=](bool fullscreen){ toggleFullscreenAction->setChecked(fullscreen); }); connect(toggleFullscreenAction, &QAction::triggered, [=]() { setAppFullscreen(!isFullScreen()); }); settingsMenu->addAction(toggleFullscreenAction); //About QMenu* aboutMenu = new QMenu(tr("About")); QAction* aboutAppAction = new QAction(tr("About application..."), aboutMenu); aboutAppAction->setMenuRole(QAction::AboutRole); connect(aboutAppAction, &QAction::triggered, [=]() { AboutAppDialog dialog; dialog.exec(); dialog.show(); }); QAction* aboutPluginsAction = new QAction(tr("About plugins..."), aboutMenu); aboutPluginsAction->setMenuRole(QAction::ApplicationSpecificRole); connect(aboutPluginsAction, &QAction::triggered, [=]() { PluginsDialog dialog; dialog.exec(); dialog.show(); }); aboutMenu->addAction(aboutAppAction); aboutMenu->addAction(aboutPluginsAction); menuBar->addMenu(fileMenu); menuBar->addMenu(videoMenu); menuBar->addMenu(audioMenu); menuBar->addMenu(profilesMenu); menuBar->addMenu(settingsMenu); menuBar->addMenu(aboutMenu); m_menuItems.append(fileMenu); m_menuItems.append(videoMenu); m_menuItems.append(audioMenu); m_menuItems.append(profilesMenu); m_menuItems.append(settingsMenu); }
bool Application::configure() { if ( !QSystemTrayIcon::isSystemTrayAvailable() ) { LOG_ERROR( "application", tr( "No system tray available!" ) ); QMessageBox::critical( 0, tr( "Error" ), tr( "No system tray available!" ) ); return false; } if ( !QSystemTrayIcon::supportsMessages() ) { LOG_ERROR( "application", tr( "System tray not support messages!" ) ); QMessageBox::critical( 0, tr( "Error" ), tr( "System tray not support messages!" ) ); return false; } // Tray icons set. trayIconList.append( ":/images/radio-active-2.png" ); trayIconList.append( ":/images/radio-active-1.png" ); trayIconList.append( ":/images/radio-active.png" ); currTrayIcon = 0; // Setup player. connect( &player, SIGNAL( playerTick( quint64 ) ), SLOT( animateIcon( quint64 ) ) ); connect( &player, SIGNAL( playing() ), SLOT( onPlayerPlay() ) ); connect( &player, SIGNAL( paused() ), SLOT( onPlayerPause() ) ); connect( &player, SIGNAL( stopped() ), SLOT( onPlayerStop() ) ); connect( &player, SIGNAL( errorOccured() ), SLOT( onPlayerError() ) ); connect( &player, SIGNAL( buffering( int ) ), SLOT( onPlayerBuffering( int ) ) ); connect( &player, SIGNAL( volumeChanged( int ) ), SLOT( onPlayerVolumeChanged( int ) ) ); connect( &player, SIGNAL( metaDataChanged( const QMultiMap< QString, QString > ) ), SLOT ( onMetaDataChange( const QMultiMap< QString, QString > ) ) ); // Setup global shortcuts. QxtGlobalShortcut * globalShortcut; globalShortcut = new QxtGlobalShortcut( &trayItem ); if ( globalShortcut ) { globalShortcut->setShortcut( QKeySequence( pauseHotkey ) ); connect( globalShortcut, SIGNAL( activated() ), &player, SLOT( playOrPause() ) ); } globalShortcut = new QxtGlobalShortcut( &trayItem ); if ( globalShortcut ) { globalShortcut->setShortcut( QKeySequence( stopHotkey ) ); connect( globalShortcut, SIGNAL( activated() ), &player, SLOT( stopPlay() ) ); } globalShortcut = new QxtGlobalShortcut( &trayItem ); if ( globalShortcut ) { globalShortcut->setShortcut( QKeySequence( volumeUpHotkey ) ); connect( globalShortcut, SIGNAL( activated() ), &player, SLOT( volumeUp() ) ); } globalShortcut = new QxtGlobalShortcut( &trayItem ); if ( globalShortcut ) { globalShortcut->setShortcut( QKeySequence( volumeDownHotkey ) ); connect( globalShortcut, SIGNAL( activated() ), &player, SLOT( volumeDown() ) ); } globalShortcut = new QxtGlobalShortcut( &trayItem ); if ( globalShortcut ) { globalShortcut->setShortcut( QKeySequence( quitHotkey ) ); connect( globalShortcut, SIGNAL( activated() ), this, SLOT( quit()) ); } // Create stations menu. stationsMenu.setTitle( tr( "Stations" ) ); stationsMenu.setIcon( QIcon( ":/images/radio-passive.png" ) ); stationsGroup = new QActionGroup( &stationsMenu ); if ( stationsGroup ) { stationsGroup->setExclusive( true ); updateStationsMenu(); connect( stationsGroup, SIGNAL( triggered( QAction * ) ), SLOT( processStationAction( QAction * ) ) ); } // Create base menu. trayMenu.addMenu( &stationsMenu ); trayMenu.addSeparator(); QAction * action; action = new QAction( &trayMenu ); if ( action ) { action->setIcon( QIcon( ":/images/audio-volume-up.png" ) ); action->setText( tr( "Volume up" ) ); action->setShortcut( QKeySequence( volumeUpHotkey ) ); connect( action, SIGNAL( triggered() ), &player, SLOT( volumeUp() ) ); trayMenu.addAction( action ); } action = new QAction( &trayMenu ); if ( action ) { action->setIcon( QIcon( ":/images/audio-volume-down.png" ) ); action->setText( tr( "Volume down" ) ); action->setShortcut( QKeySequence( volumeDownHotkey ) ); connect( action, SIGNAL( triggered() ), &player, SLOT( volumeDown() ) ); trayMenu.addAction( action ); } trayMenu.addSeparator(); action = new QAction( &trayMenu ); if ( action ) { action->setIcon( QIcon( ":/images/media-playback-start.png" ) ); action->setText( tr( "Play|Pause" ) ); action->setShortcut( QKeySequence( pauseHotkey ) ); connect( action, SIGNAL( triggered() ), &player, SLOT( playOrPause() ) ); trayMenu.addAction( action ); } action = new QAction( &trayMenu ); if ( action ) { action->setIcon( QIcon( ":/images/media-playback-stop.png" ) ); action->setText( tr( "Stop" ) ); action->setShortcut( QKeySequence( stopHotkey ) ); connect( action, SIGNAL( triggered() ), &player, SLOT( stopPlay() ) ); trayMenu.addAction( action ); } trayMenu.addSeparator(); action = new QAction( &trayMenu ); if ( action ) { action->setIcon( QIcon( ":/images/application-info.png" ) ); action->setText( tr( "Info" ) ); action->setMenuRole( QAction::AboutRole ); connect( action, SIGNAL( triggered() ), this, SLOT( about() ) ); trayMenu.addAction( action ); } action = new QAction( &trayMenu ); if ( action ) { action->setIcon( QIcon( ":/images/application-exit.png" ) ); action->setText( tr( "Exit" ) ); action->setShortcut( QKeySequence( quitHotkey ) ); action->setMenuRole( QAction::QuitRole ); connect( action, SIGNAL( triggered() ), this, SLOT( quit() ) ); trayMenu.addAction( action ); } // Create settings menu. action = new QAction( &trayMenu ); if ( action ) { action->setIcon( QIcon( ":/images/application-settings.png" ) ); action->setText( tr( "Settings" ) ); action->setMenuRole( QAction::PreferencesRole ); connect( action, SIGNAL( triggered() ), this, SLOT( manageSettings() ) ); settingsMenu.addAction( action ); } action = new QAction( &trayMenu ); if ( action ) { action->setIcon( QIcon( ":/images/application-exit.png" ) ); action->setText( tr( "Exit" ) ); action->setShortcut( QKeySequence( quitHotkey ) ); action->setMenuRole( QAction::QuitRole ); connect( action, SIGNAL( triggered() ), this, SLOT( quit() ) ); settingsMenu.addAction( action ); } // Setup tray item. trayItem.setIcon( QIcon( ":/images/radio-passive.png" ) ); trayItem.show(); trayItem.showMessage( tr( "QRadioTray" ), tr( "Program started!" ), QSystemTrayIcon::Information ); connect( &trayItem, SIGNAL( activated( QSystemTrayIcon::ActivationReason ) ), SLOT( processTrayActivation( QSystemTrayIcon::ActivationReason ) ) ); return true; }
Window::Window(const QString& file) : m_pause_action(0), m_previous_state(0) { setAcceptDrops(true); // Create states m_states.insert("NewGame", new NewGameState(this)); m_states.insert("OpenGame", new OpenGameState(this)); m_states.insert("Optimizing", new OptimizingState(this)); m_states.insert("Play", new PlayState(this)); m_states.insert("AutoPause", new AutoPauseState(this)); m_states.insert("Pause", new PauseState(this)); m_states.insert("Finish", new FinishState(this)); m_state = m_states.value("NewGame"); // Create widgets m_contents = new QStackedWidget(this); setCentralWidget(m_contents); m_board = new Board(this); m_contents->addWidget(m_board); connect(m_board, &Board::started, this, &Window::gameStarted); connect(m_board, &Board::finished, this, &Window::gameFinished); connect(m_board, &Board::optimizingStarted, this, &Window::optimizingStarted); connect(m_board, &Board::optimizingFinished, this, &Window::optimizingFinished); // Create pause screen m_pause_screen = new QLabel(tr("<p><b><big>Paused</big></b><br>Click to resume playing.</p>"), this); m_pause_screen->setAlignment(Qt::AlignCenter); m_pause_screen->installEventFilter(this); m_contents->addWidget(m_pause_screen); // Create open game screen QLabel* open_game_screen = new QLabel(tr("<p><b><big>Please wait</big></b><br>Loading game...</p>"), this); open_game_screen->setAlignment(Qt::AlignCenter); m_contents->addWidget(open_game_screen); // Create start screen QLabel* start_screen = new QLabel(tr("Click to start a new game."), this); start_screen->setAlignment(Qt::AlignCenter); start_screen->installEventFilter(this); m_contents->addWidget(start_screen); // Create new game screen QLabel* new_game_screen = new QLabel(tr("<p><b><big>Please wait</big></b><br>Generating a new board...</p>"), this); new_game_screen->setAlignment(Qt::AlignCenter); m_contents->addWidget(new_game_screen); // Create optimizing screen QLabel* optimizing_screen = new QLabel(tr("<p><b><big>Please wait</big></b><br>Optimizing word list...</p>"), this); optimizing_screen->setAlignment(Qt::AlignCenter); m_contents->addWidget(optimizing_screen); // Create game menu QMenu* menu = menuBar()->addMenu(tr("&Game")); menu->addAction(tr("New &Game..."), this, SLOT(newGame()), tr("Ctrl+Shift+N")); menu->addAction(tr("&New Roll"), this, SLOT(newRoll()), QKeySequence::New); menu->addAction(tr("&Choose..."), this, SLOT(chooseGame())); menu->addAction(tr("&Share..."), this, SLOT(shareGame())); menu->addSeparator(); QAction* end_action = menu->addAction(tr("&End"), this, SLOT(endGame())); end_action->setEnabled(false); connect(m_board, &Board::pauseAvailable, end_action, &QAction::setEnabled); m_pause_action = menu->addAction(tr("&Pause")); m_pause_action->setCheckable(true); m_pause_action->setShortcut(tr("Ctrl+P")); m_pause_action->setEnabled(false); connect(m_pause_action, &QAction::triggered, this, &Window::setPaused); connect(m_board, &Board::pauseAvailable, m_pause_action, &QAction::setEnabled); menu->addSeparator(); m_details_action = menu->addAction(tr("&Details"), this, SLOT(showDetails())); m_details_action->setEnabled(false); menu->addAction(tr("&High Scores"), this, SLOT(showScores())); menu->addSeparator(); QAction* action = menu->addAction(tr("&Quit"), this, SLOT(close()), tr("Ctrl+Q")); action->setMenuRole(QAction::QuitRole); monitorVisibility(menu); // Create settings menu menu = menuBar()->addMenu(tr("&Settings")); QMenu* submenu = menu->addMenu(tr("Show &Maximum Score")); QAction* score_actions[3]; score_actions[0] = submenu->addAction(tr("&Never")); score_actions[1] = submenu->addAction(tr("&End Of Game")); score_actions[2] = submenu->addAction(tr("&Always")); QActionGroup* group = new QActionGroup(this); for (int i = 0; i < 3; ++i) { score_actions[i]->setData(i); score_actions[i]->setCheckable(true); group->addAction(score_actions[i]); } connect(group, &QActionGroup::triggered, m_board, &Board::setShowMaximumScore); QAction* missed_action = menu->addAction(tr("Show Missed &Words")); missed_action->setCheckable(true); connect(missed_action, &QAction::toggled, m_board, &Board::setShowMissedWords); QAction* counts_action = menu->addAction(tr("Show Word &Counts")); counts_action->setCheckable(true); counts_action->setChecked(true); connect(counts_action, &QAction::toggled, m_board, &Board::setShowWordCounts); menu->addAction(tr("&Board Language..."), this, SLOT(showLanguage())); menu->addSeparator(); menu->addAction(tr("Application &Language..."), this, SLOT(showLocale())); monitorVisibility(menu); // Create help menu menu = menuBar()->addMenu(tr("&Help")); menu->addAction(tr("&Controls"), this, SLOT(showControls())); menu->addSeparator(); action = menu->addAction(tr("&About"), this, SLOT(about())); action->setMenuRole(QAction::AboutRole); action = menu->addAction(tr("About &Hspell"), this, SLOT(aboutHspell())); action->setMenuRole(QAction::ApplicationSpecificRole); action = menu->addAction(tr("About &Qt"), qApp, SLOT(aboutQt())); action->setMenuRole(QAction::AboutQtRole); action = menu->addAction(tr("About &SCOWL"), this, SLOT(aboutScowl())); action->setMenuRole(QAction::ApplicationSpecificRole); monitorVisibility(menu); // Load settings QSettings settings; QAction* score_action = score_actions[qBound(0, settings.value("ShowMaximumScore", 1).toInt(), 2)]; score_action->setChecked(true); m_board->setShowMaximumScore(score_action); missed_action->setChecked(settings.value("ShowMissed", true).toBool()); counts_action->setChecked(settings.value("ShowWordCounts", true).toBool()); restoreGeometry(settings.value("Geometry").toByteArray()); // Start game QString current = file; if (settings.contains("Current/Version")) { if (current.isEmpty() || QMessageBox::question(this, tr("Question"), tr("End the current game?"), QMessageBox::Yes | QMessageBox::No, QMessageBox::No) == QMessageBox::No) { current = ":saved:"; } } m_state->finish(); m_contents->setCurrentIndex(3); if (current.isEmpty()) { newGame(); } else { startGame(current); } }
MacMenu::MacMenu() : QMenuBar(nullptr) { // // File menu // QMenu *filemenu = addMenu(MainWindow::tr("&File")); QAction *newdocument = makeAction(filemenu, "newdocument", MainWindow::tr("&New"), QKeySequence::New); QAction *open = makeAction(filemenu, "opendocument", MainWindow::tr("&Open..."), QKeySequence::Open); connect(newdocument, &QAction::triggered, this, &MacMenu::newDocument); connect(open, &QAction::triggered, this, &MacMenu::openDocument); _recent = filemenu->addMenu(MainWindow::tr("Open &Recent")); connect(_recent, &QMenu::triggered, this, &MacMenu::openRecent); // Relocated menu items QAction *quit = makeAction(filemenu, "exitprogram", MainWindow::tr("&Quit"), QKeySequence("Ctrl+Q")); quit->setMenuRole(QAction::QuitRole); connect(quit, &QAction::triggered, this, &MacMenu::quitAll); QAction *preferences = makeAction(filemenu, 0, MainWindow::tr("Prefere&nces"), QKeySequence()); preferences->setMenuRole(QAction::PreferencesRole); connect(preferences, &QAction::triggered, &MainWindow::showSettings); // // Session menu // QMenu *sessionmenu = addMenu(MainWindow::tr("&Session")); QAction *host = makeAction(sessionmenu, "hostsession", MainWindow::tr("&Host..."), QKeySequence()); QAction *join = makeAction(sessionmenu, "joinsession", MainWindow::tr("&Join..."), QKeySequence()); host->setEnabled(false); connect(join, &QAction::triggered, this, &MacMenu::joinSession); // // Window menu (Mac specific) // _windows = addMenu(MainWindow::tr("Window")); connect(_windows, &QMenu::triggered, this, &MacMenu::winSelect); connect(_windows, &QMenu::aboutToShow, this, &MacMenu::updateWinMenu); QAction *minimize = makeAction(_windows, 0, tr("Minimize"), QKeySequence("ctrl+m")); _windows->addSeparator(); connect(minimize, &QAction::triggered, this, &MacMenu::winMinimize); // // Help menu // QMenu *helpmenu = addMenu(MainWindow::tr("&Help")); QAction *homepage = makeAction(helpmenu, "dphomepage", MainWindow::tr("&Homepage"), QKeySequence()); QAction *about = makeAction(helpmenu, "dpabout", MainWindow::tr("&About Drawpile"), QKeySequence()); about->setMenuRole(QAction::AboutRole); QAction *aboutqt = makeAction(helpmenu, "aboutqt", MainWindow::tr("About &Qt"), QKeySequence()); aboutqt->setMenuRole(QAction::AboutQtRole); connect(homepage, &QAction::triggered, &MainWindow::homepage); connect(about, &QAction::triggered, &MainWindow::about); connect(aboutqt, &QAction::triggered, &QApplication::aboutQt); // // Initialize // updateRecentMenu(); }
void ProgramWindow::setup(const QList<LinkedFile *> & linkedFiles, const QString & alternativePath) { resize(500,700); setAttribute(Qt::WA_DeleteOnClose, true); QFrame * mainFrame = new QFrame(this); QFrame * headerFrame = createHeader(); QFrame * centerFrame = createCenter(); layout()->setMargin(0); layout()->setSpacing(0); QGridLayout *layout = new QGridLayout(mainFrame); layout->setMargin(0); layout->setSpacing(0); layout->addWidget(headerFrame,0,0); layout->addWidget(centerFrame,1,0); setCentralWidget(mainFrame); setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding); QSettings settings; if (!settings.value("programwindow/state").isNull()) { restoreState(settings.value("programwindow/state").toByteArray()); } if (!settings.value("programwindow/geometry").isNull()) { restoreGeometry(settings.value("programwindow/geometry").toByteArray()); } installEventFilter(this); // Setup new menu bar for the programming window QMenuBar *menubar = menuBar(); QMenu *currentMenu = menubar->addMenu(tr("&File")); QAction *currentAction = new QAction(tr("New"), this); currentAction->setShortcut(tr("Ctrl+N")); currentAction->setStatusTip(tr("Create a new program")); connect(currentAction, SIGNAL(triggered()), this, SLOT(addTab())); currentMenu->addAction(currentAction); currentAction = new QAction(tr("&Open..."), this); currentAction->setShortcut(tr("Ctrl+O")); currentAction->setStatusTip(tr("Open a program")); connect(currentAction, SIGNAL(triggered()), this, SLOT(loadProgramFile())); currentMenu->addAction(currentAction); currentMenu->addSeparator(); m_saveAction = new QAction(tr("&Save"), this); m_saveAction->setShortcut(tr("Ctrl+S")); m_saveAction->setStatusTip(tr("Save the current program")); connect(m_saveAction, SIGNAL(triggered()), this, SLOT(save())); currentMenu->addAction(m_saveAction); currentAction = new QAction(tr("Rename"), this); currentAction->setStatusTip(tr("Rename the current program")); connect(currentAction, SIGNAL(triggered()), this, SLOT(rename())); currentMenu->addAction(currentAction); currentAction = new QAction(tr("Duplicate tab"), this); currentAction->setStatusTip(tr("Copies the current program into a new tab")); connect(currentAction, SIGNAL(triggered()), this, SLOT(duplicateTab())); currentMenu->addAction(currentAction); currentMenu->addSeparator(); currentAction = new QAction(tr("Remove tab"), this); currentAction->setShortcut(tr("Ctrl+W")); currentAction->setStatusTip(tr("Remove the current program from the sketch")); connect(currentAction, SIGNAL(triggered()), this, SLOT(closeCurrentTab())); currentMenu->addAction(currentAction); currentMenu->addSeparator(); m_printAction = new QAction(tr("&Print..."), this); m_printAction->setShortcut(tr("Ctrl+P")); m_printAction->setStatusTip(tr("Print the current program")); connect(m_printAction, SIGNAL(triggered()), this, SLOT(print())); currentMenu->addAction(m_printAction); currentMenu->addSeparator(); currentAction = new QAction(tr("&Quit"), this); currentAction->setShortcut(tr("Ctrl+Q")); currentAction->setStatusTip(tr("Quit the application")); currentAction->setMenuRole(QAction::QuitRole); connect(currentAction, SIGNAL(triggered()), qApp, SLOT(closeAllWindows2())); currentMenu->addAction(currentAction); currentMenu = menubar->addMenu(tr("&Edit")); m_undoAction = new QAction(tr("Undo"), this); m_undoAction->setShortcuts(QKeySequence::Undo); m_undoAction->setEnabled(false); connect(m_undoAction, SIGNAL(triggered()), this, SLOT(undo())); currentMenu->addAction(m_undoAction); m_redoAction = new QAction(tr("Redo"), this); m_redoAction->setShortcuts(QKeySequence::Redo); m_redoAction->setEnabled(false); connect(m_redoAction, SIGNAL(triggered()), this, SLOT(redo())); currentMenu->addAction(m_redoAction); currentMenu->addSeparator(); m_cutAction = new QAction(tr("&Cut"), this); m_cutAction->setShortcut(tr("Ctrl+X")); m_cutAction->setStatusTip(tr("Cut selection")); m_cutAction->setEnabled(false); connect(m_cutAction, SIGNAL(triggered()), this, SLOT(cut())); currentMenu->addAction(m_cutAction); m_copyAction = new QAction(tr("&Copy"), this); m_copyAction->setShortcut(tr("Ctrl+C")); m_copyAction->setStatusTip(tr("Copy selection")); m_copyAction->setEnabled(false); connect(m_copyAction, SIGNAL(triggered()), this, SLOT(copy())); currentMenu->addAction(m_copyAction); currentAction = new QAction(tr("&Paste"), this); currentAction->setShortcut(tr("Ctrl+V")); currentAction->setStatusTip(tr("Paste clipboard contents")); // TODO: Check clipboard status and disable appropriately here connect(currentAction, SIGNAL(triggered()), this, SLOT(paste())); currentMenu->addAction(currentAction); currentMenu->addSeparator(); currentAction = new QAction(tr("&Select All"), this); currentAction->setShortcut(tr("Ctrl+A")); currentAction->setStatusTip(tr("Select all text")); connect(currentAction, SIGNAL(triggered()), this, SLOT(selectAll())); currentMenu->addAction(currentAction); currentMenu = menuBar()->addMenu(tr("&Program")); QMenu *languageMenu = new QMenu(tr("Select language"), this); currentMenu->addMenu(languageMenu); QString currentLanguage = settings.value("programwindow/language", "").toString(); QStringList languages = getAvailableLanguages(); QActionGroup *languageActionGroup = new QActionGroup(this); foreach (QString language, languages) { currentAction = new QAction(language, this); currentAction->setCheckable(true); m_languageActions.insert(language, currentAction); languageActionGroup->addAction(currentAction); languageMenu->addAction(currentAction); if (!currentLanguage.isEmpty()) { if (language.compare(currentLanguage) == 0) { currentAction->setChecked(true); } } }
Window::Window() { m_board = new Board(this); connect(m_board, &Board::finished, this, &Window::gameFinished); connect(m_board, &Board::started, this, &Window::gameStarted); connect(m_board, &Board::pauseChanged, this, &Window::gamePauseChanged); QWidget* contents = new QWidget(this); setCentralWidget(contents); View* view = new View(m_board, contents); m_scores = new ScoreBoard(this); m_definitions = new Definitions(m_board->words(), this); connect(m_board, &Board::wordAdded, m_definitions, &Definitions::addWord); connect(m_board, &Board::wordSolved, m_definitions, &Definitions::solveWord); connect(m_board, &Board::wordSelected, m_definitions, &Definitions::selectWord); connect(m_board, &Board::loading, m_definitions, &Definitions::clear); // Create success message m_success = new QLabel(contents); m_success->setAttribute(Qt::WA_TransparentForMouseEvents); QFont f = font(); f.setPointSize(24); QFontMetrics metrics(f); int width = metrics.width(tr("Success")); int height = metrics.height(); int ratio = devicePixelRatio(); QPixmap pixmap(QSize(width + height, height * 2) * ratio); pixmap.setDevicePixelRatio(ratio); pixmap.fill(QColor(0, 0, 0, 0)); { QPainter painter(&pixmap); painter.setPen(Qt::NoPen); painter.setBrush(QColor(0, 0, 0, 200)); painter.setRenderHint(QPainter::Antialiasing, true); painter.drawRoundedRect(0, 0, width + height, height * 2, 10, 10); painter.setFont(f); painter.setPen(Qt::white); painter.setRenderHint(QPainter::TextAntialiasing, true); painter.drawText(height / 2, height / 2 + metrics.ascent(), tr("Success")); } m_success->setPixmap(pixmap); m_success->hide(); connect(m_board, &Board::loading, m_success, &QLabel::hide); // Create overlay background QLabel* overlay = new QLabel(this); f = font(); f.setPixelSize(20); metrics = QFontMetrics(f); width = std::max(metrics.width(tr("Loading")), metrics.width(tr("Paused"))); for (int i = 0; i < 10; ++i) { QString test(6, QChar(i + 48)); test.insert(4, QLatin1Char(':')); test.insert(2, QLatin1Char(':')); width = std::max(width, metrics.width(test)); } pixmap = QPixmap(QSize(width + 82, 32) * ratio); pixmap.setDevicePixelRatio(ratio); pixmap.fill(Qt::transparent); { QPainter painter(&pixmap); painter.setPen(Qt::NoPen); painter.setBrush(QColor(0, 0, 0, 200)); painter.setRenderHint(QPainter::Antialiasing, true); painter.drawRoundedRect(0, -32, width + 82, 64, 5, 5); } overlay->setPixmap(pixmap); // Create overlay buttons m_definitions_button = new QLabel(overlay); m_definitions_button->setPixmap(QIcon(":/definitions.png").pixmap(24,24)); m_definitions_button->setCursor(Qt::PointingHandCursor); m_definitions_button->setToolTip(tr("Definitions")); m_definitions_button->installEventFilter(this); m_hint_button = new QLabel(overlay); m_hint_button->setPixmap(QIcon(":/hint.png").pixmap(24,24)); m_hint_button->setCursor(Qt::PointingHandCursor); m_hint_button->setToolTip(tr("Hint")); m_hint_button->setDisabled(true); m_hint_button->installEventFilter(this); connect(m_board, &Board::hintAvailable, m_hint_button, &QLabel::setEnabled); // Create clock m_clock = new Clock(overlay); m_clock->setDisabled(true); connect(m_clock, &Clock::togglePaused, m_board, &Board::togglePaused); connect(m_board, &Board::loading, m_clock, &Clock::setLoading); QHBoxLayout* overlay_layout = new QHBoxLayout(overlay); overlay_layout->setMargin(0); overlay_layout->setSpacing(0); overlay_layout->addSpacing(10); overlay_layout->addWidget(m_definitions_button); overlay_layout->addStretch(); overlay_layout->addWidget(m_clock, 0, Qt::AlignCenter); overlay_layout->addStretch(); overlay_layout->addWidget(m_hint_button); overlay_layout->addSpacing(10); // Lay out board QGridLayout* layout = new QGridLayout(contents); layout->setMargin(0); layout->setSpacing(0); layout->addWidget(view, 0, 0); layout->addWidget(m_success, 0, 0, Qt::AlignCenter); layout->addWidget(overlay, 0, 0, Qt::AlignHCenter | Qt::AlignTop); // Create menus QMenu* menu = menuBar()->addMenu(tr("&Game")); menu->addAction(tr("&New"), this, SLOT(newGame()), QKeySequence::New); menu->addAction(tr("&Choose..."), this, SLOT(chooseGame())); menu->addSeparator(); m_pause_action = menu->addAction(tr("&Pause"), m_board, SLOT(togglePaused()), tr("P")); m_pause_action->setDisabled(true); QAction* action = menu->addAction(tr("&Hint"), m_board, SLOT(showHint()), tr("H")); action->setDisabled(true); connect(m_board, &Board::hintAvailable, action, &QAction::setEnabled); menu->addAction(tr("D&efinitions"), m_definitions, SLOT(selectWord()), tr("D")); menu->addSeparator(); menu->addAction(tr("&Details"), this, SLOT(showDetails())); menu->addAction(tr("&Scores"), m_scores, SLOT(exec())); menu->addSeparator(); action = menu->addAction(tr("&Quit"), qApp, SLOT(quit()), QKeySequence::Quit); action->setMenuRole(QAction::QuitRole); menu = menuBar()->addMenu(tr("&Settings")); menu->addAction(tr("Application &Language..."), this, SLOT(setLocale())); menu = menuBar()->addMenu(tr("&Help")); action = menu->addAction(tr("&About"), this, SLOT(about())); action->setMenuRole(QAction::AboutRole); action = menu->addAction(tr("About &Qt"), qApp, SLOT(aboutQt())); action->setMenuRole(QAction::AboutQtRole); // Restore window geometry QSettings settings; resize(800, 600); restoreGeometry(settings.value("Geometry").toByteArray()); // Continue previous or start new game show(); if (settings.contains("Current/Words") && (settings.value("Current/Version" ).toInt() == 4)) { m_board->openGame(); } else { settings.remove("Current"); newGame(); } }
Window::Window(QWidget *parent, Qt::WindowFlags wf) : QMainWindow(parent, wf) { QWidget* contents = new QWidget(this); setCentralWidget(contents); // Create preview m_preview = new QLabel(contents); m_preview->setFixedSize(80, 100); m_preview->setAutoFillBackground(true); { QPalette palette = m_preview->palette(); palette.setColor(m_preview->backgroundRole(), Qt::black); m_preview->setPalette(palette); } // Create level display m_level = new QLabel("0", contents); m_level->setAlignment(Qt::AlignRight | Qt::AlignVCenter); m_level->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken); m_level->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Preferred); // Create lines display m_lines = new QLabel("0", contents); m_lines->setAlignment(Qt::AlignRight | Qt::AlignVCenter); m_lines->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken); m_lines->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Preferred); // Create score display m_score = new QLabel("0", contents); m_score->setAlignment(Qt::AlignRight | Qt::AlignVCenter); m_score->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken); m_score->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Preferred); // Create scoreboard m_score_board = new ScoreBoard(this); // Create board m_board = new Board(contents); connect(m_board, &Board::pauseAvailable, this, &Window::pauseAvailable); connect(m_board, &Board::nextPieceAvailable, m_preview, &QLabel::setPixmap); connect(m_board, &Board::levelUpdated, m_level, static_cast<void (QLabel::*)(int)>(&QLabel::setNum)); connect(m_board, &Board::linesRemovedUpdated, m_lines, static_cast<void (QLabel::*)(int)>(&QLabel::setNum)); connect(m_board, &Board::scoreUpdated, this, &Window::scoreUpdated); connect(m_board, static_cast<void (Board::*)(int,int,int)>(&Board::gameOver), m_score_board, &ScoreBoard::addHighScore); connect(m_board, static_cast<void (Board::*)(int,int,int)>(&Board::gameOver), this, &Window::gameOver); connect(m_board, &Board::gameStarted, this, &Window::newGame); // Create overlay message QLabel* message = new QLabel(tr("Click to start a new game."), contents); message->setAttribute(Qt::WA_TransparentForMouseEvents); message->setAlignment(Qt::AlignCenter); message->setStyleSheet( "QLabel {" "background-color: rgba(255, 255, 255, 200);" "color: black;" "margin: 0;" "padding: 0.5em;" "border-radius: 0.5em;" "}"); message->setWordWrap(true); connect(m_board, &Board::showMessage, message, &QLabel::show); connect(m_board, &Board::showMessage, message, &QLabel::setText); connect(m_board, &Board::hideMessage, message, &QLabel::hide); connect(m_board, &Board::hideMessage, message, &QLabel::clear); // Create menus QMenu* menu = menuBar()->addMenu(tr("&Game")); menu->addAction(tr("&New"), m_board, SLOT(newGame()), QKeySequence::New); m_pause_action = menu->addAction(tr("&Pause"), m_board, SLOT(pauseGame()), tr("P")); m_pause_action->setEnabled(false); m_resume_action = menu->addAction(tr("&Resume"), m_board, SLOT(resumeGame()), tr("P")); m_resume_action->setVisible(false); menu->addSeparator(); menu->addAction(tr("&Scores"), m_score_board, SLOT(show())); menu->addSeparator(); QAction* action = menu->addAction(tr("&Quit"), this, SLOT(close()), QKeySequence::Quit); action->setMenuRole(QAction::QuitRole); menu = menuBar()->addMenu(tr("&Settings")); menu->addAction(tr("Application &Language..."), this, SLOT(setLocale())); menu = menuBar()->addMenu(tr("&Help")); action = menu->addAction(tr("&About"), this, SLOT(about())); action->setMenuRole(QAction::AboutRole); action = menu->addAction(tr("About &Qt"), qApp, SLOT(aboutQt())); action->setMenuRole(QAction::AboutQtRole); // Layout window QGridLayout* layout = new QGridLayout(contents); layout->setMargin(12); layout->setSpacing(0); layout->setColumnStretch(0, 1); layout->setColumnMinimumWidth(1, 12); layout->setRowStretch(11, 1); layout->setRowMinimumHeight(2, 24); layout->setRowMinimumHeight(5, 24); layout->setRowMinimumHeight(8, 24); layout->addWidget(m_board, 0, 0, 12, 1); layout->addWidget(message, 0, 0, 12, 1, Qt::AlignCenter); layout->addWidget(new QLabel(tr("Next Piece"), contents), 0, 2, 1, 1, Qt::AlignCenter); layout->addWidget(m_preview, 1, 2, Qt::AlignCenter); layout->addWidget(new QLabel(tr("Level"), contents), 3, 2, 1, 1, Qt::AlignCenter); layout->addWidget(m_level, 4, 2); layout->addWidget(new QLabel(tr("Removed Lines"), contents), 6, 2, 1, 1, Qt::AlignCenter); layout->addWidget(m_lines, 7, 2); layout->addWidget(new QLabel(tr("Score"), contents), 9, 2, 1, 1, Qt::AlignCenter); layout->addWidget(m_score, 10, 2); // Restore window restoreGeometry(QSettings().value("Geometry").toByteArray()); }
QEbuMainWindow::QEbuMainWindow(QWidget *parent) : QMainWindow(parent) { m_ebuCoreMain = 0; m_icon.addFile(":/images/qebu-icon_32.png"); m_icon.addFile(":/images/qebu-icon_64.png"); this->setWindowIcon(m_icon); qApp->setWindowIcon(m_icon); // Central Widget QWidget *cw = new QWidget; m_mainCentralLayout = new QVBoxLayout; m_labelNavigation = new QLabel; m_labelNavigation->setFrameStyle(QFrame::NoFrame); m_stackedWidget = new QStackedWidget; m_stackedWidget->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Expanding); //m_stackedWidget->setMinimumSize(640,400); m_mainCentralLayout->addWidget(m_labelNavigation); m_mainCentralLayout->addWidget(m_stackedWidget); // Bottom label -> currentDocument m_currentDocument = new QLabel; m_mainCentralLayout->addWidget(m_currentDocument); cw->setLayout(m_mainCentralLayout); this->setCentralWidget(cw); // Create top menu bar QMenuBar *topMenuBar = new QMenuBar(this); QMenu *fileMenu = new QMenu(tr("&File"), this); QAction *openAction = new QAction(tr("&Open..."), this); openAction->setShortcuts(QKeySequence::Open); QObject::connect(openAction, SIGNAL(triggered()), this, SLOT(actionOpen())); fileMenu->addAction(openAction); QAction *saveAction = new QAction(tr("&Save as..."), this); saveAction->setShortcut(QKeySequence::SaveAs); QObject::connect(saveAction, SIGNAL(triggered()), this, SLOT(actionSave())); fileMenu->addAction(saveAction); QAction *closeAction = new QAction(tr("&Close"), this); closeAction->setShortcut(QKeySequence::Close); QObject::connect(closeAction, SIGNAL(triggered()), this, SLOT(actionClose())); fileMenu->addAction(closeAction); fileMenu->addSeparator(); QAction *quitAction = new QAction(tr("&Quit"), this); quitAction->setShortcut(QKeySequence::Quit); quitAction->setMenuRole(QAction::QuitRole); QObject::connect(quitAction, SIGNAL(triggered()), this, SLOT(actionQuit())); fileMenu->addAction(quitAction); topMenuBar->addMenu(fileMenu); QMenu *helpMenu = new QMenu(tr("&Help"), this); QAction *wizardAction = new QAction(tr("&Getting started..."), this); QObject::connect(wizardAction, SIGNAL(triggered()), this, SLOT(actionWizard())); helpMenu->addAction(wizardAction); helpMenu->addSeparator(); QAction *aboutQtAction = new QAction(tr("About &Qt..."), this); aboutQtAction->setMenuRole(QAction::AboutQtRole); QObject::connect(aboutQtAction, SIGNAL(triggered()), qApp, SLOT(aboutQt())); helpMenu->addAction(aboutQtAction); QAction *aboutAction = new QAction(tr("&About QEbu..."), this); aboutQtAction->setMenuRole(QAction::AboutRole); QObject::connect(aboutAction, SIGNAL(triggered()), this, SLOT(actionAbout())); helpMenu->addAction(aboutAction); topMenuBar->addMenu(helpMenu); this->setMenuBar(topMenuBar); // Prepare main view resetView(); }
MenuBar::MenuBar(QWidget* parent) : QMenuBar(parent) { // File Menu const QString& fileMenuStr = Config::singleton().enableMnemonic() ? tr("&File") : tr("File"); auto fileMenu = new PackageMenu(fileMenuStr); addMenu(fileMenu); fileMenu->addMenu(OpenRecentItemManager::singleton().openRecentMenu()); fileMenu->setObjectName("file"); const QString& exitMenuStr = Config::singleton().enableMnemonic() ? tr("&Exit") : tr("Exit"); QAction* exitAction = new QAction(exitMenuStr, fileMenu); exitAction->setObjectName(QStringLiteral("exit")); exitAction->setMenuRole(QAction::QuitRole); connect(exitAction, &QAction::triggered, App::instance(), &App::quit); fileMenu->addAction(exitAction); // Text Menu (Edit menu adds Start Dectation and Special Characters menus automatically in Mac) const QString& textMenuStr = Config::singleton().enableMnemonic() ? tr("&Text") : tr("Text"); auto editMenu = new PackageMenu(textMenuStr); addMenu(editMenu); editMenu->setObjectName("edit"); // we need at least one sub menu to show the Text menu correctly because of this bug. // https://bugreports.qt.io/browse/QTBUG-44412?jql=text%20~%20%22qmenubar%20mac%22 const QString& undoMenuStr = Config::singleton().enableMnemonic() ? tr("&Undo") : tr("Undo"); editMenu->addAction(new CommandAction("undo", undoMenuStr, "undo")); // Find Menu const QString& findMenuStr = Config::singleton().enableMnemonic() ? tr("F&ind") : tr("Find"); auto findMenu = new PackageMenu(findMenuStr); addMenu(findMenu); findMenu->setObjectName("find"); const QString& findAndReplaceStr = tr("Find/Replace"); findMenu->addAction(new CommandAction("find_and_replace", findAndReplaceStr, "find_and_replace")); // View menu const QString& viewMenuStr = Config::singleton().enableMnemonic() ? tr("&View") : tr("View"); auto viewMenu = new PackageMenu(viewMenuStr); addMenu(viewMenu); viewMenu->setObjectName("view"); QActionGroup* themeActionGroup = addThemeMenu(viewMenu); connect(themeActionGroup, &QActionGroup::triggered, this, &MenuBar::themeActionTriggered); // Packages menu const QString& packageMenuStr = Config::singleton().enableMnemonic() ? tr("&Packages") : tr("Packages"); auto packagesMenu = new PackageMenu(packageMenuStr); addMenu(packagesMenu); packagesMenu->setObjectName("packages"); auto packageDevMenu = new PackageMenu(tr("Package Development")); packagesMenu->addMenu(packageDevMenu); packageDevMenu->addAction(new CommandAction("new_package", tr("&New Package"), "new_package")); packageDevMenu->setObjectName("package_development"); // Settings menu const QString& settingsMenuStr = Config::singleton().enableMnemonic() ? tr("&Settings") : tr("Settings"); // Qt doc says the merging functionality is based on string matching the title of a QMenu entry. // But QMenu can't trigger an action (QMenu::triggered doesn't work). // So On Mac, we need to create both top level QMenu and child Settings QAction. #ifdef Q_OS_MAC auto settingsMenu = new PackageMenu(settingsMenuStr); addMenu(settingsMenu); settingsMenu->setObjectName("settings"); QAction* settingsAction = new QAction(settingsMenuStr, settingsMenu); settingsMenu->addAction(settingsAction); #else // On Windows, create a top level Settings menu. QAction* settingsAction = addAction(settingsMenuStr); settingsAction->setObjectName("settings"); #endif settingsAction->setMenuRole(QAction::PreferencesRole); connect(settingsAction, &QAction::triggered, this, [] { ConfigDialog::showModeless(); }); // Help menu const QString& helpMenuStr = Config::singleton().enableMnemonic() ? tr("&Help") : tr("Help"); auto helpMenu = new PackageMenu(helpMenuStr); addMenu(helpMenu); helpMenu->setObjectName("help"); const QString& aboutMenuStr = Config::singleton().enableMnemonic() ? tr("&About") : tr("About"); QAction* aboutAction = new QAction(aboutMenuStr, helpMenu); aboutAction->setMenuRole(QAction::AboutRole); connect(aboutAction, &QAction::triggered, this, &MenuBar::showAboutDialog); helpMenu->addAction(aboutAction); }
void Nexus::start() { qDebug() << "Starting up"; // Setup the environment qRegisterMetaType<Status>("Status"); qRegisterMetaType<vpx_image>("vpx_image"); qRegisterMetaType<uint8_t>("uint8_t"); qRegisterMetaType<uint16_t>("uint16_t"); qRegisterMetaType<uint32_t>("uint32_t"); qRegisterMetaType<const int16_t*>("const int16_t*"); qRegisterMetaType<int32_t>("int32_t"); qRegisterMetaType<int64_t>("int64_t"); qRegisterMetaType<QPixmap>("QPixmap"); qRegisterMetaType<Profile*>("Profile*"); qRegisterMetaType<ToxAV*>("ToxAV*"); qRegisterMetaType<ToxFile>("ToxFile"); qRegisterMetaType<ToxFile::FileDirection>("ToxFile::FileDirection"); qRegisterMetaType<std::shared_ptr<VideoFrame>>("std::shared_ptr<VideoFrame>"); loginScreen = new LoginScreen(); #ifdef Q_OS_MAC globalMenuBar = new QMenuBar(0); dockMenu = new QMenu(globalMenuBar); viewMenu = globalMenuBar->addMenu(QString()); windowMenu = globalMenuBar->addMenu(QString()); globalMenuBar->addAction(windowMenu->menuAction()); fullscreenAction = viewMenu->addAction(QString()); fullscreenAction->setShortcut(QKeySequence::FullScreen); connect(fullscreenAction, &QAction::triggered, this, &Nexus::toggleFullscreen); minimizeAction = windowMenu->addAction(QString()); minimizeAction->setShortcut(Qt::CTRL + Qt::Key_M); connect(minimizeAction, &QAction::triggered, [this]() { minimizeAction->setEnabled(false); QApplication::focusWindow()->showMinimized(); }); windowMenu->addSeparator(); frontAction = windowMenu->addAction(QString()); connect(frontAction, &QAction::triggered, this, &Nexus::bringAllToFront); QAction* quitAction = new QAction(globalMenuBar); quitAction->setMenuRole(QAction::QuitRole); connect(quitAction, &QAction::triggered, qApp, &QApplication::quit); windowMapper = new QSignalMapper(this); connect(windowMapper, SIGNAL(mapped(QObject*)), this, SLOT(onOpenWindow(QObject*))); connect(loginScreen, &LoginScreen::windowStateChanged, this, &Nexus::onWindowStateChanged); retranslateUi(); #endif if (profile) showMainGUI(); else showLogin(); }