From bfe6aa4d5c8c881ae73862c8ca797460a35e4694 Mon Sep 17 00:00:00 2001 From: Alexandre Quessy Date: Wed, 28 Dec 2016 13:28:00 -0500 Subject: [PATCH 1/6] WIP: #305 Merge menus. But Outputs menu is broken --- MainWindow.cpp | 79 +++++++++++++++++++++++++++----------------------- MainWindow.h | 6 ++-- 2 files changed, 45 insertions(+), 40 deletions(-) diff --git a/MainWindow.cpp b/MainWindow.cpp index e1fba3a..d51c59c 100644 --- a/MainWindow.cpp +++ b/MainWindow.cpp @@ -34,13 +34,16 @@ MainWindow::MainWindow() { // Create model. #if QT_VERSION >= 0x050500 - QMessageLogger(__FILE__, __LINE__, 0).info() << "Video support: " << (Video::hasVideoSupport() ? "yes" : "no"); + QMessageLogger(__FILE__, __LINE__, 0).info() << "Video support: " << + (Video::hasVideoSupport() ? "yes" : "no"); #else - QMessageLogger(__FILE__, __LINE__, 0).debug() << "Video support: " << (Video::hasVideoSupport() ? "yes" : "no"); + QMessageLogger(__FILE__, __LINE__, 0).debug() << "Video support: " << + (Video::hasVideoSupport() ? "yes" : "no"); #endif mappingManager = new MappingManager; + // Initialize internal variables. currentPaintId = NULL_UID; currentMappingId = NULL_UID; @@ -895,13 +898,13 @@ void MainWindow::setupOutputScreen() void MainWindow::updateScreenCount() { // Clear action list before - if (!screenActions.isEmpty()) - screenActions.clear(); + screenActions.clear(); // Refresh screen action updateScreenActions(); // Update Output menu - outputMenu->clear(); - addOutputMenuActions(); + outputsMenu->clear(); + outputsMenu->addActions(screenActions); + //addOutputsMenuActions(); } void MainWindow::openRecentFile() @@ -1893,20 +1896,22 @@ void MainWindow::createActions() // Helps // Bug report - bugReportAction = new QAction(tr("Report bug..."), this); + bugReportAction = new QAction(tr("Report an issue"), this); connect(bugReportAction, SIGNAL(triggered()), this, SLOT(reportBug())); // Support - supportAction = new QAction(tr("Technical Support"), this); + supportAction = new QAction(tr("Technical support"), this); connect(supportAction, SIGNAL(triggered()), this, SLOT(technicalSupport())); // Documentation docAction = new QAction(tr("Documentation"), this); connect(docAction, SIGNAL(triggered()), this, SLOT(documentation())); // Send us feedback - feedbackAction = new QAction(tr("Submit Feedback..."), this); + feedbackAction = new QAction(tr("Submit feedback via email"), this); connect(feedbackAction, SIGNAL(triggered()), this, SLOT(sendFeedback())); // All available screen as action updateScreenActions(); + outputsMenu->addActions(screenActions); + //addOutputsMenuActions(); } void MainWindow::startFullScreen() @@ -1942,21 +1947,22 @@ void MainWindow::createMenus() // Recent file separator separatorAction = fileMenu->addSeparator(); recentFileMenu = fileMenu->addMenu(tr("Open Recents Projects")); - for (int i = 0; i < MaxRecentFiles; ++i) + for (int i = 0; i < MaxRecentFiles; ++i) { recentFileMenu->addAction(recentFileActions[i]); + } recentFileMenu->addAction(clearRecentFileActions); // Recent import video recentVideoMenu = fileMenu->addMenu(tr("Open Recents Videos")); recentVideoMenu->addAction(emptyRecentVideos); - for (int i = 0; i < MaxRecentVideo; ++i) + for (int i = 0; i < MaxRecentVideo; ++i) { recentVideoMenu->addAction(recentVideoActions[i]); + } // Exit fileMenu->addSeparator(); fileMenu->addAction(exitAction); - // Edit. editMenu = menuBar->addMenu(tr("&Edit")); // Undo & Redo menu @@ -1980,22 +1986,26 @@ void MainWindow::createMenus() // Preferences editMenu->addAction(preferencesAction); + // Output + viewMenu = menuBar->addMenu(tr("&View")); + + viewMenu->addAction(outputFullScreenAction); + //viewMenu->addActions(screenActions); + viewMenu->addSeparator(); + viewMenu->addAction(displayTestSignalAction); + viewMenu->addAction(displayControlsAction); + viewMenu->addAction(displayPaintControlsAction); + viewMenu->addSeparator(); + outputsMenu = viewMenu->addMenu(tr("&Outputs")); + //addOutputsMenuActions(); // At this point, the Outputs menu options have already been created + outputsMenu->addActions(screenActions); + // Playback. - playbackMenu = menuBar->addMenu(tr("&Playback")); + playbackMenu = viewMenu->addMenu(tr("&Playback")); playbackMenu->addAction(playAction); playbackMenu->addAction(pauseAction); playbackMenu->addAction(rewindAction); - - // Output - outputMenu = menuBar->addMenu(tr("&Output")); - // Add actions - addOutputMenuActions(); - - // Tools - toolsMenu = menuBar->addMenu(tr("&Tools")); - toolsMenu->addAction(openConsoleAction); - // Window windowMenu = menuBar->addMenu(tr("&Window")); // Toolbars menu @@ -2014,6 +2024,9 @@ void MainWindow::createMenus() windowMenu->addAction(mainViewAction); windowMenu->addAction(sourceViewAction); windowMenu->addAction(destViewAction); + // Console + windowMenu->addSeparator(); + windowMenu->addAction(openConsoleAction); // Help. helpMenu = menuBar->addMenu(tr("&Help")); @@ -2025,7 +2038,6 @@ void MainWindow::createMenus() helpMenu->addAction(aboutAction); // helpMenu->addAction(aboutQtAction); - } void MainWindow::createMappingContextMenu() @@ -2196,10 +2208,8 @@ void MainWindow::readSettings() void MainWindow::writeSettings() { QSettings settings; - settings.setValue("geometry", saveGeometry()); settings.setValue("windowState", saveState()); - settings.setValue("mainSplitter", mainSplitter->saveState()); settings.setValue("paintSplitter", paintSplitter->saveState()); settings.setValue("mappingSplitter", mappingSplitter->saveState()); @@ -2387,7 +2397,7 @@ void MainWindow::updateRecentVideoActions() } } -void MainWindow:: updateScreenActions() +void MainWindow::updateScreenActions() { if (QApplication::screens().count() > 1) { // Add new action for each screen @@ -2396,8 +2406,9 @@ void MainWindow:: updateScreenActions() .arg(screen->name()) .arg(QString::number(screen->size().width())) .arg(QString::number(screen->size().height())); - if (screen == QApplication::primaryScreen()) + if (screen == QApplication::primaryScreen()) { actionLabel.append(" - Primary"); + } QAction *action = new QAction(actionLabel, this); screenActions.append(action); action->setData(screenActions.count() - 1); @@ -2408,23 +2419,17 @@ void MainWindow:: updateScreenActions() int preferredScreen = outputWindow->getPreferredScreen(); for (QAction *action: screenActions) { action->setCheckable(true); - if (action == screenActions.at(preferredScreen)) + if (action == screenActions.at(preferredScreen)) { action->setChecked(true); - + } connect(action, SIGNAL(triggered()), this, SLOT(setupOutputScreen())); screenActionGroup->addAction(action); } } } -void MainWindow::addOutputMenuActions() +void MainWindow::addOutputsMenuActions() { - outputMenu->addAction(outputFullScreenAction); - outputMenu->addActions(screenActions); - outputMenu->addSeparator(); - outputMenu->addAction(displayTestSignalAction); - outputMenu->addAction(displayControlsAction); - outputMenu->addAction(displayPaintControlsAction); } void MainWindow::clearRecentFileList() diff --git a/MainWindow.h b/MainWindow.h index 52150af..88661b7 100644 --- a/MainWindow.h +++ b/MainWindow.h @@ -269,7 +269,7 @@ private: void updateRecentFileActions(); void updateRecentVideoActions(); void updateScreenActions(); - void addOutputMenuActions(); + void addOutputsMenuActions(); // Settings. void readSettings(); @@ -332,9 +332,9 @@ private: // Menu actions. QMenu *fileMenu; QMenu *editMenu; - //QMenu *viewMenu; QMenu *toolsMenu; - QMenu *outputMenu; + QMenu *viewMenu; + QMenu *outputsMenu; QMenu *windowMenu; QMenu *playbackMenu; QMenu *helpMenu; From af47c43783b943d4e362b5f39ec0160378d8d4a9 Mon Sep 17 00:00:00 2001 From: Tats Date: Wed, 28 Dec 2016 13:58:17 -0500 Subject: [PATCH 2/6] Integrated outputs menu into view menu. --- MainWindow.cpp | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/MainWindow.cpp b/MainWindow.cpp index d51c59c..ae61299 100644 --- a/MainWindow.cpp +++ b/MainWindow.cpp @@ -904,7 +904,6 @@ void MainWindow::updateScreenCount() // Update Output menu outputsMenu->clear(); outputsMenu->addActions(screenActions); - //addOutputsMenuActions(); } void MainWindow::openRecentFile() @@ -1910,8 +1909,7 @@ void MainWindow::createActions() // All available screen as action updateScreenActions(); - outputsMenu->addActions(screenActions); - //addOutputsMenuActions(); +// outputsMenu->addActions(screenActions); } void MainWindow::startFullScreen() @@ -1996,10 +1994,12 @@ void MainWindow::createMenus() viewMenu->addAction(displayControlsAction); viewMenu->addAction(displayPaintControlsAction); viewMenu->addSeparator(); - outputsMenu = viewMenu->addMenu(tr("&Outputs")); - //addOutputsMenuActions(); // At this point, the Outputs menu options have already been created + viewMenu->addAction(outputFullScreenAction); + outputsMenu = viewMenu->addMenu(tr("&Output screen")); outputsMenu->addActions(screenActions); + viewMenu->addSeparator(); + // Playback. playbackMenu = viewMenu->addMenu(tr("&Playback")); playbackMenu->addAction(playAction); @@ -2428,10 +2428,6 @@ void MainWindow::updateScreenActions() } } -void MainWindow::addOutputsMenuActions() -{ -} - void MainWindow::clearRecentFileList() { recentFiles = settings.value("recentFiles").toStringList(); From e10ca0df798beb89c81b3f77ecbf5a9e531f7888 Mon Sep 17 00:00:00 2001 From: Tats Date: Wed, 28 Dec 2016 14:00:17 -0500 Subject: [PATCH 3/6] Fixed bug: outputs menu was empty when only one screen. --- MainWindow.cpp | 44 +++++++++++++++++++++----------------------- 1 file changed, 21 insertions(+), 23 deletions(-) diff --git a/MainWindow.cpp b/MainWindow.cpp index ae61299..7e1566c 100644 --- a/MainWindow.cpp +++ b/MainWindow.cpp @@ -2399,32 +2399,30 @@ void MainWindow::updateRecentVideoActions() void MainWindow::updateScreenActions() { - if (QApplication::screens().count() > 1) { - // Add new action for each screen - for (QScreen *screen: QApplication::screens()) { - QString actionLabel = tr("%1 - %2x%3") - .arg(screen->name()) - .arg(QString::number(screen->size().width())) - .arg(QString::number(screen->size().height())); - if (screen == QApplication::primaryScreen()) { - actionLabel.append(" - Primary"); - } - QAction *action = new QAction(actionLabel, this); - screenActions.append(action); - action->setData(screenActions.count() - 1); + // Add new action for each screen + for (QScreen *screen: QApplication::screens()) { + QString actionLabel = tr("%1 - %2x%3") + .arg(screen->name()) + .arg(QString::number(screen->size().width())) + .arg(QString::number(screen->size().height())); + if (screen == QApplication::primaryScreen()) { + actionLabel.append(" - Primary"); } + QAction *action = new QAction(actionLabel, this); + screenActions.append(action); + action->setData(screenActions.count() - 1); + } - // Configure actions - screenActionGroup = new QActionGroup(this); - int preferredScreen = outputWindow->getPreferredScreen(); - for (QAction *action: screenActions) { - action->setCheckable(true); - if (action == screenActions.at(preferredScreen)) { - action->setChecked(true); - } - connect(action, SIGNAL(triggered()), this, SLOT(setupOutputScreen())); - screenActionGroup->addAction(action); + // Configure actions + screenActionGroup = new QActionGroup(this); + int preferredScreen = outputWindow->getPreferredScreen(); + for (QAction *action: screenActions) { + action->setCheckable(true); + if (action == screenActions.at(preferredScreen)) { + action->setChecked(true); } + connect(action, SIGNAL(triggered()), this, SLOT(setupOutputScreen())); + screenActionGroup->addAction(action); } } From 7cf84f913eeeb00f2f260479619f7206ea5ce13a Mon Sep 17 00:00:00 2001 From: Tats Date: Wed, 28 Dec 2016 14:04:25 -0500 Subject: [PATCH 4/6] Renamed outputsMenu for outputScreenMenu (more appropriate). --- MainWindow.cpp | 10 +++++----- MainWindow.h | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/MainWindow.cpp b/MainWindow.cpp index 7e1566c..3eea31c 100644 --- a/MainWindow.cpp +++ b/MainWindow.cpp @@ -902,8 +902,8 @@ void MainWindow::updateScreenCount() // Refresh screen action updateScreenActions(); // Update Output menu - outputsMenu->clear(); - outputsMenu->addActions(screenActions); + outputScreenMenu->clear(); + outputScreenMenu->addActions(screenActions); } void MainWindow::openRecentFile() @@ -1909,7 +1909,7 @@ void MainWindow::createActions() // All available screen as action updateScreenActions(); -// outputsMenu->addActions(screenActions); +// outputScreenMenu->addActions(screenActions); } void MainWindow::startFullScreen() @@ -1995,8 +1995,8 @@ void MainWindow::createMenus() viewMenu->addAction(displayPaintControlsAction); viewMenu->addSeparator(); viewMenu->addAction(outputFullScreenAction); - outputsMenu = viewMenu->addMenu(tr("&Output screen")); - outputsMenu->addActions(screenActions); + outputScreenMenu = viewMenu->addMenu(tr("&Output screen")); + outputScreenMenu->addActions(screenActions); viewMenu->addSeparator(); diff --git a/MainWindow.h b/MainWindow.h index 88661b7..5ef9e75 100644 --- a/MainWindow.h +++ b/MainWindow.h @@ -334,10 +334,10 @@ private: QMenu *editMenu; QMenu *toolsMenu; QMenu *viewMenu; - QMenu *outputsMenu; QMenu *windowMenu; QMenu *playbackMenu; QMenu *helpMenu; + QMenu *outputScreenMenu; QMenu *recentFileMenu; QMenu *recentVideoMenu; QMenu *mappingContextMenu; From f212b3ec524e480fb512fc2c0098a4c7fc31c622 Mon Sep 17 00:00:00 2001 From: Tats Date: Wed, 28 Dec 2016 14:04:48 -0500 Subject: [PATCH 5/6] Minor reorganization of sub-menu declarations. --- MainWindow.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/MainWindow.h b/MainWindow.h index 5ef9e75..701353d 100644 --- a/MainWindow.h +++ b/MainWindow.h @@ -269,7 +269,6 @@ private: void updateRecentFileActions(); void updateRecentVideoActions(); void updateScreenActions(); - void addOutputsMenuActions(); // Settings. void readSettings(); @@ -335,13 +334,16 @@ private: QMenu *toolsMenu; QMenu *viewMenu; QMenu *windowMenu; - QMenu *playbackMenu; QMenu *helpMenu; + + // Sub-menus. QMenu *outputScreenMenu; + QMenu *playbackMenu; QMenu *recentFileMenu; QMenu *recentVideoMenu; QMenu *mappingContextMenu; QMenu *paintContextMenu; + // Some menus when need to be separated QMenu *sourceMenu; QMenu *destinationMenu; From ff5c75fe9a9ed6f44be047d39848779ff939772e Mon Sep 17 00:00:00 2001 From: Tats Date: Wed, 28 Dec 2016 14:09:13 -0500 Subject: [PATCH 6/6] Removed playback menu and reorganized items in View menu. --- MainWindow.cpp | 15 ++++----------- MainWindow.h | 1 - 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/MainWindow.cpp b/MainWindow.cpp index 3eea31c..0496098 100644 --- a/MainWindow.cpp +++ b/MainWindow.cpp @@ -1984,27 +1984,20 @@ void MainWindow::createMenus() // Preferences editMenu->addAction(preferencesAction); - // Output + // View. viewMenu = menuBar->addMenu(tr("&View")); viewMenu->addAction(outputFullScreenAction); - //viewMenu->addActions(screenActions); - viewMenu->addSeparator(); viewMenu->addAction(displayTestSignalAction); viewMenu->addAction(displayControlsAction); viewMenu->addAction(displayPaintControlsAction); - viewMenu->addSeparator(); - viewMenu->addAction(outputFullScreenAction); outputScreenMenu = viewMenu->addMenu(tr("&Output screen")); outputScreenMenu->addActions(screenActions); - viewMenu->addSeparator(); - // Playback. - playbackMenu = viewMenu->addMenu(tr("&Playback")); - playbackMenu->addAction(playAction); - playbackMenu->addAction(pauseAction); - playbackMenu->addAction(rewindAction); + viewMenu->addAction(playAction); + viewMenu->addAction(pauseAction); + viewMenu->addAction(rewindAction); // Window windowMenu = menuBar->addMenu(tr("&Window")); diff --git a/MainWindow.h b/MainWindow.h index 701353d..dfbd5f4 100644 --- a/MainWindow.h +++ b/MainWindow.h @@ -338,7 +338,6 @@ private: // Sub-menus. QMenu *outputScreenMenu; - QMenu *playbackMenu; QMenu *recentFileMenu; QMenu *recentVideoMenu; QMenu *mappingContextMenu;