1 /* 2 main_menu.h MindForger thinking notebook 3 4 Copyright (C) 2016-2020 Martin Dvorak <martin.dvorak@mindforger.com> 5 6 This program is free software; you can redistribute it and/or 7 modify it under the terms of the GNU General Public License 8 as published by the Free Software Foundation; either version 2 9 of the License, or (at your option) any later version. 10 11 This program is distributed in the hope that it will be useful, 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 GNU General Public License for more details. 15 16 You should have received a copy of the GNU General Public License 17 along with this program. If not, see <http://www.gnu.org/licenses/>. 18 */ 19 #ifndef M8RUI_MAIN_MENU_H 20 #define M8RUI_MAIN_MENU_H 21 22 #include <QtWidgets> 23 24 #include "../../lib/src/debug.h" 25 26 #include "main_window_view.h" 27 #include "recent_files_menu.h" 28 29 namespace m8r { 30 31 class MainWindowView; 32 33 /** 34 * @brief MindForger main window menu view. 35 * 36 * View creates all menu items and Qt actions while presenter 37 * implements doActions() and connects them using signals/slots 38 * to this view. 39 */ 40 class MainMenuView : public QObject 41 { 42 Q_OBJECT 43 44 MainWindowView* mainWindow; 45 QMenuBar* qMenuBar; 46 47 public: 48 QMenu* menuMind; 49 QMenu* menuFind; 50 QMenu* menuView; 51 QMenu* menuNavigator; 52 QMenu* menuOutline; 53 QMenu* menuNote; 54 QMenu* menuEdit; 55 QMenu* menuFormat; 56 QMenu* menuHelp; 57 58 #ifdef DO_MF_DEBUG 59 QAction* actionMindHack; 60 #endif 61 // menu: MindForger 62 QMenu* submenuMindNew; 63 QAction* actionMindNewRepository; 64 QAction* actionMindNewFile; 65 QMenu* submenuMindLearn; 66 QAction* actionMindLearnRepository; 67 QAction* actionMindLearnFile; 68 RecentFilesMenu* submenuMindRelearn; 69 QAction* actionMindRemember; 70 QAction* actionMindThink; 71 QAction* actionMindAutolink; 72 QAction* actionMindScope; 73 QAction* actionMindForget; 74 QAction* actionMindSnapshot; 75 QAction* actionMindPreferences; 76 QMenu* submenuMindExport; 77 QAction* actionMindExportCsv; 78 QAction* actionExit; 79 80 // menu: Find 81 QAction* actionFindFts; 82 QAction* actionFindOutlineByName; 83 QAction* actionFindNoteByName; 84 QAction* actionFindOutlineByTag; 85 QAction* actionFindNoteByTag; 86 #ifdef MF_NER 87 QAction* actionFindNerPersons; 88 QAction* actionFindNerLocations; 89 QAction* actionFindNerOrganizations; 90 QAction* actionFindNerMisc; 91 #endif 92 93 // menu: View 94 QAction* actionViewDashboard; 95 QAction* actionViewHome; 96 QAction* actionViewOrganizer; 97 QAction* actionViewOutlines; 98 QAction* actionViewTags; 99 QAction* actionViewNavigator; 100 QAction* actionViewDwell; 101 QAction* actionViewStencils; 102 QAction* actionViewCli; 103 QAction* actionViewRecentNotes; 104 QAction* actionViewLimbo; 105 QAction* actionViewDistractionFree; 106 QAction* actionViewFullscreen; 107 108 // menu: Navigator 109 QAction* actionNavigatorZoomIn; 110 QAction* actionNavigatorZoomOut; 111 QAction* actionNavigatorEdgesStretch; 112 QAction* actionNavigatorEdgesShrink; 113 QAction* actionNavigatorShuffle; 114 115 // menu: Outline 116 QAction* actionOutlineNew; 117 QAction* actionOutlineEdit; 118 QAction* actionOutlineHome; 119 QAction* actionOutlineStencil; 120 QAction* actionOutlineClone; 121 QAction* actionOutlineForget; 122 QMenu* submenuOutlineExport; 123 QAction* actionOutlineHtmlExport; 124 QMenu* submenuOutlineImport; 125 QAction* actionOutlineTWikiImport; 126 127 // menu: Note 128 QAction* actionNoteNew; 129 QAction* actionViewHoist; 130 QAction* actionNoteEdit; 131 QAction* actionNoteSave; 132 QAction* actionNoteClose; 133 QAction* actionNoteForget; 134 QAction* actionNotePromote; 135 QAction* actionNoteDemote; 136 QAction* actionNoteFirst; 137 QAction* actionNoteUp; 138 QAction* actionNoteDown; 139 QAction* actionNoteLast; 140 QAction* actionNoteRefactor; 141 QAction* actionNoteStencil; 142 QAction* actionNoteClone; 143 QAction* actionNoteExport; 144 QAction* actionNoteImport; 145 146 // menu: Edit 147 QAction* actionEditFind; 148 QAction* actionEditFindNext; 149 QAction* actionEditUndo; 150 QAction* actionEditRedo; 151 QAction* actionEditCut; 152 QAction* actionEditCopy; 153 QAction* actionEditPaste; 154 QAction* actionEditLiveNotePreview; 155 QAction* actionEditWordWrap; 156 QAction* actionEditNameDescFocusSwap; 157 QAction* actionEditExtract; 158 QAction* actionEditComplete; 159 160 // menu: Format 161 QAction* actionFormatBold; 162 QAction* actionFormatItalic; 163 QAction* actionFormatStrikethrough; 164 QAction* actionFormatKeyboard; 165 QAction* actionFormatMath; 166 QAction* actionFormatCode; 167 QAction* actionFormatCodeBlock; 168 QMenu* submenuFormatMathJax; 169 QMenu* submenuFormatLists; 170 QMenu* submenuFormatBlocks; 171 QMenu* submenuFormatDiagrams; 172 QAction* actionFormatDiagramsFlow; 173 QAction* actionFormatDiagramsSequence; 174 QAction* actionFormatDiagramsClass; 175 QAction* actionFormatDiagramsState; 176 QAction* actionFormatDiagramsGantt; 177 QAction* actionFormatDiagramsPie; 178 QAction* actionFormatMathFraction; 179 QAction* actionFormatMathSum; 180 QAction* actionFormatMathInt; 181 QAction* actionFormatMathIiint; 182 QAction* actionFormatMathAlpha; 183 QAction* actionFormatMathBeta; 184 QAction* actionFormatMathDelta; 185 QAction* actionFormatMathGama; 186 QAction* actionFormatMathText; 187 QAction* actionFormatMathBar; 188 QAction* actionFormatMathHat; 189 QAction* actionFormatMathDot; 190 QAction* actionFormatMathOverrightarrow; 191 QAction* actionFormatMathCup; 192 QAction* actionFormatMathCap; 193 QAction* actionFormatMathEmptyset; 194 QAction* actionFormatMathIn; 195 QAction* actionFormatMathNotin; 196 QAction* actionFormatMathSqrt; 197 QAction* actionFormatMathBlock; 198 QAction* actionFormatDiagramBlock; 199 QAction* actionFormatBlockQuote; 200 QAction* actionFormatListNumber; 201 QAction* actionFormatListBullet; 202 QAction* actionFormatListTask; 203 QAction* actionFormatListTaskItem; 204 QAction* actionFormatLink; 205 QAction* actionFormatImage; 206 QAction* actionFormatTable; 207 QAction* actionFormatHr; 208 QAction* actionFormatToc; 209 QAction* actionFormatTimestamp; 210 211 // menu: Help 212 QAction* actionHelpDocumentation; 213 QAction* actionHelpWeb; 214 215 QAction* actionHelpMarkdown; 216 QAction* actionHelpMathLivePreview; 217 QAction* actionHelpMathQuickReference; 218 QAction* actionHelpDiagrams; 219 220 QAction* actionHelpReportBug; 221 QAction* actionHelpCheckForUpdates; 222 QAction* actionHelpAbout; 223 224 public: 225 MainMenuView(MainWindowView& mainWindow); 226 MainMenuView(const MainMenuView&) = delete; 227 MainMenuView(const MainMenuView&&) = delete; 228 MainMenuView &operator=(const MainMenuView&) = delete; 229 MainMenuView &operator=(const MainMenuView&&) = delete; 230 virtual ~MainMenuView(); 231 232 void showFacetOutlineList(bool repositoryMode=true); 233 void showFacetOutlineView(bool repositoryMode=true); 234 void showFacetNoteEdit(bool repositoryMode=true); 235 236 void showFacetMindThink(); 237 void showFacetMindSleep(); 238 239 void showFacetMindAutolink(bool enabled); 240 241 void showFacetLiveNotePreview(bool enabled); 242 243 void showFacetNavigator(); 244 245 void addRepositoryOrFileToRelearn(const QString& path); 246 247 private: 248 void showAllMenuItems(); 249 250 private slots: slotShowCli()251 void slotShowCli() { emit showCli(); } 252 253 signals: 254 void showCli(); 255 }; 256 257 } 258 259 #endif // M8RUI_MAIN_MENU_H 260