]> de.git.xonotic.org Git - xonotic/netradiant.git/blob - radiant/mainframe.h
get the basics of a new scons build system together
[xonotic/netradiant.git] / radiant / mainframe.h
1 /*\r
2 Copyright (C) 1999-2007 id Software, Inc. and contributors.\r
3 For a list of contributors, see the accompanying CONTRIBUTORS file.\r
4 \r
5 This file is part of GtkRadiant.\r
6 \r
7 GtkRadiant is free software; you can redistribute it and/or modify\r
8 it under the terms of the GNU General Public License as published by\r
9 the Free Software Foundation; either version 2 of the License, or\r
10 (at your option) any later version.\r
11 \r
12 GtkRadiant is distributed in the hope that it will be useful,\r
13 but WITHOUT ANY WARRANTY; without even the implied warranty of\r
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
15 GNU General Public License for more details.\r
16 \r
17 You should have received a copy of the GNU General Public License\r
18 along with GtkRadiant; if not, write to the Free Software\r
19 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA\r
20 */\r
21 \r
22 #ifndef _MAINFRAME_H_\r
23 #define _MAINFRAME_H_\r
24 \r
25 #include "xywindow.h"\r
26 #include "texwindow.h"\r
27 #include "zwindow.h"\r
28 #include "camwindow.h"\r
29 #include "watchbsp.h"\r
30 \r
31 #include "pluginmanager.h"\r
32 #include "plugin.h"\r
33 \r
34 #include "gtkr_vector.h"\r
35 \r
36 #ifdef __APPLE__\r
37 #define __toascii(c)    ((c) & 0x7f) \r
38 #endif\r
39 \r
40 const int RAD_SHIFT =   0x01;\r
41 const int RAD_ALT =     0x02;\r
42 const int RAD_CONTROL = 0x04;\r
43 const int RAD_PRESS   = 0x08;\r
44 \r
45 struct SCommandInfo\r
46 {\r
47   char* m_strCommand;\r
48   unsigned int   m_nKey;\r
49   unsigned int   m_nModifiers;\r
50   unsigned int m_nCommand;\r
51   char* m_strMenu;\r
52 };\r
53 \r
54 struct SKeyInfo\r
55 {\r
56   char* m_strName;\r
57   unsigned int m_nVKKey;\r
58 };\r
59 \r
60 #define ID_FILE_NEW 0xE100\r
61 #define ID_FILE_OPEN 0xE101\r
62 #define ID_FILE_SAVE 0xE103\r
63 #define ID_EDIT_UNDO 0xE12B\r
64 #define ID_EDIT_REDO 0xE12C\r
65 #define ID_HELP 0xE146\r
66 #define ID_FILE_RECENT1 0xE110\r
67 #define ID_FILE_RECENT2 0xE111\r
68 #define ID_FILE_RECENT3 0xE112\r
69 #define ID_FILE_RECENT4 0xE113\r
70 \r
71 #define IDC_BTN_FACEFIT                 1143\r
72 #define ID_ENTITY_START                 22800\r
73 #define ID_ENTITY_END                   32000 //leo\r
74 //#define ID_ENTITY_END                   33500\r
75 #define ID_VIEW_XY                      32772\r
76 #define ID_VIEW_SIDE                    32773\r
77 #define ID_VIEW_FRONT                   32774\r
78 #define ID_CAMERATOGGLE                 32775\r
79 #define ID_VIEW_CAMERATOGGLE            32776\r
80 #define ID_BUTTON32777                  32777\r
81 #define ID_BUTTON32778                  32778\r
82 #define ID_TEXTURES_POPUP               32780\r
83 #define ID_POPUP_SELECTION              32782\r
84 #define ID_VIEW_CHANGE                  32783\r
85 #define ID_VIEW_CAMERAUPDATE            32784\r
86 #define ID_VIEW_CLIPPER                 32785\r
87 #define ID_PREFS                        32786\r
88 #define ID_TOGGLE_LOCK                  32787\r
89 #define ID_EDIT_MAPINFO                 32788\r
90 #define ID_EDIT_ENTITYINFO              32789\r
91 #define ID_BRUSH_SCRIPTS                32790\r
92 #define ID_VIEW_NEXTVIEW                32791\r
93 #define ID_HELP_COMMANDLIST             32792\r
94 #define ID_FILE_NEWPROJECT              32793\r
95 #define ID_SNAPTOGRID                   32795\r
96 #define ID_VIEW_CENTERVIEW              32796\r
97 #define ID_SPLIT_SELECTED               32823\r
98 #define ID_CLIP_SELECTED                32824\r
99 #define ID_FLIP_CLIP                    32825\r
100 #define ID_TOGGLEVIEW_YZ                32831\r
101 #define ID_TOGGLEVIEW_XZ                32832\r
102 #define ID_COLORS_GRIDTEXT              32833\r
103 #define ID_COLORS_BRUSH                 32834\r
104 #define ID_COLORS_SELECTEDBRUSH         32835\r
105 #define ID_COLORS_CLIPPER               32836\r
106 #define ID_COLORS_GRIDBLOCK             32837\r
107 #define ID_COLORS_VIEWNAME              32838\r
108 #define ID_COLOR_SETORIGINAL            32839\r
109 #define ID_COLOR_SETQER                 32840\r
110 #define ID_COLOR_SETBLACK               32841\r
111 #define ID_COLOR_SETYDNAR               37001  /* ydnar */\r
112 #define ID_BYEBYE                       32842\r
113 #define ID_SELECT_SCALE                 32843\r
114 #define ID_SELECT_MOUSEROTATE           32844\r
115 #define ID_COLORS_SELECTEDBRUSH3D       32845\r
116 #define ID_COLORS_CAMERABACK            32846\r
117 #define ID_TEXTURE_REPLACESELECTED      32859\r
118 #define ID_TEXTURE_REPLACEALL           32860\r
119 #define ID_SELECT_MOUSESCALE            32866\r
120 #define ID_SCALELOCKX                   32867\r
121 #define ID_SCALELOCKY                   32868\r
122 #define ID_SCALELOCKZ                   32869\r
123 #define ID_VIEW_CUBICCLIPPING           32870\r
124 #define ID_FILE_PROJECTSETTINGS         32875\r
125 #define ID_VIEW_CUBEOUT                 32876\r
126 #define ID_VIEW_CUBEIN                  32877\r
127 #define ID_NODES_LOADNODES              32878\r
128 #define ID_NODES_SHOWNODES              32879\r
129 #define ID_NODES_SHOWLINKS              32880\r
130 #define ID_NODES_REMOVEALLNODES         32881\r
131 #define ID_NODES_COUNTNODES             32882\r
132 #define ID_NODES_GIVEMONEYTONELNO       32883\r
133 #define ID_FILE_SAVEREGION              32887\r
134 #define ID_FILE_LOADREGION              32888\r
135 #define ID_SELECTION_MOVEDOWN           32890\r
136 #define ID_TOOLBAR_MAIN                 32891\r
137 #define ID_SELECTION_MOVEUP             32892\r
138 //#define ID_TOOLBAR_TEXTURE              32892\r
139 #define ID_BRUSH_MAKECONE               32896\r
140 #define ID_TEXTURES_LOAD                32897\r
141 #define ID_TOGGLE_ROTATELOCK            32898\r
142 #define ID_FILE_IMPORTMAP               32911\r
143 #define ID_FILE_EXPORTMAP               32912\r
144 #define ID_EDIT_LOADPREFAB              32913\r
145 #define ID_SELECTION_SELECT_NUDGELEFT   32916\r
146 #define ID_SELECTION_SELECT_NUDGERIGHT  32917\r
147 #define ID_SELECTION_SELECT_NUDGEUP     32918\r
148 #define ID_SELECTION_SELECT_NUDGEDOWN   32919\r
149 #define ID_TEXTURES_LOADLIST            32920\r
150 #define ID_DONTSELECTCURVE              32923\r
151 #define ID_CONVERTCURVES                32924\r
152 #define ID_PATCH_SHOWBOUNDINGBOX        32926\r
153 #define ID_CURVE_SIMPLEPATCHMESH        32927\r
154 #define ID_PATCH_WIREFRAME              32928\r
155 #define ID_PATCH_WELD                   32929\r
156 #define ID_CURVE_PATCHTUBE              32930\r
157 #define ID_CURVE_PATCHCONE              32931\r
158 #define ID_CURVE_PATCHENDCAP            32932\r
159 #define ID_CURVE_PATCHBEVEL             32933\r
160 #define ID_PATCH_DRILLDOWN              32936\r
161 #define ID_CURVE_LOADPATCHFILE          32937\r
162 #define ID_CURVE_INSERTROW              32938\r
163 #define ID_CURVE_INSERTCOLUMN           32939\r
164 #define ID_CURVE_DELETEROW              32940\r
165 #define ID_CURVE_DELETECOLUMN           32941\r
166 #define ID_BUTTON32942                  32942\r
167 //#define ID_PATCH_INSDEL                 32942\r
168 #define ID_CURVE_INSERT_ADDCOLUMN       32943\r
169 #define ID_CURVE_INSERT_INSERTCOLUMN    32944\r
170 #define ID_CURVE_INSERT_ADDROW          32945\r
171 #define ID_CURVE_INSERT_INSERTROW       32946\r
172 #define ID_CURVE_DELETE_FIRSTCOLUMN     32947\r
173 #define ID_CURVE_DELETE_LASTCOLUMN      32948\r
174 #define ID_CURVE_DELETE_FIRSTROW        32949\r
175 #define ID_CURVE_DELETE_LASTROW         32950\r
176 #define ID_CURVE_NEGATIVE               32951\r
177 #define ID_PATCH_BEND                   32952\r
178 #define ID_CURVE_PATCHDENSETUBE         32955\r
179 #define ID_CURVE_PATCHVERYDENSETUBE     32956\r
180 #define ID_CURVE_CAP                    32957\r
181 #define ID_CURVE_REDISPERSE_ROWS        32961\r
182 #define ID_PATCH_NATURALIZE             32963\r
183 #define ID_CURVE_PATCHSQUARE            32964\r
184 #define ID_BRUSH_PRIMITIVES_SPHERE      32965\r
185 #define ID_BRUSH_PRIMITIVES_TORUS       32966\r
186 #define ID_TEXTURES_TEXTUREWINDOWSCALE_200 32967\r
187 #define ID_TEXTURES_TEXTUREWINDOWSCALE_100 32968\r
188 #define ID_TEXTURES_TEXTUREWINDOWSCALE_50 32969\r
189 #define ID_TEXTURES_TEXTUREWINDOWSCALE_25 32970\r
190 #define ID_TEXTURES_TEXTUREWINDOWSCALE_10 32971\r
191 #define ID_CURVE_NEGATIVETEXTUREX       32972\r
192 #define ID_TEXTURES_FLUSH               32973\r
193 #define ID_CURVE_OVERLAY_SET            32974\r
194 #define ID_CURVE_OVERLAY_CLEAR          32975\r
195 #define ID_CURVE_NEGATIVETEXTUREY       32976\r
196 #define ID_CURVE_THICKEN                32977\r
197 #define ID_CURVE_CYCLECAP               32978\r
198 #define ID_CURVE_MATRIX_TRANSPOSE       32981\r
199 #define ID_PLUGINS_REFRESH              32982\r
200 #define ID_TEXTURES_RELOADSHADERS       32983\r
201 #define ID_VIEW_ENTITIESAS_BOUNDINGBOX  32984\r
202 #define ID_VIEW_ENTITIESAS_WRITEFRAME   32985\r
203 #define ID_VIEW_ENTITIESAS_SELECTEDWIREFRAME 32986\r
204 #define ID_VIEW_ENTITIESAS_SELECTEDSKINNED 32987\r
205 #define ID_VIEW_ENTITIESAS_SKINNED      32988\r
206 #define ID_VIEW_ENTITIESAS_SKINNEDANDBOXED 32989\r
207 #define ID_SHOW_ENTITIES                32990\r
208 #define ID_VIEW_ENTITIESAS_WIREFRAME    32991\r
209 #define ID_VIEW_OPENGLLIGHTING          32998\r
210 #define ID_EDIT_SAVEPREFAB              33001\r
211 #define ID_CURVE_MOREENDCAPSBEVELS_SQUAREENDCAP 33002\r
212 #define ID_CURVE_MOREENDCAPSBEVELS_SQUAREBEVEL 33003\r
213 #define ID_CURVE_PRIMITIVES_SPHERE      33005\r
214 #define ID_VIEW_HIDESHOW_HIDESELECTED   33006\r
215 #define ID_VIEW_HIDESHOW_SHOWHIDDEN     33007\r
216 #define ID_TEXTURES_SHADERS_SHOW        33008\r
217 //#define ID_SELECTION_CSGADD             33009\r
218 #define ID_SELECTION_CSGMERGE           33011\r
219 #define ID_TEXTURES_FLUSH_UNUSED        33014\r
220 #define ID_DROP_GROUP_REMOVE            33016\r
221 #define ID_DROP_GROUP_ADDTO_WORLD       33017\r
222 #define ID_DROP_GROUP_NEWGROUP          33018\r
223 #define ID_DROP_GROUP_NAME              33019\r
224 #define ID_DROP_GROUP_ADDTO             33020\r
225 #define ID_VIEW_SHOWANGLES              33021\r
226 #define ID_VIEW_SHOWWORKZONE            33022\r
227 #define ID_TEXTURE_FLUSH                33023\r
228 #define ID_TEXTURES_SHOWSHADERS         33025\r
229 #define ID_DONTSELECTMODEL              33027\r
230 #define ID_TEXTURES_SHADERLISTONLY      33030\r
231 #define ID_PLUGIN_START                 33800\r
232 #define ID_PLUGIN_END                   33999\r
233 #define ID_FILE_EXIT                    40002\r
234 #define ID_FILE_SAVEAS                  40004\r
235 #define ID_VIEW_CENTER                  40005\r
236 #define ID_VIEW_UPFLOOR                 40006\r
237 #define ID_VIEW_DOWNFLOOR               40007\r
238 #define ID_BRUSH_FLIPX                  40008\r
239 #define ID_BRUSH_FLIPY                  40009\r
240 #define ID_BRUSH_FLIPZ                  40010\r
241 #define ID_BRUSH_ROTATEX                40011\r
242 #define ID_BRUSH_ROTATEY                40012\r
243 #define ID_BRUSH_ROTATEZ                40013\r
244 #define ID_BSP_FULLVIS                  40016\r
245 #define ID_BSP_FASTVIS                  40017\r
246 #define ID_BSP_NOVIS                    40018\r
247 #define ID_BSP_RELIGHT                  40019\r
248 #define ID_BSP_ENTITIES                 40020\r
249 #define ID_FILE_POINTFILE               40021\r
250 #define ID_VIEW_100                     40022\r
251 #define ID_VIEW_75                      40023\r
252 #define ID_VIEW_50                      40024\r
253 #define ID_VIEW_25                      40025\r
254 #define ID_VIEW_12                      40026\r
255 #define ID_TEXTURES_SHOWALL             40033\r
256 #define ID_TEXTURES_SHOWINUSE           40034\r
257 #define ID_TEXTURES_TOGGLEVIEW          40037\r
258 #define ID_SELECTION_CREATEENTITY       40039\r
259 #define ID_SELECTION_EDITENTITY         40040\r
260 #define ID_MISC_BENCHMARK               40041\r
261 #define ID_REGION_OFF                   40043\r
262 #define ID_REGION_SETXY                 40044\r
263 #define ID_REGION_SETBRUSH              40045\r
264 #define ID_SELECTION_MAKEHOLLOW         40046\r
265 #define ID_SELECTION_SELECTPARTIALTALL  40047\r
266 #define ID_SELECTION_SELECTCOMPLETETALL 40048\r
267 #define ID_SELECTION_CSGSUBTRACT        40049\r
268 #define ID_SELECTION_SELECTTOUCHING     40050\r
269 #define ID_VIEW_NEAREST                 40052\r
270 #define ID_VIEW_NEARESTMIPMAP           40053\r
271 #define ID_VIEW_LINEAR                  40054\r
272 #define ID_VIEW_BILINEAR                40055\r
273 #define ID_VIEW_BILINEARMIPMAP          40056\r
274 #define ID_VIEW_TRILINEAR               40057\r
275 #define ID_TEXTURES_WIREFRAME           40058\r
276 #define ID_TEXTURES_FLATSHADE           40059\r
277 #define ID_VIEW_SHOWNAMES               40060\r
278 #define ID_VIEW_ZOOMIN                  40061\r
279 #define ID_VIEW_ZOOMOUT                 40062\r
280 #define ID_VIEW_SHOWCOORDINATES         40063\r
281 #define ID_VIEW_Z100                    40064\r
282 #define ID_VIEW_ZZOOMIN                 40065\r
283 #define ID_VIEW_ZZOOMOUT                40066\r
284 #define ID_SELECTION_CLONE              40067\r
285 #define ID_SELECTION_DESELECT           40068\r
286 #define ID_SELECTION_DELETE             40069\r
287 #define ID_BUTTON40068                  40070\r
288 #define ID_SELECTION_DRAGVERTECIES      40074\r
289 #define ID_SELECTION_DRAGEDGES          40075\r
290 #define ID_REGION_SETTALLBRUSH          40076\r
291 #define ID_SELECTION_SELECTINSIDE       40092\r
292 #define ID_PROJECT_RELEAD               40094\r
293 #define ID_PROJECT_CHANGE               40095\r
294 #define ID_MISC_GAMMA                   40097\r
295 #define ID_MISC_TEXTUREBACKGROUN        40104\r
296 #define ID_TEXTUREBK                    40105\r
297 #define ID_COLORS_XYBK                  40106\r
298 #define ID_FILE_ABOUT                   40107\r
299 #define ID_VIEW_CONSOLE                 40108\r
300 #define ID_VIEW_ENTITY                  40109\r
301 #define ID_VIEW_TEXTURE                 40110\r
302 #define ID_COLORS_MAJOR                 40111\r
303 #define ID_COLORS_MINOR                 40113\r
304 #define ID_SELECTION_CONNECT            40114\r
305 #define ID_FILE_LOADPROJECT             40115\r
306 #define ID_MISC_FINDBRUSH               40116\r
307 #define ID_MISC_NEXTLEAKSPOT            40117\r
308 #define ID_MISC_PREVIOUSLEAKSPOT        40118\r
309 #define ID_BRUSH_3SIDED                 40119\r
310 #define ID_BRUSH_4SIDED                 40120\r
311 #define ID_BRUSH_5SIDED                 40121\r
312 #define ID_BRUSH_6SIDED                 40122\r
313 #define ID_BRUSH_7SIDED                 40123\r
314 #define ID_BRUSH_8SIDED                 40124\r
315 #define ID_BRUSH_9SIDED                 40125\r
316 #define ID_SELECTION_ARBITRARYROTATION  40126\r
317 #define ID_BRUSH_ARBITRARYSIDED         40127\r
318 #define ID_SELECTION_UNGROUPENTITY      40130\r
319 #define ID_MISC_SELECTENTITYCOLOR       40131\r
320 #define ID_MISC_PRINTXY                 40132\r
321 #define ID_HELP_ABOUT                   40134\r
322 #define ID_EDIT_COPYBRUSH               40135\r
323 #define ID_EDIT_PASTEBRUSH              40136\r
324 #define ID_TEXTURES_INSPECTOR           40137\r
325 #define ID_SELECTION_MAKE_DETAIL        40139\r
326 #define ID_SELECTION_MAKE_STRUCTURAL    40140\r
327 #define ID_REGION_SETSELECTION          40141\r
328 #define ID_VIEW_SHOWBLOCKS              40142\r
329 #define ID_CAMERA_UP                    40152\r
330 #define ID_CAMERA_DOWN                  40153\r
331 #define ID_CAMERA_LEFT                  40154\r
332 #define ID_CAMERA_RIGHT                 40155\r
333 #define ID_CAMERA_FORWARD               40156\r
334 #define ID_CAMERA_BACK                  40157\r
335 #define ID_CAMERA_ANGLEUP               40158\r
336 #define ID_CAMERA_ANGLEDOWN             40159\r
337 #define ID_CAMERA_STRAFELEFT            40160\r
338 #define ID_CAMERA_STRAFERIGHT           40161\r
339 #define ID_GRID_TOGGLE                  40162\r
340 #define ID_ENTITYLIST                   40163\r
341 #define ID_MAPINFO                      40164\r
342 #define ID_TOGGLECONSOLE                40165\r
343 #define ID_TOGGLECAMERA                 40166\r
344 #define ID_TOGGLEZ                      40167\r
345 #define ID_TOGGLEVIEW                   40168\r
346 #define ID_SELECTION_TEXTURE_FIT        40171\r
347 #define ID_SELECTION_TEXTURE_ROTATECLOCK 40172\r
348 #define ID_SELECTION_TEXTURE_ROTATECOUNTER 40173\r
349 #define ID_SELECTION_TEXTURE_SCALEUP    40174\r
350 #define ID_SELECTION_TEXTURE_SCALEDOWN  40175\r
351 #define ID_SELECTION_TEXTURE_SHIFTLEFT  40176\r
352 #define ID_SELECTION_TEXTURE_SHIFTRIGHT 40177\r
353 #define ID_SELECTION_TEXTURE_SHIFTUP    40178\r
354 #define ID_SELECTION_TEXTURE_SHIFTDOWN  40179\r
355 #define ID_GRID_NEXT                    40180\r
356 #define ID_GRID_PREV                    40181\r
357 #define ID_SELECTION_TEXTURE_SCALELEFT  40182\r
358 #define ID_SELECTION_TEXTURE_SCALERIGHT 40183\r
359 #define ID_SELECTION_PRINT              40184\r
360 #define ID_SELECTION_TOGGLESIZEPAINT    40185\r
361 #define ID_PATCH_TAB                    40186\r
362 #define ID_PATCH_ENTER                  40187\r
363 #define ID_SELECT_SNAPTOGRID            40188\r
364 #define ID_PATCH_INSPECTOR              40189\r
365 #define ID_SELECT_ALL                   40190\r
366 #define ID_CURVE_FREEZE                 40191\r
367 #define ID_CURVE_UNFREEZE               40192\r
368 #define ID_CURVE_UNFREEZEALL            40193\r
369 #define ID_SELECT_RESELECT              40194\r
370 #define ID_FITFACE                      40196\r
371 #define ID_VIEW_CROSSHAIR               40197\r
372 #define ID_SELECTION_INVERT             40198\r
373 #define ID_VIEW_GROUPS                  40199\r
374 #define ID_FILE_SLEEP                   40200\r
375 #define ID_HELP_LINKS                   40201\r
376 #define ID_VIEW_SHOWOUTLINE             40202 // TTimo: outline as in colored outline around the window to quickly guess the orientation\r
377 #define ID_VIEW_SHOWAXES                40203\r
378 #define ID_SELECTION_NOOUTLINE          40204 // TTimo: outline as in zbuffered outline toggle on camera view (TA Q3Radiant 200f addition)\r
379 #define ID_SELECTION_OUTLINESTYLE       40205 // Arnout: cycles through selection styles (extended 'nooutline')\r
380 #define ID_SELECTION_SEPERATE           40206 // TTimo: split brushes out of an entity back into worldspawn\r
381 #define ID_SELECTION_MERGE              40207 // TTimo: merge brushes from worldspawn into entity\r
382 #define ID_HELP_BUGREPORT               40208\r
383 \r
384 #define ID_FILTER_WORLD                 40209\r
385 #define ID_FILTER_PATCHES               40210\r
386 #define ID_FILTER_DETAILS               40211\r
387 #define ID_FILTER_ENTITIES              40212\r
388 #define ID_FILTER_MODELS                40213\r
389 #define ID_FILTER_HINTSSKIPS            40214\r
390 #define ID_FILTER_CLIPS                 40215\r
391 #define ID_FILTER_LIQUIDS               40216\r
392 #define ID_FILTER_TRIGGERS              40217\r
393 #define ID_FILTER_AREAPORTALS           40218\r
394 #define ID_FILTER_TRANSLUCENT           40219\r
395 #define ID_FILTER_CAULK                 40220\r
396 #define ID_FILTER_LIGHTS                40221\r
397 #define ID_FILTER_PATHS                 40223\r
398 #define ID_FILTER_CLUSTERPORTALS        40224\r
399 #define ID_FILTER_LIGHTGRID             40225\r
400 #define ID_FILTER_STRUCTURAL            40226\r
401 #define ID_FILTER_BOTCLIPS                                                      40227\r
402 \r
403 #define ID_CURVE_REDISPERSE_INTERMEDIATE_COLS   40230\r
404 #define ID_CURVE_REDISPERSE_INTERMEDIATE_ROWS   40231\r
405 #define ID_EDIT_PASTEBRUSHTOCAMERA      40232\r
406 \r
407 #define ID_COLORS_MINOR_ALT             40230\r
408 #define ID_COLORS_MAJOR_ALT             40231\r
409 \r
410 // those must have their own ID chunk ID_GRID_025 <= ID_GRID <= ID_GRID_256\r
411 #define ID_GRID_025                     40300\r
412 #define ID_GRID_05                      40301\r
413 #define ID_GRID_1                       40302\r
414 #define ID_GRID_2                       40303\r
415 #define ID_GRID_4                       40304\r
416 #define ID_GRID_8                       40305\r
417 #define ID_GRID_16                      40306\r
418 #define ID_GRID_32                      40307\r
419 #define ID_GRID_64                      40308\r
420 #define ID_GRID_128                     40309\r
421 #define ID_GRID_256                     40310\r
422 \r
423 #define ID_FILE_CHECKUPDATE             40320\r
424 \r
425 #define ID_TEXTUREWINDOW_SCALEUP        40321\r
426 #define ID_TEXTUREWINDOW_SCALEDOWN      40322\r
427 \r
428 class CSynapseClientRadiant : public CSynapseClient\r
429 {\r
430 public:\r
431   bool RequestAPI(APIDescriptor_t *pAPI);\r
432   const char* GetInfo();\r
433   const char* GetName();\r
434       \r
435   void ImportMap(IDataStream *in, CPtrArray *ents, const char *type);\r
436   void ExportMap(CPtrArray *ents, IDataStream *out, const char *type);\r
437 \r
438   CSynapseClientRadiant() { }\r
439   virtual ~CSynapseClientRadiant() { }\r
440 };  \r
441 \r
442 class MainFrame\r
443 {\r
444 public:\r
445   enum EViewStyle\r
446   {\r
447     eRegular,\r
448     eFloating,\r
449     eSplit,\r
450     eRegularLeft,\r
451   };\r
452 \r
453   MainFrame();\r
454   GtkWidget *m_pWidget;\r
455 \r
456   /*!\r
457   called to fire up the help links\r
458   */\r
459   void handle_help_command(int id);\r
460 \r
461 protected:\r
462 \r
463   /*!\r
464   the urls to fire up in the game packs help menus\r
465   */\r
466   vector<Str *> mHelpURLs;\r
467 \r
468   /*!\r
469   scan the .game files for game install packs\r
470   look there for help description nodes\r
471   build the corresponding menus in Radiant\r
472   */\r
473   void create_game_help_menu (GtkWidget *menu, GtkAccelGroup *accel);\r
474 \r
475   /*!\r
476   build the menu once the filename is found\r
477   */\r
478   void process_xlink (Str &FileName, char *menu_name, const char *base_url, GtkWidget *menu, GtkAccelGroup *accel);\r
479 \r
480   void Create ();\r
481   void create_main_menu (GtkWidget *window, GtkWidget *vbox);\r
482   void create_main_toolbar (GtkWidget *window, GtkWidget *vbox);\r
483   void create_plugin_toolbar (GtkWidget *window, GtkWidget *vbox);\r
484   void create_main_statusbar (GtkWidget *window, GtkWidget *vbox);\r
485   GtkWidget *m_pStatusLabel[6];\r
486   GtkWidget *m_pSplits[4];\r
487   XYWnd* m_pXYWnd;\r
488   XYWnd* m_pYZWnd;\r
489   XYWnd* m_pXZWnd;\r
490   CamWnd* m_pCamWnd;\r
491   TexWnd* m_pTexWnd;\r
492   ZWnd* m_pZWnd;\r
493   CWatchBSP* m_pWatchBSP;\r
494 \r
495   XYWnd* m_pActiveXY;\r
496   bool m_bCamPreview;\r
497   CPlugInManager m_PlugInMgr;\r
498   int m_nNextPlugInID;\r
499   guint m_nTimer;\r
500   bool m_bSleeping;\r
501 \r
502   CString m_strStatus[15];\r
503   bool m_bNeedStatusUpdate;\r
504 \r
505   /*!\r
506   synapse server\r
507   deals with dynamically loading the modules, initializing them, requesting the APIs\r
508   */\r
509   CSynapseServer m_SynapseServer;\r
510   /*!\r
511   we are also a synapse client in that we provide and require some APIs as well\r
512   */\r
513   CSynapseClientRadiant m_SynapseClient;\r
514 \r
515 public:\r
516 \r
517   // BSP window\r
518   // trigger network listen\r
519   void DoWatchBSP();\r
520   bool IsSleeping ()\r
521     { return m_bSleeping; }\r
522 \r
523   void UpdatePatchToolbarButtons();\r
524   // Gef: Changed to float for sub-integer grid size\r
525   void NudgeSelection(int nDirection, float nAmount);\r
526   void SetButtonMenuStates();\r
527   void SetGridStatus();\r
528   void RoutineProcessing();\r
529   XYWnd* ActiveXY() { return m_pActiveXY; };\r
530   void UpdateWindows(int nBits);\r
531   void SetStatusText(int nPane, const char* pText);\r
532   void UpdateStatusText();\r
533   void SetWindowStyle(int nStyle);\r
534   virtual ~MainFrame();\r
535   XYWnd* GetXYWnd() {return m_pXYWnd;}\r
536   XYWnd* GetXZWnd() {return m_pXZWnd;}\r
537   XYWnd* GetYZWnd() {return m_pYZWnd;}\r
538   ZWnd* GetZWnd() {return m_pZWnd;}\r
539   CamWnd* GetCamWnd() {return m_pCamWnd;}\r
540   TexWnd* GetTexWnd() {return m_pTexWnd;}\r
541   CWatchBSP *GetWatchBSP() { return m_pWatchBSP; }\r
542   void ReleaseContexts ();\r
543   void CreateContexts ();\r
544 \r
545   void SetActiveXY(XYWnd* p) \r
546   {\r
547     if (m_pActiveXY)\r
548       m_pActiveXY->SetActive(false);\r
549 \r
550     m_pActiveXY = p;\r
551 \r
552     if (m_pActiveXY)\r
553       m_pActiveXY->SetActive(true);\r
554 \r
555   };\r
556 \r
557   EViewStyle CurrentStyle()\r
558   {\r
559     return m_nCurrentStyle;\r
560   };\r
561 \r
562   bool FloatingGroupDialog()\r
563   {\r
564     return CurrentStyle() == eFloating || CurrentStyle() == eSplit;\r
565   };\r
566 \r
567 #ifdef _WIN32\r
568   const GdkRectangle & GetPrimaryMonitorRect( void ) const { return primaryMonitorRect; }\r
569   const int GetGDKOffsetX( void ) const { return gdk_offset_x; }\r
570   const int GetGDKOffsetY( void ) const { return gdk_offset_y; }\r
571 #endif\r
572 \r
573 protected:\r
574   bool m_bDoLoop;\r
575   bool m_bSplittersOK;\r
576   void CreateQEChildren();\r
577   void LoadCommandMap();\r
578   void ShowMenuItemKeyBindings(GtkWidget* window);\r
579 \r
580 public:\r
581   void Copy();\r
582   void Paste();\r
583   void Nudge(int nDim, float fNudge);\r
584   CPlugInManager &GetPlugInMgr() {return m_PlugInMgr;};\r
585   CSynapseServer &GetSynapseServer() {return m_SynapseServer;};\r
586   CSynapseClientRadiant &GetSynapseClient() {return m_SynapseClient;};\r
587   void AddPlugInToolbarButton(const IToolbarButton* button);\r
588   void AddPlugInMenuItem(IPlugIn* pPlugIn);\r
589   void CleanPlugInMenu();\r
590 \r
591   // these are public so i can easily reflect messages\r
592   // from child windows..\r
593   void OnTimer();\r
594   void OnDelete();\r
595   void OnDestroy();\r
596   void ToggleCamera();\r
597 \r
598   void OnFileExit();\r
599   void OnFileLoadproject();\r
600   void OnFileNew();\r
601   void OnFileOpen();\r
602   void OnFilePointfile();\r
603   void OnFileSave();\r
604   void OnFileSaveas();\r
605   void OnFileCheckUpdate();\r
606   void OnView100();\r
607   void OnViewCenter();\r
608   void OnViewConsole();\r
609   void OnViewDownfloor();\r
610   void OnViewEntity();\r
611   void OnViewFront();\r
612   void OnViewShowblocks();\r
613   void OnViewShowclip();\r
614   void OnViewShowcoordinates();\r
615   void OnViewShowOutline();\r
616   void OnViewShowAxes();\r
617   void OnViewShowdetail();\r
618   void OnViewShowent();\r
619   void OnViewShowlights();\r
620   void OnViewShownames();\r
621   void OnViewShowpath();\r
622   void OnViewShowwater();\r
623   void OnViewShowworld();\r
624   void OnViewTexture();\r
625   void OnViewUpfloor();\r
626   void OnViewXy();\r
627   void OnViewZ100();\r
628   void OnViewZoomin();\r
629   void OnViewZoomout();\r
630   void OnViewZzoomin();\r
631   void OnViewZzoomout();\r
632   void OnViewSide();\r
633   void OnTexturesShowinuse();\r
634   void OnTexturesInspector();\r
635   void OnMiscBenchmark();\r
636   void OnMiscFindbrush();\r
637   void OnMiscGamma();\r
638   void OnMiscNextleakspot();\r
639   void OnMiscPreviousleakspot();\r
640   void OnMiscPrintxy();\r
641   void OnMiscSelectentitycolor();\r
642   void OnTexturebk();\r
643   void OnColorsMajor();\r
644   void OnColorsMinor();\r
645   void OnColorsMajor_Alt();\r
646   void OnColorsMinor_Alt();\r
647   void OnColorsXybk();\r
648   void OnBrush3sided();\r
649   void OnBrush4sided();\r
650   void OnBrush5sided();\r
651   void OnBrush6sided();\r
652   void OnBrush7sided();\r
653   void OnBrush8sided();\r
654   void OnBrush9sided();\r
655   void OnBrushArbitrarysided();\r
656   void OnBrushFlipx();\r
657   void OnBrushFlipy();\r
658   void OnBrushFlipz();\r
659   void OnBrushRotatex();\r
660   void OnBrushRotatey();\r
661   void OnBrushRotatez();\r
662   void OnRegionOff();\r
663   void OnRegionSetbrush();\r
664   void OnRegionSetselection();\r
665   void OnRegionSettallbrush();\r
666   void OnRegionSetxy();\r
667   void OnSelectionArbitraryrotation();\r
668   void OnSelectionClone();\r
669   void OnSelectionConnect();\r
670   void OnSelectionCsgsubtract();\r
671   void OnSelectionCsgmerge();\r
672   void OnSelectionNoOutline();\r
673   void OnSelectionOutlineStyle();\r
674   void OnSelectionDelete();\r
675   void OnSelectionDeselect();\r
676   void OnSelectionDragedges();\r
677   void OnSelectionDragvertecies();\r
678   void OnSelectionMakeDetail();\r
679   void OnSelectionMakeStructural();\r
680   void OnSelectionMakehollow();\r
681   void OnSelectionSelectcompletetall();\r
682   void OnSelectionSelectinside();\r
683   void OnSelectionSelectpartialtall();\r
684   void OnSelectionSelecttouching();\r
685   void OnSelectionUngroupentity();\r
686   void OnSelectionMergeentity();\r
687   void OnSelectionGroupworld();\r
688   void OnTexturesPopup();\r
689   void OnPopupSelection();\r
690   void OnViewChange();\r
691   void OnViewCameraupdate();\r
692   void OnHelpAbout();\r
693   void OnHelp();\r
694   void OnHelpLinks();\r
695   void OnHelpBugreport();\r
696   void OnViewClipper();\r
697   void OnCameraAngledown();\r
698   void OnCameraAngleup();\r
699   void OnCameraBack(bool keydown);\r
700   void OnCameraDown();\r
701   void OnCameraForward(bool keydown);\r
702   void OnCameraLeft(bool keydown);\r
703   void OnCameraRight(bool keydown);\r
704   void OnCameraStrafeleft(bool keydown);\r
705   void OnCameraStraferight(bool keydown);\r
706   void OnCameraUp();\r
707   void OnGridToggle();\r
708   void OnPrefs();\r
709   void OnTogglecamera();\r
710   void OnToggleconsole();\r
711   void OnToggleview();\r
712   void OnTogglez();\r
713   void OnToggleLock();\r
714   void OnEditMapinfo();\r
715   void OnEditEntityinfo();\r
716   void OnBrushScripts();\r
717   void OnViewCenterview();\r
718   void OnViewNextview();\r
719   void OnHelpCommandlist();\r
720   void OnFileNewproject();\r
721   void OnFlipClip();\r
722   void OnClipSelected();\r
723   void OnSplitSelected();\r
724   void OnToggleviewXz();\r
725   void OnToggleviewYz();\r
726   void OnColorsBrush();\r
727   void OnColorsClipper();\r
728   void OnColorsGridtext();\r
729   void OnColorsSelectedbrush();\r
730   void OnColorsSelectedbrush3D();\r
731   void OnColorsCameraBack();\r
732   void OnColorsGridblock();\r
733   void OnColorsViewname();\r
734   void OnColorSetoriginal();\r
735   void OnColorSetqer();\r
736   void OnColorSetblack();\r
737   void OnColorSetydnar();  /* ydnar */\r
738   void OnSnaptogrid();\r
739   void OnSelectScale();\r
740   void OnSelectMouserotate();\r
741   void OnEditCopybrush();\r
742   void OnEditPastebrush();\r
743   void OnEditPastebrushToCamera();\r
744   void OnEditUndo();\r
745   void OnEditRedo();\r
746   void OnSelectionInvert();\r
747 //  void OnSelectionTextureDec();\r
748   void OnSelectionTextureFit();\r
749 //  void OnSelectionTextureInc();\r
750   void OnSelectionTextureRotateclock();\r
751   void OnSelectionTextureRotatecounter();\r
752   void OnSelectionTextureScaledown();\r
753   void OnSelectionTextureScaleup();\r
754   void OnSelectionTextureShiftdown();\r
755   void OnSelectionTextureShiftleft();\r
756   void OnSelectionTextureShiftright();\r
757   void OnSelectionTextureShiftup();\r
758   void OnGridNext();\r
759   void OnGridPrev();\r
760   void OnSelectionTextureScaleLeft();\r
761   void OnSelectionTextureScaleRight();\r
762   void OnTextureReplaceall();\r
763   void OnScalelockx();\r
764   void OnScalelocky();\r
765   void OnScalelockz();\r
766   void OnSelectMousescale();\r
767   void OnViewCubicclipping();\r
768   void OnFileProjectsettings();\r
769   void OnViewCubein();\r
770   void OnViewCubeout();\r
771   void OnFileSaveregion();\r
772   void OnSelectionMovedown();\r
773   void OnSelectionMoveup();\r
774   void OnToolbarMain();\r
775   void OnToolbarTexture();\r
776   void OnSelectionPrint();\r
777   void OnSelectionTogglesizepaint();\r
778   void OnBrushMakecone();\r
779   void OnTexturesLoad();\r
780   void OnToggleRotatelock();\r
781   void OnFileImportmap();\r
782   void OnFileExportmap();\r
783   void OnEditLoadprefab();\r
784   void OnSelectionSelectNudgedown();\r
785   void OnSelectionSelectNudgeleft();\r
786   void OnSelectionSelectNudgeright();\r
787   void OnSelectionSelectNudgeup();\r
788   void OnTexturesLoadlist();\r
789   void OnDontselectcurve();\r
790   void OnConvertcurves();\r
791   void OnCurveSimplepatchmesh();\r
792   void OnPatchToggleBox();\r
793   void OnPatchWireframe();\r
794   void OnCurvePatchcone();\r
795   void OnCurvePatchtube();\r
796   void OnPatchWeld();\r
797   void OnCurvePatchbevel();\r
798   void OnCurvePatchendcap();\r
799   void OnPatchDrilldown();\r
800   void OnCurveInsertcolumn();\r
801   void OnCurveInsertrow();\r
802   void OnCurveDeletecolumn();\r
803   void OnCurveDeleterow();\r
804   void OnCurveInsertAddcolumn();\r
805   void OnCurveInsertAddrow();\r
806   void OnCurveInsertInsertcolumn();\r
807   void OnCurveInsertInsertrow();\r
808   void OnCurveNegative();\r
809   void OnCurveNegativeTextureX();\r
810   void OnCurveNegativeTextureY();\r
811   void OnCurveDeleteFirstcolumn();\r
812   void OnCurveDeleteFirstrow();\r
813   void OnCurveDeleteLastcolumn();\r
814   void OnCurveDeleteLastrow();\r
815   void OnPatchBend();\r
816 //  void OnPatchInsdel();\r
817   void OnPatchEnter();\r
818   void OnPatchTab();\r
819   void OnCurvePatchdensetube();\r
820   void OnCurvePatchverydensetube();\r
821   void OnCurveCap();\r
822   void OnCurveCapInvertedbevel();\r
823   void OnCurveCapInvertedendcap();\r
824   void OnCurveRedisperseRows();\r
825   void OnCurveRedisperseIntermediateCols();\r
826   void OnCurveRedisperseIntermediateRows();\r
827   void OnPatchNaturalize();\r
828   void OnSnapToGrid();\r
829   void OnCurvePatchsquare();\r
830   void OnTexturewindowScaleup();\r
831   void OnTexturewindowScaledown();\r
832   void OnCurveOverlayClear();\r
833   void OnCurveOverlaySet();\r
834   void OnCurveThicken();\r
835   void OnCurveCyclecap();\r
836   void OnCurveMatrixTranspose();\r
837   void OnTexturesReloadshaders();\r
838   void OnShowEntities();\r
839   // will set the view mode right, don't set the value for mode if you only want to update the radio item\r
840   void OnEntitiesSetViewAs(int mode = 0);\r
841   void OnPluginsRefresh();\r
842   void OnTexturesShowall();\r
843   void OnPatchInspector();\r
844   void OnViewOpengllighting();\r
845   void OnSelectAll();\r
846   void OnCurveFreeze();\r
847   void OnCurveUnFreeze();\r
848   void OnCurveUnFreezeAll();\r
849   void OnSelectReselect();\r
850   void OnEditSaveprefab();\r
851   void OnCurveMoreendcapsbevelsSquarebevel();\r
852   void OnCurveMoreendcapsbevelsSquareendcap();\r
853   void OnBrushPrimitivesSphere();\r
854   void OnViewCrosshair();\r
855   void OnViewHideshowHideselected();\r
856   void OnViewHideshowShowhidden();\r
857   void OnTexturesShadersShow();\r
858   void OnViewGroups();\r
859   void OnDropGroupAddtoWorld();\r
860   void OnDropGroupName();\r
861   void OnDropGroupNewgroup();\r
862   void OnDropGroupRemove();\r
863   void OnViewShowWorkzone();\r
864   void OnViewShowAngles();\r
865   void OnMru(unsigned int nID);\r
866   void OnViewNearest(unsigned int nID);\r
867   void OnTextureWad(unsigned int nID);\r
868   void OnBspCommand(unsigned int nID);\r
869   void OnGrid(unsigned int nID);\r
870   void OnPlugIn(unsigned int nID, char *str);\r
871   void OnFaceFit();\r
872   void SetTextureScale(int id);\r
873   void OnDontselectmodel();\r
874   void OnTexturesShaderlistonly();\r
875   void OnSleep();\r
876   void OnFilterAreaportals();\r
877   void OnFilterCaulk();\r
878   void OnFilterStructural();\r
879   void OnFilterClips();\r
880   void OnFilterBotClips();\r
881   void OnFilterDetails();\r
882   void OnFilterEntities();\r
883   void OnFilterHintsskips();\r
884   void OnFilterLights();\r
885   void OnFilterLiquids();\r
886   void OnFilterModels();\r
887   void OnFilterPatches();\r
888   void OnFilterTranslucent();\r
889   void OnFilterTriggers();\r
890   void OnFilterWorld();\r
891   void OnFilterPaths();\r
892   void OnFilterClusterportals();\r
893   void OnFilterLightgrid();\r
894 \r
895 private:\r
896   EViewStyle m_nCurrentStyle;\r
897 \r
898 #ifdef _WIN32\r
899   GdkRectangle primaryMonitorRect;\r
900   int gdk_offset_x;\r
901   int gdk_offset_y;\r
902 #endif\r
903 \r
904 };\r
905 \r
906 // some C API to the mainframe functions\r
907 void WINAPI QERApp_Sleep();\r
908 \r
909 #endif // _MAINFRAME_H_\r