diff --git a/src/qtgui/guiutils.cpp b/src/qtgui/guiutils.cpp index 389ab7f0..3c7a9a69 100644 --- a/src/qtgui/guiutils.cpp +++ b/src/qtgui/guiutils.cpp @@ -296,6 +296,7 @@ void rwSettings(bool writing) SETTING_RW(prefs.noClearSearch, "/Recoll/prefs/noClearSearch", Bool, false); SETTING_RW(prefs.noToolbars, "/Recoll/prefs/noToolbars", Bool, false); SETTING_RW(prefs.noStatusBar, "/Recoll/prefs/noStatusBar", Bool, false); + SETTING_RW(prefs.noMenuBar, "/Recoll/prefs/noMenuBar", Bool, false); SETTING_RW(prefs.showTrayIcon, "/Recoll/prefs/showTrayIcon", Bool, false); SETTING_RW(prefs.closeToTray, "/Recoll/prefs/closeToTray", Bool, false); SETTING_RW(prefs.trayMessages, "/Recoll/prefs/trayMessages", Bool, false); diff --git a/src/qtgui/guiutils.h b/src/qtgui/guiutils.h index dc6e832c..c2156dee 100644 --- a/src/qtgui/guiutils.h +++ b/src/qtgui/guiutils.h @@ -143,6 +143,7 @@ class PrefsPack { bool noToolbars{false}; bool noClearSearch{false}; bool noStatusBar{false}; + bool noMenuBar{false}; bool showTrayIcon{false}; bool closeToTray{false}; bool trayMessages{false}; diff --git a/src/qtgui/images/menu.png b/src/qtgui/images/menu.png new file mode 100644 index 00000000..3122f094 Binary files /dev/null and b/src/qtgui/images/menu.png differ diff --git a/src/qtgui/rclm_menus.cpp b/src/qtgui/rclm_menus.cpp new file mode 100644 index 00000000..b1d5b6f7 --- /dev/null +++ b/src/qtgui/rclm_menus.cpp @@ -0,0 +1,104 @@ +#include "rclmain_w.h" + +#include +#include + +void RclMain::buildMenus() +{ + fileMenu = new QMenu(); + fileMenu->setObjectName(QString::fromUtf8("fileMenu")); + viewMenu = new QMenu(); + viewMenu->setObjectName(QString::fromUtf8("viewMenu")); + toolsMenu = new QMenu(); + toolsMenu->setObjectName(QString::fromUtf8("toolsMenu")); + preferencesMenu = new QMenu(); + preferencesMenu->setObjectName(QString::fromUtf8("preferencesMenu")); + helpMenu = new QMenu(); + helpMenu->setObjectName(QString::fromUtf8("helpMenu")); + menuResults = new QMenu(); + menuResults->setObjectName(QString::fromUtf8("menuResults")); + + fileMenu->setTitle(QApplication::translate("RclMainBase", "&File", nullptr)); + viewMenu->setTitle(QApplication::translate("RclMainBase", "&View", nullptr)); + toolsMenu->setTitle(QApplication::translate("RclMainBase", "&Tools", nullptr)); + preferencesMenu->setTitle(QApplication::translate("RclMainBase", "&Preferences", nullptr)); + helpMenu->setTitle(QApplication::translate("RclMainBase", "&Help", nullptr)); + menuResults->setTitle(QApplication::translate("RclMainBase", "&Results", nullptr)); + + + fileMenu->insertAction(fileRebuildIndexAction, fileBumpIndexingAction); + fileMenu->addAction(fileToggleIndexingAction); + fileMenu->addAction(fileRebuildIndexAction); + fileMenu->addAction(actionSpecial_Indexing); + fileMenu->addSeparator(); + fileMenu->addAction(actionSave_last_query); + fileMenu->addAction(actionLoad_saved_query); + fileMenu->addSeparator(); + fileMenu->addAction(fileExportSSearchHistoryAction); + fileMenu->addAction(fileEraseSearchHistoryAction); + fileMenu->addSeparator(); + fileMenu->addAction(fileEraseDocHistoryAction); + fileMenu->addSeparator(); + fileMenu->addAction(fileExitAction); + + viewMenu->addAction(showMissingHelpers_Action); + viewMenu->addAction(showActiveTypes_Action); + viewMenu->addAction(actionShow_index_statistics); + viewMenu->addSeparator(); + viewMenu->addAction(toggleFullScreenAction); + + toolsMenu->addAction(toolsDoc_HistoryAction); + toolsMenu->addAction(toolsAdvanced_SearchAction); + toolsMenu->addAction(toolsSpellAction); + toolsMenu->addAction(actionShowQueryDetails); + toolsMenu->addAction(actionQuery_Fragments); + toolsMenu->addAction(actionWebcache_Editor); + + preferencesMenu->addAction(indexConfigAction); + preferencesMenu->addAction(indexScheduleAction); + preferencesMenu->addSeparator(); + preferencesMenu->addAction(queryPrefsAction); + preferencesMenu->addAction(extIdxAction); + preferencesMenu->addSeparator(); + preferencesMenu->addAction(enbDarkModeAction); + preferencesMenu->addSeparator(); + preferencesMenu->addAction(enbSynAction); + preferencesMenu->addSeparator(); + + helpMenu->addAction(userManualAction); + helpMenu->addAction(showMissingHelpers_Action); + helpMenu->addAction(showActiveTypes_Action); + helpMenu->addSeparator(); + helpMenu->addAction(helpAbout_RecollAction); + + menuResults->addAction(nextPageAction); + menuResults->addAction(prevPageAction); + menuResults->addAction(firstPageAction); + menuResults->addSeparator(); + menuResults->addAction(actionSortByDateAsc); + menuResults->addAction(actionSortByDateDesc); + menuResults->addSeparator(); + menuResults->addAction(actionShowResultsAsTable); + menuResults->addSeparator(); + menuResults->addAction(actionSaveResultsAsCSV); + + MenuBar->addAction(fileMenu->menuAction()); + MenuBar->addAction(viewMenu->menuAction()); + MenuBar->addAction(toolsMenu->menuAction()); + MenuBar->addAction(menuResults->menuAction()); + MenuBar->addAction(preferencesMenu->menuAction()); + MenuBar->addSeparator(); + MenuBar->addAction(helpMenu->menuAction()); + + QMenu *butmenu = new QMenu(); + butmenu->addAction(fileMenu->menuAction()); + butmenu->addAction(viewMenu->menuAction()); + butmenu->addAction(toolsMenu->menuAction()); + butmenu->addAction(menuResults->menuAction()); + butmenu->addAction(preferencesMenu->menuAction()); + butmenu->addSeparator(); + butmenu->addAction(helpMenu->menuAction()); + sSearch->menuPB->setMenu(butmenu); + + return; +} diff --git a/src/qtgui/rclmain.ui b/src/qtgui/rclmain.ui index 49fd8aec..46ed0491 100644 --- a/src/qtgui/rclmain.ui +++ b/src/qtgui/rclmain.ui @@ -68,92 +68,7 @@ 25 - - - &File - - - - - - - - - - - - - - - - - - &View - - - - - - - - - - &Tools - - - - - - - - - - - &Preferences - - - - - - - - - - - - - - - &Help - - - - - - - - - - &Results - - - - - - - - - - - - - - - - - - @@ -175,15 +90,15 @@ + + false + Trigger incremental pass fileBumpIndexingAction - - false - diff --git a/src/qtgui/rclmain_w.cpp b/src/qtgui/rclmain_w.cpp index a501cbb0..cd473a07 100644 --- a/src/qtgui/rclmain_w.cpp +++ b/src/qtgui/rclmain_w.cpp @@ -136,6 +136,8 @@ void RclMain::init() DocSequence::set_translations((const char *)tr("sorted").toUtf8(), (const char *)tr("filtered").toUtf8()); + buildMenus(); + // A shortcut to get the focus back to the search entry, in table // mode only. m_tablefocseq = new QShortcut(QKeySequence("Ctrl+r"), this); @@ -152,6 +154,7 @@ void RclMain::init() qf.close(); m_watcher.addPath(idxfn); setupStatusBar(); + setupMenus(); (void)new HelpClient(this); HelpClient::installMap((const char *)this->objectName().toUtf8(), @@ -490,6 +493,16 @@ void RclMain::setupStatusBar() bar->show(); } } +void RclMain::setupMenus() +{ + if (prefs.noMenuBar) { + MenuBar->hide(); + sSearch->menuPB->show(); + } else { + MenuBar->show(); + sSearch->menuPB->hide(); + } +} void RclMain::enableTrayIcon(bool on) diff --git a/src/qtgui/rclmain_w.h b/src/qtgui/rclmain_w.h index 0895b3d8..052f7968 100644 --- a/src/qtgui/rclmain_w.h +++ b/src/qtgui/rclmain_w.h @@ -91,7 +91,9 @@ public: QString readDarkCSS(); void setupToolbars(); void setupStatusBar(); - + void buildMenus(); + void setupMenus(); + public slots: virtual void fileExit(); virtual void periodic100(); @@ -238,6 +240,12 @@ private: RclTrayIcon *m_trayicon{0}; // We sometimes take the indexer lock (e.g.: when editing the webcache) Pidfile *m_pidfile{0}; + QMenu *fileMenu; + QMenu *viewMenu; + QMenu *toolsMenu; + QMenu *preferencesMenu; + QMenu *helpMenu; + QMenu *menuResults; virtual void init(); virtual void setupResTB(bool combo); diff --git a/src/qtgui/recoll.pro.in b/src/qtgui/recoll.pro.in index 99e5cf10..75d3844b 100644 --- a/src/qtgui/recoll.pro.in +++ b/src/qtgui/recoll.pro.in @@ -72,6 +72,7 @@ SOURCES += \ ptrans_w.cpp \ rclhelp.cpp \ rclm_idx.cpp \ + rclm_menus.cpp \ rclm_preview.cpp \ rclm_saveload.cpp \ rclm_view.cpp \ diff --git a/src/qtgui/recoll.qrc b/src/qtgui/recoll.qrc index 766b66f5..2cf0bb30 100644 --- a/src/qtgui/recoll.qrc +++ b/src/qtgui/recoll.qrc @@ -16,5 +16,6 @@ images/recoll.png images/interro.png images/clock.png + images/menu.png diff --git a/src/qtgui/ssearchb.ui b/src/qtgui/ssearchb.ui index cc1cb936..c5dc926e 100644 --- a/src/qtgui/ssearchb.ui +++ b/src/qtgui/ssearchb.ui @@ -110,6 +110,24 @@ + + + + true + + + Main menu + + + + + + + :/images/menu.png + + + + diff --git a/src/qtgui/uiprefs.ui b/src/qtgui/uiprefs.ui index 63bd730c..c16741cd 100644 --- a/src/qtgui/uiprefs.ui +++ b/src/qtgui/uiprefs.ui @@ -182,6 +182,16 @@ + + + + Hide menu bar (show button instead). + + + false + + + diff --git a/src/qtgui/uiprefs_w.cpp b/src/qtgui/uiprefs_w.cpp index 24ea56c4..5cdb32bf 100644 --- a/src/qtgui/uiprefs_w.cpp +++ b/src/qtgui/uiprefs_w.cpp @@ -147,6 +147,7 @@ void UIPrefsDialog::setFromPrefs() noToolbarsCB->setChecked(prefs.noToolbars); noClearSearchCB->setChecked(prefs.noClearSearch); noStatusBarCB->setChecked(prefs.noStatusBar); + noMenuBarCB->setChecked(prefs.noMenuBar); showTrayIconCB->setChecked(prefs.showTrayIcon); if (!prefs.showTrayIcon) { prefs.closeToTray = false; @@ -352,6 +353,8 @@ void UIPrefsDialog::accept() prefs.keepSort = keepSortCB->isChecked(); prefs.noToolbars = noToolbarsCB->isChecked(); m_mainWindow->setupToolbars(); + prefs.noMenuBar = noMenuBarCB->isChecked(); + m_mainWindow->setupMenus(); prefs.noStatusBar = noStatusBarCB->isChecked(); m_mainWindow->setupStatusBar(); prefs.noClearSearch = noClearSearchCB->isChecked();