1 /* 2 FXiTe - The Free eXtensIble Text Editor 3 Copyright (c) 2009-2013 Jeffrey Pohlmeyer <yetanothergeek@gmail.com> 4 5 This program is free software; you can redistribute it and/or modify it 6 under the terms of the GNU General Public License version 3 as 7 published by the Free Software Foundation. 8 9 This software is distributed in the hope that it will be useful, 10 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 GNU General Public License for more details. 13 14 You should have received a copy of the GNU General Public License 15 along with this program; if not, write to the Free Software 16 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 17 */ 18 19 20 #ifndef MAINMENU_H 21 #define MAINMENU_H 22 23 class TopWindow; 24 class Settings; 25 class HistMenu; 26 class UserMenu; 27 28 class MainMenu: public FXMenuBar { 29 private: 30 TopWindow* tw; 31 SettingsBase* prefs; 32 void CreateMenus(); 33 void CreateLanguageMenu(); 34 void CreateTabsMenu(); 35 void CreateZoomMenu(); 36 37 FXMenuPane* filemenu; 38 FXMenuPane* editmenu; 39 FXMenuPane* searchmenu; 40 FXMenuPane* viewmenu; 41 FXMenuPane* toolsmenu; 42 FXMenuPane* docmenu; 43 FXMenuPane* helpmenu; 44 45 FXMenuPane* recordermenu; 46 FXMenuCommand* recorderstartmenu; 47 FXMenuCommand* playbackmenu; 48 FXMenuCommand* showmacromenu; 49 FXMenuCommand* filterselmenu; 50 FXMenuCommand* openselmenu; 51 52 53 FXMenuPane* editdeletemenu; 54 FXMenuPane* editindentmenu; 55 FXMenuPane* viewzoommenu; 56 FXMenuPane* searchselectmenu; 57 FXMenuPane* searchmarkmenu; 58 FXMenuPane* tabmenu; 59 FXMenuPane* tabordermenu; 60 FXMenuPane* tabsidemenu; 61 FXMenuPane* tabwidthmenu; 62 FXMenuPane* fileexportmenu; 63 FXMenuPane* fileformatmenu; 64 FXMenuPane* langmenu; 65 FXMenuCascade* langcasc; 66 FXMenuPane* cpp_langmenu; 67 FXMenuCascade* cpp_langcasc; 68 FXMenuPane* html_langmenu; 69 FXMenuCascade* html_langcasc; 70 FXMenuPane* lgcy_langmenu; 71 FXMenuCascade* lgcy_langcasc; 72 FXMenuPane* scr_langmenu; 73 FXMenuCascade* scr_langcasc; 74 FXMenuPane* db_langmenu; 75 FXMenuCascade* db_langcasc; 76 FXMenuPane* cfg_langmenu; 77 FXMenuCascade* cfg_langcasc; 78 FXMenuPane* inf_langmenu; 79 FXMenuCascade* inf_langcasc; 80 FXMenuPane* tex_langmenu; 81 FXMenuCascade* tex_langcasc; 82 FXMenuPane* asm_langmenu; 83 FXMenuCascade* asm_langcasc; 84 FXMenuPane* misc_langmenu; 85 FXMenuCascade* misc_langcasc; 86 87 FXMenuCascade* fileformatcasc; 88 FXMenuRadio* fmt_dos_mnu; 89 FXMenuRadio* fmt_mac_mnu; 90 FXMenuRadio* fmt_unx_mnu; 91 92 FXMenuCascade* unloadtagsmenu; 93 FXMenuCommand* autocompmenu; 94 FXMenuCommand* findtagmenu; 95 FXMenuCommand* showtipmenu; 96 97 FXScrollPane* doclistmenu; 98 HistMenu* recent_files; 99 100 UserMenu* usercmdmenu; 101 UserMenu* userfiltermenu; 102 UserMenu* usermacromenu; 103 UserMenu* usersnipmenu; 104 105 FXMenuCheck* readonly_chk; 106 FXMenuCheck* caretline_chk; 107 FXMenuCheck* guides_chk; 108 FXMenuCheck* linenums_chk; 109 FXMenuCheck* margin_chk; 110 FXMenuCheck* outpane_chk; 111 FXMenuCheck* status_chk; 112 FXMenuCheck* toolbar_chk; 113 FXMenuCheck* white_chk; 114 FXMenuCheck* wordwrap_chk; 115 FXMenuCheck* invert_chk; 116 117 static void SetMenuEnabled(FXMenuCommand*mnu, bool enabled); 118 void EnableTagMenus(bool enabled); 119 120 public: 121 MainMenu(FXComposite* p); 122 ~MainMenu(); 123 void Recording(bool recording, bool recorded); 124 void RescanUserMenus(); 125 void SyncPrefsCheckmarks(); 126 void SetWordWrapCheckmark(bool wrapped); 127 void SetReadOnlyCheckmark(bool rdonly); 128 void SetLanguageCheckmark(LangStyle*ls); 129 FXMenuRadio*GetMenuForLanguage(const FXString &name) const; 130 void UnloadTagFile(FXMenuCommand*mc); 131 void AddFileToTagsList(const FXString &filename); 132 bool RemoveFileFromTagsList(const FXString &filename); 133 void AppendDocList(const FXString &filename, FXTabItem*tab); 134 void PrependRecentFile(const FXString &filename); 135 void RemoveRecentFile(const FXString &filename); 136 void EnableFileFormats(); 137 void EnableFilterMenu(bool enabled); 138 void UpdateDocTabSettings(); 139 UserMenu**UserMenus() const; 140 FXMenuCascade*TagsMenu() const; 141 }; 142 143 144 #endif 145 146