X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=radiant%2Fmainframe.h;h=6ff808da8d2918c3f55cdfc6197a702070dfe351;hb=537bb25ca3ac99e6239fd7d6518a0dbb438969f1;hp=e72adc4c210ec1865a42e6981773272cd49fbd54;hpb=830125fad042fad35dc029b6eb57c8156ad7e176;p=xonotic%2Fnetradiant.git diff --git a/radiant/mainframe.h b/radiant/mainframe.h index e72adc4c..6ff808da 100644 --- a/radiant/mainframe.h +++ b/radiant/mainframe.h @@ -1,5 +1,5 @@ /* - Copyright (C) 1999-2007 id Software, Inc. and contributors. + 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. @@ -19,893 +19,330 @@ 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 +#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; -#ifdef __APPLE__ -#define __toascii( c ) ( ( c ) & 0x7f ) -#endif +class IToolbarButton; -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; -}; +class XYWnd; -struct SKeyInfo -{ - const char* m_strName; - unsigned int m_nVKKey; -}; +class CamWnd; -#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(); +class ZWnd; -void ImportMap( IDataStream *in, CPtrArray *ents, const char *type ); -void ExportMap( CPtrArray *ents, IDataStream *out, const char *type ); -CSynapseClientRadiant() { } -virtual ~CSynapseClientRadiant() { } -}; +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; -class MainFrame -{ +class MainFrame { public: -enum EViewStyle -{ - eRegular, - eFloating, - eSplit, - eRegularLeft, -}; + enum EViewStyle { + eRegular = 0, + eFloating = 1, + eSplit = 2, + eRegularLeft = 3, + }; -MainFrame(); -GtkWidget *m_pWidget; + MainFrame(); -/*! - called to fire up the help links - */ -void handle_help_command( int id ); + ~MainFrame(); -protected: + ui::Window m_window{ui::null}; -/*! - the urls to fire up in the game packs help menus - */ -vector mHelpURLs; + CopiedString m_command_status; + CopiedString m_position_status; + CopiedString m_brushcount_status; + CopiedString m_texture_status; + CopiedString m_grid_status; +private: -/*! - 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 ); + void Create(); -/*! - 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; + 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: -// 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 ); - } + bool IsSleeping() + { + return m_bSleeping; + } + + void OnSleep(); + + void SetStatusText(CopiedString &status_text, const char *pText); + + void UpdateStatusText(); + + void RedrawStatusText(); + + typedef MemberCaller RedrawStatusTextCaller; + + void SetGridStatus(); + + typedef MemberCaller 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; + }; }; -EViewStyle CurrentStyle(){ - return m_nCurrentStyle; +extern MainFrame *g_pParentWnd; + +ui::Window MainFrame_getWindow(); + +enum EMouseButtonMode { + ETwoButton = 0, + EThreeButton = 1, }; -bool FloatingGroupDialog(){ - return CurrentStyle() == eFloating || CurrentStyle() == eSplit; +struct glwindow_globals_t { + int m_nMouseType; + + glwindow_globals_t() : + m_nMouseType(EThreeButton) + { + } }; -#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 GLWindow_Construct(); -protected: -bool m_bDoLoop; -bool m_bSplittersOK; -void CreateQEChildren(); -void LoadCommandMap(); -void ShowMenuItemKeyBindings( GtkWidget* window ); +void GLWindow_Destroy(); -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(); +extern glwindow_globals_t g_glwindow_globals; -private: -EViewStyle m_nCurrentStyle; +template +class LatchedValue; -#ifdef _WIN32 -GdkRectangle primaryMonitorRect; -int gdk_offset_x; -int gdk_offset_y; -#endif +extern LatchedValue 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: + ScopeDisableScreenUpdates(const char *message, const char *title) + { + ScreenUpdates_Disable(message, title); + } + + ~ScopeDisableScreenUpdates() + { + ScreenUpdates_Enable(); + } }; -// some C API to the mainframe functions -void WINAPI QERApp_Sleep(); -#endif // _MAINFRAME_H_ +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 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_strAppPath; + +const char *AppPath_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 + +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_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 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