Jianw
2025-05-13 3b39fe3810c3ee2ec9ec97236c1769c5c85e062c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
-- Copyright 2011-17 Paul Kulchenko, ZeroBrane LLC
-- authors: Lomtik Software (J. Winwood & John Labenski)
--          Luxinia Dev (Eike Decker & Christoph Kubisch)
---------------------------------------------------------
 
-- Generate a unique new wxWindowID
local ID_IDCOUNTER = wx.wxID_HIGHEST + 1
function NewID()
  ID_IDCOUNTER = math.floor(ID_IDCOUNTER + 1) -- make sure it's integer
  return ID_IDCOUNTER
end
 
-- some Ubuntu versions (Ubuntu 13.10) ignore labels on stock menu IDs,
-- so don't use stock IDs on Linux (http://trac.wxwidgets.org/ticket/15958)
local linux = ide.osname == 'Unix'
 
ID_SEPARATOR        = NewID()
-- File menu
ID_NEW              = linux and NewID() or wx.wxID_NEW
ID_OPEN             = linux and NewID() or wx.wxID_OPEN
ID_CLOSE            = NewID()
ID_CLOSEALL         = NewID()
ID_CLOSEOTHER       = NewID()
ID_CLOSESEARCHRESULTS = NewID()
ID_REFRESHSEARCHRESULTS = NewID()
ID_NEWFILE          = NewID()
ID_NEWDIRECTORY     = NewID()
ID_RENAMEFILE       = NewID()
ID_DELETEFILE       = NewID()
ID_SAVE             = linux and NewID() or wx.wxID_SAVE
ID_SAVEAS           = linux and NewID() or wx.wxID_SAVEAS
ID_SAVEALL          = NewID()
ID_RECENTFILES      = NewID()
ID_RECENTFILESCLEAR = NewID()
ID_RECENTFILESPREV  = NewID()
ID_RECENTFILESNEXT  = NewID()
ID_RECENTPROJECTS   = NewID()
ID_RECENTPROJECTSCLEAR = NewID()
ID_RECENTPROJECTSPREV = NewID()
ID_PRINT            = NewID()
ID_PAGESETUP        = NewID()
ID_EXIT             = linux and NewID() or wx.wxID_EXIT
ID_RESTART          = NewID()
-- Edit menu
ID_CUT              = linux and NewID() or wx.wxID_CUT
ID_COPY             = linux and NewID() or wx.wxID_COPY
ID_PASTE            = linux and NewID() or wx.wxID_PASTE
ID_SELECTALL        = linux and NewID() or wx.wxID_SELECTALL
ID_UNDO             = linux and NewID() or wx.wxID_UNDO
ID_REDO             = linux and NewID() or wx.wxID_REDO
ID_SHOWTOOLTIP      = NewID()
ID_AUTOCOMPLETE     = NewID()
ID_AUTOCOMPLETEENABLE = NewID()
ID_COMMENT          = NewID()
ID_FOLD             = NewID()
ID_FOLDLINE         = NewID()
ID_CLEARDYNAMICWORDS = NewID()
ID_SOURCE           = NewID()
ID_REINDENT         = NewID()
ID_BOOKMARK         = NewID()
ID_BOOKMARKTOGGLE   = NewID()
ID_BOOKMARKNEXT     = NewID()
ID_BOOKMARKPREV     = NewID()
ID_BOOKMARKFILECLEAR = NewID()
ID_BOOKMARKPROJECTCLEAR = NewID()
ID_NAVIGATE         = NewID()
ID_NAVIGATETOFILE   = NewID()
ID_NAVIGATETOLINE   = NewID()
ID_NAVIGATETOSYMBOL = NewID()
ID_NAVIGATETOMETHOD = NewID()
-- don't use wx.wxID_PREFERENCES to avoid merging with OSX app menu, because
-- Apple guidelines describe Preferences as a "normal" item without submenus.
ID_PREFERENCES      = NewID()
ID_PREFERENCESSYSTEM = NewID()
ID_PREFERENCESUSER  = NewID()
-- Search menu
ID_FIND             = linux and NewID() or wx.wxID_FIND
ID_FINDNEXT         = NewID()
ID_FINDPREV         = NewID()
ID_FINDSELECTNEXT   = NewID()
ID_FINDSELECTPREV   = NewID()
ID_REPLACE          = NewID()
ID_FINDINFILES      = NewID()
ID_REPLACEINFILES   = NewID()
ID_SORT             = NewID()
-- View menu
ID_VIEWFILETREE     = NewID()
ID_VIEWOUTPUT       = NewID()
ID_VIEWCALLSTACK    = NewID()
ID_VIEWWATCHWINDOW  = NewID()
ID_VIEWOUTLINE      = NewID()
ID_VIEWMARKERS      = NewID()
ID_VIEWTOOLBAR      = NewID()
ID_VIEWSTATUSBAR    = NewID()
ID_VIEWDEFAULTLAYOUT = NewID()
ID_VIEWFULLSCREEN   = NewID()
ID_VIEWMINIMIZE     = NewID()
ID_ZOOM             = NewID()
ID_ZOOMRESET        = NewID()
ID_ZOOMIN           = NewID()
ID_ZOOMOUT          = NewID()
-- Project menu
ID_BREAKPOINT       = NewID()
ID_BREAKPOINTTOGGLE = NewID()
ID_BREAKPOINTNEXT   = NewID()
ID_BREAKPOINTPREV   = NewID()
ID_BREAKPOINTFILECLEAR = NewID()
ID_BREAKPOINTPROJECTCLEAR = NewID()
ID_COMPILE          = NewID()
ID_ANALYZE          = NewID()
ID_RUN              = NewID()
ID_RUNNOW           = NewID()
ID_ATTACHDEBUG      = NewID()
ID_STARTDEBUG       = NewID()
ID_STOPDEBUG        = NewID()
ID_DETACHDEBUG      = NewID()
ID_STEP             = NewID()
ID_STEPOVER         = NewID()
ID_STEPOUT          = NewID()
ID_RUNTO            = NewID()
ID_BREAK            = NewID()
ID_TRACE            = NewID()
ID_CLEAROUTPUTENABLE = NewID()
ID_CLEAROUTPUT      = NewID()
ID_CLEARCONSOLE     = NewID()
ID_COMMANDLINEPARAMETERS = NewID()
ID_INTERPRETER      = NewID()
ID_PROJECTDIR       = NewID()
ID_PROJECTDIRFROMFILE = NewID()
ID_PROJECTDIRFROMDIR = NewID()
ID_PROJECTDIRCHOOSE = NewID()
-- Help menu
ID_ABOUT            = linux and NewID() or wx.wxID_ABOUT
ID_HELPPROJECT      = NewID()
ID_HELPDOCUMENTATION = NewID()
ID_HELPGETTINGSTARTED = NewID()
ID_HELPTUTORIALS    = NewID()
ID_HELPFAQ          = NewID()
ID_HELPCOMMUNITY    = NewID()
-- Watch window menu items
ID_ADDWATCH         = NewID()
ID_EDITWATCH        = NewID()
ID_DELETEWATCH      = NewID()
ID_COPYWATCHVALUE   = NewID()
-- Editor popup menu items
ID_GOTODEFINITION   = NewID()
ID_RENAMEALLINSTANCES = NewID()
ID_REPLACEALLSELECTIONS = NewID()
ID_QUICKADDWATCH    = NewID()
ID_QUICKEVAL        = NewID()
ID_ADDTOSCRATCHPAD  = NewID()
-- filetree menu
ID_HIDEEXTENSION    = NewID()
ID_SETSTARTFILE     = NewID()
ID_UNSETSTARTFILE   = NewID()
ID_SHOWEXTENSION    = NewID()
ID_SHOWEXTENSIONALL = NewID()
ID_MAPDIRECTORY     = NewID()
ID_UNMAPDIRECTORY   = NewID()
ID_HOISTDIRECTORY   = NewID()
ID_UNHOISTDIRECTORY = NewID()
ID_OPENEXTENSION    = NewID()
ID_COPYFULLPATH     = NewID()
ID_SHOWLOCATION     = NewID()
ID_REFRESH          = NewID()
ID_SYMBOLDIRREFRESH = NewID()
ID_SYMBOLDIRINDEX   = NewID()
ID_SYMBOLDIRDISABLE = NewID()
ID_SYMBOLDIRENABLE  = NewID()
-- outline menu
ID_OUTLINESORT      = NewID()
-- console menu
ID_SELECTCONSOLECOMMAND = NewID()
-- search toolbar
ID_FINDALL          = NewID()
ID_FINDREPLACENEXT  = NewID()
ID_FINDREPLACEALL   = NewID()
ID_FINDSETDIR       = NewID()
ID_FINDSETTOPROJDIR = NewID()
ID_FINDOPTSCOPE     = NewID()
ID_FINDOPTSTATUS    = NewID()
ID_FINDOPTDIRECTION = NewID()
ID_FINDOPTWRAPWROUND = NewID()
ID_FINDOPTSELECTION = NewID()
ID_FINDOPTWORD      = NewID()
ID_FINDOPTCASE      = NewID()
ID_FINDOPTREGEX     = NewID()
ID_FINDOPTCONTEXT   = NewID()
ID_FINDOPTSUBDIR    = NewID()
ID_FINDOPTSYMLINK   = NewID()
ID_FINDOPTMAPPED    = NewID()
ID_FINDOPTMULTIRESULTS = NewID()
ID_RECENTSCOPECLEAR = NewID()
-- global shortcuts
ID_NOTEBOOKTABNEXT  = NewID()
ID_NOTEBOOKTABPREV  = NewID()
 
local ids = {}
function IDgen (name)
  ids[name] = ids[name] or NewID()
  return ids[name]
end
function IDget (name) return ids[name] end
 
ID = setmetatable({}, ide.proto.ID)