]> de.git.xonotic.org Git - xonotic/netradiant.git/blobdiff - radiant/mainframe.h
merge branch work back into trunk
[xonotic/netradiant.git] / radiant / mainframe.h
index 4fadaae5adc929349717e8a110aaeb4af34b71bc..457ffe8a3374231c5fadcb696aca34ae3883c453 100644 (file)
@@ -1,5 +1,5 @@
 /*
-Copyright (C) 1999-2006 Id Software, Inc. and contributors.
+Copyright (C) 1999-2007 id Software, Inc. and contributors.
 For a list of contributors, see the accompanying CONTRIBUTORS file.
 
 This file is part of GtkRadiant.
@@ -19,264 +19,894 @@ along with GtkRadiant; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 */
 
-#if !defined(INCLUDED_MAINFRAME_H)
-#define INCLUDED_MAINFRAME_H
+#ifndef _MAINFRAME_H_
+#define _MAINFRAME_H_
 
-#include "gtkutil/window.h"
-#include "gtkutil/idledraw.h"
-#include "gtkutil/widget.h"
-#include "string/string.h"
+#include "xywindow.h"
+#include "texwindow.h"
+#include "zwindow.h"
+#include "camwindow.h"
+#include "watchbsp.h"
 
-#include "qerplugin.h"
+#include "pluginmanager.h"
+#include "plugin.h"
 
-class IPlugIn;
-class IToolbarButton;
+#include "gtkr_vector.h"
 
-class XYWnd;
-class CamWnd;
-class ZWnd;
+#ifdef __APPLE__
+#define __toascii(c)    ((c) & 0x7f)
+#endif
+
+const int RAD_SHIFT =   0x01;
+const int RAD_ALT =     0x02;
+const int RAD_CONTROL = 0x04;
+const int RAD_PRESS   = 0x08;
+
+struct SCommandInfo
+{
+  char* m_strCommand;
+  unsigned int   m_nKey;
+  unsigned int   m_nModifiers;
+  unsigned int m_nCommand;
+  char* m_strMenu;
+};
+
+struct SKeyInfo
+{
+  const char* m_strName;
+  unsigned int m_nVKKey;
+};
+
+#define ID_FILE_NEW 0xE100
+#define ID_FILE_OPEN 0xE101
+#define ID_FILE_SAVE 0xE103
+#define ID_EDIT_UNDO 0xE12B
+#define ID_EDIT_REDO 0xE12C
+#define ID_HELP 0xE146
+#define ID_FILE_RECENT1 0xE110
+#define ID_FILE_RECENT2 0xE111
+#define ID_FILE_RECENT3 0xE112
+#define ID_FILE_RECENT4 0xE113
+
+#define IDC_BTN_FACEFIT                 1143
+#define ID_ENTITY_START                 22800
+#define ID_ENTITY_END                   32000 //leo
+//#define ID_ENTITY_END                   33500
+#define ID_VIEW_XY                      32772
+#define ID_VIEW_SIDE                    32773
+#define ID_VIEW_FRONT                   32774
+#define ID_CAMERATOGGLE                 32775
+#define ID_VIEW_CAMERATOGGLE            32776
+#define ID_BUTTON32777                  32777
+#define ID_BUTTON32778                  32778
+#define ID_TEXTURES_POPUP               32780
+#define ID_POPUP_SELECTION              32782
+#define ID_VIEW_CHANGE                  32783
+#define ID_VIEW_CAMERAUPDATE            32784
+#define ID_VIEW_CLIPPER                 32785
+#define ID_PREFS                        32786
+#define ID_TOGGLE_LOCK                  32787
+#define ID_EDIT_MAPINFO                 32788
+#define ID_EDIT_ENTITYINFO              32789
+#define ID_BRUSH_SCRIPTS                32790
+#define ID_VIEW_NEXTVIEW                32791
+#define ID_HELP_COMMANDLIST             32792
+#define ID_FILE_NEWPROJECT              32793
+#define ID_SNAPTOGRID                   32795
+#define ID_VIEW_CENTERVIEW              32796
+#define ID_SPLIT_SELECTED               32823
+#define ID_CLIP_SELECTED                32824
+#define ID_FLIP_CLIP                    32825
+#define ID_TOGGLEVIEW_YZ                32831
+#define ID_TOGGLEVIEW_XZ                32832
+#define ID_COLORS_GRIDTEXT              32833
+#define ID_COLORS_BRUSH                 32834
+#define ID_COLORS_SELECTEDBRUSH         32835
+#define ID_COLORS_CLIPPER               32836
+#define ID_COLORS_GRIDBLOCK             32837
+#define ID_COLORS_VIEWNAME              32838
+#define ID_COLOR_SETORIGINAL            32839
+#define ID_COLOR_SETQER                 32840
+#define ID_COLOR_SETBLACK               32841
+#define ID_COLOR_SETYDNAR               37001  /* ydnar */
+#define ID_BYEBYE                       32842
+#define ID_SELECT_SCALE                 32843
+#define ID_SELECT_MOUSEROTATE           32844
+#define ID_COLORS_SELECTEDBRUSH3D       32845
+#define ID_COLORS_CAMERABACK            32846
+#define ID_TEXTURE_REPLACESELECTED      32859
+#define ID_TEXTURE_REPLACEALL           32860
+#define ID_SELECT_MOUSESCALE            32866
+#define ID_SCALELOCKX                   32867
+#define ID_SCALELOCKY                   32868
+#define ID_SCALELOCKZ                   32869
+#define ID_VIEW_CUBICCLIPPING           32870
+#define ID_FILE_PROJECTSETTINGS         32875
+#define ID_VIEW_CUBEOUT                 32876
+#define ID_VIEW_CUBEIN                  32877
+#define ID_NODES_LOADNODES              32878
+#define ID_NODES_SHOWNODES              32879
+#define ID_NODES_SHOWLINKS              32880
+#define ID_NODES_REMOVEALLNODES         32881
+#define ID_NODES_COUNTNODES             32882
+#define ID_NODES_GIVEMONEYTONELNO       32883
+#define ID_FILE_SAVEREGION              32887
+#define ID_FILE_LOADREGION              32888
+#define ID_SELECTION_MOVEDOWN           32890
+#define ID_TOOLBAR_MAIN                 32891
+#define ID_SELECTION_MOVEUP             32892
+//#define ID_TOOLBAR_TEXTURE              32892
+#define ID_BRUSH_MAKECONE               32896
+#define ID_TEXTURES_LOAD                32897
+#define ID_TOGGLE_ROTATELOCK            32898
+#define ID_FILE_IMPORTMAP               32911
+#define ID_FILE_EXPORTMAP               32912
+#define ID_EDIT_LOADPREFAB              32913
+#define ID_SELECTION_SELECT_NUDGELEFT   32916
+#define ID_SELECTION_SELECT_NUDGERIGHT  32917
+#define ID_SELECTION_SELECT_NUDGEUP     32918
+#define ID_SELECTION_SELECT_NUDGEDOWN   32919
+#define ID_TEXTURES_LOADLIST            32920
+#define ID_DONTSELECTCURVE              32923
+#define ID_CONVERTCURVES                32924
+#define ID_PATCH_SHOWBOUNDINGBOX        32926
+#define ID_CURVE_SIMPLEPATCHMESH        32927
+#define ID_PATCH_WIREFRAME              32928
+#define ID_PATCH_WELD                   32929
+#define ID_CURVE_PATCHTUBE              32930
+#define ID_CURVE_PATCHCONE              32931
+#define ID_CURVE_PATCHENDCAP            32932
+#define ID_CURVE_PATCHBEVEL             32933
+#define ID_PATCH_DRILLDOWN              32936
+#define ID_CURVE_LOADPATCHFILE          32937
+#define ID_CURVE_INSERTROW              32938
+#define ID_CURVE_INSERTCOLUMN           32939
+#define ID_CURVE_DELETEROW              32940
+#define ID_CURVE_DELETECOLUMN           32941
+#define ID_BUTTON32942                  32942
+//#define ID_PATCH_INSDEL                 32942
+#define ID_CURVE_INSERT_ADDCOLUMN       32943
+#define ID_CURVE_INSERT_INSERTCOLUMN    32944
+#define ID_CURVE_INSERT_ADDROW          32945
+#define ID_CURVE_INSERT_INSERTROW       32946
+#define ID_CURVE_DELETE_FIRSTCOLUMN     32947
+#define ID_CURVE_DELETE_LASTCOLUMN      32948
+#define ID_CURVE_DELETE_FIRSTROW        32949
+#define ID_CURVE_DELETE_LASTROW         32950
+#define ID_CURVE_NEGATIVE               32951
+#define ID_PATCH_BEND                   32952
+#define ID_CURVE_PATCHDENSETUBE         32955
+#define ID_CURVE_PATCHVERYDENSETUBE     32956
+#define ID_CURVE_CAP                    32957
+#define ID_CURVE_REDISPERSE_ROWS        32961
+#define ID_PATCH_NATURALIZE             32963
+#define ID_CURVE_PATCHSQUARE            32964
+#define ID_BRUSH_PRIMITIVES_SPHERE      32965
+#define ID_BRUSH_PRIMITIVES_TORUS       32966
+#define ID_TEXTURES_TEXTUREWINDOWSCALE_200 32967
+#define ID_TEXTURES_TEXTUREWINDOWSCALE_100 32968
+#define ID_TEXTURES_TEXTUREWINDOWSCALE_50 32969
+#define ID_TEXTURES_TEXTUREWINDOWSCALE_25 32970
+#define ID_TEXTURES_TEXTUREWINDOWSCALE_10 32971
+#define ID_CURVE_NEGATIVETEXTUREX       32972
+#define ID_TEXTURES_FLUSH               32973
+#define ID_CURVE_OVERLAY_SET            32974
+#define ID_CURVE_OVERLAY_CLEAR          32975
+#define ID_CURVE_NEGATIVETEXTUREY       32976
+#define ID_CURVE_THICKEN                32977
+#define ID_CURVE_CYCLECAP               32978
+#define ID_CURVE_MATRIX_TRANSPOSE       32981
+#define ID_PLUGINS_REFRESH              32982
+#define ID_TEXTURES_RELOADSHADERS       32983
+#define ID_VIEW_ENTITIESAS_BOUNDINGBOX  32984
+#define ID_VIEW_ENTITIESAS_WRITEFRAME   32985
+#define ID_VIEW_ENTITIESAS_SELECTEDWIREFRAME 32986
+#define ID_VIEW_ENTITIESAS_SELECTEDSKINNED 32987
+#define ID_VIEW_ENTITIESAS_SKINNED      32988
+#define ID_VIEW_ENTITIESAS_SKINNEDANDBOXED 32989
+#define ID_SHOW_ENTITIES                32990
+#define ID_VIEW_ENTITIESAS_WIREFRAME    32991
+#define ID_VIEW_OPENGLLIGHTING          32998
+#define ID_EDIT_SAVEPREFAB              33001
+#define ID_CURVE_MOREENDCAPSBEVELS_SQUAREENDCAP 33002
+#define ID_CURVE_MOREENDCAPSBEVELS_SQUAREBEVEL 33003
+#define ID_CURVE_PRIMITIVES_SPHERE      33005
+#define ID_VIEW_HIDESHOW_HIDESELECTED   33006
+#define ID_VIEW_HIDESHOW_SHOWHIDDEN     33007
+#define ID_TEXTURES_SHADERS_SHOW        33008
+//#define ID_SELECTION_CSGADD             33009
+#define ID_SELECTION_CSGMERGE           33011
+#define ID_TEXTURES_FLUSH_UNUSED        33014
+#define ID_DROP_GROUP_REMOVE            33016
+#define ID_DROP_GROUP_ADDTO_WORLD       33017
+#define ID_DROP_GROUP_NEWGROUP          33018
+#define ID_DROP_GROUP_NAME              33019
+#define ID_DROP_GROUP_ADDTO             33020
+#define ID_VIEW_SHOWANGLES              33021
+#define ID_VIEW_SHOWWORKZONE            33022
+#define ID_TEXTURE_FLUSH                33023
+#define ID_TEXTURES_SHOWSHADERS         33025
+#define ID_DONTSELECTMODEL              33027
+#define ID_TEXTURES_SHADERLISTONLY      33030
+#define ID_PLUGIN_START                 33800
+#define ID_PLUGIN_END                   33999
+#define ID_FILE_EXIT                    40002
+#define ID_FILE_SAVEAS                  40004
+#define ID_VIEW_CENTER                  40005
+#define ID_VIEW_UPFLOOR                 40006
+#define ID_VIEW_DOWNFLOOR               40007
+#define ID_BRUSH_FLIPX                  40008
+#define ID_BRUSH_FLIPY                  40009
+#define ID_BRUSH_FLIPZ                  40010
+#define ID_BRUSH_ROTATEX                40011
+#define ID_BRUSH_ROTATEY                40012
+#define ID_BRUSH_ROTATEZ                40013
+#define ID_BSP_FULLVIS                  40016
+#define ID_BSP_FASTVIS                  40017
+#define ID_BSP_NOVIS                    40018
+#define ID_BSP_RELIGHT                  40019
+#define ID_BSP_ENTITIES                 40020
+#define ID_FILE_POINTFILE               40021
+#define ID_VIEW_100                     40022
+#define ID_VIEW_75                      40023
+#define ID_VIEW_50                      40024
+#define ID_VIEW_25                      40025
+#define ID_VIEW_12                      40026
+#define ID_TEXTURES_SHOWALL             40033
+#define ID_TEXTURES_SHOWINUSE           40034
+#define ID_TEXTURES_TOGGLEVIEW          40037
+#define ID_SELECTION_CREATEENTITY       40039
+#define ID_SELECTION_EDITENTITY         40040
+#define ID_MISC_BENCHMARK               40041
+#define ID_REGION_OFF                   40043
+#define ID_REGION_SETXY                 40044
+#define ID_REGION_SETBRUSH              40045
+#define ID_SELECTION_MAKEHOLLOW         40046
+#define ID_SELECTION_SELECTPARTIALTALL  40047
+#define ID_SELECTION_SELECTCOMPLETETALL 40048
+#define ID_SELECTION_CSGSUBTRACT        40049
+#define ID_SELECTION_SELECTTOUCHING     40050
+#define ID_VIEW_NEAREST                 40052
+#define ID_VIEW_NEARESTMIPMAP           40053
+#define ID_VIEW_LINEAR                  40054
+#define ID_VIEW_BILINEAR                40055
+#define ID_VIEW_BILINEARMIPMAP          40056
+#define ID_VIEW_TRILINEAR               40057
+#define ID_TEXTURES_WIREFRAME           40058
+#define ID_TEXTURES_FLATSHADE           40059
+#define ID_VIEW_SHOWNAMES               40060
+#define ID_VIEW_ZOOMIN                  40061
+#define ID_VIEW_ZOOMOUT                 40062
+#define ID_VIEW_SHOWCOORDINATES         40063
+#define ID_VIEW_Z100                    40064
+#define ID_VIEW_ZZOOMIN                 40065
+#define ID_VIEW_ZZOOMOUT                40066
+#define ID_SELECTION_CLONE              40067
+#define ID_SELECTION_DESELECT           40068
+#define ID_SELECTION_DELETE             40069
+#define ID_BUTTON40068                  40070
+#define ID_SELECTION_DRAGVERTECIES      40074
+#define ID_SELECTION_DRAGEDGES          40075
+#define ID_REGION_SETTALLBRUSH          40076
+#define ID_SELECTION_SELECTINSIDE       40092
+#define ID_PROJECT_RELEAD               40094
+#define ID_PROJECT_CHANGE               40095
+#define ID_MISC_GAMMA                   40097
+#define ID_MISC_TEXTUREBACKGROUN        40104
+#define ID_TEXTUREBK                    40105
+#define ID_COLORS_XYBK                  40106
+#define ID_FILE_ABOUT                   40107
+#define ID_VIEW_CONSOLE                 40108
+#define ID_VIEW_ENTITY                  40109
+#define ID_VIEW_TEXTURE                 40110
+#define ID_COLORS_MAJOR                 40111
+#define ID_COLORS_MINOR                 40113
+#define ID_SELECTION_CONNECT            40114
+#define ID_FILE_LOADPROJECT             40115
+#define ID_MISC_FINDBRUSH               40116
+#define ID_MISC_NEXTLEAKSPOT            40117
+#define ID_MISC_PREVIOUSLEAKSPOT        40118
+#define ID_BRUSH_3SIDED                 40119
+#define ID_BRUSH_4SIDED                 40120
+#define ID_BRUSH_5SIDED                 40121
+#define ID_BRUSH_6SIDED                 40122
+#define ID_BRUSH_7SIDED                 40123
+#define ID_BRUSH_8SIDED                 40124
+#define ID_BRUSH_9SIDED                 40125
+#define ID_SELECTION_ARBITRARYROTATION  40126
+#define ID_BRUSH_ARBITRARYSIDED         40127
+#define ID_SELECTION_UNGROUPENTITY      40130
+#define ID_MISC_SELECTENTITYCOLOR       40131
+#define ID_MISC_PRINTXY                 40132
+#define ID_HELP_ABOUT                   40134
+#define ID_EDIT_COPYBRUSH               40135
+#define ID_EDIT_PASTEBRUSH              40136
+#define ID_TEXTURES_INSPECTOR           40137
+#define ID_SELECTION_MAKE_DETAIL        40139
+#define ID_SELECTION_MAKE_STRUCTURAL    40140
+#define ID_REGION_SETSELECTION          40141
+#define ID_VIEW_SHOWBLOCKS              40142
+#define ID_CAMERA_UP                    40152
+#define ID_CAMERA_DOWN                  40153
+#define ID_CAMERA_LEFT                  40154
+#define ID_CAMERA_RIGHT                 40155
+#define ID_CAMERA_FORWARD               40156
+#define ID_CAMERA_BACK                  40157
+#define ID_CAMERA_ANGLEUP               40158
+#define ID_CAMERA_ANGLEDOWN             40159
+#define ID_CAMERA_STRAFELEFT            40160
+#define ID_CAMERA_STRAFERIGHT           40161
+#define ID_GRID_TOGGLE                  40162
+#define ID_ENTITYLIST                   40163
+#define ID_MAPINFO                      40164
+#define ID_TOGGLECONSOLE                40165
+#define ID_TOGGLECAMERA                 40166
+#define ID_TOGGLEZ                      40167
+#define ID_TOGGLEVIEW                   40168
+#define ID_SELECTION_TEXTURE_FIT        40171
+#define ID_SELECTION_TEXTURE_ROTATECLOCK 40172
+#define ID_SELECTION_TEXTURE_ROTATECOUNTER 40173
+#define ID_SELECTION_TEXTURE_SCALEUP    40174
+#define ID_SELECTION_TEXTURE_SCALEDOWN  40175
+#define ID_SELECTION_TEXTURE_SHIFTLEFT  40176
+#define ID_SELECTION_TEXTURE_SHIFTRIGHT 40177
+#define ID_SELECTION_TEXTURE_SHIFTUP    40178
+#define ID_SELECTION_TEXTURE_SHIFTDOWN  40179
+#define ID_GRID_NEXT                    40180
+#define ID_GRID_PREV                    40181
+#define ID_SELECTION_TEXTURE_SCALELEFT  40182
+#define ID_SELECTION_TEXTURE_SCALERIGHT 40183
+#define ID_SELECTION_PRINT              40184
+#define ID_SELECTION_TOGGLESIZEPAINT    40185
+#define ID_PATCH_TAB                    40186
+#define ID_PATCH_ENTER                  40187
+#define ID_SELECT_SNAPTOGRID            40188
+#define ID_PATCH_INSPECTOR              40189
+#define ID_SELECT_ALL                   40190
+#define ID_CURVE_FREEZE                 40191
+#define ID_CURVE_UNFREEZE               40192
+#define ID_CURVE_UNFREEZEALL            40193
+#define ID_SELECT_RESELECT              40194
+#define ID_FITFACE                      40196
+#define ID_VIEW_CROSSHAIR               40197
+#define ID_SELECTION_INVERT             40198
+#define ID_VIEW_GROUPS                  40199
+#define ID_FILE_SLEEP                   40200
+#define ID_HELP_LINKS                   40201
+#define ID_VIEW_SHOWOUTLINE             40202 // TTimo: outline as in colored outline around the window to quickly guess the orientation
+#define ID_VIEW_SHOWAXES                40203
+#define ID_SELECTION_NOOUTLINE          40204 // TTimo: outline as in zbuffered outline toggle on camera view (TA Q3Radiant 200f addition)
+#define ID_SELECTION_OUTLINESTYLE       40205 // Arnout: cycles through selection styles (extended 'nooutline')
+#define ID_SELECTION_SEPERATE           40206 // TTimo: split brushes out of an entity back into worldspawn
+#define ID_SELECTION_MERGE              40207 // TTimo: merge brushes from worldspawn into entity
+#define ID_HELP_BUGREPORT               40208
+
+#define ID_FILTER_WORLD                 40209
+#define ID_FILTER_PATCHES               40210
+#define ID_FILTER_DETAILS               40211
+#define ID_FILTER_ENTITIES              40212
+#define ID_FILTER_MODELS                40213
+#define ID_FILTER_HINTSSKIPS            40214
+#define ID_FILTER_CLIPS                 40215
+#define ID_FILTER_LIQUIDS               40216
+#define ID_FILTER_TRIGGERS              40217
+#define ID_FILTER_AREAPORTALS           40218
+#define ID_FILTER_TRANSLUCENT           40219
+#define ID_FILTER_CAULK                 40220
+#define ID_FILTER_LIGHTS                40221
+#define ID_FILTER_PATHS                 40223
+#define ID_FILTER_CLUSTERPORTALS        40224
+#define ID_FILTER_LIGHTGRID             40225
+#define ID_FILTER_STRUCTURAL            40226
+#define ID_FILTER_BOTCLIPS                                                     40227
+
+#define ID_CURVE_REDISPERSE_INTERMEDIATE_COLS  40230
+#define ID_CURVE_REDISPERSE_INTERMEDIATE_ROWS  40231
+#define ID_EDIT_PASTEBRUSHTOCAMERA      40232
+
+#define ID_COLORS_MINOR_ALT             40230
+#define ID_COLORS_MAJOR_ALT             40231
+
+#define ID_SELECT_FUNC_GROUP                   40233
+
+// those must have their own ID chunk ID_GRID_025 <= ID_GRID <= ID_GRID_256
+#define ID_GRID_025                     40300
+#define ID_GRID_05                      40301
+#define ID_GRID_1                       40302
+#define ID_GRID_2                       40303
+#define ID_GRID_4                       40304
+#define ID_GRID_8                       40305
+#define ID_GRID_16                      40306
+#define ID_GRID_32                      40307
+#define ID_GRID_64                      40308
+#define ID_GRID_128                     40309
+#define ID_GRID_256                     40310
+
+#define ID_FILE_CHECKUPDATE             40320
+
+#define ID_TEXTUREWINDOW_SCALEUP        40321
+#define ID_TEXTUREWINDOW_SCALEDOWN      40322
+
+class CSynapseClientRadiant : public CSynapseClient
+{
+public:
+  bool RequestAPI(APIDescriptor_t *pAPI);
+  const char* GetInfo();
+  const char* GetName();
 
-typedef struct _GtkWidget GtkWidget;
-typedef struct _GtkWindow GtkWindow;
+  void ImportMap(IDataStream *in, CPtrArray *ents, const char *type);
+  void ExportMap(CPtrArray *ents, IDataStream *out, const char *type);
 
-const int c_command_status = 0;
-const int c_position_status = 1;
-const int c_brushcount_status = 2;
-const int c_texture_status = 3;
-const int c_grid_status = 4;
-const int c_count_status = 5;
+  CSynapseClientRadiant() { }
+  virtual ~CSynapseClientRadiant() { }
+};
 
 class MainFrame
 {
 public:
   enum EViewStyle
   {
-    eRegular = 0,
-    eFloating = 1,
-    eSplit = 2,
-    eRegularLeft = 3,
+    eRegular,
+    eFloating,
+    eSplit,
+    eRegularLeft,
   };
 
   MainFrame();
-  ~MainFrame();
-
-  GtkWindow* m_window;
-
-  CopiedString m_command_status;
-  CopiedString m_position_status;
-  CopiedString m_brushcount_status;
-  CopiedString m_texture_status;
-  CopiedString m_grid_status;
-private:
-
-  void Create();
-  void SaveWindowInfo();
-  void Shutdown();
-
-  GtkWidget* m_vSplit;
-  GtkWidget* m_hSplit;
-  GtkWidget* m_vSplit2;
-
+  GtkWidget *m_pWidget;
+
+  /*!
+  called to fire up the help links
+  */
+  void handle_help_command(int id);
+
+protected:
+
+  /*!
+  the urls to fire up in the game packs help menus
+  */
+  vector<Str *> mHelpURLs;
+
+  /*!
+  scan the .game files for game install packs
+  look there for help description nodes
+  build the corresponding menus in Radiant
+  */
+  void create_game_help_menu (GtkWidget *menu, GtkAccelGroup *accel);
+
+  /*!
+  build the menu once the filename is found
+  */
+  void process_xlink (Str &FileName, const char *menu_name, const char *base_url, GtkWidget *menu, GtkAccelGroup *accel);
+
+  void Create ();
+  void create_main_menu (GtkWidget *window, GtkWidget *vbox);
+  void create_main_toolbar (GtkWidget *window, GtkWidget *vbox);
+  void create_plugin_toolbar (GtkWidget *window, GtkWidget *vbox);
+  void create_main_statusbar (GtkWidget *window, GtkWidget *vbox);
+  GtkWidget *m_pStatusLabel[6];
+  GtkWidget *m_pSplits[4];
   XYWnd* m_pXYWnd;
   XYWnd* m_pYZWnd;
   XYWnd* m_pXZWnd;
   CamWnd* m_pCamWnd;
+  TexWnd* m_pTexWnd;
   ZWnd* m_pZWnd;
-  XYWnd* m_pActiveXY;
+  CWatchBSP* m_pWatchBSP;
 
+  XYWnd* m_pActiveXY;
+  bool m_bCamPreview;
+  CPlugInManager m_PlugInMgr;
+  int m_nNextPlugInID;
+  guint m_nTimer;
   bool m_bSleeping;
 
-  GtkWidget *m_pStatusLabel[c_count_status];
-
-
-  EViewStyle m_nCurrentStyle;
-  WindowPositionTracker m_position_tracker;
+  CString m_strStatus[15];
+  bool m_bNeedStatusUpdate;
 
-  IdleDraw m_idleRedrawStatusText;
+  /*!
+  synapse server
+  deals with dynamically loading the modules, initializing them, requesting the APIs
+  */
+  CSynapseServer m_SynapseServer;
+  /*!
+  we are also a synapse client in that we provide and require some APIs as well
+  */
+  CSynapseClientRadiant m_SynapseClient;
 
 public:
 
-  bool IsSleeping()
-  {
-    return m_bSleeping;
-  }
-  void OnSleep();
+  // BSP window
+  // trigger network listen
+  void DoWatchBSP();
+  bool IsSleeping ()
+    { return m_bSleeping; }
 
-  void SetStatusText(CopiedString& status_text, const char* pText);
+  void UpdatePatchToolbarButtons();
+  // Gef: Changed to float for sub-integer grid size
+  void NudgeSelection(int nDirection, float nAmount);
+  void SetButtonMenuStates();
+  void SetGridStatus();
+  void RoutineProcessing();
+  XYWnd* ActiveXY() { return m_pActiveXY; };
+  void UpdateWindows(int nBits);
+  void SetStatusText(int nPane, const char* pText);
   void UpdateStatusText();
-  void RedrawStatusText();
-  typedef MemberCaller<MainFrame, &MainFrame::RedrawStatusText> RedrawStatusTextCaller;
+  void SetWindowStyle(int nStyle);
+  virtual ~MainFrame();
+  XYWnd* GetXYWnd() {return m_pXYWnd;}
+  XYWnd* GetXZWnd() {return m_pXZWnd;}
+  XYWnd* GetYZWnd() {return m_pYZWnd;}
+  ZWnd* GetZWnd() {return m_pZWnd;}
+  CamWnd* GetCamWnd() {return m_pCamWnd;}
+  TexWnd* GetTexWnd() {return m_pTexWnd;}
+  CWatchBSP *GetWatchBSP() { return m_pWatchBSP; }
+  void ReleaseContexts ();
+  void CreateContexts ();
+
+  void SetActiveXY(XYWnd* p)
+  {
+    if (m_pActiveXY)
+      m_pActiveXY->SetActive(false);
 
-  void SetGridStatus();
-  typedef MemberCaller<MainFrame, &MainFrame::SetGridStatus> SetGridStatusCaller;
+    m_pActiveXY = p;
 
-  void SetActiveXY(XYWnd* p);
-  XYWnd* ActiveXY()
-  {
-    return m_pActiveXY;
-  };
-  XYWnd* GetXYWnd()
-  {
-    return m_pXYWnd;
-  }
-  XYWnd* GetXZWnd()
-  {
-    return m_pXZWnd;
-  }
-  XYWnd* GetYZWnd()
-  {
-    return m_pYZWnd;
-  }
-  ZWnd* GetZWnd()
-  {
-    return m_pZWnd;
-  }
-  CamWnd* GetCamWnd()
-  {
-    return m_pCamWnd;
-  }
+    if (m_pActiveXY)
+      m_pActiveXY->SetActive(true);
 
-  void ReleaseContexts();
-  void CreateContexts();
+  };
 
   EViewStyle CurrentStyle()
   {
     return m_nCurrentStyle;
   };
+
   bool FloatingGroupDialog()
   {
     return CurrentStyle() == eFloating || CurrentStyle() == eSplit;
   };
-};
-
-extern MainFrame* g_pParentWnd;
-
-GtkWindow* MainFrame_getWindow();
-
-enum EMouseButtonMode
-{
-  ETwoButton = 0,
-  EThreeButton = 1,
-};
-
-struct glwindow_globals_t
-{
-  int m_nMouseType;
-
-  glwindow_globals_t() :
-    m_nMouseType(EThreeButton)
-  {
-  }
-};
-
-void GLWindow_Construct();
-void GLWindow_Destroy();
-
-extern glwindow_globals_t g_glwindow_globals;
-template<typename Value>
-class LatchedValue;
-typedef LatchedValue<bool> LatchedBool;
-extern LatchedBool g_Layout_enableDetachableMenus;
-
-void deleteSelection();
-
-
-void Sys_Status(const char* status);
 
+#ifdef _WIN32
+  const GdkRectangle & GetPrimaryMonitorRect( void ) const { return primaryMonitorRect; }
+  const int GetGDKOffsetX( void ) const { return gdk_offset_x; }
+  const int GetGDKOffsetY( void ) const { return gdk_offset_y; }
+#endif
 
-void ScreenUpdates_Disable(const char* message, const char* title = "");
-void ScreenUpdates_Enable();
-bool ScreenUpdates_Enabled();
-void ScreenUpdates_process();
+protected:
+  bool m_bDoLoop;
+  bool m_bSplittersOK;
+  void CreateQEChildren();
+  void LoadCommandMap();
+  void ShowMenuItemKeyBindings(GtkWidget* window);
 
-class ScopeDisableScreenUpdates
-{
 public:
-  ScopeDisableScreenUpdates(const char* message, const char* title = "")
-  {
-    ScreenUpdates_Disable(message, title);
-  }
-  ~ScopeDisableScreenUpdates()
-  {
-    ScreenUpdates_Enable();
-  }
-};
-
-
-void EnginePath_Realise();
-void EnginePath_Unrealise();
-
-class ModuleObserver;
-
-void Radiant_attachEnginePathObserver(ModuleObserver& observer);
-void Radiant_detachEnginePathObserver(ModuleObserver& observer);
-
-void Radiant_attachGameToolsPathObserver(ModuleObserver& observer);
-void Radiant_detachGameToolsPathObserver(ModuleObserver& observer);
-
-extern CopiedString g_strEnginePath;
-void EnginePath_verify();
-const char* EnginePath_get();
-const char* QERApp_GetGamePath();
-
-extern CopiedString g_strAppPath;
-const char* AppPath_get();
-
-extern CopiedString g_strSettingsPath;
-const char* SettingsPath_get();
-
-const char* const g_pluginsDir = "plugins/"; ///< name of plugins directory, always sub-directory of toolspath
-const char* const g_modulesDir = "modules/"; ///< name of modules directory, always sub-directory of toolspath
-
-extern CopiedString g_strGameToolsPath;
-const char* GameToolsPath_get();
-
-void Radiant_Initialise();
-void Radiant_Shutdown();
-
-void SaveMapAs();
-
-
-void XY_UpdateAllWindows();
-void UpdateAllWindows();
-
-
-void ClipperChangeNotify();
-
-void DefaultMode();
-
-const char* basegame_get();
-const char* gamename_get();
-void gamename_set(const char* gamename);
-void Radiant_attachGameNameObserver(ModuleObserver& observer);
-void Radiant_detachGameNameObserver(ModuleObserver& observer);
-const char* gamemode_get();
-void gamemode_set(const char* gamemode);
-void Radiant_attachGameModeObserver(ModuleObserver& observer);
-void Radiant_detachGameModeObserver(ModuleObserver& observer);
-
-
-
-void VFS_Construct();
-void VFS_Destroy();
-
-void HomePaths_Construct();
-void HomePaths_Destroy();
-void Radiant_attachHomePathsObserver(ModuleObserver& observer);
-void Radiant_detachHomePathsObserver(ModuleObserver& observer);
-
+  void Copy();
+  void Paste();
+  void Nudge(int nDim, float fNudge);
+  CPlugInManager &GetPlugInMgr() {return m_PlugInMgr;};
+  CSynapseServer &GetSynapseServer() {return m_SynapseServer;};
+  CSynapseClientRadiant &GetSynapseClient() {return m_SynapseClient;};
+  void AddPlugInToolbarButton(const IToolbarButton* button);
+  void AddPlugInMenuItem(IPlugIn* pPlugIn);
+  void CleanPlugInMenu();
+
+  // these are public so i can easily reflect messages
+  // from child windows..
+  void OnTimer();
+  void OnDelete();
+  void OnDestroy();
+  void ToggleCamera();
+
+  void OnFileExit();
+  void OnFileLoadproject();
+  void OnFileNew();
+  void OnFileOpen();
+  void OnFilePointfile();
+  void OnFileSave();
+  void OnFileSaveas();
+  void OnFileCheckUpdate();
+  void OnView100();
+  void OnViewCenter();
+  void OnViewConsole();
+  void OnViewDownfloor();
+  void OnViewEntity();
+  void OnViewFront();
+  void OnViewShowblocks();
+  void OnViewShowclip();
+  void OnViewShowcoordinates();
+  void OnViewShowOutline();
+  void OnViewShowAxes();
+  void OnViewShowdetail();
+  void OnViewShowent();
+  void OnViewShowlights();
+  void OnViewShownames();
+  void OnViewShowpath();
+  void OnViewShowwater();
+  void OnViewShowworld();
+  void OnViewTexture();
+  void OnViewUpfloor();
+  void OnViewXy();
+  void OnViewZ100();
+  void OnViewZoomin();
+  void OnViewZoomout();
+  void OnViewZzoomin();
+  void OnViewZzoomout();
+  void OnViewSide();
+  void OnTexturesShowinuse();
+  void OnTexturesInspector();
+  void OnMiscBenchmark();
+  void OnMiscFindbrush();
+  void OnMiscGamma();
+  void OnMiscNextleakspot();
+  void OnMiscPreviousleakspot();
+  void OnMiscPrintxy();
+  void OnMiscSelectentitycolor();
+  void OnTexturebk();
+  void OnColorsMajor();
+  void OnColorsMinor();
+  void OnColorsMajor_Alt();
+  void OnColorsMinor_Alt();
+  void OnColorsXybk();
+  void OnBrush3sided();
+  void OnBrush4sided();
+  void OnBrush5sided();
+  void OnBrush6sided();
+  void OnBrush7sided();
+  void OnBrush8sided();
+  void OnBrush9sided();
+  void OnBrushArbitrarysided();
+  void OnBrushFlipx();
+  void OnBrushFlipy();
+  void OnBrushFlipz();
+  void OnBrushRotatex();
+  void OnBrushRotatey();
+  void OnBrushRotatez();
+  void OnRegionOff();
+  void OnRegionSetbrush();
+  void OnRegionSetselection();
+  void OnRegionSettallbrush();
+  void OnRegionSetxy();
+  void OnSelectionArbitraryrotation();
+  void OnSelectionClone();
+  void OnSelectionConnect();
+  void OnSelectionCsgsubtract();
+  void OnSelectionCsgmerge();
+  void OnSelectionNoOutline();
+  void OnSelectionOutlineStyle();
+  void OnSelectionDelete();
+  void OnSelectionDeselect();
+  void OnSelectionDragedges();
+  void OnSelectionDragvertecies();
+  void OnSelectionMakeDetail();
+  void OnSelectionMakeStructural();
+  void OnSelectionMakehollow();
+  void OnSelectionSelectcompletetall();
+  void OnSelectionSelectinside();
+  void OnSelectionSelectpartialtall();
+  void OnSelectionSelecttouching();
+  void OnSelectionUngroupentity();
+  void OnSelectionMergeentity();
+  void OnSelectionGroupworld();
+  void OnTexturesPopup();
+  void OnPopupSelection();
+  void OnViewChange();
+  void OnViewCameraupdate();
+  void OnHelpAbout();
+  void OnHelp();
+  void OnHelpLinks();
+  void OnHelpBugreport();
+  void OnViewClipper();
+  void OnCameraAngledown();
+  void OnCameraAngleup();
+  void OnCameraBack(bool keydown);
+  void OnCameraDown();
+  void OnCameraForward(bool keydown);
+  void OnCameraLeft(bool keydown);
+  void OnCameraRight(bool keydown);
+  void OnCameraStrafeleft(bool keydown);
+  void OnCameraStraferight(bool keydown);
+  void OnCameraUp();
+  void OnGridToggle();
+  void OnPrefs();
+  void OnTogglecamera();
+  void OnToggleconsole();
+  void OnToggleview();
+  void OnTogglez();
+  void OnToggleLock();
+  void OnEditMapinfo();
+  void OnEditEntityinfo();
+  void OnBrushScripts();
+  void OnViewCenterview();
+  void OnViewNextview();
+  void OnHelpCommandlist();
+  void OnFileNewproject();
+  void OnFlipClip();
+  void OnClipSelected();
+  void OnSplitSelected();
+  void OnToggleviewXz();
+  void OnToggleviewYz();
+  void OnColorsBrush();
+  void OnColorsClipper();
+  void OnColorsGridtext();
+  void OnColorsSelectedbrush();
+  void OnColorsSelectedbrush3D();
+  void OnColorsCameraBack();
+  void OnColorsGridblock();
+  void OnColorsViewname();
+  void OnColorSetoriginal();
+  void OnColorSetqer();
+  void OnColorSetblack();
+  void OnColorSetydnar();  /* ydnar */
+  void OnSnaptogrid();
+  void OnSelectScale();
+  void OnSelectMouserotate();
+  void OnEditCopybrush();
+  void OnEditPastebrush();
+  void OnEditPastebrushToCamera();
+  void OnEditUndo();
+  void OnEditRedo();
+  void OnSelectionInvert();
+//  void OnSelectionTextureDec();
+  void OnSelectionTextureFit();
+//  void OnSelectionTextureInc();
+  void OnSelectionTextureRotateclock();
+  void OnSelectionTextureRotatecounter();
+  void OnSelectionTextureScaledown();
+  void OnSelectionTextureScaleup();
+  void OnSelectionTextureShiftdown();
+  void OnSelectionTextureShiftleft();
+  void OnSelectionTextureShiftright();
+  void OnSelectionTextureShiftup();
+  void OnGridNext();
+  void OnGridPrev();
+  void OnSelectionTextureScaleLeft();
+  void OnSelectionTextureScaleRight();
+  void OnTextureReplaceall();
+  void OnScalelockx();
+  void OnScalelocky();
+  void OnScalelockz();
+  void OnSelectMousescale();
+  void OnViewCubicclipping();
+  void OnFileProjectsettings();
+  void OnViewCubein();
+  void OnViewCubeout();
+  void OnFileSaveregion();
+  void OnSelectionMovedown();
+  void OnSelectionMoveup();
+  void OnToolbarMain();
+  void OnToolbarTexture();
+  void OnSelectionPrint();
+  void OnSelectionTogglesizepaint();
+  void OnBrushMakecone();
+  void OnTexturesLoad();
+  void OnToggleRotatelock();
+  void OnFileImportmap();
+  void OnFileExportmap();
+  void OnEditLoadprefab();
+  void OnSelectionSelectNudgedown();
+  void OnSelectionSelectNudgeleft();
+  void OnSelectionSelectNudgeright();
+  void OnSelectionSelectNudgeup();
+  void OnTexturesLoadlist();
+  void OnDontselectcurve();
+  void OnConvertcurves();
+  void OnCurveSimplepatchmesh();
+  void OnPatchToggleBox();
+  void OnPatchWireframe();
+  void OnCurvePatchcone();
+  void OnCurvePatchtube();
+  void OnPatchWeld();
+  void OnCurvePatchbevel();
+  void OnCurvePatchendcap();
+  void OnPatchDrilldown();
+  void OnCurveInsertcolumn();
+  void OnCurveInsertrow();
+  void OnCurveDeletecolumn();
+  void OnCurveDeleterow();
+  void OnCurveInsertAddcolumn();
+  void OnCurveInsertAddrow();
+  void OnCurveInsertInsertcolumn();
+  void OnCurveInsertInsertrow();
+  void OnCurveNegative();
+  void OnCurveNegativeTextureX();
+  void OnCurveNegativeTextureY();
+  void OnCurveDeleteFirstcolumn();
+  void OnCurveDeleteFirstrow();
+  void OnCurveDeleteLastcolumn();
+  void OnCurveDeleteLastrow();
+  void OnPatchBend();
+//  void OnPatchInsdel();
+  void OnPatchEnter();
+  void OnPatchTab();
+  void OnCurvePatchdensetube();
+  void OnCurvePatchverydensetube();
+  void OnCurveCap();
+  void OnCurveCapInvertedbevel();
+  void OnCurveCapInvertedendcap();
+  void OnCurveRedisperseRows();
+  void OnCurveRedisperseIntermediateCols();
+  void OnCurveRedisperseIntermediateRows();
+  void OnPatchNaturalize();
+  void OnSnapToGrid();
+  void OnCurvePatchsquare();
+  void OnTexturewindowScaleup();
+  void OnTexturewindowScaledown();
+  void OnCurveOverlayClear();
+  void OnCurveOverlaySet();
+  void OnCurveThicken();
+  void OnCurveCyclecap();
+  void OnCurveMatrixTranspose();
+  void OnTexturesReloadshaders();
+  void OnShowEntities();
+  // will set the view mode right, don't set the value for mode if you only want to update the radio item
+  void OnEntitiesSetViewAs(int mode = 0);
+  void OnPluginsRefresh();
+  void OnTexturesShowall();
+  void OnPatchInspector();
+  void OnViewOpengllighting();
+  void OnSelectAll();
+  void OnCurveFreeze();
+  void OnCurveUnFreeze();
+  void OnCurveUnFreezeAll();
+  void OnSelectReselect();
+  void OnEditSaveprefab();
+  void OnCurveMoreendcapsbevelsSquarebevel();
+  void OnCurveMoreendcapsbevelsSquareendcap();
+  void OnBrushPrimitivesSphere();
+  void OnViewCrosshair();
+  void OnViewHideshowHideselected();
+  void OnViewHideshowShowhidden();
+  void OnTexturesShadersShow();
+  void OnViewGroups();
+  void OnDropGroupAddtoWorld();
+  void OnDropGroupName();
+  void OnDropGroupNewgroup();
+  void OnDropGroupRemove();
+  void OnViewShowWorkzone();
+  void OnViewShowAngles();
+  void OnMru(unsigned int nID);
+  void OnViewNearest(unsigned int nID);
+  void OnTextureWad(unsigned int nID);
+  void OnBspCommand(unsigned int nID);
+  void OnGrid(unsigned int nID);
+  void OnPlugIn(unsigned int nID, char *str);
+  void OnFaceFit();
+  void SetTextureScale(int id);
+  void OnDontselectmodel();
+  void OnTexturesShaderlistonly();
+  void OnSleep();
+  void OnFilterAreaportals();
+  void OnFilterCaulk();
+  void OnFilterStructural();
+  void OnFilterClips();
+  void OnFilterBotClips();
+  void OnFilterDetails();
+  void OnFilterEntities();
+  void OnFilterHintsskips();
+  void OnFilterLights();
+  void OnFilterLiquids();
+  void OnFilterModels();
+  void OnFilterPatches();
+  void OnFilterTranslucent();
+  void OnFilterTriggers();
+  void OnFilterWorld();
+  void OnFilterPaths();
+  void OnFilterClusterportals();
+  void OnFilterLightgrid();
+  void OnSelectFuncGroup();
 
-void MainFrame_Construct();
-void MainFrame_Destroy();
+private:
+  EViewStyle m_nCurrentStyle;
 
+#ifdef _WIN32
+  GdkRectangle primaryMonitorRect;
+  int gdk_offset_x;
+  int gdk_offset_y;
+#endif
 
-extern float (*GridStatus_getGridSize)();
-extern int (*GridStatus_getRotateIncrement)();
-extern int (*GridStatus_getFarClipDistance)();
-extern bool (*GridStatus_getTextureLockEnabled)();
-void GridStatus_onTextureLockEnabledChanged();
+};
 
-MouseEventHandlerId XYWindowMouseDown_connect(const MouseEventHandler& handler);
-void XYWindowMouseDown_disconnect(MouseEventHandlerId id);
+// some C API to the mainframe functions
+void WINAPI QERApp_Sleep();
 
-#endif
+#endif // _MAINFRAME_H_