/*
-Copyright (C) 1999-2007 id Software, Inc. and contributors.
-For a list of contributors, see the accompanying CONTRIBUTORS file.
+ Copyright (C) 1999-2006 Id Software, Inc. and contributors.
+ For a list of contributors, see the accompanying CONTRIBUTORS file.
-This file is part of GtkRadiant.
+ This file is part of GtkRadiant.
-GtkRadiant is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
+ GtkRadiant is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
-GtkRadiant is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
+ GtkRadiant is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
-You should have received a copy of the GNU General Public License
-along with GtkRadiant; if not, write to the Free Software
-Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-*/
+ You should have received a copy of the GNU General Public License
+ along with GtkRadiant; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
-#ifndef _MAINFRAME_H_
-#define _MAINFRAME_H_
+#if !defined( INCLUDED_MAINFRAME_H )
+#define INCLUDED_MAINFRAME_H
-#include "xywindow.h"
-#include "texwindow.h"
-#include "zwindow.h"
-#include "camwindow.h"
-#include "watchbsp.h"
+#include <uilib/uilib.h>
+#include "gtkutil/window.h"
+#include "gtkutil/idledraw.h"
+#include "gtkutil/widget.h"
+#include "string/string.h"
-#include "pluginmanager.h"
-#include "plugin.h"
+#include "qerplugin.h"
-#include "gtkr_vector.h"
+class IPlugIn;
+class IToolbarButton;
+
+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;
+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;
-struct SCommandInfo
+class MainFrame
+{
+public:
+enum EViewStyle
{
- char* m_strCommand;
- unsigned int m_nKey;
- unsigned int m_nModifiers;
- unsigned int m_nCommand;
- char* m_strMenu;
+ eRegular = 0,
+ eFloating = 1,
+ eSplit = 2,
+ eRegularLeft = 3,
};
-struct SKeyInfo
-{
- const char* m_strName;
- unsigned int m_nVKKey;
+MainFrame();
+~MainFrame();
+
+ui::Window m_window{ui::null};
+
+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();
+
+ui::Widget m_vSplit{ui::null};
+ui::Widget m_hSplit{ui::null};
+ui::Widget m_vSplit2{ui::null};
+
+XYWnd* m_pXYWnd;
+XYWnd* m_pYZWnd;
+XYWnd* m_pXZWnd;
+CamWnd* m_pCamWnd;
+ZWnd* m_pZWnd;
+XYWnd* m_pActiveXY;
+
+bool m_bSleeping;
+
+void *m_pStatusLabel[c_count_status];
+
+
+EViewStyle m_nCurrentStyle;
+WindowPositionTracker m_position_tracker;
+
+IdleDraw m_idleRedrawStatusText;
+
+public:
+
+bool IsSleeping(){
+ return m_bSleeping;
+}
+void OnSleep();
+
+void SetStatusText( CopiedString& status_text, const char* pText );
+void UpdateStatusText();
+void RedrawStatusText();
+typedef MemberCaller<MainFrame, void(), &MainFrame::RedrawStatusText> RedrawStatusTextCaller;
+
+void SetGridStatus();
+typedef MemberCaller<MainFrame, void(), &MainFrame::SetGridStatus> SetGridStatusCaller;
+
+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;
+}
+
+void ReleaseContexts();
+void CreateContexts();
+
+EViewStyle CurrentStyle(){
+ return m_nCurrentStyle;
+};
+bool FloatingGroupDialog(){
+ return CurrentStyle() == eFloating || CurrentStyle() == eSplit;
+};
+};
+
+extern MainFrame* g_pParentWnd;
-#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
+ui::Window MainFrame_getWindow();
+
+enum EMouseButtonMode
{
-public:
- bool RequestAPI(APIDescriptor_t *pAPI);
- const char* GetInfo();
- const char* GetName();
+ ETwoButton = 0,
+ EThreeButton = 1,
+};
- void ImportMap(IDataStream *in, CPtrArray *ents, const char *type);
- void ExportMap(CPtrArray *ents, IDataStream *out, const char *type);
+struct glwindow_globals_t
+{
+ int m_nMouseType;
- CSynapseClientRadiant() { }
- virtual ~CSynapseClientRadiant() { }
+ glwindow_globals_t() :
+ m_nMouseType( EThreeButton ){
+ }
};
-class MainFrame
+void GLWindow_Construct();
+void GLWindow_Destroy();
+
+extern glwindow_globals_t g_glwindow_globals;
+template<typename Value>
+class LatchedValue;
+extern LatchedValue<bool> g_Layout_enableDetachableMenus;
+
+void deleteSelection();
+
+
+void Sys_Status( const char* status );
+
+
+void ScreenUpdates_Disable( const char* message, const char* title );
+void ScreenUpdates_Enable();
+bool ScreenUpdates_Enabled();
+void ScreenUpdates_process();
+
+class ScopeDisableScreenUpdates
{
public:
- enum EViewStyle
- {
- eRegular,
- eFloating,
- eSplit,
- eRegularLeft,
- };
-
- MainFrame();
- 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;
- CWatchBSP* m_pWatchBSP;
-
- XYWnd* m_pActiveXY;
- bool m_bCamPreview;
- CPlugInManager m_PlugInMgr;
- int m_nNextPlugInID;
- guint m_nTimer;
- bool m_bSleeping;
-
- CString m_strStatus[15];
- bool m_bNeedStatusUpdate;
-
- /*!
- 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;
+ScopeDisableScreenUpdates( const char* message, const char* title ){
+ ScreenUpdates_Disable( message, title );
+}
+~ScopeDisableScreenUpdates(){
+ ScreenUpdates_Enable();
+}
+};
-public:
- // BSP window
- // trigger network listen
- void DoWatchBSP();
- bool IsSleeping ()
- { return m_bSleeping; }
-
- 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 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);
-
- m_pActiveXY = p;
-
- if (m_pActiveXY)
- m_pActiveXY->SetActive(true);
-
- };
-
- EViewStyle CurrentStyle()
- {
- return m_nCurrentStyle;
- };
-
- bool FloatingGroupDialog()
- {
- return CurrentStyle() == eFloating || CurrentStyle() == eSplit;
- };
-
-#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 EnginePath_Realise();
+void EnginePath_Unrealise();
-protected:
- bool m_bDoLoop;
- bool m_bSplittersOK;
- void CreateQEChildren();
- void LoadCommandMap();
- void ShowMenuItemKeyBindings(GtkWidget* window);
+class ModuleObserver;
-public:
- 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 Radiant_attachEnginePathObserver( ModuleObserver& observer );
+void Radiant_detachEnginePathObserver( ModuleObserver& observer );
-private:
- EViewStyle m_nCurrentStyle;
+void Radiant_attachGameToolsPathObserver( ModuleObserver& observer );
+void Radiant_detachGameToolsPathObserver( ModuleObserver& observer );
-#ifdef _WIN32
- GdkRectangle primaryMonitorRect;
- int gdk_offset_x;
- int gdk_offset_y;
-#endif
+extern CopiedString g_strEnginePath;
+void EnginePath_verify();
+const char* EnginePath_get();
+const char* QERApp_GetGamePath();
-};
+extern bool g_disableEnginePath;
+extern bool g_disableHomePath;
+
+const int g_pakPathCount = 5;
+extern CopiedString g_strPakPath[g_pakPathCount];
+const char* PakPath_get( int num );
+
+extern CopiedString g_strAppFilePath;
+extern CopiedString g_strAppPath;
+extern CopiedString g_strLibPath;
+extern CopiedString g_strDataPath;
+
+const char* AppFilePath_get();
+const char* AppPath_get();
+const char *LibPath_get();
+const char *DataPath_get();
+
+extern CopiedString g_strSettingsPath;
+const char* SettingsPath_get();
+
+const char* LocalRcPath_get( void );
+
+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
-// some C API to the mainframe functions
-void WINAPI QERApp_Sleep();
+extern CopiedString g_strGameToolsPath;
+const char* GameToolsPath_get();
-#endif // _MAINFRAME_H_
+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_Refresh();
+void VFS_Restart();
+void VFS_Construct();
+void VFS_Destroy();
+
+void HomePaths_Construct();
+void HomePaths_Destroy();
+void Radiant_attachHomePathsObserver( ModuleObserver& observer );
+void Radiant_detachHomePathsObserver( ModuleObserver& observer );
+
+
+void MainFrame_Construct();
+void MainFrame_Destroy();
+
+extern char **environ;
+void Radiant_Restart();
+
+extern float ( *GridStatus_getGridSize )();
+extern int ( *GridStatus_getRotateIncrement )();
+extern int ( *GridStatus_getFarClipDistance )();
+extern bool ( *GridStatus_getTextureLockEnabled )();
+void GridStatus_onTextureLockEnabledChanged();
+
+SignalHandlerId XYWindowDestroyed_connect( const SignalHandler& handler );
+void XYWindowDestroyed_disconnect( SignalHandlerId id );
+MouseEventHandlerId XYWindowMouseDown_connect( const MouseEventHandler& handler );
+void XYWindowMouseDown_disconnect( MouseEventHandlerId id );
+
+extern ui::Widget g_page_entity;
+
+#endif