X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=radiant%2Fmainframe.h;h=ee7368b1396e47bcb33bbd029d88a4240df22f92;hb=ed990b29b0790e2a4d798477df8be2965fd80f41;hp=7b2cb63fb981047f4efff6989ea6fc3ca764f946;hpb=80378101101ca1762bbf5638a9e3566893096d8a;p=xonotic%2Fnetradiant.git diff --git a/radiant/mainframe.h b/radiant/mainframe.h index 7b2cb63f..ee7368b1 100644 --- a/radiant/mainframe.h +++ b/radiant/mainframe.h @@ -1,909 +1,291 @@ -/* -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. - -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. - -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_ - -#include "xywindow.h" -#include "texwindow.h" -#include "zwindow.h" -#include "camwindow.h" -#include "watchbsp.h" - -#include "pluginmanager.h" -#include "plugin.h" - -#include "gtkr_vector.h" - -#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 -{ - 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 - -// 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(); - - void ImportMap(IDataStream *in, CPtrArray *ents, const char *type); - void ExportMap(CPtrArray *ents, IDataStream *out, const char *type); - - CSynapseClientRadiant() { } - virtual ~CSynapseClientRadiant() { } -}; - -class MainFrame -{ -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 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, 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; - -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 - -protected: - bool m_bDoLoop; - bool m_bSplittersOK; - void CreateQEChildren(); - void LoadCommandMap(); - void ShowMenuItemKeyBindings(GtkWidget* window); - -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(); - -private: - EViewStyle m_nCurrentStyle; - -#ifdef _WIN32 - GdkRectangle primaryMonitorRect; - int gdk_offset_x; - int gdk_offset_y; -#endif - -}; - -// some C API to the mainframe functions -void WINAPI QERApp_Sleep(); - -#endif // _MAINFRAME_H_ +/* + 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. + + 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. + + 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 + */ + +#if !defined( INCLUDED_MAINFRAME_H ) +#define INCLUDED_MAINFRAME_H + +#include +#include "gtkutil/window.h" +#include "gtkutil/idledraw.h" +#include "gtkutil/widget.h" +#include "string/string.h" + +#include "qerplugin.h" + +class IPlugIn; +class IToolbarButton; + +class XYWnd; +class CamWnd; +class ZWnd; + + +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 +{ +public: +enum EViewStyle +{ + eRegular = 0, + eFloating = 1, + eSplit = 2, + eRegularLeft = 3, + eSingle = 4, +}; + +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 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; +}; +}; + +extern MainFrame* g_pParentWnd; + +ui::Window 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 +class LatchedValue; +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(); +} +}; + + +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_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 + +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 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