From 773ba809adb1d711e601c44facad7367273310e5 Mon Sep 17 00:00:00 2001 From: Jean-Francois Dockes Date: Sat, 21 Nov 2020 17:08:28 +0100 Subject: [PATCH] Add preference to replace the main menu bar with a menu button --- src/qtgui/guiutils.cpp | 1 + src/qtgui/guiutils.h | 1 + src/qtgui/images/menu.png | Bin 0 -> 668 bytes src/qtgui/rclm_menus.cpp | 104 ++++++++++++++++++++++++++++++++++++++ src/qtgui/rclmain.ui | 91 ++------------------------------- src/qtgui/rclmain_w.cpp | 13 +++++ src/qtgui/rclmain_w.h | 10 +++- src/qtgui/recoll.pro.in | 1 + src/qtgui/recoll.qrc | 1 + src/qtgui/ssearchb.ui | 18 +++++++ src/qtgui/uiprefs.ui | 10 ++++ src/qtgui/uiprefs_w.cpp | 3 ++ 12 files changed, 164 insertions(+), 89 deletions(-) create mode 100644 src/qtgui/images/menu.png create mode 100644 src/qtgui/rclm_menus.cpp 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 0000000000000000000000000000000000000000..3122f0944c305ea9be5b1147f876ce078dcbaa01 GIT binary patch literal 668 zcmV;N0%QG&P)EX>4Tx04R}tkv&MmKpe$iQ>CJn4ptCx2v`Ndf~bh2R-p(LO0CeUgUO{ILX(Ch z#l=x@EjakGSaoo5*44pP5ClI!oE)7LU8KbSC509-9vt`M-Mz=%J3y$Fm}<6-0jg#h zsd!AxWLLz%E4t8&5C$yH6ykH@QG+f>{K$3L zaarNK#aS&?SmU1jg~6P*yu@{y1Bhb*i%3F*j0!eTf`urp8Yw1Hv>)^E_dEV1xny!} zfRSS!WvGxGKlmT~?$*ptjJrv}7|{M=+aE(fU>B%YZTtJ!w(BQ={~5T_n*MSPnEoWa z+SDRPKxiAdxNd6l9&ot>^gZd4AvuztrjXAA?`QN)S)k_@=v;MsYwY9n0Z3Cy{D4^000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2jmMC4<{6wRYa`-000?uMObu0Z*6U5Zgc=ca%Ew3 zWn>_CX>@2HM@dakSAh-}0001UNklf-ek0 zh;YFLnub9zk+HB3n}jT-VepuNfuVwklz3opWhMZVekz-3J-F!r0000g literal 0 HcmV?d00001 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();