-#include "stdafx.h"
-#ifdef _WIN32
-extern "C" {
-#include <gdk/gdkwin32.h>
-#define COMPILE_MULTIMON_STUBS
-#include <multimon.h>
-}
-#endif
-#include <gtk/gtk.h>
-#include <glib/gi18n.h>
-#include <gdk/gdkkeysyms.h>
-#include <gdk/gdkprivate.h>
-#include <sys/stat.h>
-#if defined ( __linux__ ) || defined ( __APPLE__ )
- #include <unistd.h>
-#endif
-#include "gtkmisc.h"
-#include "groupdialog.h"
-#include "patchdialog.h"
-#include "filters.h"
-
-// use this to verbose what happens with the beyboard
-#ifdef _DEBUG
-// #define DBG_KBD
-#endif
-
-// globals
-CString g_strAppPath; ///< holds the full path of the executable
-CString g_strDTDPath; ///< path to the DTD files
-CString g_pidFile; ///< the global .pid file (only for global part of the startup)
-CString g_pidGameFile; ///< the game-specific .pid file
-CString g_strBitmapsPath; // directory where the bitmaps are stored
-
-/*!
- points to the game tools directory, for instance
- C:\Program Files\Quake III Arena\GtkRadiant
- (or other games)
- this is one of the main variables that are configured by the game selection on startup
- <g_strGameToolsPath>/plugins
- <g_strGameToolsPath>/modules
- and also q3map, bspc
- */
-CString g_strGameToolsPath; ///< this is set by g_PrefsDlg.mGamesDialog
-CGameDescription *g_pGameDescription; ///< shortcut to g_PrefsDlg.mGamesDialog.m_pCurrentDescription
-CString g_strPluginsDir; ///< name of plugins directory, always sub-directory of toolspath
-CString g_strModulesDir; ///< name of modules directory, always sub-directory of toolspath
-
-/*!
- directory for temp files
- NOTE: on *nix this is were we check for .pid
- */
-CString g_strTempPath;
-MainFrame* g_pParentWnd = NULL; // used to precast to CMainFrame
-PrefsDlg g_Preferences; // global prefs instance
-PrefsDlg& g_PrefsDlg = g_Preferences; // reference used throughout
-int g_nUpdateBits = 0; // window update flags
-bool g_bScreenUpdates = true; // whether window painting is active, used in a few places
- // to disable updates for speed reasons
- // both of the above should be made members of CMainFrame
-int g_bIgnoreCommands; // Used to ignore commands when checking menus/toolbars
-GSList *g_BSPFrontendCommands; // List of commands in the BSP menu
-
-const int CMD_TEXTUREWAD_END = CMD_TEXTUREWAD + MAX_TEXTUREDIRS - 1;
-const int CMD_BSPCOMMAND_END = CMD_BSPCOMMAND + 127;
-
-extern bool g_bCrossHairs;
-extern int g_argc;
-extern char** g_argv;
-extern PatchDialog g_PatchDialog;
-
-GtkAccelGroup* global_accel;
-
-void Select_Ungroup();
-
-// command mapping stuff
-//
-// m_strCommand is the command string
-// m_nKey is the GDK_??? equivelant
-// m_nModifiers are key states as follows
-// bit
-// 1 - shift
-// 2 - alt
-// 4 - control
-// 8 - press only
-//
-#define SPEED_MOVE 32
-#define SPEED_TURN 22.5
-
-// NOTE: the menu item field is REQUIRED, Gtk uses it to bind the keyboard shortcut
-// - if you add a command here and you don't want a menu item, use the "hidden" menu
-// - if you decide to add a menu item, check if it's not in the "hidden" menu already
-SCommandInfo g_Commands[] =
-{
- {"CycleOutlineStyle", 'J', 0x00, ID_SELECTION_OUTLINESTYLE, "menu_selection_outlinestyle"},
- {"CSGMerge", 'U', 0x04, ID_SELECTION_CSGMERGE, "menu_selection_csgmerge"},
- {"CSGSubtract", 'U', 0x01, ID_SELECTION_CSGSUBTRACT, "menu_selection_csgsubstract"},
- // {"ViewGroups", 'G', 0x00, ID_VIEW_GROUPS, "menu_view_groups"}, (temporary disabled)
- {"SelectFuncGroup", 'G', 0x00, ID_SELECT_FUNC_GROUP, "menu_select_func_group"},
- {"HideSelected", 'H', 0x00, ID_VIEW_HIDESHOW_HIDESELECTED, "menu_view_hideshow_hideselected"},
- {"ShowHidden", 'H', 0x01, ID_VIEW_HIDESHOW_SHOWHIDDEN, "menu_view_hideshow_showhidden"},
- {"BendMode", 'B', 0x00, ID_PATCH_BEND, "menu_patch_bend"},
- {"FitTexture", 'B', 0x01, IDC_BTN_FACEFIT, "menu_idc_btn_facefit"},
- {"ViewTextures", 'T', 0, ID_VIEW_TEXTURE, "menu_view_texture"},
- {"ThickenPatch", 'T', 0x04, ID_CURVE_THICKEN, "menu_curve_thicken"},
- {"MakeOverlayPatch", 'Y', 0, ID_CURVE_OVERLAY_SET, "menu_curve_overlay_set"},
- {"ClearPatchOverlays", 'L', 0x04, ID_CURVE_OVERLAY_CLEAR, "menu_curve_overlay_clear"},
- {"SurfaceInspector", 'S', 0, ID_TEXTURES_INSPECTOR, "menu_textures_inspector"},
- {"PatchInspector", 'S', 0x01, ID_PATCH_INSPECTOR, "menu_patch_inspector"},
- {"RedisperseRows", 'E', 0x04, ID_CURVE_REDISPERSE_ROWS, "menu_curve_redisperse_rows"},
- {"RedisperseIntermediateCols", 'E', 0x05, ID_CURVE_REDISPERSE_INTERMEDIATE_COLS, "menu_curve_redisperse_cols"},
- {"InvertCurveTextureX", 'I', 0x05, ID_CURVE_NEGATIVETEXTUREY, "menu_curve_negativetexturey"},
- {"InvertCurveTextureY", 'I', 0x01, ID_CURVE_NEGATIVETEXTUREX, "menu_curve_negativetexturex"},
- {"InvertCurve", 'I', 0x04, ID_CURVE_NEGATIVE, "menu_curve_negative"},
- {"IncPatchColumn", GDK_KP_Add, 0x05, ID_CURVE_INSERTCOLUMN, "menu_curve_insertcolumn"},
- {"IncPatchRow", GDK_KP_Add, 0x04, ID_CURVE_INSERTROW, "menu_curve_insertrow"},
- {"DecPatchColumn", GDK_KP_Subtract, 0x05, ID_CURVE_DELETECOLUMN, "menu_curve_deletecolumn"},
- {"DecPatchRow", GDK_KP_Subtract, 0x04, ID_CURVE_DELETEROW, "menu_curve_deleterow"},
- {"Patch TAB", GDK_Tab, 0x00, ID_PATCH_TAB, "menu_patch_tab"},
- {"Patch TAB", GDK_Tab, 0x01, ID_PATCH_TAB, "menu_patch_tab"},
- {"SelectNudgeDown", GDK_Down, 0x02, ID_SELECTION_SELECT_NUDGEDOWN, "menu_selection_select_nudgedown"},
- {"EntityColor",'K', 0, ID_MISC_SELECTENTITYCOLOR, "menu_misc_select_entitycolor"},
- {"CameraForward", GDK_Up, 0, ID_CAMERA_FORWARD, "menu_camera_forward"},
- {"CameraBack", GDK_Down, 0, ID_CAMERA_BACK, "menu_camera_back"},
- {"CameraLeft", GDK_Left, 0, ID_CAMERA_LEFT, "menu_camera_left"},
- {"CameraRight", GDK_Right, 0, ID_CAMERA_RIGHT, "menu_camera_right"},
- {"CameraUp", 'D', 0, ID_CAMERA_UP, "menu_camera_up"},
- {"CameraDown", 'C', 0, ID_CAMERA_DOWN, "menu_camera_down"},
- {"CameraAngleUp", 'A', 0, ID_CAMERA_ANGLEUP, "menu_camera_angleup"},
- {"CameraAngleDown", 'Z', 0, ID_CAMERA_ANGLEDOWN, "menu_camera_angledown"},
- {"CameraStrafeRight", GDK_period, 0, ID_CAMERA_STRAFERIGHT, "menu_camera_straferight"},
- {"CameraStrafeLeft", GDK_comma, 0, ID_CAMERA_STRAFELEFT, "menu_camera_strafeleft"},
- {"ToggleGrid", '0', 0, ID_GRID_TOGGLE, "menu_grid_toggle"},
- {"SetGrid1", '1', 0, ID_GRID_1, "menu_grid_1"},
- {"SetGrid2", '2', 0, ID_GRID_2, "menu_grid_2"},
- {"SetGrid4", '3', 0, ID_GRID_4, "menu_grid_4"},
- {"SetGrid8", '4', 0, ID_GRID_8, "menu_grid_8"},
- {"SetGrid16", '5', 0, ID_GRID_16, "menu_grid_16"},
- {"SetGrid32", '6', 0, ID_GRID_32, "menu_grid_32"},
- {"SetGrid64", '7', 0, ID_GRID_64, "menu_grid_64"},
- {"SetGrid128", '8', 0, ID_GRID_128, "menu_grid_128"},
- {"SetGrid256", '9', 0, ID_GRID_256, "menu_grid_256"},
- {"DragEdges", 'E', 0, ID_SELECTION_DRAGEDGES, "menu_selection_dragedges"},
- {"DragVertices", 'V', 0, ID_SELECTION_DRAGVERTECIES, "menu_selection_dragvertecies"},
- {"ViewEntityInfo", 'N', 0, ID_VIEW_ENTITY, "menu_view_entity"},
- // {"ViewConsole", 'O', 0, ID_VIEW_CONSOLE, "menu_0,"},
- {"CloneSelection", GDK_space, 0, ID_SELECTION_CLONE, "menu_selection_clone"},
- {"DeleteSelection", GDK_BackSpace, 0, ID_SELECTION_DELETE, "menu_selection_delete"},
- {"UnSelectSelection", GDK_Escape, 0, ID_SELECTION_DESELECT, "menu_selection_deselect"},
- {"CenterView", GDK_End, 0, ID_VIEW_CENTER, "menu_view_center"},
- {"ZoomOut", GDK_Insert, 0, ID_VIEW_ZOOMOUT, "menu_view_zoomout"},
- {"ZoomIn", GDK_Delete, 0, ID_VIEW_ZOOMIN, "menu_view_zoomin"},
- {"UpFloor", GDK_Prior, 0, ID_VIEW_UPFLOOR, "menu_view_upfloor"},
- {"DownFloor", GDK_Next, 0, ID_VIEW_DOWNFLOOR, "menu_view_downfloor"},
- {"ToggleClipper", 'X', 0, ID_VIEW_CLIPPER, "menu_view_clipper"},
- {"ToggleCrosshairs", 'X', 0x01, ID_VIEW_CROSSHAIR, "menu_view_crosshair"},
- {"TogTexLock", 'T', 0x01, ID_TOGGLE_LOCK, "menu_toggle_lock"},
- {"TogTexRotLock", 'R', 0x01, ID_TOGGLE_ROTATELOCK, "menu_toggle_rotatelock"},
- {"ToggleRealtime", 'R', 0x04, ID_VIEW_CAMERAUPDATE, "menu_view_cameraupdate"},
- {"EntityList", 'L', 0, ID_EDIT_ENTITYINFO, "menu_edit_entityinfo"},
- {"Preferences", 'P', 0, ID_PREFS, "menu_prefs"},
- {"ToggleCamera", 'C', 0x05, ID_TOGGLECAMERA, "menu_togglecamera"},
- {"ToggleConsole", 'O', 0, ID_TOGGLECONSOLE, "menu_toggleconsole"},
- {"ToggleView", 'V', 0x05, ID_TOGGLEVIEW, "menu_toggleview"},
- {"ToggleZ", 'Z', 0x05, ID_TOGGLEZ, "menu_togglez"},
- {"ConnectSelection", 'K', 0x04, ID_SELECTION_CONNECT, "menu_selection_connect"},
- {"Brush3Sided", '3', 0x04, ID_BRUSH_3SIDED, "menu_brush_3sided"},
- {"Brush4Sided", '4', 0x04, ID_BRUSH_4SIDED, "menu_brush_4sided"},
- {"Brush5Sided", '5', 0x04, ID_BRUSH_5SIDED, "menu_brush_5sided"},
- {"Brush6Sided", '6', 0x04, ID_BRUSH_6SIDED, "menu_brush_6sided"},
- {"Brush7Sided", '7', 0x04, ID_BRUSH_7SIDED, "menu_brush_7sided"},
- {"Brush8Sided", '8', 0x04, ID_BRUSH_8SIDED, "menu_brush_8sided"},
- {"Brush9Sided", '9', 0x04, ID_BRUSH_9SIDED, "menu_brush_9sided"},
- {"MatrixTranspose", 'M', 0x05, ID_CURVE_MATRIX_TRANSPOSE, "menu_curve_matrix_transpose"},
- {"MakeDetail", 'M', 0x04, ID_SELECTION_MAKE_DETAIL, "menu_selection_make_detail"},
- {"MapInfo", 'M', 0, ID_EDIT_MAPINFO, "menu_edit_mapinfo"},
- {"NextLeakSpot", 'K', 0x05, ID_MISC_NEXTLEAKSPOT, "menu_misc_nextleakspot"},
- {"PrevLeakSpot", 'L', 0x05, ID_MISC_PREVIOUSLEAKSPOT, "menu_misc_previousleakspot"},
- {"FileOpen", 'O', 0x04, ID_FILE_OPEN, "menu_file_open"},
- {"FileSave", 'S', 0x04, ID_FILE_SAVE, "menu_file_save"},
- //% {"Exit", 'X', 0x04, ID_FILE_EXIT, "menu_file_exit"}, // ydnar: Ctrl+X should be cut
- {"CenterXYView", GDK_Tab, 0x05, ID_VIEW_CENTERVIEW, "menu_view_centerview"},
- {"NextView", GDK_Tab, 0x04, ID_VIEW_NEXTVIEW, "menu_view_nextview"},
- {"ClipSelected", GDK_Return, 0x00, ID_CLIP_SELECTED, "menu_clip_selected"},
- {"SplitSelected", GDK_Return, 0x01, ID_SPLIT_SELECTED, "menu_split_selected"},
- {"FlipClip", GDK_Return, 0x04, ID_FLIP_CLIP, "menu_flip_clip"},
- {"MouseRotate", 'R', 0x00, ID_SELECT_MOUSEROTATE, "menu_select_mouserotate"},
- {"Copy", 'C', 0x04, ID_EDIT_COPYBRUSH, "menu_edit_copybrush"},
- {"Paste", 'V', 0x04, ID_EDIT_PASTEBRUSH, "menu_edit_pastebrush"},
- {"PasteToCamera", 'V', RAD_ALT, ID_EDIT_PASTEBRUSHTOCAMERA, "menu_edit_pastebrushtocamera"},
- {"Undo", 'Z', 0x04, ID_EDIT_UNDO, "menu_edit_undo"},
- {"Redo", 'Y', 0x04, ID_EDIT_REDO, "menu_edit_redo"},
- {"ZZoomOut", GDK_Insert, 0x04, ID_VIEW_ZZOOMOUT, "menu_view_zzoomout"},
- {"ZZoomIn", GDK_Delete, 0x04, ID_VIEW_ZZOOMIN, "menu_view_zzoomin"},
- {"TexRotateClock", GDK_Next, 0x01, ID_SELECTION_TEXTURE_ROTATECLOCK, "menu_selection_texture_rotateclock"},
- {"TexRotateCounter", GDK_Prior, 0x01, ID_SELECTION_TEXTURE_ROTATECOUNTER, "menu_selection_texture_rotatecounter"},
- {"TexScaleUp", GDK_Up, 0x04, ID_SELECTION_TEXTURE_SCALEUP, "menu_selection_texture_scaleup"},
- {"TexScaleDown", GDK_Down, 0x04, ID_SELECTION_TEXTURE_SCALEDOWN, "menu_selection_texture_scaledown"},
- {"TexShiftLeft", GDK_Left, 0x01, ID_SELECTION_TEXTURE_SHIFTLEFT, "menu_selection_texture_shiftleft"},
- {"TexShiftRight", GDK_Right, 0x01, ID_SELECTION_TEXTURE_SHIFTRIGHT, "menu_selection_texture_shiftright"},
- {"TexShiftUp", GDK_Up, 0x01, ID_SELECTION_TEXTURE_SHIFTUP, "menu_selection_texture_shiftup"},
- {"TexShiftDown", GDK_Down, 0x01, ID_SELECTION_TEXTURE_SHIFTDOWN, "menu_selection_texture_shiftdown"},
- {"GridDown", '[', 0x00, ID_GRID_PREV, "menu_grid_prev"},
- {"GridUp", ']', 0x00, ID_GRID_NEXT, "menu_grid_next"},
- {"TexScaleLeft", GDK_Left, 0x04, ID_SELECTION_TEXTURE_SCALELEFT, "menu_selection_texture_scaleleft"},
- {"TexScaleRight", GDK_Right, 0x04, ID_SELECTION_TEXTURE_SCALERIGHT, "menu_selection_texture_scaleright"},
- {"CubicClipZoomOut", ']', 0x04, ID_VIEW_CUBEOUT, "menu_view_cubeout"},
- {"CubicClipZoomIn", '[', 0x04, ID_VIEW_CUBEIN, "menu_view_cubein"},
- {"ToggleCubicClip", '\\', 0x04, ID_VIEW_CUBICCLIPPING, "menu_view_cubicclipping"},
- {"MoveSelectionDOWN", GDK_KP_Subtract, 0x00, ID_SELECTION_MOVEDOWN, "menu_selection_movedown"},
- {"MoveSelectionUP", GDK_KP_Add, 0x00, ID_SELECTION_MOVEUP, "menu_selection_moveup"},
- {"DumpSelectedBrush", 'D', 0x01, ID_SELECTION_PRINT, "menu_selection_print"},
- {"ToggleSizePaint", 'Q', 0x00, ID_SELECTION_TOGGLESIZEPAINT, "menu_selection_togglesizepaint"},
- {"SelectNudgeLeft", GDK_Left, 0x02, ID_SELECTION_SELECT_NUDGELEFT, "menu_selection_select_nudgeleft"},
- {"SelectNudgeRight", GDK_Right, 0x02, ID_SELECTION_SELECT_NUDGERIGHT, "menu_selection_select_nudgeright"},
- {"SelectNudgeUp", GDK_Up, 0x02, ID_SELECTION_SELECT_NUDGEUP, "menu_selection_select_nudgeup"},
- {"CycleCapTexturePatch", 'N', 0x05, ID_CURVE_CYCLECAP, "menu_curve_cyclecap"},
- {"NaturalizePatch", 'N', 0x04, ID_PATCH_NATURALIZE, "menu_patch_naturalize"},
- {"SnapToGrid", 'G', 0x04, ID_SELECT_SNAPTOGRID, "menu_select_snaptogrid"},
- {"ShowAllTextures", 'A', 0x04, ID_TEXTURES_SHOWALL, "menu_textures_showall"},
- {"SelectAllOfType", 'A', 0x01, ID_SELECT_ALL, "menu_select_all"},
- {"CapCurrentCurve", 'C', 0x01, ID_CURVE_CAP, "menu_curve_cap"},
- {"MakeStructural", 'S', 0x05, ID_SELECTION_MAKE_STRUCTURAL, "menu_selection_make_structural"},
- {"RegionSetSelection", 'R', 0x05, ID_REGION_SETSELECTION, "menu_region_setselection"},
- {"ShowInUse", 'U', 0, ID_TEXTURES_SHOWINUSE, "menu_textures_showinuse"},
- {"InvertSelection", 'I', 0, ID_SELECTION_INVERT, "menu_selection_invert"},
- {"Sleep", 'P', 0x05, ID_FILE_SLEEP, "menu_file_sleep"},
- {"SimplePatchMesh", 'P', 0x01, ID_CURVE_SIMPLEPATCHMESH, "menu_simplepatchmesh"},
- {"FilterWorldBrushes", '1', RAD_ALT, ID_FILTER_WORLD, "menu_filter_world"},
- {"FilterEntities", '2', RAD_ALT, ID_FILTER_ENTITIES, "menu_filter_entities"},
- {"FilterAreaportals", '3', RAD_ALT, ID_FILTER_AREAPORTALS, "menu_filter_areaportals"},
- {"FilterTranslucent", '4', RAD_ALT, ID_FILTER_TRANSLUCENT, "menu_filter_translucent"},
- {"FilterLiquids", '5', RAD_ALT, ID_FILTER_LIQUIDS, "menu_filter_liquids"},
- {"FilterCaulk", '6', RAD_ALT, ID_FILTER_CAULK, "menu_filter_caulk"},
- {"FilterClips", '7', RAD_ALT, ID_FILTER_CLIPS, "menu_filter_clips"},
- {"FilterBotClips", 'M', RAD_ALT, ID_FILTER_BOTCLIPS, "menu_filter_botclips"},
- {"FilterPaths", '8', RAD_ALT, ID_FILTER_PATHS, "menu_filter_paths"},
- {"FilterClusterportals", '9', RAD_ALT, ID_FILTER_CLUSTERPORTALS, "menu_filter_clusterportals"},
- {"FilterLights", '0', RAD_ALT, ID_FILTER_LIGHTS, "menu_filter_lights"},
- {"FilterPatches", 'P', RAD_CONTROL, ID_FILTER_PATCHES, "menu_filter_patches"},
- {"FilterDetails", 'D', RAD_CONTROL, ID_FILTER_DETAILS, "menu_filter_details"},
- {"FilterStructural", 'D', RAD_CONTROL | RAD_SHIFT, ID_FILTER_STRUCTURAL, "menu_filter_structural"},
- {"FilterHintsSkips", 'H', RAD_CONTROL, ID_FILTER_HINTSSKIPS, "menu_filter_hintsskips"},
- {"FilterModels", 'M', RAD_SHIFT, ID_FILTER_MODELS, "menu_filter_models"},
- {"FilterTriggers", 'T', RAD_CONTROL | RAD_SHIFT, ID_FILTER_TRIGGERS, "menu_filter_triggers"},
- {"LoadPointfile", 'L', RAD_SHIFT, ID_FILE_POINTFILE, "menu_load_pointfile"},
- {"TextureWindowScaledown", GDK_Insert, RAD_ALT, ID_TEXTUREWINDOW_SCALEDOWN, "menu_texturewindow_scaledown"},
- {"TextureWindowScaleup", GDK_Delete, RAD_ALT, ID_TEXTUREWINDOW_SCALEUP, "menu_texturewindow_scaleup"},
-};
-
-int g_nCommandCount = sizeof( g_Commands ) / sizeof( SCommandInfo );
-
-SKeyInfo g_Keys[] =
-{
- {"Space", GDK_space},
- {"Backspace", GDK_BackSpace},
- {"Escape", GDK_Escape},
- {"End", GDK_End},
- {"Insert", GDK_Insert},
- {"Delete", GDK_Delete},
- {"PageUp", GDK_Prior},
- {"PageDown", GDK_Next},
- {"Up", GDK_Up},
- {"Down", GDK_Down},
- {"Left", GDK_Left},
- {"Right", GDK_Right},
- {"F1", GDK_F1},
- {"F2", GDK_F2},
- {"F3", GDK_F3},
- {"F4", GDK_F4},
- {"F5", GDK_F5},
- {"F6", GDK_F6},
- {"F7", GDK_F7},
- {"F8", GDK_F8},
- {"F9", GDK_F9},
- {"F10", GDK_F10},
- {"F11", GDK_F11},
- {"F12", GDK_F12},
- {"Tab", GDK_Tab},
- {"Return", GDK_Return},
- {"Comma", GDK_comma},
- {"Period", GDK_period},
- {"Plus", GDK_KP_Add},
- {"Multiply", GDK_multiply},
- {"Subtract", GDK_KP_Subtract},
- {"NumPad0", GDK_KP_0},
- {"NumPad1", GDK_KP_1},
- {"NumPad2", GDK_KP_2},
- {"NumPad3", GDK_KP_3},
- {"NumPad4", GDK_KP_4},
- {"NumPad5", GDK_KP_5},
- {"NumPad6", GDK_KP_6},
- {"NumPad7", GDK_KP_7},
- {"NumPad8", GDK_KP_8},
- {"NumPad9", GDK_KP_9},
- {"[", 219},
- {"]", 221},
- {"\\", 220},
- {"Home", GDK_Home}
-};
-
-int g_nKeyCount = sizeof( g_Keys ) / sizeof( SKeyInfo );
-
-// =============================================================================
-// global functions
-
-void WINAPI Sys_UpdateWindows( int nBits ){
- g_nUpdateBits |= nBits;
-}
-
-// =============================================================================
-// Static functions
-
-// Gef: Separate handling for keyup events
-void HandleKeyUp( GtkWidget *widget, gpointer data ){
- int id = GPOINTER_TO_INT( data );
-#ifdef DBG_KBD
- Sys_Printf( "HandleKeyUp: %d\n", id );
-#endif
-
- if ( g_bIgnoreCommands ) {
- return;
- }
-
- switch ( id )
- {
- case ID_CAMERA_FORWARD: g_pParentWnd->OnCameraForward( FALSE ); break;
- case ID_CAMERA_BACK: g_pParentWnd->OnCameraBack( FALSE ); break;
- case ID_CAMERA_LEFT: g_pParentWnd->OnCameraLeft( FALSE ); break;
- case ID_CAMERA_RIGHT: g_pParentWnd->OnCameraRight( FALSE ); break;
- case ID_CAMERA_STRAFELEFT: g_pParentWnd->OnCameraStrafeleft( FALSE ); break;
- case ID_CAMERA_STRAFERIGHT: g_pParentWnd->OnCameraStraferight( FALSE ); break;
- }
-}
-
-gint HandleCommand( GtkWidget *widget, gpointer data ){
- int id = GPOINTER_TO_INT( data );
-#ifdef DBG_KBD
- Sys_Printf( "HandleCommand %d\n", id );
-#endif
-
- if ( g_bIgnoreCommands ) {
-#ifdef DBG_KBD
- Sys_Printf( "g_bIgnoreCommands %d, returning FALSE\n", g_bIgnoreCommands );
-#endif
- return FALSE;
- }
-
- if ( id >= CMD_TEXTUREWAD && id <= CMD_TEXTUREWAD_END ) {
- g_pParentWnd->OnTextureWad( id );
- }
- else if ( id >= CMD_BSPCOMMAND && id <= CMD_BSPCOMMAND_END ) {
- g_pParentWnd->OnBspCommand( id );
- }
- else if ( id >= ID_FILE_RECENT1 && id <= ID_FILE_RECENT4 ) {
- g_pParentWnd->OnMru( id );
- }
- else if ( id >= ID_VIEW_NEAREST && id <= ID_TEXTURES_FLATSHADE ) {
- if ( GTK_CHECK_MENU_ITEM( widget )->active ) {
- g_pParentWnd->OnViewNearest( id );
- }
- }
- else if ( id >= ID_GRID_025 && id <= ID_GRID_256 ) {
- g_pParentWnd->OnGrid( id );
- }
- else if ( id >= ID_PLUGIN_START && id <= ID_PLUGIN_END ) {
- char *str;
- gtk_label_get( GTK_LABEL( GTK_BIN( widget )->child ), &str );
- g_pParentWnd->OnPlugIn( id, str );
- }
- else if ( id >= ID_ENTITY_START && id <= ID_ENTITY_END ) {
- char *str;
- gtk_label_get( GTK_LABEL( GTK_BIN( widget )->child ), &str );
- g_pParentWnd->ActiveXY()->OnEntityCreate( str );
- }
- else{ switch ( id )
- {
- case ID_FILE_NEW: g_pParentWnd->OnFileNew(); break;
- case ID_FILE_SLEEP: g_pParentWnd->OnSleep(); break;
- case ID_FILE_OPEN: g_pParentWnd->OnFileOpen(); break;
- case ID_FILE_SAVE: g_pParentWnd->OnFileSave(); break;
- case ID_FILE_SAVEAS: g_pParentWnd->OnFileSaveas(); break;
- case ID_FILE_EXPORTMAP: g_pParentWnd->OnFileExportmap(); break;
- case ID_FILE_SAVEREGION: g_pParentWnd->OnFileSaveregion(); break;
- case ID_FILE_NEWPROJECT: g_pParentWnd->OnFileNewproject(); break;
- case ID_FILE_LOADPROJECT: g_pParentWnd->OnFileLoadproject(); break;
- case ID_FILE_PROJECTSETTINGS: g_pParentWnd->OnFileProjectsettings(); break;
- case ID_FILE_POINTFILE: g_pParentWnd->OnFilePointfile(); break;
- case ID_FILE_CHECKUPDATE: g_pParentWnd->OnFileCheckUpdate(); break;
- case ID_FILE_EXIT: g_pParentWnd->OnFileExit(); break;
- case ID_FILE_IMPORTMAP: g_pParentWnd->OnFileImportmap(); break;
- case ID_EDIT_UNDO: g_pParentWnd->OnEditUndo(); break;
- case ID_EDIT_REDO: g_pParentWnd->OnEditRedo(); break;
- case ID_EDIT_COPYBRUSH: g_pParentWnd->OnEditCopybrush(); break;
- case ID_EDIT_PASTEBRUSH: g_pParentWnd->OnEditPastebrush(); break;
- case ID_EDIT_PASTEBRUSHTOCAMERA: g_pParentWnd->OnEditPastebrushToCamera(); break;
- case ID_SELECTION_DELETE: g_pParentWnd->OnSelectionDelete(); break;
- case ID_EDIT_MAPINFO: g_pParentWnd->OnEditMapinfo(); break;
- case ID_EDIT_ENTITYINFO: g_pParentWnd->OnEditEntityinfo(); break;
- case ID_BRUSH_SCRIPTS: g_pParentWnd->OnBrushScripts(); break;
- case ID_EDIT_LOADPREFAB: g_pParentWnd->OnEditLoadprefab(); break;
- case ID_EDIT_SAVEPREFAB: g_pParentWnd->OnEditSaveprefab(); break;
- case ID_PREFS: g_pParentWnd->OnPrefs(); break;
- case ID_TOGGLECAMERA: g_pParentWnd->OnTogglecamera(); break;
- case ID_TOGGLECONSOLE: g_pParentWnd->OnToggleconsole(); break;
- case ID_VIEW_ENTITY: g_pParentWnd->OnViewEntity(); break;
- case ID_VIEW_GROUPS: g_pParentWnd->OnViewGroups(); break;
- case ID_SELECT_FUNC_GROUP: g_pParentWnd->OnSelectFuncGroup(); break;
- case ID_TOGGLEVIEW: g_pParentWnd->OnToggleview(); break;
- case ID_TOGGLEVIEW_YZ: g_pParentWnd->OnToggleviewYz(); break;
- case ID_TOGGLEVIEW_XZ: g_pParentWnd->OnToggleviewXz(); break;
- case ID_TOGGLEZ: g_pParentWnd->OnTogglez(); break;
- case ID_VIEW_CENTER: g_pParentWnd->OnViewCenter(); break;
- case ID_VIEW_UPFLOOR: g_pParentWnd->OnViewUpfloor(); break;
- case ID_VIEW_DOWNFLOOR: g_pParentWnd->OnViewDownfloor(); break;
- case ID_VIEW_CENTERVIEW: g_pParentWnd->OnViewCenterview(); break;
- case ID_VIEW_NEXTVIEW: g_pParentWnd->OnViewNextview(); break;
- case ID_VIEW_XY: g_pParentWnd->OnViewXy(); break;
- case ID_VIEW_SIDE: g_pParentWnd->OnViewSide(); break;
- case ID_VIEW_FRONT: g_pParentWnd->OnViewFront(); break;
- case ID_VIEW_100: g_pParentWnd->OnView100(); break;
- case ID_VIEW_ZOOMIN: g_pParentWnd->OnViewZoomin(); break;
- case ID_VIEW_ZOOMOUT: g_pParentWnd->OnViewZoomout(); break;
- case ID_VIEW_Z100: g_pParentWnd->OnViewZ100(); break;
- case ID_VIEW_ZZOOMIN: g_pParentWnd->OnViewZzoomin(); break;
- case ID_VIEW_ZZOOMOUT: g_pParentWnd->OnViewZzoomout(); break;
- case ID_VIEW_CUBEIN: g_pParentWnd->OnViewCubein(); break;
- case ID_VIEW_CUBEOUT: g_pParentWnd->OnViewCubeout(); break;
- case ID_VIEW_SHOWNAMES: g_pParentWnd->OnViewShownames(); break;
- case ID_VIEW_SHOWBLOCKS: g_pParentWnd->OnViewShowblocks(); break;
- case ID_VIEW_SHOWCOORDINATES: g_pParentWnd->OnViewShowcoordinates(); break;
- case ID_VIEW_SHOWOUTLINE: g_pParentWnd->OnViewShowOutline(); break;
- case ID_VIEW_SHOWAXES: g_pParentWnd->OnViewShowAxes(); break;
- case ID_VIEW_SHOWWORKZONE: g_pParentWnd->OnViewShowWorkzone(); break;
- case ID_VIEW_SHOWANGLES: g_pParentWnd->OnViewShowAngles(); break;
- case ID_VIEW_HIDESHOW_HIDESELECTED: g_pParentWnd->OnViewHideshowHideselected(); break;
- case ID_VIEW_HIDESHOW_SHOWHIDDEN: g_pParentWnd->OnViewHideshowShowhidden(); break;
- case ID_VIEW_ENTITIESAS_BOUNDINGBOX:
- case ID_VIEW_ENTITIESAS_WIREFRAME:
- case ID_VIEW_ENTITIESAS_SELECTEDWIREFRAME:
- case ID_VIEW_ENTITIESAS_SELECTEDSKINNED:
- case ID_VIEW_ENTITIESAS_SKINNED:
- case ID_VIEW_ENTITIESAS_SKINNEDANDBOXED:
- g_pParentWnd->OnEntitiesSetViewAs( id );
- break;
- case ID_VIEW_CUBICCLIPPING: g_pParentWnd->OnViewCubicclipping(); break;
- case ID_VIEW_OPENGLLIGHTING: g_pParentWnd->OnViewOpengllighting(); break;
- case ID_SELECTION_DRAGEDGES: g_pParentWnd->OnSelectionDragedges(); break;
- case ID_SELECTION_DRAGVERTECIES: g_pParentWnd->OnSelectionDragvertecies(); break;
- case ID_SELECTION_CLONE: g_pParentWnd->OnSelectionClone(); break;
- case ID_SELECTION_DESELECT: g_pParentWnd->OnSelectionDeselect(); break;
- case ID_BRUSH_FLIPX: g_pParentWnd->OnBrushFlipx(); break;
- case ID_BRUSH_FLIPY: g_pParentWnd->OnBrushFlipy(); break;
- case ID_BRUSH_FLIPZ: g_pParentWnd->OnBrushFlipz(); break;
- case ID_BRUSH_ROTATEX: g_pParentWnd->OnBrushRotatex(); break;
- case ID_BRUSH_ROTATEY: g_pParentWnd->OnBrushRotatey(); break;
- case ID_BRUSH_ROTATEZ: g_pParentWnd->OnBrushRotatez(); break;
- case ID_SELECTION_ARBITRARYROTATION: g_pParentWnd->OnSelectionArbitraryrotation(); break;
- case ID_SELECT_SCALE: g_pParentWnd->OnSelectScale(); break;
- case ID_SELECTION_MAKEHOLLOW: g_pParentWnd->OnSelectionMakehollow(); break;
- case ID_SELECTION_CSGSUBTRACT: g_pParentWnd->OnSelectionCsgsubtract(); break;
- case ID_SELECTION_CSGMERGE: g_pParentWnd->OnSelectionCsgmerge(); break;
- case ID_SELECTION_NOOUTLINE: g_pParentWnd->OnSelectionNoOutline(); break;
- case ID_SELECTION_OUTLINESTYLE: g_pParentWnd->OnSelectionOutlineStyle(); break;
- case ID_SELECTION_SELECTCOMPLETETALL: g_pParentWnd->OnSelectionSelectcompletetall(); break;
- case ID_SELECTION_SELECTTOUCHING: g_pParentWnd->OnSelectionSelecttouching(); break;
- case ID_SELECTION_SELECTPARTIALTALL: g_pParentWnd->OnSelectionSelectpartialtall(); break;
- case ID_SELECTION_SELECTINSIDE: g_pParentWnd->OnSelectionSelectinside(); break;
- case ID_SELECTION_SELECT_NUDGELEFT: g_pParentWnd->OnSelectionSelectNudgeleft(); break;
- case ID_SELECTION_SELECT_NUDGERIGHT: g_pParentWnd->OnSelectionSelectNudgeright(); break;
- case ID_SELECTION_SELECT_NUDGEUP: g_pParentWnd->OnSelectionSelectNudgeup(); break;
- case ID_SELECTION_SELECT_NUDGEDOWN: g_pParentWnd->OnSelectionSelectNudgedown(); break;
- case ID_VIEW_CLIPPER: g_pParentWnd->OnViewClipper(); break;
- case ID_CLIP_SELECTED: g_pParentWnd->OnClipSelected(); break;
- case ID_SPLIT_SELECTED: g_pParentWnd->OnSplitSelected(); break;
- case ID_FLIP_CLIP: g_pParentWnd->OnFlipClip(); break;
- case ID_SELECTION_CONNECT: g_pParentWnd->OnSelectionConnect(); break;
- case ID_SELECTION_UNGROUPENTITY: g_pParentWnd->OnSelectionUngroupentity(); break;
- case ID_SELECTION_MERGE: Select_MergeEntity(); break;
- case ID_SELECTION_SEPERATE: Select_Seperate(); break;
- case ID_SELECTION_MAKE_DETAIL: g_pParentWnd->OnSelectionMakeDetail(); break;
- case ID_SELECTION_MAKE_STRUCTURAL: g_pParentWnd->OnSelectionMakeStructural(); break;
- case ID_SNAPTOGRID: g_pParentWnd->OnSnaptogrid(); break;
- case ID_TEXTURES_SHOWINUSE: g_pParentWnd->OnTexturesShowinuse(); break;
- case ID_TEXTURES_SHOWALL: g_pParentWnd->OnTexturesShowall(); break;
- case ID_TEXTURES_INSPECTOR: g_pParentWnd->OnTexturesInspector(); break;
- case ID_TEXTURE_REPLACEALL: g_pParentWnd->OnTextureReplaceall(); break;
- case ID_TOGGLE_LOCK: g_pParentWnd->OnToggleLock(); break;
- case ID_TOGGLE_ROTATELOCK: g_pParentWnd->OnToggleRotatelock(); break;
- case ID_TEXTURES_LOAD: g_pParentWnd->OnTexturesLoad(); break;
- case ID_TEXTURES_RELOADSHADERS: g_pParentWnd->OnTexturesReloadshaders(); break;
- case ID_TEXTURES_SHADERS_SHOW: g_pParentWnd->OnTexturesShadersShow(); break;
- case ID_TEXTURES_TEXTUREWINDOWSCALE_200:
- case ID_TEXTURES_TEXTUREWINDOWSCALE_100:
- case ID_TEXTURES_TEXTUREWINDOWSCALE_50:
- case ID_TEXTURES_TEXTUREWINDOWSCALE_25:
- case ID_TEXTURES_TEXTUREWINDOWSCALE_10:
- g_pParentWnd->SetTextureScale( id );
- break;
- case ID_TEXTURES_LOADLIST: g_pParentWnd->OnTexturesLoadlist(); break;
- case ID_TEXTURES_SHADERLISTONLY: g_pParentWnd->OnTexturesShaderlistonly(); break;
- case ID_TEXTUREWINDOW_SCALEUP: g_pParentWnd->OnTexturewindowScaleup(); break;
- case ID_TEXTUREWINDOW_SCALEDOWN: g_pParentWnd->OnTexturewindowScaledown(); break;
- case ID_MISC_BENCHMARK: g_pParentWnd->OnMiscBenchmark(); break;
- case ID_COLOR_SETORIGINAL: g_pParentWnd->OnColorSetoriginal(); break;
- case ID_COLOR_SETQER: g_pParentWnd->OnColorSetqer(); break;
- case ID_COLOR_SETBLACK: g_pParentWnd->OnColorSetblack(); break;
- case ID_COLOR_SETYDNAR: g_pParentWnd->OnColorSetydnar(); break; /* ydnar */
- case ID_TEXTUREBK: g_pParentWnd->OnTexturebk(); break;
- case ID_COLORS_XYBK: g_pParentWnd->OnColorsXybk(); break;
- case ID_COLORS_MAJOR: g_pParentWnd->OnColorsMajor(); break;
- case ID_COLORS_MINOR: g_pParentWnd->OnColorsMinor(); break;
- case ID_COLORS_GRIDTEXT: g_pParentWnd->OnColorsGridtext(); break;
- case ID_COLORS_GRIDBLOCK: g_pParentWnd->OnColorsGridblock(); break;
- case ID_COLORS_CAMERABACK: g_pParentWnd->OnColorsCameraBack(); break;
- case ID_COLORS_BRUSH: g_pParentWnd->OnColorsBrush(); break;
- case ID_COLORS_SELECTEDBRUSH: g_pParentWnd->OnColorsSelectedbrush(); break;
- case ID_COLORS_SELECTEDBRUSH3D: g_pParentWnd->OnColorsSelectedbrush3D(); break;
- case ID_COLORS_CLIPPER: g_pParentWnd->OnColorsClipper(); break;
- case ID_COLORS_VIEWNAME: g_pParentWnd->OnColorsViewname(); break;
- case ID_MISC_GAMMA: g_pParentWnd->OnMiscGamma(); break;
- case ID_MISC_FINDBRUSH: g_pParentWnd->OnMiscFindbrush(); break;
- case ID_MISC_NEXTLEAKSPOT: g_pParentWnd->OnMiscNextleakspot(); break;
- case ID_MISC_PREVIOUSLEAKSPOT: g_pParentWnd->OnMiscPreviousleakspot(); break;
- case ID_MISC_PRINTXY: g_pParentWnd->OnMiscPrintxy(); break;
- case ID_MISC_SELECTENTITYCOLOR: g_pParentWnd->OnMiscSelectentitycolor(); break;
- case ID_CONVERTCURVES: g_pParentWnd->OnConvertcurves(); break;
- case ID_REGION_OFF: g_pParentWnd->OnRegionOff(); break;
- case ID_REGION_SETXY: g_pParentWnd->OnRegionSetxy(); break;
- case ID_REGION_SETTALLBRUSH: g_pParentWnd->OnRegionSettallbrush(); break;
- case ID_REGION_SETBRUSH: g_pParentWnd->OnRegionSetbrush(); break;
- case ID_REGION_SETSELECTION: g_pParentWnd->OnRegionSetselection(); break;
- case ID_BRUSH_3SIDED: g_pParentWnd->OnBrush3sided(); break;
- case ID_BRUSH_4SIDED: g_pParentWnd->OnBrush4sided(); break;
- case ID_BRUSH_5SIDED: g_pParentWnd->OnBrush5sided(); break;
- case ID_BRUSH_6SIDED: g_pParentWnd->OnBrush6sided(); break;
- case ID_BRUSH_7SIDED: g_pParentWnd->OnBrush7sided(); break;
- case ID_BRUSH_8SIDED: g_pParentWnd->OnBrush8sided(); break;
- case ID_BRUSH_9SIDED: g_pParentWnd->OnBrush9sided(); break;
- case ID_BRUSH_ARBITRARYSIDED: g_pParentWnd->OnBrushArbitrarysided(); break;
- case ID_BRUSH_MAKECONE: g_pParentWnd->OnBrushMakecone(); break;
- case ID_BRUSH_PRIMITIVES_SPHERE: g_pParentWnd->OnBrushPrimitivesSphere(); break;
- case ID_CURVE_PATCHTUBE: g_pParentWnd->OnCurvePatchtube(); break;
- case ID_CURVE_PATCHDENSETUBE: g_pParentWnd->OnCurvePatchdensetube(); break;
- case ID_CURVE_PATCHVERYDENSETUBE: g_pParentWnd->OnCurvePatchverydensetube(); break;
- case ID_CURVE_PATCHSQUARE: g_pParentWnd->OnCurvePatchsquare(); break;
- case ID_CURVE_PATCHENDCAP: g_pParentWnd->OnCurvePatchendcap(); break;
- case ID_CURVE_PATCHBEVEL: g_pParentWnd->OnCurvePatchbevel(); break;
- case ID_CURVE_MOREENDCAPSBEVELS_SQUAREBEVEL: g_pParentWnd->OnCurveMoreendcapsbevelsSquarebevel(); break;
- case ID_CURVE_MOREENDCAPSBEVELS_SQUAREENDCAP: g_pParentWnd->OnCurveMoreendcapsbevelsSquareendcap(); break;
- case ID_CURVE_PATCHCONE: g_pParentWnd->OnCurvePatchcone(); break;
- case ID_CURVE_SIMPLEPATCHMESH: g_pParentWnd->OnCurveSimplepatchmesh(); break;
- case ID_CURVE_INSERT_INSERTCOLUMN: g_pParentWnd->OnCurveInsertInsertcolumn(); break;
- case ID_CURVE_INSERT_ADDCOLUMN: g_pParentWnd->OnCurveInsertAddcolumn(); break;
- case ID_CURVE_INSERT_INSERTROW: g_pParentWnd->OnCurveInsertInsertrow(); break;
- case ID_CURVE_INSERT_ADDROW: g_pParentWnd->OnCurveInsertAddrow(); break;
- case ID_CURVE_DELETE_FIRSTCOLUMN: g_pParentWnd->OnCurveDeleteFirstcolumn(); break;
- case ID_CURVE_DELETE_LASTCOLUMN: g_pParentWnd->OnCurveDeleteLastcolumn(); break;
- case ID_CURVE_DELETE_FIRSTROW: g_pParentWnd->OnCurveDeleteFirstrow(); break;
- case ID_CURVE_DELETE_LASTROW: g_pParentWnd->OnCurveDeleteLastrow(); break;
- case ID_CURVE_NEGATIVE: g_pParentWnd->OnCurveNegative(); break;
- case ID_CURVE_REDISPERSE_ROWS: g_pParentWnd->OnCurveRedisperseRows(); break;
- case ID_CURVE_REDISPERSE_INTERMEDIATE_COLS: g_pParentWnd->OnCurveRedisperseIntermediateCols(); break;
- case ID_CURVE_REDISPERSE_INTERMEDIATE_ROWS: g_pParentWnd->OnCurveRedisperseIntermediateRows(); break;
- case ID_CURVE_MATRIX_TRANSPOSE: g_pParentWnd->OnCurveMatrixTranspose(); break;
- case ID_CURVE_CAP: g_pParentWnd->OnCurveCap(); break;
- case ID_CURVE_CYCLECAP: g_pParentWnd->OnCurveCyclecap(); break;
- case ID_CURVE_OVERLAY_SET: g_pParentWnd->OnCurveOverlaySet(); break;
- case ID_CURVE_OVERLAY_CLEAR: g_pParentWnd->OnCurveOverlayClear(); break;
- case ID_CURVE_THICKEN: g_pParentWnd->OnCurveThicken(); break;
- case ID_PLUGINS_REFRESH: g_pParentWnd->OnPluginsRefresh(); break;
- case ID_HELP: g_pParentWnd->OnHelp(); break;
- case ID_HELP_LINKS: g_pParentWnd->OnHelpLinks(); break;
- case ID_HELP_BUGREPORT: g_pParentWnd->OnHelpBugreport(); break;
- case ID_HELP_COMMANDLIST: g_pParentWnd->OnHelpCommandlist(); break;
- case ID_HELP_ABOUT: g_pParentWnd->OnHelpAbout(); break;
- case ID_DONTSELECTMODEL: g_pParentWnd->OnDontselectmodel(); break;
- case ID_FILTER_AREAPORTALS: g_pParentWnd->OnFilterAreaportals(); break;
- case ID_FILTER_CAULK: g_pParentWnd->OnFilterCaulk(); break;
- case ID_FILTER_STRUCTURAL: g_pParentWnd->OnFilterStructural(); break;
- case ID_FILTER_CLIPS: g_pParentWnd->OnFilterClips(); break;
- case ID_FILTER_BOTCLIPS: g_pParentWnd->OnFilterBotClips(); break;
- case ID_FILTER_DETAILS: g_pParentWnd->OnFilterDetails(); break;
- case ID_FILTER_ENTITIES: g_pParentWnd->OnFilterEntities(); break;
- case ID_FILTER_HINTSSKIPS: g_pParentWnd->OnFilterHintsskips(); break;
- case ID_FILTER_LIGHTS: g_pParentWnd->OnFilterLights(); break;
- case ID_FILTER_LIQUIDS: g_pParentWnd->OnFilterLiquids(); break;
- case ID_FILTER_MODELS: g_pParentWnd->OnFilterModels(); break;
- case ID_FILTER_PATCHES: g_pParentWnd->OnFilterPatches(); break;
- case ID_FILTER_TRANSLUCENT: g_pParentWnd->OnFilterTranslucent(); break;
- case ID_FILTER_TRIGGERS: g_pParentWnd->OnFilterTriggers(); break;
- case ID_FILTER_WORLD: g_pParentWnd->OnFilterWorld(); break;
- case ID_FILTER_PATHS: g_pParentWnd->OnFilterPaths(); break;
- case ID_FILTER_CLUSTERPORTALS: g_pParentWnd->OnFilterClusterportals(); break;
- case ID_FILTER_LIGHTGRID: g_pParentWnd->OnFilterLightgrid(); break;
-
- case ID_POPUP_SELECTION: g_pParentWnd->OnPopupSelection(); break;
- case ID_VIEW_CHANGE: g_pParentWnd->OnViewChange(); break;
- case ID_TEXTURES_POPUP: g_pParentWnd->OnTexturesPopup(); break;
- case ID_VIEW_CAMERATOGGLE: g_pParentWnd->ToggleCamera(); break;
- case ID_VIEW_CAMERAUPDATE: g_pParentWnd->OnViewCameraupdate(); break;
- case ID_SELECT_MOUSEROTATE: g_pParentWnd->OnSelectMouserotate(); break;
- case ID_SELECT_MOUSESCALE: g_pParentWnd->OnSelectMousescale(); break;
- case ID_SCALELOCKX: g_pParentWnd->OnScalelockx(); break;
- case ID_SCALELOCKY: g_pParentWnd->OnScalelocky(); break;
- case ID_SCALELOCKZ: g_pParentWnd->OnScalelockz(); break;
- case ID_DONTSELECTCURVE: g_pParentWnd->OnDontselectcurve(); break;
- case ID_PATCH_SHOWBOUNDINGBOX: g_pParentWnd->OnPatchToggleBox(); break;
- case ID_PATCH_WIREFRAME: g_pParentWnd->OnPatchWireframe(); break;
- case ID_PATCH_BEND: g_pParentWnd->OnPatchBend(); break;
- case ID_PATCH_WELD: g_pParentWnd->OnPatchWeld(); break;
- case ID_PATCH_DRILLDOWN: g_pParentWnd->OnPatchDrilldown(); break;
- case ID_DROP_GROUP_NAME: g_pParentWnd->OnDropGroupName(); break;
- case ID_DROP_GROUP_NEWGROUP: g_pParentWnd->OnDropGroupNewgroup(); break;
- case ID_DROP_GROUP_REMOVE: g_pParentWnd->OnDropGroupRemove(); break;
- case ID_SHOW_ENTITIES: g_pParentWnd->OnShowEntities(); break;
-
- case IDC_BTN_FACEFIT: g_pParentWnd->OnFaceFit(); break;
- case ID_VIEW_TEXTURE: g_pParentWnd->OnViewTexture(); break;
- case ID_PATCH_INSPECTOR: g_pParentWnd->OnPatchInspector(); break;
- case ID_CURVE_NEGATIVETEXTUREX: g_pParentWnd->OnCurveNegativeTextureX(); break;
- case ID_CURVE_NEGATIVETEXTUREY: g_pParentWnd->OnCurveNegativeTextureY(); break;
- case ID_CURVE_INSERTCOLUMN: g_pParentWnd->OnCurveInsertcolumn(); break;
- case ID_CURVE_INSERTROW: g_pParentWnd->OnCurveInsertrow(); break;
- case ID_CURVE_DELETECOLUMN: g_pParentWnd->OnCurveDeletecolumn(); break;
- case ID_CURVE_DELETEROW: g_pParentWnd->OnCurveDeleterow(); break;
- case ID_PATCH_TAB: g_pParentWnd->OnPatchTab(); break;
- case ID_CAMERA_FORWARD: g_pParentWnd->OnCameraForward( TRUE ); break;
- case ID_CAMERA_BACK: g_pParentWnd->OnCameraBack( TRUE ); break;
- case ID_CAMERA_LEFT: g_pParentWnd->OnCameraLeft( TRUE ); break;
- case ID_CAMERA_RIGHT: g_pParentWnd->OnCameraRight( TRUE ); break;
- case ID_CAMERA_UP: g_pParentWnd->OnCameraUp(); break;
- case ID_CAMERA_DOWN: g_pParentWnd->OnCameraDown(); break;
- case ID_CAMERA_ANGLEUP: g_pParentWnd->OnCameraAngleup(); break;
- case ID_CAMERA_ANGLEDOWN: g_pParentWnd->OnCameraAngledown(); break;
- case ID_CAMERA_STRAFELEFT: g_pParentWnd->OnCameraStrafeleft( TRUE ); break;
- case ID_CAMERA_STRAFERIGHT: g_pParentWnd->OnCameraStraferight( TRUE ); break;
- case ID_GRID_TOGGLE: g_pParentWnd->OnGridToggle(); break;
- case ID_VIEW_CONSOLE: g_pParentWnd->OnViewConsole(); break;
- case ID_VIEW_CROSSHAIR: g_pParentWnd->OnViewCrosshair(); break;
- case ID_SELECTION_TEXTURE_FIT: g_pParentWnd->OnSelectionTextureFit(); break;
- case ID_SELECTION_TEXTURE_ROTATECLOCK: g_pParentWnd->OnSelectionTextureRotateclock(); break;
- case ID_SELECTION_TEXTURE_ROTATECOUNTER: g_pParentWnd->OnSelectionTextureRotatecounter(); break;
- case ID_SELECTION_TEXTURE_SCALEUP: g_pParentWnd->OnSelectionTextureScaleup(); break;
- case ID_SELECTION_TEXTURE_SCALEDOWN: g_pParentWnd->OnSelectionTextureScaledown(); break;
- case ID_SELECTION_TEXTURE_SHIFTLEFT: g_pParentWnd->OnSelectionTextureShiftleft(); break;
- case ID_SELECTION_TEXTURE_SHIFTRIGHT: g_pParentWnd->OnSelectionTextureShiftright(); break;
- case ID_SELECTION_TEXTURE_SHIFTUP: g_pParentWnd->OnSelectionTextureShiftup(); break;
- case ID_SELECTION_TEXTURE_SHIFTDOWN: g_pParentWnd->OnSelectionTextureShiftdown(); break;
- case ID_GRID_PREV: g_pParentWnd->OnGridPrev(); break;
- case ID_GRID_NEXT: g_pParentWnd->OnGridNext(); break;
- case ID_SELECTION_TEXTURE_SCALELEFT: g_pParentWnd->OnSelectionTextureScaleLeft(); break;
- case ID_SELECTION_TEXTURE_SCALERIGHT: g_pParentWnd->OnSelectionTextureScaleRight(); break;
- case ID_SELECTION_MOVEDOWN: g_pParentWnd->OnSelectionMovedown(); break;
- case ID_SELECTION_MOVEUP: g_pParentWnd->OnSelectionMoveup(); break;
- case ID_SELECTION_PRINT: g_pParentWnd->OnSelectionPrint(); break;
- case ID_SELECTION_TOGGLESIZEPAINT: g_pParentWnd->OnSelectionTogglesizepaint(); break;
- case ID_PATCH_NATURALIZE: g_pParentWnd->OnPatchNaturalize(); break;
- case ID_SELECT_SNAPTOGRID: g_pParentWnd->OnSnapToGrid(); break;
- case ID_SELECT_ALL: g_pParentWnd->OnSelectAll(); break;
- case ID_SELECTION_INVERT: g_pParentWnd->OnSelectionInvert(); break;
- }}
-
- return TRUE;
-}
-
-static gint timer( gpointer data ){
- MainFrame *wnd = (MainFrame*)data;
- wnd->OnTimer();
- return TRUE;
-}
-
-static gint mainframe_delete( GtkWidget *widget, GdkEvent *event, gpointer data ){
- MainFrame *wnd = (MainFrame*)data;
-
- wnd->OnDelete();
-
- if ( ConfirmModified() ) {
- return FALSE;
- }
-
- g_qeglobals_gui.d_edit = NULL;
-
- return TRUE;
-}
-
-static void mainframe_destroy( GtkWidget *widget, gpointer data ){
- MainFrame *wnd = (MainFrame*)data;
-
- // avoid saving prefs when the app is minimized
- if ( g_pParentWnd->IsSleeping() ) {
- Sys_Printf( "Shutdown while sleeping, not saving prefs\n" );
- g_qeglobals.disable_ini = true;
- }
-
- // NOTE TTimo this is very clumsy, in MainFrame::OnDestroy we might call SavePrefs again
- // we will do more stuff in OnDestroy for window position saving too, so I guess this call is still relevant?
- g_PrefsDlg.SavePrefs();
-
- wnd->OnDestroy();
-
- // shutdown modules
- // NOTE: I've decided to do this before SavePrefs in case we broadcast some shutdown info
- // and modules / plugins decide to save some stuff
- g_pParentWnd->GetPlugInMgr().Shutdown();
-
- delete wnd;
-
- QGL_Shutdown();
- g_PrefsDlg.Destroy();
- g_dlgSurface.Destroy();
- g_dlgFind.Destroy();
- g_PatchDialog.Destroy();
-
- gtk_main_quit();
-}
-
-static gint mainframe_keypress( GtkWidget* widget, GdkEventKey* event, gpointer data ){
- unsigned int code = gdk_keyval_to_upper( event->keyval );
-
- if ( code == GDK_ISO_Left_Tab ) {
- code = GDK_Tab;
- }
-
-#ifdef DBG_KBD
- Sys_Printf( "key: %d (keyval: %d) (ctrl: %d)\n", code, event->keyval, event->state & GDK_CONTROL_MASK );
-#endif
-
- // return only if Texture Viewport is in main window, otherwise if Tex viewport is in it's own window
- // the Filter GtkEntry won't release focus
- if ( g_pParentWnd->GetTexWnd()->m_pFilter == gtk_window_get_focus( GTK_WINDOW( widget ) ) ) {
- if ( gtk_widget_is_focus( g_pParentWnd->GetTexWnd()->m_pFilter ) ) {
- return FALSE;
- }
- }
-
-#ifdef DBG_KBD
- Sys_Printf( "mainframe_keypress processing into a command\n" );
-#endif
- for ( int i = 0; i < g_nCommandCount; i++ )
- {
- if ( g_Commands[i].m_nKey == code ) { // find a match?
- // check modifiers
- unsigned int nState = 0;
- if ( Sys_AltDown() ) {
- nState |= RAD_ALT;
- }
- if ( ( event->state & GDK_CONTROL_MASK ) != 0 ) {
- nState |= RAD_CONTROL;
- }
- if ( ( event->state & GDK_SHIFT_MASK ) != 0 ) {
- nState |= RAD_SHIFT;
- }
- if ( ( g_Commands[i].m_nModifiers & 0x7 ) == nState ) {
- HandleCommand( NULL, GINT_TO_POINTER( g_Commands[i].m_nCommand ) );
- gtk_signal_emit_stop_by_name( GTK_OBJECT( widget ), "key_press_event" );
- return FALSE;
- }
- }
- }
-
- return TRUE;
-}
-
-static gint mainframe_keyrelease( GtkWidget* widget, GdkEventKey* event, gpointer data ){
- unsigned int code = gdk_keyval_to_upper( event->keyval );
-
- if ( gtk_accelerator_valid( event->keyval, (GdkModifierType)0 ) ) {
- return TRUE;
- }
-
- for ( int i = 0; i < g_nCommandCount; i++ )
- {
- if ( g_Commands[i].m_nKey == code ) { // find a match?
- if ( !g_Commands[i].m_nModifiers ) {
- // Gef: Only call the handler if it's a key that needs keyup events
- switch ( g_Commands[i].m_nCommand )
- {
- case ID_CAMERA_FORWARD:
- case ID_CAMERA_BACK:
- case ID_CAMERA_LEFT:
- case ID_CAMERA_RIGHT:
- case ID_CAMERA_STRAFELEFT:
- case ID_CAMERA_STRAFERIGHT:
- {
- HandleKeyUp( NULL, GINT_TO_POINTER( g_Commands[i].m_nCommand ) );
- gtk_signal_emit_stop_by_name( GTK_OBJECT( widget ), "key_release_event" );
- }
-
- }
- return FALSE;
- }
- }
- }
-
- return TRUE;
-}
-
-
-// =============================================================================
-// Window creation functions
-
-void AddMenuItem( GtkWidget* item, unsigned int id ){
- for ( int i = 0; i < g_nCommandCount; i++ )
- if ( g_Commands[i].m_nCommand == id ) {
- g_object_set_data( G_OBJECT( g_pParentWnd->m_pWidget ), g_Commands[i].m_strMenu, item );
- break;
- }
-}
-
-void MainFrame::handle_help_command( int id ){
- OpenURL( mHelpURLs[id]->GetBuffer() );
-}
-
-/*!
- needed for hooking in Gtk+
- */
-void HandleHelpCommand( GtkWidget *widget, gpointer data ){
- int id = GPOINTER_TO_INT( data );
- g_pParentWnd->handle_help_command( id );
-}
-
-void MainFrame::process_xlink( Str &FileName, const char *menu_name, const char *base_url, GtkWidget *menu, GtkAccelGroup *accel ){
- xmlDocPtr pDoc;
- pDoc = xmlParseFile( FileName.GetBuffer() );
- if ( pDoc ) {
- Sys_Printf( "Processing .xlink file '%s'\n", FileName.GetBuffer() );
- // create sub menu
- GtkWidget* menu_in_menu = create_menu_in_menu_with_mnemonic( menu, menu_name );
- // start walking the nodes, find the 'links' one
- xmlNodePtr pNode = pDoc->children;
- while ( pNode && strcmp( (const char*)pNode->name, "links" ) )
- pNode = pNode->next;
- if ( pNode ) {
- pNode = pNode->children;
- while ( pNode )
- {
- if ( !strcmp( (const char*)pNode->name, "item" ) ) {
- // process the URL
- Str *url;
- if ( strstr( (char *)xmlGetProp( pNode, (xmlChar *)"url" ), "http://" ) ) {
- // complete URL
- url = new Str;
- *url = (char *)xmlGetProp( pNode, (xmlChar *)"url" );
- }
- else
- {
- // relative URL
- url = new Str;
- *url = base_url;
- *url += (char *)xmlGetProp( pNode, (xmlChar *)"url" );
- }
- mHelpURLs.push_back( url );
- create_menu_item_with_mnemonic( menu_in_menu, (char *)xmlGetProp( pNode, (xmlChar *)"name" ), GTK_SIGNAL_FUNC( HandleHelpCommand ), mHelpURLs.size() - 1 );
- }
- pNode = pNode->next;
- }
- }
- xmlFreeDoc( pDoc );
- }
- else
- {
- Sys_Printf( "'%s' not found / parse failed\n", FileName.GetBuffer() );
- }
-}
-
-void MainFrame::create_game_help_menu( GtkWidget *menu, GtkAccelGroup *accel ){
- Str FileName;
- list<CGameDescription *>::iterator iGame;
-
- // start in the global dir
- FileName = g_strAppPath;
- FileName += "global.xlink";
- process_xlink( FileName, "General", g_strAppPath.GetBuffer(), menu, accel );
-
- for ( iGame = g_PrefsDlg.mGamesDialog.mGames.begin(); iGame != g_PrefsDlg.mGamesDialog.mGames.end(); iGame++ )
- {
- FileName = ( *iGame )->mGameToolsPath;
- FileName += "game.xlink";
- process_xlink( FileName, ( *iGame )->mGameName, ( *iGame )->mGameToolsPath.GetBuffer(), menu, accel );
- }
-}
-
-void MainFrame::create_main_menu( GtkWidget *window, GtkWidget *vbox ){
- GtkWidget *handle_box, *menu_bar, *menu, *menu_in_menu, *menu_3, *item;
- GtkAccelGroup *accel;
-
- g_bIgnoreCommands++;
- accel = gtk_accel_group_new();
- global_accel = accel;
- gtk_window_add_accel_group( GTK_WINDOW( window ), accel );
-
- handle_box = gtk_handle_box_new();
- gtk_box_pack_start( GTK_BOX( vbox ), handle_box, FALSE, FALSE, 0 );
- gtk_widget_show( handle_box );
-
- menu_bar = gtk_menu_bar_new();
- gtk_container_add( GTK_CONTAINER( handle_box ), menu_bar );
- gtk_widget_show( menu_bar );
-
- // File menu
- menu = create_sub_menu_with_mnemonic( menu_bar, _( "_File" ) );
- if ( g_PrefsDlg.m_bDetachableMenus ) {
- menu_tearoff( menu );
- }
-
- create_menu_item_with_mnemonic( menu, _( "_New Map" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_FILE_NEW );
- menu_separator( menu );
-
- //++timo temporary experimental stuff for sleep mode..
- item = create_menu_item_with_mnemonic( menu, _( "_Sleep" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_FILE_SLEEP );
- g_object_set_data( G_OBJECT( window ), "menu_file_sleep", item );
- menu_separator( menu );
- // end experimental
-
- item = create_menu_item_with_mnemonic( menu, _( "_Open..." ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_FILE_OPEN );
- g_object_set_data( G_OBJECT( window ), "menu_file_open", item );
- create_menu_item_with_mnemonic( menu, _( "_Import..." ), // Hydra: give it it's proper name
- GTK_SIGNAL_FUNC( HandleCommand ), ID_FILE_IMPORTMAP );
- item = create_menu_item_with_mnemonic( menu, _( "_Save" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_FILE_SAVE );
- g_object_set_data( G_OBJECT( window ), "menu_file_save", item );
- create_menu_item_with_mnemonic( menu, _( "Save _as..." ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_FILE_SAVEAS );
- create_menu_item_with_mnemonic( menu, _( "Save s_elected..." ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_FILE_EXPORTMAP );
- menu_separator( menu );
- item = create_menu_item_with_mnemonic( menu, _( "Save re_gion..." ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_FILE_SAVEREGION );
- g_object_set_data( G_OBJECT( window ), "menu_file_saveregion", item );
- menu_separator( menu );
- create_menu_item_with_mnemonic( menu, _( "New p_roject..." ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_FILE_NEWPROJECT );
- create_menu_item_with_mnemonic( menu, _( "Load _project..." ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_FILE_LOADPROJECT );
- create_menu_item_with_mnemonic( menu, _( "Pro_ject settings..." ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_FILE_PROJECTSETTINGS );
- menu_separator( menu );
- create_menu_item_with_mnemonic( menu, _( "_Pointfile..." ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_FILE_POINTFILE );
- menu_separator( menu );
- item = create_menu_item_with_mnemonic( menu, _( "Recent Files" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_FILE_RECENT1 );
- g_object_set_data( G_OBJECT( item ), "accel", accel );
- gtk_widget_set_sensitive( item, FALSE );
- MRU_AddWidget( item, 0 );
- item = create_menu_item_with_mnemonic( menu, "2",
- GTK_SIGNAL_FUNC( HandleCommand ), ID_FILE_RECENT2 );
- gtk_widget_hide( item );
- MRU_AddWidget( item, 1 );
- item = create_menu_item_with_mnemonic( menu, "3",
- GTK_SIGNAL_FUNC( HandleCommand ), ID_FILE_RECENT3 );
- gtk_widget_hide( item );
- MRU_AddWidget( item, 2 );
- item = create_menu_item_with_mnemonic( menu, "4",
- GTK_SIGNAL_FUNC( HandleCommand ), ID_FILE_RECENT4 );
- gtk_widget_hide( item );
- MRU_AddWidget( item, 3 );
- menu_separator( menu );
- item = create_menu_item_with_mnemonic( menu, _( "Check for GtkRadiant update (web)" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_FILE_CHECKUPDATE );
- // disable, the functionality is no longer available
- gtk_widget_set_sensitive( item, FALSE );
-
- create_menu_item_with_mnemonic( menu, _( "E_xit" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_FILE_EXIT );
-
- // Edit menu
- menu = create_sub_menu_with_mnemonic( menu_bar, _( "_Edit" ) );
- if ( g_PrefsDlg.m_bDetachableMenus ) {
- menu_tearoff( menu );
- }
- item = create_menu_item_with_mnemonic( menu, _( "_Undo" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_EDIT_UNDO );
- g_object_set_data( G_OBJECT( window ), "menu_edit_undo", item );
- item = create_menu_item_with_mnemonic( menu, _( "_Redo" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_EDIT_REDO );
- g_object_set_data( G_OBJECT( window ), "menu_edit_redo", item );
- menu_separator( menu );
- item = create_menu_item_with_mnemonic( menu, _( "_Copy" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_EDIT_COPYBRUSH );
- item = create_menu_item_with_mnemonic( menu, _( "_Paste" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_EDIT_PASTEBRUSH );
- item = create_menu_item_with_mnemonic( menu, _( "P_aste To Camera" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_EDIT_PASTEBRUSHTOCAMERA );
- item = create_menu_item_with_mnemonic( menu, _( "_Delete" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_SELECTION_DELETE );
- g_object_set_data( G_OBJECT( window ), "menu_selection_delete", item );
- menu_separator( menu );
- create_menu_item_with_mnemonic( menu, _( "Map Info..." ), GTK_SIGNAL_FUNC( HandleCommand ), ID_EDIT_MAPINFO );
- create_menu_item_with_mnemonic( menu, _( "Entity Info..." ), GTK_SIGNAL_FUNC( HandleCommand ), ID_EDIT_ENTITYINFO );
- menu_separator( menu );
- create_menu_item_with_mnemonic( menu, _( "Brush Scripts..." ), GTK_SIGNAL_FUNC( HandleCommand ), ID_BRUSH_SCRIPTS );
- menu_separator( menu );
- create_menu_item_with_mnemonic( menu, _( "Load Pre_fab..." ), GTK_SIGNAL_FUNC( HandleCommand ), ID_EDIT_LOADPREFAB );
- create_menu_item_with_mnemonic( menu, _( "Save Selection as Prefab..." ), GTK_SIGNAL_FUNC( HandleCommand ), ID_EDIT_SAVEPREFAB );
- menu_separator( menu );
- create_menu_item_with_mnemonic( menu, _( "Preferences..." ), GTK_SIGNAL_FUNC( HandleCommand ), ID_PREFS );
-
- // View menu
- menu = create_sub_menu_with_mnemonic( menu_bar, _( "_View" ) );
- if ( g_PrefsDlg.m_bDetachableMenus ) {
- menu_tearoff( menu );
- }
-
- menu_in_menu = create_menu_in_menu_with_mnemonic( menu, _( "Toggle" ) );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Camera View" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_TOGGLECAMERA );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Console View" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_TOGGLECONSOLE );
- item = create_menu_item_with_mnemonic( menu_in_menu, _( "Entity View" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_VIEW_ENTITY );
- g_object_set_data( G_OBJECT( window ), "menu_view_entity", item );
- // create_menu_item_with_mnemonic (menu_in_menu, "Groups View", GTK_SIGNAL_FUNC (HandleCommand), ID_VIEW_GROUPS);
- create_menu_item_with_mnemonic( menu_in_menu, _( "XY (Top)" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_TOGGLEVIEW );
- create_menu_item_with_mnemonic( menu_in_menu, _( "YZ (Side)" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_TOGGLEVIEW_YZ );
- create_menu_item_with_mnemonic( menu_in_menu, _( "XZ (Front)" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_TOGGLEVIEW_XZ );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Z View" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_TOGGLEZ );
- menu_separator( menu );
- item = create_menu_item_with_mnemonic( menu, _( "_Center" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_VIEW_CENTER );
- item = create_menu_item_with_mnemonic( menu, _( "_Center 2d" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_VIEW_CENTERVIEW );
- item = create_menu_item_with_mnemonic( menu, _( "_Up Floor" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_VIEW_UPFLOOR );
- item = create_menu_item_with_mnemonic( menu, _( "_Down Floor" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_VIEW_DOWNFLOOR );
- menu_separator( menu );
- item = create_menu_item_with_mnemonic( menu, _( "_Next (XY, YZ, XY)" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_VIEW_NEXTVIEW );
- menu_in_menu = create_menu_in_menu_with_mnemonic( menu, _( "Layout" ) );
- create_menu_item_with_mnemonic( menu_in_menu, _( "XY (Top)" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_VIEW_XY );
- create_menu_item_with_mnemonic( menu_in_menu, _( "YZ" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_VIEW_SIDE );
- create_menu_item_with_mnemonic( menu_in_menu, _( "XZ" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_VIEW_FRONT );
- menu_in_menu = create_menu_in_menu_with_mnemonic( menu, _( "Zoom" ) );
- create_menu_item_with_mnemonic( menu_in_menu, _( "_XY 100%" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_VIEW_100 );
- item = create_menu_item_with_mnemonic( menu_in_menu, _( "XY Zoom _In" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_VIEW_ZOOMIN );
- item = create_menu_item_with_mnemonic( menu_in_menu, _( "XY Zoom _Out" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_VIEW_ZOOMOUT );
- menu_separator( menu_in_menu );
- create_menu_item_with_mnemonic( menu_in_menu, _( "_Z 100%" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_VIEW_Z100 );
- item = create_menu_item_with_mnemonic( menu_in_menu, _( "Z Zoo_m In" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_VIEW_ZZOOMIN );
- g_object_set_data( G_OBJECT( window ), "menu_view_zzoomin", item );
- item = create_menu_item_with_mnemonic( menu_in_menu, _( "Z Zoom O_ut" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_VIEW_ZZOOMOUT );
- g_object_set_data( G_OBJECT( window ), "menu_view_zzoomout", item );
- menu_separator( menu_in_menu );
- item = create_menu_item_with_mnemonic( menu_in_menu, _( "Cubic Clip Zoom In" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_VIEW_CUBEIN );
- item = create_menu_item_with_mnemonic( menu_in_menu, _( "Cubic Clip Zoom Out" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_VIEW_CUBEOUT );
- menu_separator( menu );
-
- menu_in_menu = create_menu_in_menu_with_mnemonic( menu, _( "Show" ) );
- item = create_check_menu_item_with_mnemonic( menu_in_menu, _( "Show _Angles" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_VIEW_SHOWANGLES, FALSE );
- g_object_set_data( G_OBJECT( window ), "menu_view_showangles", item );
- item = create_check_menu_item_with_mnemonic( menu_in_menu, _( "Show _Names" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_VIEW_SHOWNAMES, TRUE );
- g_object_set_data( G_OBJECT( window ), "menu_view_shownames", item );
- item = create_check_menu_item_with_mnemonic( menu_in_menu, _( "Show Blocks" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_VIEW_SHOWBLOCKS, FALSE );
- g_object_set_data( G_OBJECT( window ), "menu_view_showblocks", item );
- item = create_check_menu_item_with_mnemonic( menu_in_menu, _( "Show C_oordinates" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_VIEW_SHOWCOORDINATES, TRUE );
- g_object_set_data( G_OBJECT( window ), "menu_view_showcoordinates", item );
- item = create_check_menu_item_with_mnemonic( menu_in_menu, _( "Show Window Outline" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_VIEW_SHOWOUTLINE, TRUE );
- g_object_set_data( G_OBJECT( window ), "menu_view_showoutline", item );
- item = create_check_menu_item_with_mnemonic( menu_in_menu, _( "Show ZBuffered Outline" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_SELECTION_NOOUTLINE, TRUE );
- g_object_set_data( G_OBJECT( window ), "menu_selection_nooutline", item );
- item = create_check_menu_item_with_mnemonic( menu_in_menu, _( "Show Axes" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_VIEW_SHOWAXES, TRUE );
- g_object_set_data( G_OBJECT( window ), "menu_view_showaxes", item );
- item = create_check_menu_item_with_mnemonic( menu_in_menu, _( "Show Workzone" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_VIEW_SHOWWORKZONE, FALSE );
- g_object_set_data( G_OBJECT( window ), "menu_view_showworkzone", item );
-
- menu_in_menu = create_menu_in_menu_with_mnemonic( menu, _( "Filter" ) );
- create_check_menu_item_with_mnemonic( menu_in_menu, _( "World" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_FILTER_WORLD, FALSE );
- create_check_menu_item_with_mnemonic( menu_in_menu, _( "Entities" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_FILTER_ENTITIES, FALSE );
- create_check_menu_item_with_mnemonic( menu_in_menu, _( "Areaportals" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_FILTER_AREAPORTALS, FALSE );
- create_check_menu_item_with_mnemonic( menu_in_menu, _( "Translucent" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_FILTER_TRANSLUCENT, FALSE );
- create_check_menu_item_with_mnemonic( menu_in_menu, _( "Liquids" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_FILTER_LIQUIDS, FALSE );
- create_check_menu_item_with_mnemonic( menu_in_menu, _( "Caulk" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_FILTER_CAULK, FALSE );
- create_check_menu_item_with_mnemonic( menu_in_menu, _( "Clips" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_FILTER_CLIPS, FALSE );
- create_check_menu_item_with_mnemonic( menu_in_menu, _( "Paths" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_FILTER_PATHS, FALSE );
- create_check_menu_item_with_mnemonic( menu_in_menu, _( "Clusterportals" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_FILTER_CLUSTERPORTALS, FALSE );
- create_check_menu_item_with_mnemonic( menu_in_menu, _( "Lights" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_FILTER_LIGHTS, FALSE );
- create_check_menu_item_with_mnemonic( menu_in_menu, _( "Structural" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_FILTER_STRUCTURAL, FALSE );
- item = create_check_menu_item_with_mnemonic( menu_in_menu, _( "Lightgrid" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_FILTER_LIGHTGRID, FALSE );
- g_object_set_data( G_OBJECT( window ), "menu_filter_lightgrid", item );
- create_check_menu_item_with_mnemonic( menu_in_menu, _( "Patches" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_FILTER_PATCHES, FALSE );
- create_check_menu_item_with_mnemonic( menu_in_menu, _( "Details" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_FILTER_DETAILS, FALSE );
- create_check_menu_item_with_mnemonic( menu_in_menu, _( "Hints" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_FILTER_HINTSSKIPS, FALSE );
- create_check_menu_item_with_mnemonic( menu_in_menu, _( "Models" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_FILTER_MODELS, FALSE );
- create_check_menu_item_with_mnemonic( menu_in_menu, _( "Triggers" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_FILTER_TRIGGERS, FALSE );
- create_check_menu_item_with_mnemonic( menu_in_menu, _( "Botclips" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_FILTER_BOTCLIPS, FALSE );
-
- menu_separator( menu );
- menu_in_menu = create_menu_in_menu_with_mnemonic( menu, _( "Hide/Show" ) );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Hide Selected" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_VIEW_HIDESHOW_HIDESELECTED );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Show Hidden" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_VIEW_HIDESHOW_SHOWHIDDEN );
- menu_separator( menu );
- menu_in_menu = create_menu_in_menu_with_mnemonic( menu, _( "Entities as" ) );
- g_object_set_data( G_OBJECT( window ), "view_entitiesas_menu", menu_in_menu );
- item = create_radio_menu_item_with_mnemonic( menu_in_menu, NULL, _( "Bounding box" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_VIEW_ENTITIESAS_BOUNDINGBOX,FALSE );
- g_object_set_data( G_OBJECT( window ), "menu_view_entitiesas_boundingbox", item );
- item = create_radio_menu_item_with_mnemonic( menu_in_menu, item, _( "Wireframe" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_VIEW_ENTITIESAS_WIREFRAME,FALSE );
- g_object_set_data( G_OBJECT( window ), "menu_view_entitiesas_wireframe", item );
- item = create_radio_menu_item_with_mnemonic( menu_in_menu, item, _( "Selected Wireframe" ),
- GTK_SIGNAL_FUNC( HandleCommand ),ID_VIEW_ENTITIESAS_SELECTEDWIREFRAME,FALSE );
- g_object_set_data( G_OBJECT( window ), "menu_view_entitiesas_selectedwireframe", item );
- item = create_radio_menu_item_with_mnemonic( menu_in_menu, item, _( "Selected Skinned" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_VIEW_ENTITIESAS_SELECTEDSKINNED,FALSE );
- g_object_set_data( G_OBJECT( window ), "menu_view_entitiesas_selectedskinned", item );
- item = create_radio_menu_item_with_mnemonic( menu_in_menu, item, _( "Skinned" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_VIEW_ENTITIESAS_SKINNED,FALSE );
- g_object_set_data( G_OBJECT( window ), "menu_view_entitiesas_skinned", item );
- item = create_radio_menu_item_with_mnemonic( menu_in_menu, item, _( "Skinned and Boxed" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_VIEW_ENTITIESAS_SKINNEDANDBOXED,FALSE );
- g_object_set_data( G_OBJECT( window ), "menu_view_entitiesas_skinnedandboxed", item );
- menu_separator( menu );
- item = create_check_menu_item_with_mnemonic( menu, _( "Cubic Clipping" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_VIEW_CUBICCLIPPING, TRUE );
- g_object_set_data( G_OBJECT( window ), "menu_view_cubicclipping", item );
- menu_separator( menu );
- item = create_check_menu_item_with_mnemonic( menu, _( "OpenGL Lighting" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_VIEW_OPENGLLIGHTING, FALSE );
- g_object_set_data( G_OBJECT( window ), "menu_view_opengllighting", item );
-
- // Selection menu
- menu = create_sub_menu_with_mnemonic( menu_bar, _( "_Selection" ) );
- if ( g_PrefsDlg.m_bDetachableMenus ) {
- menu_tearoff( menu );
- }
-
- menu_in_menu = create_menu_in_menu_with_mnemonic( menu, _( "Drag" ) );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Drag _Edges" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_SELECTION_DRAGEDGES );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Drag _Vertices" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_SELECTION_DRAGVERTECIES );
- menu_separator( menu );
- create_menu_item_with_mnemonic( menu, _( "_Clone" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_SELECTION_CLONE );
- item = create_menu_item_with_mnemonic( menu, _( "Deselect" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_SELECTION_DESELECT );
- item = create_menu_item_with_mnemonic( menu, _( "Invert" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_SELECTION_INVERT );
-#ifndef QUAKE3
- create_menu_item_with_mnemonic( menu, _( "_Delete" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_SELECTION_DELETE );
-#endif
- menu_separator( menu );
- menu_in_menu = create_menu_in_menu_with_mnemonic( menu, _( "Flip" ) );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Flip _X" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_BRUSH_FLIPX );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Flip _Y" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_BRUSH_FLIPY );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Flip _Z" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_BRUSH_FLIPZ );
- menu_separator( menu );
- menu_in_menu = create_menu_in_menu_with_mnemonic( menu, _( "Rotate" ) );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Rotate X" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_BRUSH_ROTATEX );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Rotate Y" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_BRUSH_ROTATEY );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Rotate Z" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_BRUSH_ROTATEZ );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Arbitrary rotation..." ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_SELECTION_ARBITRARYROTATION );
- menu_separator( menu );
- create_menu_item_with_mnemonic( menu, _( "Scale..." ), GTK_SIGNAL_FUNC( HandleCommand ), ID_SELECT_SCALE );
- menu_in_menu = create_menu_in_menu_with_mnemonic( menu, _( "CSG" ) );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Make _Hollow" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_SELECTION_MAKEHOLLOW );
- create_menu_item_with_mnemonic( menu_in_menu, _( "CSG _Subtract" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_SELECTION_CSGSUBTRACT );
- create_menu_item_with_mnemonic( menu_in_menu, _( "CSG _Merge" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_SELECTION_CSGMERGE );
- menu_separator( menu );
- menu_in_menu = create_menu_in_menu_with_mnemonic( menu, _( "Select" ) );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Select Complete _Tall" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_SELECTION_SELECTCOMPLETETALL );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Select T_ouching" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_SELECTION_SELECTTOUCHING );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Select _Partial Tall" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_SELECTION_SELECTPARTIALTALL );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Select _Inside" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_SELECTION_SELECTINSIDE );
- create_menu_item_with_mnemonic( menu_in_menu, "Select Func _Group", GTK_SIGNAL_FUNC( HandleCommand ), ID_SELECT_FUNC_GROUP );
-#ifndef QUAKE3
- create_menu_item_with_mnemonic( menu_in_menu, _( "Nudge Left" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_SELECTION_SELECT_NUDGELEFT );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Nudge Right" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_SELECTION_SELECT_NUDGERIGHT );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Nudge Up" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_SELECTION_SELECT_NUDGEUP );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Nudge Down" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_SELECTION_SELECT_NUDGEDOWN );
-#endif
- menu_separator( menu );
- menu_in_menu = create_menu_in_menu_with_mnemonic( menu, _( "Clipper" ) );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Toggle Clipper" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_VIEW_CLIPPER );
- menu_separator( menu_in_menu );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Clip selection" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_CLIP_SELECTED );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Split selection" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_SPLIT_SELECTED );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Flip Clip orientation" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_FLIP_CLIP );
- menu_separator( menu );
- create_menu_item_with_mnemonic( menu, _( "Connect entities" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_SELECTION_CONNECT );
- create_menu_item_with_mnemonic( menu, _( "Ungroup entity" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_SELECTION_UNGROUPENTITY );
- create_menu_item_with_mnemonic( menu, _( "Make detail" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_SELECTION_MAKE_DETAIL );
- create_menu_item_with_mnemonic( menu, _( "Make structural" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_SELECTION_MAKE_STRUCTURAL );
-
- // BSP menu
- menu = create_sub_menu_with_mnemonic( menu_bar, _( "_Bsp" ) );
-
- menu_separator( menu );
- g_object_set_data( G_OBJECT( window ), "menu_bsp", menu );
-
- // Grid menu
- menu = create_sub_menu_with_mnemonic( menu_bar, _( "_Grid" ) );
- if ( g_PrefsDlg.m_bDetachableMenus ) {
- menu_tearoff( menu );
- }
-
- item = create_radio_menu_item_with_mnemonic( menu, NULL, _( "Grid0.25" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_GRID_025, FALSE );
- g_object_set_data( G_OBJECT( window ), "menu_grid_025", item );
- item = create_radio_menu_item_with_mnemonic( menu, item, _( "Grid0.5" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_GRID_05, FALSE );
- g_object_set_data( G_OBJECT( window ), "menu_grid_05", item );
- item = create_radio_menu_item_with_mnemonic( menu, item, _( "Grid1" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_GRID_1, FALSE );
- g_object_set_data( G_OBJECT( window ), "menu_grid_1", item );
- item = create_radio_menu_item_with_mnemonic( menu, item, _( "Grid2" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_GRID_2, FALSE );
- g_object_set_data( G_OBJECT( window ), "menu_grid_2", item );
- item = create_radio_menu_item_with_mnemonic( menu, item, _( "Grid4" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_GRID_4, FALSE );
- g_object_set_data( G_OBJECT( window ), "menu_grid_4", item );
- item = create_radio_menu_item_with_mnemonic( menu, item, _( "Grid8" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_GRID_8, TRUE );
- g_object_set_data( G_OBJECT( window ), "menu_grid_8", item );
- item = create_radio_menu_item_with_mnemonic( menu, item, _( "Grid16" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_GRID_16, FALSE );
- g_object_set_data( G_OBJECT( window ), "menu_grid_16", item );
- item = create_radio_menu_item_with_mnemonic( menu, item, _( "Grid32" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_GRID_32, FALSE );
- g_object_set_data( G_OBJECT( window ), "menu_grid_32", item );
- item = create_radio_menu_item_with_mnemonic( menu, item, _( "Grid64" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_GRID_64, FALSE );
- g_object_set_data( G_OBJECT( window ), "menu_grid_64", item );
- item = create_radio_menu_item_with_mnemonic( menu, item, _( "Grid128" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_GRID_128, FALSE );
- g_object_set_data( G_OBJECT( window ), "menu_grid_128", item );
- item = create_radio_menu_item_with_mnemonic( menu, item, _( "Grid256" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_GRID_256, FALSE );
- g_object_set_data( G_OBJECT( window ), "menu_grid_256", item );
- menu_separator( menu );
- item = create_check_menu_item_with_mnemonic( menu, _( "Snap to grid" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_SNAPTOGRID, TRUE );
- g_object_set_data( G_OBJECT( window ), "menu_snaptogrid", item );
-
- // Textures menu
- menu = create_sub_menu_with_mnemonic( menu_bar, _( "_Textures" ) );
- if ( g_PrefsDlg.m_bDetachableMenus ) {
- menu_tearoff( menu );
- }
-
- item = create_check_menu_item_with_mnemonic( menu, _( "Show In _Use" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_TEXTURES_SHOWINUSE, FALSE );
- g_object_set_data( G_OBJECT( window ), "menu_textures_showinuse", item );
- item = create_check_menu_item_with_mnemonic( menu, _( "Show _All" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_TEXTURES_SHOWALL, FALSE );
- g_object_set_data( G_OBJECT( window ), "menu_textures_showall", item );
- menu_separator( menu );
- item = create_check_menu_item_with_mnemonic( menu, _( "Show shaders" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_TEXTURES_SHADERS_SHOW, FALSE );
- g_object_set_data( G_OBJECT( window ), "menu_textures_shaders_show", item );
- item = create_menu_item_with_mnemonic( menu, _( "Flush & Reload Shaders" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_TEXTURES_RELOADSHADERS );
- g_object_set_data( G_OBJECT( window ), "menu_textures_reloadshaders", item );
- item = create_menu_item_with_mnemonic( menu, _( "Load directory..." ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_TEXTURES_LOAD );
- g_object_set_data( G_OBJECT( window ), "menu_textures_load", item );
- item = create_menu_item_with_mnemonic( menu, _( "Directory list..." ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_TEXTURES_LOADLIST );
- menu_separator( menu );
-
- item = create_menu_item_with_mnemonic( menu, _( "_Surface Inspector" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_TEXTURES_INSPECTOR );
- menu_separator( menu );
- menu_in_menu = create_menu_in_menu_with_mnemonic( menu, _( "Render Quality" ) );
- g_object_set_data( G_OBJECT( window ), "render_quality_menu", menu_in_menu );
- item = create_radio_menu_item_with_mnemonic( menu_in_menu, NULL, _( "_Wireframe" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_TEXTURES_WIREFRAME, FALSE );
- g_object_set_data( G_OBJECT( window ), "menu_textures_wireframe", item );
- item = create_radio_menu_item_with_mnemonic( menu_in_menu, item, _( "_Flat shade" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_TEXTURES_FLATSHADE, FALSE );
- g_object_set_data( G_OBJECT( window ), "menu_textures_flatshade", item );
- item = create_radio_menu_item_with_mnemonic( menu_in_menu, item, _( "_Nearest" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_VIEW_NEAREST, FALSE );
- g_object_set_data( G_OBJECT( window ), "menu_view_nearest", item );
- item = create_radio_menu_item_with_mnemonic( menu_in_menu, item, _( "Nearest _Mipmap" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_VIEW_NEARESTMIPMAP, FALSE );
- g_object_set_data( G_OBJECT( window ), "menu_view_nearestmipmap", item );
- item = create_radio_menu_item_with_mnemonic( menu_in_menu, item, _( "_Linear" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_VIEW_LINEAR, FALSE );
- g_object_set_data( G_OBJECT( window ), "menu_view_linear", item );
- item = create_radio_menu_item_with_mnemonic( menu_in_menu, item, _( "_Bilinear" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_VIEW_BILINEAR, FALSE );
- g_object_set_data( G_OBJECT( window ), "menu_view_bilinear", item );
- item = create_radio_menu_item_with_mnemonic( menu_in_menu, item, _( "B_ilinear Mipmap" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_VIEW_BILINEARMIPMAP, FALSE );
- g_object_set_data( G_OBJECT( window ), "menu_view_bilinearmipmap", item );
- item = create_radio_menu_item_with_mnemonic( menu_in_menu, item, _( "T_rilinear" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_VIEW_TRILINEAR, FALSE );
- g_object_set_data( G_OBJECT( window ), "menu_view_trilinear", item );
- create_menu_item_with_mnemonic( menu, _( "Find / Replace..." ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_TEXTURE_REPLACEALL );
-
- menu_in_menu = create_menu_in_menu_with_mnemonic( menu, _( "Texture Lock" ) );
- item = create_check_menu_item_with_mnemonic( menu_in_menu, _( "Moves" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_TOGGLE_LOCK, TRUE );
- g_object_set_data( G_OBJECT( window ), "menu_toggle_lock", item );
- item = create_check_menu_item_with_mnemonic( menu_in_menu, _( "Rotations" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_TOGGLE_ROTATELOCK, TRUE );
- g_object_set_data( G_OBJECT( window ), "menu_toggle_rotatelock", item );
- menu_in_menu = create_menu_in_menu_with_mnemonic( menu, _( "Texture Window Scale" ) );
- item = create_radio_menu_item_with_mnemonic( menu_in_menu, NULL, _( "200%" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_TEXTURES_TEXTUREWINDOWSCALE_200, FALSE );
- g_object_set_data( G_OBJECT( window ), "menu_textures_texturewindowscale_200", item );
- item = create_radio_menu_item_with_mnemonic( menu_in_menu, item, _( "100%" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_TEXTURES_TEXTUREWINDOWSCALE_100, FALSE );
- g_object_set_data( G_OBJECT( window ), "menu_textures_texturewindowscale_100", item );
- item = create_radio_menu_item_with_mnemonic( menu_in_menu, item, _( "50%" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_TEXTURES_TEXTUREWINDOWSCALE_50, FALSE );
- g_object_set_data( G_OBJECT( window ), "menu_textures_texturewindowscale_50", item );
- item = create_radio_menu_item_with_mnemonic( menu_in_menu, item, _( "25%" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_TEXTURES_TEXTUREWINDOWSCALE_25, FALSE );
- g_object_set_data( G_OBJECT( window ), "menu_textures_texturewindowscale_25", item );
- item = create_radio_menu_item_with_mnemonic( menu_in_menu, item, _( "10%" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_TEXTURES_TEXTUREWINDOWSCALE_10, FALSE );
- g_object_set_data( G_OBJECT( window ), "menu_textures_texturewindowscale_10", item );
- item = menu_separator( menu );
- item = create_check_menu_item_with_mnemonic( menu, _( "shaderlist.txt only" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_TEXTURES_SHADERLISTONLY, FALSE );
- g_object_set_data( G_OBJECT( window ), "menu_textures_shaderlistonly", item );
- item = menu_separator( menu );
- g_object_set_data( G_OBJECT( window ), "menu_textures_separator", item );
- g_object_set_data( G_OBJECT( window ), "menu_textures", menu );
-
- // Misc menu
- menu = create_sub_menu_with_mnemonic( menu_bar, _( "_Misc" ) );
- if ( g_PrefsDlg.m_bDetachableMenus ) {
- menu_tearoff( menu );
- }
-
- create_menu_item_with_mnemonic( menu, _( "_Benchmark" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_MISC_BENCHMARK );
- menu_in_menu = create_menu_in_menu_with_mnemonic( menu, _( "Colors" ) );
- menu_3 = create_menu_in_menu_with_mnemonic( menu_in_menu, _( "Themes" ) );
- create_menu_item_with_mnemonic( menu_3, _( "QE4 Original" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_COLOR_SETORIGINAL );
- create_menu_item_with_mnemonic( menu_3, _( "Q3Radiant Original" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_COLOR_SETQER );
- create_menu_item_with_mnemonic( menu_3, _( "Black and Green" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_COLOR_SETBLACK );
- create_menu_item_with_mnemonic( menu_3, _( "Maya/Max/Lightwave Emulation" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_COLOR_SETYDNAR );
-
- menu_separator( menu_in_menu );
- create_menu_item_with_mnemonic( menu_in_menu, _( "_Texture Background..." ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_TEXTUREBK );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Grid Background..." ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_COLORS_XYBK );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Grid Major..." ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_COLORS_MAJOR );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Grid Minor..." ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_COLORS_MINOR );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Grid Major Small..." ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_COLORS_MAJOR_ALT );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Grid Minor Small..." ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_COLORS_MINOR_ALT );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Grid Text..." ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_COLORS_GRIDTEXT );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Grid Block..." ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_COLORS_GRIDBLOCK );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Default Brush..." ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_COLORS_BRUSH );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Camera Background..." ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_COLORS_CAMERABACK );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Selected Brush..." ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_COLORS_SELECTEDBRUSH );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Selected Brush (Camera)..." ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_COLORS_SELECTEDBRUSH3D );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Clipper..." ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_COLORS_CLIPPER );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Active View name..." ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_COLORS_VIEWNAME );
-
- create_menu_item_with_mnemonic( menu, _( "_Gamma..." ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_MISC_GAMMA );
- create_menu_item_with_mnemonic( menu, _( "Find brush..." ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_MISC_FINDBRUSH );
- item = create_menu_item_with_mnemonic( menu, _( "Next leak spot" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_MISC_NEXTLEAKSPOT );
- item = create_menu_item_with_mnemonic( menu, _( "Previous leak spot" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_MISC_PREVIOUSLEAKSPOT );
- create_menu_item_with_mnemonic( menu, _( "_Print XY View" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_MISC_PRINTXY );
- item = create_menu_item_with_mnemonic( menu, _( "_Select Entity Color..." ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_MISC_SELECTENTITYCOLOR );
- g_object_set_data( G_OBJECT( window ), "menu_misc_selectentitycolor", item );
-
- // Region menu
- menu = create_sub_menu_with_mnemonic( menu_bar, _( "_Region" ) );
- if ( g_PrefsDlg.m_bDetachableMenus ) {
- menu_tearoff( menu );
- }
-
- create_menu_item_with_mnemonic( menu, _( "_Off" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_REGION_OFF );
- create_menu_item_with_mnemonic( menu, _( "_Set XY" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_REGION_SETXY );
- create_menu_item_with_mnemonic( menu, _( "Set _Tall Brush" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_REGION_SETTALLBRUSH );
- create_menu_item_with_mnemonic( menu, _( "Set _Brush" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_REGION_SETBRUSH );
- create_menu_item_with_mnemonic( menu, _( "Set Se_lected Brushes" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_REGION_SETSELECTION );
-
- // Brush menu
- menu = create_sub_menu_with_mnemonic( menu_bar, _( "_Brush" ) );
- if ( g_PrefsDlg.m_bDetachableMenus ) {
- menu_tearoff( menu );
- }
-
- item = create_menu_item_with_mnemonic( menu, _( "3 sided" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_BRUSH_3SIDED );
- item = create_menu_item_with_mnemonic( menu, _( "4 sided" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_BRUSH_4SIDED );
- item = create_menu_item_with_mnemonic( menu, _( "5 sided" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_BRUSH_5SIDED );
- item = create_menu_item_with_mnemonic( menu, _( "6 sided" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_BRUSH_6SIDED );
- item = create_menu_item_with_mnemonic( menu, _( "7 sided" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_BRUSH_7SIDED );
- item = create_menu_item_with_mnemonic( menu, _( "8 sided" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_BRUSH_8SIDED );
- item = create_menu_item_with_mnemonic( menu, _( "9 sided" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_BRUSH_9SIDED );
- menu_separator( menu );
- create_menu_item_with_mnemonic( menu, _( "Arbitrary sided..." ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_BRUSH_ARBITRARYSIDED );
- menu_separator( menu );
- menu_in_menu = create_menu_in_menu_with_mnemonic( menu, _( "Primitives" ) );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Cone..." ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_BRUSH_MAKECONE );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Sphere..." ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_BRUSH_PRIMITIVES_SPHERE );
-
- // Curve menu
- if ( !g_pGameDescription->mNoPatch ) {
- menu = create_sub_menu_with_mnemonic( menu_bar, _( "_Curve" ) );
- if ( g_PrefsDlg.m_bDetachableMenus ) {
- menu_tearoff( menu );
- }
-
- create_menu_item_with_mnemonic( menu, _( "Cylinder" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_CURVE_PATCHTUBE );
- menu_in_menu = create_menu_in_menu_with_mnemonic( menu, _( "More Cylinders" ) );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Dense Cylinder" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_CURVE_PATCHDENSETUBE );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Very Dense Cylinder" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_CURVE_PATCHVERYDENSETUBE );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Square Cylinder" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_CURVE_PATCHSQUARE );
- menu_separator( menu );
- create_menu_item_with_mnemonic( menu, _( "End cap" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_CURVE_PATCHENDCAP );
- create_menu_item_with_mnemonic( menu, _( "Bevel" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_CURVE_PATCHBEVEL );
- menu_in_menu = create_menu_in_menu_with_mnemonic( menu, _( "More End caps, Bevels" ) );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Square Endcap" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_CURVE_MOREENDCAPSBEVELS_SQUAREBEVEL );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Square Bevel" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_CURVE_MOREENDCAPSBEVELS_SQUAREENDCAP );
- menu_separator( menu );
- create_menu_item_with_mnemonic( menu, _( "Cone" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_CURVE_PATCHCONE );
- item = create_menu_item_with_mnemonic( menu, _( "Sphere" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_CURVE_PRIMITIVES_SPHERE );
- gtk_widget_set_sensitive( item, FALSE );
- menu_separator( menu );
- item = create_menu_item_with_mnemonic( menu, _( "Simple Patch Mesh..." ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_CURVE_SIMPLEPATCHMESH );
- g_object_set_data( G_OBJECT( window ), "menu_simplepatchmesh", item );
- menu_separator( menu );
- menu_in_menu = create_menu_in_menu_with_mnemonic( menu, _( "Insert" ) );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Insert (2) Columns" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_CURVE_INSERT_INSERTCOLUMN );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Add (2) Columns" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_CURVE_INSERT_ADDCOLUMN );
- menu_separator( menu_in_menu );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Insert (2) Rows" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_CURVE_INSERT_INSERTROW );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Add (2) Rows" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_CURVE_INSERT_ADDROW );
- menu_in_menu = create_menu_in_menu_with_mnemonic( menu, _( "Delete" ) );
- create_menu_item_with_mnemonic( menu_in_menu, _( "First (2) Columns" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_CURVE_DELETE_FIRSTCOLUMN );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Last (2) Columns" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_CURVE_DELETE_LASTCOLUMN );
- menu_separator( menu_in_menu );
- create_menu_item_with_mnemonic( menu_in_menu, _( "First (2) Rows" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_CURVE_DELETE_FIRSTROW );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Last (2) Rows" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_CURVE_DELETE_LASTROW );
- menu_separator( menu );
- menu_in_menu = create_menu_in_menu_with_mnemonic( menu, _( "Matrix" ) );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Invert" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_CURVE_NEGATIVE );
- menu_3 = create_menu_in_menu_with_mnemonic( menu_in_menu, _( "Re-disperse" ) );
- create_menu_item_with_mnemonic( menu_3, _( "Rows" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_CURVE_REDISPERSE_ROWS );
- create_menu_item_with_mnemonic( menu_3, _( "Cols (Intermediate)" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_CURVE_REDISPERSE_INTERMEDIATE_COLS );
- create_menu_item_with_mnemonic( menu_3, _( "Rows (Intermediate)" ), GTK_SIGNAL_FUNC( HandleCommand ), ID_CURVE_REDISPERSE_INTERMEDIATE_ROWS );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Transpose" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_CURVE_MATRIX_TRANSPOSE );
- menu_separator( menu );
- create_menu_item_with_mnemonic( menu, _( "Cap Selection" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_CURVE_CAP );
- create_menu_item_with_mnemonic( menu, _( "Cycle Cap Texture" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_CURVE_CYCLECAP );
- menu_separator( menu );
- menu_in_menu = create_menu_in_menu_with_mnemonic( menu, _( "Overlay" ) );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Set" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_CURVE_OVERLAY_SET );
- create_menu_item_with_mnemonic( menu_in_menu, _( "Clear" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_CURVE_OVERLAY_CLEAR );
- menu_separator( menu );
- create_menu_item_with_mnemonic( menu, _( "Thicken..." ), GTK_SIGNAL_FUNC( HandleCommand ), ID_CURVE_THICKEN );
- }
- // Plugins menu
- menu = create_sub_menu_with_mnemonic( menu_bar, _( "_Plugins" ) );
- if ( g_PrefsDlg.m_bDetachableMenus ) {
- menu_tearoff( menu );
- }
-
- /*
- create_menu_item_with_mnemonic (menu, "Refresh", GTK_SIGNAL_FUNC (HandleCommand), ID_PLUGINS_REFRESH);
- */
- // NOTE: the seperator is used when doing a refresh of the list, everything past the seperator is removed
- item = menu_separator( menu );
- g_object_set_data( G_OBJECT( window ), "menu_plugin_separator", item );
- g_object_set_data( G_OBJECT( window ), "menu_plugin", menu );
-
- // Help menu
- menu = create_sub_menu_with_mnemonic( menu_bar, _( "_Help" ) );
- if ( g_PrefsDlg.m_bDetachableMenus ) {
- menu_tearoff( menu );
- }
-
- item = create_menu_item_with_mnemonic( menu, _( "Manual" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_HELP );
- gtk_widget_add_accelerator( item, "activate", accel, GDK_F1, (GdkModifierType)0, GTK_ACCEL_VISIBLE );
-
- // this creates all the per-game drop downs for the game pack helps
- // it will take care of hooking the Sys_OpenURL calls etc.
- create_game_help_menu( menu, accel );
-
- // TTimo: this is in global.xlink now
- //create_menu_item_with_mnemonic (menu, "Links",
- // GTK_SIGNAL_FUNC (HandleCommand), ID_HELP_LINKS);
- create_menu_item_with_mnemonic( menu, _( "Bug report" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_HELP_BUGREPORT );
- create_menu_item_with_mnemonic( menu, _( "Shortcuts list" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_HELP_COMMANDLIST );
- create_menu_item_with_mnemonic( menu, _( "_About" ),
- GTK_SIGNAL_FUNC( HandleCommand ), ID_HELP_ABOUT );
-
-
- // leo: Hidden menu to make the accelerators work,
- // this is a hack that needs to be changed later if someone has a better idea.
- // NOTE TTimo
- // maybe the better idea would be NOT to use any such accelerator scheme and do all key listening and interpret ourselves
- menu = create_sub_menu_with_mnemonic( menu_bar, "Hidden" );
- if ( g_PrefsDlg.m_bDetachableMenus ) {
- menu_tearoff( menu );
- }
-
- gtk_widget_hide( gtk_menu_get_attach_widget( GTK_MENU( menu ) ) );
-
- create_menu_item_with_mnemonic( menu, "BendMode", GTK_SIGNAL_FUNC( HandleCommand ), ID_PATCH_BEND );
- create_menu_item_with_mnemonic( menu, "FitTexture", GTK_SIGNAL_FUNC( HandleCommand ), IDC_BTN_FACEFIT );
- create_menu_item_with_mnemonic( menu, "ViewTextures", GTK_SIGNAL_FUNC( HandleCommand ), ID_VIEW_TEXTURE );
- create_menu_item_with_mnemonic( menu, "PatchInspector", GTK_SIGNAL_FUNC( HandleCommand ), ID_PATCH_INSPECTOR );
- create_menu_item_with_mnemonic( menu, "InvertCurveTextureX", GTK_SIGNAL_FUNC( HandleCommand ), ID_CURVE_NEGATIVETEXTUREY );
- create_menu_item_with_mnemonic( menu, "InvertCurveTextureY", GTK_SIGNAL_FUNC( HandleCommand ), ID_CURVE_NEGATIVETEXTUREX );
- create_menu_item_with_mnemonic( menu, "IncPatchColumn", GTK_SIGNAL_FUNC( HandleCommand ), ID_CURVE_INSERTCOLUMN );
- create_menu_item_with_mnemonic( menu, "IncPatchRow", GTK_SIGNAL_FUNC( HandleCommand ), ID_CURVE_INSERTROW );
- create_menu_item_with_mnemonic( menu, "DecPatchColumn", GTK_SIGNAL_FUNC( HandleCommand ), ID_CURVE_DELETECOLUMN );
- create_menu_item_with_mnemonic( menu, "DecPatchRow", GTK_SIGNAL_FUNC( HandleCommand ), ID_CURVE_DELETEROW );
- create_menu_item_with_mnemonic( menu, "Patch TAB", GTK_SIGNAL_FUNC( HandleCommand ), ID_PATCH_TAB );
- create_menu_item_with_mnemonic( menu, "Patch TAB", GTK_SIGNAL_FUNC( HandleCommand ), ID_PATCH_TAB );
- create_menu_item_with_mnemonic( menu, "SelectNudgeDown", GTK_SIGNAL_FUNC( HandleCommand ), ID_SELECTION_SELECT_NUDGEDOWN );
- create_menu_item_with_mnemonic( menu, "CameraForward", GTK_SIGNAL_FUNC( HandleCommand ), ID_CAMERA_FORWARD );
- create_menu_item_with_mnemonic( menu, "CameraBack", GTK_SIGNAL_FUNC( HandleCommand ), ID_CAMERA_BACK );
- create_menu_item_with_mnemonic( menu, "CameraLeft", GTK_SIGNAL_FUNC( HandleCommand ), ID_CAMERA_LEFT );
- create_menu_item_with_mnemonic( menu, "CameraRight", GTK_SIGNAL_FUNC( HandleCommand ), ID_CAMERA_RIGHT );
- create_menu_item_with_mnemonic( menu, "CameraUp", GTK_SIGNAL_FUNC( HandleCommand ), ID_CAMERA_UP );
- create_menu_item_with_mnemonic( menu, "CameraDown", GTK_SIGNAL_FUNC( HandleCommand ), ID_CAMERA_DOWN );
- create_menu_item_with_mnemonic( menu, "CameraAngleUp", GTK_SIGNAL_FUNC( HandleCommand ), ID_CAMERA_ANGLEUP );
- create_menu_item_with_mnemonic( menu, "CameraAngleDown", GTK_SIGNAL_FUNC( HandleCommand ), ID_CAMERA_ANGLEDOWN );
- create_menu_item_with_mnemonic( menu, "CameraStrafeRight", GTK_SIGNAL_FUNC( HandleCommand ), ID_CAMERA_STRAFERIGHT );
- create_menu_item_with_mnemonic( menu, "CameraStrafeLeft", GTK_SIGNAL_FUNC( HandleCommand ), ID_CAMERA_STRAFELEFT );
- create_menu_item_with_mnemonic( menu, "ToggleGrid", GTK_SIGNAL_FUNC( HandleCommand ), ID_GRID_TOGGLE );
- create_menu_item_with_mnemonic( menu, "ToggleCrosshairs", GTK_SIGNAL_FUNC( HandleCommand ), ID_VIEW_CROSSHAIR );
- create_menu_item_with_mnemonic( menu, "ToggleRealtime", GTK_SIGNAL_FUNC( HandleCommand ), ID_VIEW_CAMERAUPDATE );
- create_menu_item_with_mnemonic( menu, "MouseRotate", GTK_SIGNAL_FUNC( HandleCommand ), ID_SELECT_MOUSEROTATE );
- create_menu_item_with_mnemonic( menu, "TexRotateClock", GTK_SIGNAL_FUNC( HandleCommand ), ID_SELECTION_TEXTURE_ROTATECLOCK );
- create_menu_item_with_mnemonic( menu, "TexRotateCounter", GTK_SIGNAL_FUNC( HandleCommand ), ID_SELECTION_TEXTURE_ROTATECOUNTER );
- create_menu_item_with_mnemonic( menu, "TexScaleUp", GTK_SIGNAL_FUNC( HandleCommand ), ID_SELECTION_TEXTURE_SCALEUP );
- create_menu_item_with_mnemonic( menu, "TexScaleDown", GTK_SIGNAL_FUNC( HandleCommand ), ID_SELECTION_TEXTURE_SCALEDOWN );
- create_menu_item_with_mnemonic( menu, "TexShiftLeft", GTK_SIGNAL_FUNC( HandleCommand ), ID_SELECTION_TEXTURE_SHIFTLEFT );
- create_menu_item_with_mnemonic( menu, "TexShiftRight", GTK_SIGNAL_FUNC( HandleCommand ), ID_SELECTION_TEXTURE_SHIFTRIGHT );
- create_menu_item_with_mnemonic( menu, "TexShiftUp", GTK_SIGNAL_FUNC( HandleCommand ), ID_SELECTION_TEXTURE_SHIFTUP );
- create_menu_item_with_mnemonic( menu, "TexShiftDown", GTK_SIGNAL_FUNC( HandleCommand ), ID_SELECTION_TEXTURE_SHIFTDOWN );
- create_menu_item_with_mnemonic( menu, "GridDown", GTK_SIGNAL_FUNC( HandleCommand ), ID_GRID_PREV );
- create_menu_item_with_mnemonic( menu, "GridUp", GTK_SIGNAL_FUNC( HandleCommand ), ID_GRID_NEXT );
- create_menu_item_with_mnemonic( menu, "TexScaleLeft", GTK_SIGNAL_FUNC( HandleCommand ), ID_SELECTION_TEXTURE_SCALELEFT );
- create_menu_item_with_mnemonic( menu, "TexScaleRight", GTK_SIGNAL_FUNC( HandleCommand ), ID_SELECTION_TEXTURE_SCALERIGHT );
- create_menu_item_with_mnemonic( menu, "MoveSelectionDOWN", GTK_SIGNAL_FUNC( HandleCommand ), ID_SELECTION_MOVEDOWN );
- create_menu_item_with_mnemonic( menu, "MoveSelectionUP", GTK_SIGNAL_FUNC( HandleCommand ), ID_SELECTION_MOVEUP );
- create_menu_item_with_mnemonic( menu, "DumpSelectedBrush", GTK_SIGNAL_FUNC( HandleCommand ), ID_SELECTION_PRINT );
- create_menu_item_with_mnemonic( menu, "ToggleSizePaint", GTK_SIGNAL_FUNC( HandleCommand ), ID_SELECTION_TOGGLESIZEPAINT );
- create_menu_item_with_mnemonic( menu, "SelectNudgeLeft", GTK_SIGNAL_FUNC( HandleCommand ), ID_SELECTION_SELECT_NUDGELEFT );
- create_menu_item_with_mnemonic( menu, "SelectNudgeRight", GTK_SIGNAL_FUNC( HandleCommand ), ID_SELECTION_SELECT_NUDGERIGHT );
- create_menu_item_with_mnemonic( menu, "SelectNudgeUp", GTK_SIGNAL_FUNC( HandleCommand ), ID_SELECTION_SELECT_NUDGEUP );
- create_menu_item_with_mnemonic( menu, "NaturalizePatch", GTK_SIGNAL_FUNC( HandleCommand ), ID_PATCH_NATURALIZE );
- create_menu_item_with_mnemonic( menu, "SnapPatchToGrid", GTK_SIGNAL_FUNC( HandleCommand ), ID_SELECT_SNAPTOGRID );
- create_menu_item_with_mnemonic( menu, "SelectAllOfType", GTK_SIGNAL_FUNC( HandleCommand ), ID_SELECT_ALL );
- create_menu_item_with_mnemonic( menu, "CycleOutlineStyle", GTK_SIGNAL_FUNC( HandleCommand ), ID_SELECTION_OUTLINESTYLE );
- create_menu_item_with_mnemonic( menu, "TextureWindowScaleup", GTK_SIGNAL_FUNC( HandleCommand ), ID_TEXTUREWINDOW_SCALEUP );
- create_menu_item_with_mnemonic( menu, "TextureWindowScaledown", GTK_SIGNAL_FUNC( HandleCommand ), ID_TEXTUREWINDOW_SCALEDOWN );
-
- g_bIgnoreCommands--;
-}
-
-void MainFrame::create_main_toolbar( GtkWidget *window, GtkWidget *vbox ){
- GtkWidget *handle_box, *toolbar, *w;
-
- handle_box = gtk_handle_box_new();
- gtk_box_pack_start( GTK_BOX( vbox ), handle_box, FALSE, FALSE, 0 );
- gtk_widget_show( handle_box );
- g_object_set_data( G_OBJECT( window ), "tb_handle_box", handle_box );
-
- toolbar = gtk_toolbar_new();
- gtk_toolbar_set_orientation( GTK_TOOLBAR( toolbar ), GTK_ORIENTATION_HORIZONTAL );
- gtk_toolbar_set_style( GTK_TOOLBAR( toolbar ), GTK_TOOLBAR_ICONS );
- // gtk_toolbar_set_style (GTK_TOOLBAR (toolbar), user_rc.toolbar_style);
- gtk_container_add( GTK_CONTAINER( handle_box ), toolbar );
-
- gtk_widget_show( toolbar );
-
- w = gtk_toolbar_append_item( GTK_TOOLBAR( toolbar ), _( "Open" ), _( "Open an existing map" ), "",
- new_pixmap( window, "file_open.bmp" ), GTK_SIGNAL_FUNC( HandleCommand ),
- GINT_TO_POINTER( ID_FILE_OPEN ) );
- g_object_set_data( G_OBJECT( window ), "tb_file_open", w );
- w = gtk_toolbar_append_item( GTK_TOOLBAR( toolbar ), _( "Save" ), _( "Save the active map" ), "",
- new_pixmap( window, "file_save.bmp" ), GTK_SIGNAL_FUNC( HandleCommand ),
- GINT_TO_POINTER( ID_FILE_SAVE ) );
- g_object_set_data( G_OBJECT( window ), "tb_file_save", w );
- gtk_toolbar_append_space( GTK_TOOLBAR( toolbar ) );
- w = gtk_toolbar_append_item( GTK_TOOLBAR( toolbar ), "", _( "x-axis Flip" ), "",
- new_pixmap( window, "brush_flipx.bmp" ), GTK_SIGNAL_FUNC( HandleCommand ),
- GINT_TO_POINTER( ID_BRUSH_FLIPX ) );
- g_object_set_data( G_OBJECT( window ), "tb_brush_flipx", w );
- w = gtk_toolbar_append_item( GTK_TOOLBAR( toolbar ), "", _( "x-axis Rotate" ), "",
- new_pixmap( window, "brush_rotatex.bmp" ), GTK_SIGNAL_FUNC( HandleCommand ),
- GINT_TO_POINTER( ID_BRUSH_ROTATEX ) );
- g_object_set_data( G_OBJECT( window ), "tb_brush_rotatex", w );
- w = gtk_toolbar_append_item( GTK_TOOLBAR( toolbar ), "", _( "y-axis Flip" ), "",
- new_pixmap( window, "brush_flipy.bmp" ), GTK_SIGNAL_FUNC( HandleCommand ),
- GINT_TO_POINTER( ID_BRUSH_FLIPY ) );
- g_object_set_data( G_OBJECT( window ), "tb_brush_flipy", w );
- w = gtk_toolbar_append_item( GTK_TOOLBAR( toolbar ), "", _( "y-axis Rotate" ), "",
- new_pixmap( window, "brush_rotatey.bmp" ), GTK_SIGNAL_FUNC( HandleCommand ),
- GINT_TO_POINTER( ID_BRUSH_ROTATEY ) );
- g_object_set_data( G_OBJECT( window ), "tb_brush_rotatey", w );
- w = gtk_toolbar_append_item( GTK_TOOLBAR( toolbar ), "", _( "z-axis Flip" ), "",
- new_pixmap( window, "brush_flipz.bmp" ), GTK_SIGNAL_FUNC( HandleCommand ),
- GINT_TO_POINTER( ID_BRUSH_FLIPZ ) );
- g_object_set_data( G_OBJECT( window ), "tb_brush_flipz", w );
- w = gtk_toolbar_append_item( GTK_TOOLBAR( toolbar ), "", _( "z-axis Rotate" ), "",
- new_pixmap( window, "brush_rotatez.bmp" ), GTK_SIGNAL_FUNC( HandleCommand ),
- GINT_TO_POINTER( ID_BRUSH_ROTATEZ ) );
- g_object_set_data( G_OBJECT( window ), "tb_brush_rotatez", w );
- gtk_toolbar_append_space( GTK_TOOLBAR( toolbar ) );
-
- if ( g_PrefsDlg.m_bWideToolbar ) {
- w = gtk_toolbar_append_item( GTK_TOOLBAR( toolbar ), "", _( "Complete Tall" ), "",
- new_pixmap( window, "selection_selectcompletetall.bmp" ), GTK_SIGNAL_FUNC( HandleCommand ),
- GINT_TO_POINTER( ID_SELECTION_SELECTCOMPLETETALL ) );
- g_object_set_data( G_OBJECT( window ), "tb_selection_selectcompletetall", w );
- w = gtk_toolbar_append_item( GTK_TOOLBAR( toolbar ), "", _( "Select Touching" ), "",
- new_pixmap( window, "selection_selecttouching.bmp" ), GTK_SIGNAL_FUNC( HandleCommand ),
- GINT_TO_POINTER( ID_SELECTION_SELECTTOUCHING ) );
- g_object_set_data( G_OBJECT( window ), "tb_selection_selecttouching", w );
- w = gtk_toolbar_append_item( GTK_TOOLBAR( toolbar ), "", _( "Select Partial Tall" ), "",
- new_pixmap( window, "selection_selectpartialtall.bmp" ), GTK_SIGNAL_FUNC( HandleCommand ),
- GINT_TO_POINTER( ID_SELECTION_SELECTPARTIALTALL ) );
- g_object_set_data( G_OBJECT( window ), "tb_selection_selectpartialtall", w );
- w = gtk_toolbar_append_item( GTK_TOOLBAR( toolbar ), "", _( "Select Inside" ), "",
- new_pixmap( window, "selection_selectinside.bmp" ), GTK_SIGNAL_FUNC( HandleCommand ),
- GINT_TO_POINTER( ID_SELECTION_SELECTINSIDE ) );
- g_object_set_data( G_OBJECT( window ), "tb_selection_selectinside", w );
- }
- else
- {
- w = gtk_toolbar_append_item( GTK_TOOLBAR( toolbar ), "", _( "Selection" ), "",
- new_pixmap( window, "popup_selection.bmp" ), GTK_SIGNAL_FUNC( HandleCommand ),
- GINT_TO_POINTER( ID_POPUP_SELECTION ) );
- g_object_set_data( G_OBJECT( window ), "tb_popup_selection", w );
- }
- gtk_toolbar_append_space( GTK_TOOLBAR( toolbar ) );
-
- w = gtk_toolbar_append_item( GTK_TOOLBAR( toolbar ), "", _( "CSG Subtract" ), "",
- new_pixmap( window, "selection_csgsubtract.bmp" ),
- GTK_SIGNAL_FUNC( HandleCommand ), GINT_TO_POINTER( ID_SELECTION_CSGSUBTRACT ) );
- g_object_set_data( G_OBJECT( window ), "tb_selection_csgsubtract", w );
-
- if ( g_PrefsDlg.m_bWideToolbar ) {
- w = gtk_toolbar_append_item( GTK_TOOLBAR( toolbar ), "", _( "CSG Merge" ), "",
- new_pixmap( window, "selection_csgmerge.bmp" ),
- GTK_SIGNAL_FUNC( HandleCommand ), GINT_TO_POINTER( ID_SELECTION_CSGMERGE ) );
- g_object_set_data( G_OBJECT( window ), "tb_selection_csgmerge", w );
- }
-
- w = gtk_toolbar_append_item( GTK_TOOLBAR( toolbar ), "", _( "Hollow" ), "",
- new_pixmap( window, "selection_makehollow.bmp" ),
- GTK_SIGNAL_FUNC( HandleCommand ), GINT_TO_POINTER( ID_SELECTION_MAKEHOLLOW ) );
- g_object_set_data( G_OBJECT( window ), "tb_selection_makehollow", w );
-
- if ( g_PrefsDlg.m_bWideToolbar ) {
- w = gtk_toolbar_append_element( GTK_TOOLBAR( toolbar ), GTK_TOOLBAR_CHILD_TOGGLEBUTTON, NULL,
- "", _( "Clipper" ), "", new_pixmap( window, "view_clipper.bmp" ),
- GTK_SIGNAL_FUNC( HandleCommand ), GINT_TO_POINTER( ID_VIEW_CLIPPER ) );
- g_object_set_data( G_OBJECT( window ), "tb_view_clipper", w );
- }
-
- gtk_toolbar_append_space( GTK_TOOLBAR( toolbar ) );
-
- w = gtk_toolbar_append_item( GTK_TOOLBAR( toolbar ), "", _( "Change views" ), "",
- new_pixmap( window, "view_change.bmp" ), GTK_SIGNAL_FUNC( HandleCommand ),
- GINT_TO_POINTER( ID_VIEW_CHANGE ) );
- g_object_set_data( G_OBJECT( window ), "tb_view_change", w );
-
- if ( !g_PrefsDlg.m_bWideToolbar ) {
- gtk_toolbar_append_space( GTK_TOOLBAR( toolbar ) );
- }
-
- w = gtk_toolbar_append_item( GTK_TOOLBAR( toolbar ), "", _( "Texture view mode" ), "",
- new_pixmap( window, "textures_popup.bmp" ), GTK_SIGNAL_FUNC( HandleCommand ),
- GINT_TO_POINTER( ID_TEXTURES_POPUP ) );
- g_object_set_data( G_OBJECT( window ), "tb_textures_popup", w );
-
- if ( g_PrefsDlg.m_bWideToolbar ) {
- w = gtk_toolbar_append_element( GTK_TOOLBAR( toolbar ), GTK_TOOLBAR_CHILD_TOGGLEBUTTON, NULL,
- "", _( "Cubic clip the camera view" ), "",
- new_pixmap( window, "view_cubicclipping.bmp" ),
- GTK_SIGNAL_FUNC( HandleCommand ), GINT_TO_POINTER( ID_VIEW_CUBICCLIPPING ) );
- g_object_set_data( G_OBJECT( window ), "tb_view_cubicclipping", w );
- }
-
- gtk_toolbar_append_space( GTK_TOOLBAR( toolbar ) );
-
- if ( !g_PrefsDlg.m_bWideToolbar ) {
- w = gtk_toolbar_append_element( GTK_TOOLBAR( toolbar ), GTK_TOOLBAR_CHILD_TOGGLEBUTTON, NULL,
- "", _( "Camera preview" ), "", new_pixmap( window, "view_cameratoggle.bmp" ),
- GTK_SIGNAL_FUNC( HandleCommand ), GINT_TO_POINTER( ID_VIEW_CAMERATOGGLE ) );
- g_object_set_data( G_OBJECT( window ), "tb_view_cameratoggle", w );
- w = gtk_toolbar_append_item( GTK_TOOLBAR( toolbar ), "", "Update Camera", "",
- new_pixmap( window, "view_cameraupdate.bmp" ), GTK_SIGNAL_FUNC( HandleCommand ),
- GINT_TO_POINTER( ID_VIEW_CAMERAUPDATE ) );
- g_object_set_data( G_OBJECT( window ), "tb_view_cameraupdate", w );
- w = gtk_toolbar_append_element( GTK_TOOLBAR( toolbar ), GTK_TOOLBAR_CHILD_TOGGLEBUTTON, NULL,
- "", _( "Cubic clip the camera view" ), "",
- new_pixmap( window, "view_cubicclipping.bmp" ),
- GTK_SIGNAL_FUNC( HandleCommand ), GINT_TO_POINTER( ID_VIEW_CUBICCLIPPING ) );
- g_object_set_data( G_OBJECT( window ), "tb_view_cubicclipping", w );
- gtk_toolbar_append_space( GTK_TOOLBAR( toolbar ) );
- w = gtk_toolbar_append_element( GTK_TOOLBAR( toolbar ), GTK_TOOLBAR_CHILD_TOGGLEBUTTON, NULL,
- "", _( "Entity inspector" ), "", new_pixmap( window, "view_entity.bmp" ),
- GTK_SIGNAL_FUNC( HandleCommand ), GINT_TO_POINTER( ID_VIEW_ENTITY ) );
- g_object_set_data( G_OBJECT( window ), "tb_view_entity", w );
- gtk_toolbar_append_space( GTK_TOOLBAR( toolbar ) );
- w = gtk_toolbar_append_element( GTK_TOOLBAR( toolbar ), GTK_TOOLBAR_CHILD_TOGGLEBUTTON, NULL,
- "", _( "Clipper" ), "", new_pixmap( window, "view_clipper.bmp" ),
- GTK_SIGNAL_FUNC( HandleCommand ), GINT_TO_POINTER( ID_VIEW_CLIPPER ) );
- g_object_set_data( G_OBJECT( window ), "tb_view_clipper", w );
- gtk_toolbar_append_space( GTK_TOOLBAR( toolbar ) );
- }
-
- w = gtk_toolbar_append_element( GTK_TOOLBAR( toolbar ), GTK_TOOLBAR_CHILD_TOGGLEBUTTON, NULL,
- "", _( "Free Rotation" ), "", new_pixmap( window, "select_mouserotate.bmp" ),
- GTK_SIGNAL_FUNC( HandleCommand ), GINT_TO_POINTER( ID_SELECT_MOUSEROTATE ) );
- g_object_set_data( G_OBJECT( window ), "tb_select_mouserotate", w );
- gtk_toolbar_append_space( GTK_TOOLBAR( toolbar ) );
- w = gtk_toolbar_append_element( GTK_TOOLBAR( toolbar ), GTK_TOOLBAR_CHILD_TOGGLEBUTTON, NULL,
- "", _( "Free Scaling" ), "", new_pixmap( window, "select_mousescale.bmp" ),
- GTK_SIGNAL_FUNC( HandleCommand ), GINT_TO_POINTER( ID_SELECT_MOUSESCALE ) );
- g_object_set_data( G_OBJECT( window ), "tb_select_mousescale", w );
- w = gtk_toolbar_append_element( GTK_TOOLBAR( toolbar ), GTK_TOOLBAR_CHILD_TOGGLEBUTTON, NULL,
- "", _( "Scale X" ), "", new_pixmap( window, "scalelockx.bmp" ),
- GTK_SIGNAL_FUNC( HandleCommand ), GINT_TO_POINTER( ID_SCALELOCKX ) );
- g_object_set_data( G_OBJECT( window ), "tb_scalelockx", w );
- w = gtk_toolbar_append_element( GTK_TOOLBAR( toolbar ), GTK_TOOLBAR_CHILD_TOGGLEBUTTON, NULL,
- "", _( "Scale Y" ), "", new_pixmap( window, "scalelocky.bmp" ),
- GTK_SIGNAL_FUNC( HandleCommand ), GINT_TO_POINTER( ID_SCALELOCKY ) );
- g_object_set_data( G_OBJECT( window ), "tb_scalelocky", w );
- w = gtk_toolbar_append_element( GTK_TOOLBAR( toolbar ), GTK_TOOLBAR_CHILD_TOGGLEBUTTON, NULL,
- "", _( "Scale Z" ), "", new_pixmap( window, "scalelockz.bmp" ),
- GTK_SIGNAL_FUNC( HandleCommand ), GINT_TO_POINTER( ID_SCALELOCKZ ) );
- g_object_set_data( G_OBJECT( window ), "tb_scalelockz", w );
-
- if ( g_PrefsDlg.m_bWideToolbar ) {
- gtk_toolbar_append_space( GTK_TOOLBAR( toolbar ) );
- w = gtk_toolbar_append_element( GTK_TOOLBAR( toolbar ), GTK_TOOLBAR_CHILD_TOGGLEBUTTON, NULL,
- "", _( "Don't select model brushes" ), "",
- new_pixmap( window, "dontselectmodel.bmp" ), GTK_SIGNAL_FUNC( HandleCommand ),
- GINT_TO_POINTER( ID_DONTSELECTMODEL ) );
- gtk_toolbar_append_space( GTK_TOOLBAR( toolbar ) );
- g_object_set_data( G_OBJECT( window ), "tb_dontselectmodel", w );
-
- if ( !g_pGameDescription->mNoPatch ) {
- w = gtk_toolbar_append_element( GTK_TOOLBAR( toolbar ), GTK_TOOLBAR_CHILD_TOGGLEBUTTON, NULL,
- "", _( "Don't select curved brushes" ), "",
- new_pixmap( window, "dontselectcurve.bmp" ), GTK_SIGNAL_FUNC( HandleCommand ),
- GINT_TO_POINTER( ID_DONTSELECTCURVE ) );
- g_object_set_data( G_OBJECT( window ), "tb_dontselectcurve", w );
- }
- }
-
- // bug #292, patch toolbar option
- if ( g_PrefsDlg.m_bPatchToolbar ) {
- w = gtk_toolbar_append_element( GTK_TOOLBAR( toolbar ), GTK_TOOLBAR_CHILD_TOGGLEBUTTON, NULL,
- "", _( "Show patch bounding box" ), "",
- new_pixmap( window, "patch_showboundingbox.bmp" ),
- GTK_SIGNAL_FUNC( HandleCommand ), GINT_TO_POINTER( ID_PATCH_SHOWBOUNDINGBOX ) );
- g_object_set_data( G_OBJECT( window ), "tb_patch_showboundingbox", w );
- w = gtk_toolbar_append_element( GTK_TOOLBAR( toolbar ), GTK_TOOLBAR_CHILD_TOGGLEBUTTON, NULL,
- "", _( "Show patches as wireframes" ), "",
- new_pixmap( window, "patch_wireframe.bmp" ),
- GTK_SIGNAL_FUNC( HandleCommand ), GINT_TO_POINTER( ID_PATCH_WIREFRAME ) );
- g_object_set_data( G_OBJECT( window ), "tb_patch_wireframe", w );
- w = gtk_toolbar_append_element( GTK_TOOLBAR( toolbar ), GTK_TOOLBAR_CHILD_TOGGLEBUTTON, NULL,
- "", _( "Patch Bend mode" ), "",
- new_pixmap( window, "patch_bend.bmp" ), GTK_SIGNAL_FUNC( HandleCommand ),
- GINT_TO_POINTER( ID_PATCH_BEND ) );
- g_object_set_data( G_OBJECT( window ), "tb_patch_bend", w );
- w = gtk_toolbar_append_item( GTK_TOOLBAR( toolbar ), "", _( "Put caps on the current patch" ), "",
- new_pixmap( window, "curve_cap.bmp" ), GTK_SIGNAL_FUNC( HandleCommand ),
- GINT_TO_POINTER( ID_CURVE_CAP ) );
- g_object_set_data( G_OBJECT( window ), "tb_curve_cap", w );
- w = gtk_toolbar_append_element( GTK_TOOLBAR( toolbar ), GTK_TOOLBAR_CHILD_TOGGLEBUTTON, NULL,
- "", _( "Welds equal patch points during moves" ), "",
- new_pixmap( window, "patch_weld.bmp" ), GTK_SIGNAL_FUNC( HandleCommand ),
- GINT_TO_POINTER( ID_PATCH_WELD ) );
- g_object_set_data( G_OBJECT( window ), "tb_patch_weld", w );
- w = gtk_toolbar_append_element( GTK_TOOLBAR( toolbar ), GTK_TOOLBAR_CHILD_TOGGLEBUTTON, NULL,
- "", _( "Selects drill down rows and columns" ), "",
- new_pixmap( window, "patch_drilldown.bmp" ), GTK_SIGNAL_FUNC( HandleCommand ),
- GINT_TO_POINTER( ID_PATCH_DRILLDOWN ) );
- g_object_set_data( G_OBJECT( window ), "tb_patch_drilldown", w );
- }
-
- if ( g_PrefsDlg.m_bWideToolbar ) {
- gtk_toolbar_append_space( GTK_TOOLBAR( toolbar ) );
- w = gtk_toolbar_append_item( GTK_TOOLBAR( toolbar ), "", _( "Show Entities as" ), "",
- new_pixmap( window, "show_entities.bmp" ), GTK_SIGNAL_FUNC( HandleCommand ),
- GINT_TO_POINTER( ID_SHOW_ENTITIES ) );
- g_object_set_data( G_OBJECT( window ), "tb_show_entities", w );
- }
-
- /*
- uh? that is OLD
- #ifndef QUAKE3
- w = g_object_get_data (G_OBJECT (window), "tb_dontselectcurve");
- gtk_widget_hide (w);
- w = g_object_get_data (G_OBJECT (window), "tb_patch_showboundingbox");
- gtk_widget_hide (w);
- w = g_object_get_data (G_OBJECT (window), "tb_patch_weld");
- gtk_widget_hide (w);
- w = g_object_get_data (G_OBJECT (window), "tb_patch_wireframe");
- gtk_widget_hide (w);
- #endif
- */
-
- m_bCamPreview = true;
- g_nScaleHow = ( SCALE_X | SCALE_Y | SCALE_Z );
-}
-
-void MainFrame::create_plugin_toolbar( GtkWidget *window, GtkWidget *vbox ){
- GtkWidget *handle_box, *toolbar;
-
- handle_box = gtk_handle_box_new();
- gtk_box_pack_start( GTK_BOX( vbox ), handle_box, FALSE, FALSE, 0 );
- if ( g_PrefsDlg.m_bPluginToolbar ) {
- gtk_widget_show( handle_box );
- }
- g_object_set_data( G_OBJECT( window ), "tb_handle_box", handle_box );
-
- toolbar = gtk_toolbar_new();
- gtk_toolbar_set_orientation( GTK_TOOLBAR( toolbar ), GTK_ORIENTATION_HORIZONTAL );
- gtk_toolbar_set_style( GTK_TOOLBAR( toolbar ), GTK_TOOLBAR_ICONS );
- // gtk_toolbar_set_style (GTK_TOOLBAR (toolbar), user_rc.toolbar_style);
- gtk_container_add( GTK_CONTAINER( handle_box ), toolbar );
- g_object_set_data( G_OBJECT( window ), "toolbar_plugin", toolbar );
- gtk_widget_show( toolbar );
-}
-
-void MainFrame::create_main_statusbar( GtkWidget *window, GtkWidget *vbox ){
- GtkWidget *hbox, *hbox1;
- GtkWidget *frame;
- GtkWidget *label;
-
- hbox = gtk_hbox_new( FALSE, 0 );
- gtk_widget_show( hbox );
- gtk_widget_set_usize( hbox, -1, 24 );
- gtk_container_border_width( GTK_CONTAINER( hbox ), 1 );
- gtk_box_pack_end( GTK_BOX( vbox ), hbox, FALSE, TRUE, 2 );
-
- frame = gtk_frame_new( (char*)NULL );
- gtk_widget_show( frame );
- gtk_box_pack_start( GTK_BOX( hbox ), frame, TRUE, TRUE, 0 );
- gtk_frame_set_shadow_type( GTK_FRAME( frame ), GTK_SHADOW_IN );
-
- hbox1 = gtk_hbox_new( FALSE, 0 );
- gtk_container_add( GTK_CONTAINER( frame ), hbox1 );
- gtk_container_border_width( GTK_CONTAINER( hbox1 ), 0 );
- gtk_widget_show( hbox1 );
-
- label = gtk_label_new( _( " Label " ) );
- gtk_widget_show( label );
- gtk_box_pack_start( GTK_BOX( hbox1 ), label, FALSE, TRUE, 0 );
- gtk_label_set_justify( GTK_LABEL( label ), GTK_JUSTIFY_LEFT );
- gtk_misc_set_padding( GTK_MISC( label ), 3, 0 );
- m_pStatusLabel[0] = label;
-
- for ( int i = 1; i < 6; i++ )
- {
- frame = gtk_frame_new( (char*)NULL );
- gtk_widget_show( frame );
- gtk_box_pack_start( GTK_BOX( hbox ), frame, FALSE, TRUE, 0 );
- gtk_frame_set_shadow_type( GTK_FRAME( frame ), GTK_SHADOW_IN );
-
- label = gtk_label_new( _( " Label " ) );
- gtk_widget_show( label );
- gtk_container_add( GTK_CONTAINER( frame ), label );
- m_pStatusLabel[i] = label;
- }
-}
-
-guint s_idle_id;
-static gint mainframe_idle( gpointer user_data ){
- g_pParentWnd->RoutineProcessing();
- return TRUE;
-}
-
-static void Sys_Iconify( GtkWidget *w );
-static void Sys_Restore( GtkWidget *w );
-
-inline void CHECK_RESTORE( GtkWidget* w ){
- if ( g_object_get_data( G_OBJECT( w ), "was_mapped" ) != NULL ) {
- gtk_widget_show( w );
- }
-}
-
-
-// this is called when the window is restored from the iconified state
-static void mainframe_map( GtkWidget *widget ){
- if ( g_pParentWnd->IsSleeping() ) {
- g_pParentWnd->OnSleep();
- }
-
- if ( ( g_pParentWnd->CurrentStyle() == MainFrame::eFloating ) && ( widget == g_pParentWnd->m_pWidget ) ) {
- // restore previously visible windows
- CHECK_RESTORE( g_pParentWnd->GetCamWnd()->m_pParent );
- if ( g_PrefsDlg.m_bFloatingZ ) {
- CHECK_RESTORE( g_pParentWnd->GetZWnd()->m_pParent );
- }
- CHECK_RESTORE( g_pParentWnd->GetXYWnd()->m_pParent );
- CHECK_RESTORE( g_pParentWnd->GetXZWnd()->m_pParent );
- CHECK_RESTORE( g_pParentWnd->GetYZWnd()->m_pParent );
- CHECK_RESTORE( g_pGroupDlg->m_pWidget );
- }
-}
-
-inline void CHECK_MINIMIZE( GtkWidget* w ){
- g_object_set_data( G_OBJECT( w ), "was_mapped", (void*)( GTK_WIDGET_VISIBLE( w ) != 0 ) );
- gtk_widget_hide( w );
-}
-
-static void mainframe_unmap( GtkWidget *widget ){
-
- if ( ( g_pParentWnd->CurrentStyle() == MainFrame::eFloating ) && ( widget == g_pParentWnd->m_pWidget ) ) {
- // minimize all other windows when the main window is minimized
- CHECK_MINIMIZE( g_pParentWnd->GetCamWnd()->m_pParent );
- if ( g_PrefsDlg.m_bFloatingZ ) {
- CHECK_MINIMIZE( g_pParentWnd->GetZWnd()->m_pParent );
- }
- CHECK_MINIMIZE( g_pParentWnd->GetXYWnd()->m_pParent );
- CHECK_MINIMIZE( g_pParentWnd->GetXZWnd()->m_pParent );
- CHECK_MINIMIZE( g_pParentWnd->GetYZWnd()->m_pParent );
- CHECK_MINIMIZE( g_pGroupDlg->m_pWidget );
- }
-}
-
-static GtkWidget* create_floating( MainFrame* mainframe ){
- GtkWidget *wnd = gtk_window_new( GTK_WINDOW_TOPLEVEL );
- //workaround for a bug with set_transient_for in GTK - resulting behaviour is not perfect but better than the bug.
- //(see https://bugzilla.gnome.org/show_bug.cgi?id=658975 regarding the bug)
- if (mainframe->CurrentStyle() != MainFrame::eFloating)
- gtk_window_set_transient_for( GTK_WINDOW( wnd ), GTK_WINDOW( mainframe->m_pWidget ) );
- gtk_widget_set_events( wnd, GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK );
- gtk_signal_connect( GTK_OBJECT( wnd ), "delete_event", GTK_SIGNAL_FUNC( widget_delete_hide ), NULL );
- gtk_signal_connect( GTK_OBJECT( wnd ), "destroy", GTK_SIGNAL_FUNC( gtk_widget_destroy ), NULL );
- gtk_signal_connect( GTK_OBJECT( wnd ), "key_press_event",
- GTK_SIGNAL_FUNC( mainframe_keypress ), mainframe );
- gtk_signal_connect( GTK_OBJECT( wnd ), "key_release_event",
- GTK_SIGNAL_FUNC( mainframe_keyrelease ), mainframe );
- gtk_signal_connect( GTK_OBJECT( wnd ), "map_event",
- GTK_SIGNAL_FUNC( mainframe_map ), mainframe );
-
- gtk_window_set_default_size( GTK_WINDOW( wnd ), 100, 100 );
-
-#ifdef DBG_WINDOWPOS
- Sys_Printf( "create_floating: %p, gtk_window_set_default_size 100, 100\n", wnd );
-#endif
-
- return wnd;
-}
-
-void console_populate_popup( GtkTextView* textview, GtkMenu* menu, gpointer user_data ){
- menu_separator( GTK_WIDGET( menu ) );
-
- GtkWidget* item = gtk_menu_item_new_with_label( _( "Clear" ) );
- gtk_signal_connect( GTK_OBJECT( item ), "activate", GTK_SIGNAL_FUNC( Sys_ClearPrintf ), NULL );
- gtk_widget_show( item );
- gtk_menu_append( GTK_MENU( menu ), item );
-}
-
-void console_construct( GtkWidget* textview ){
- g_signal_connect( G_OBJECT( textview ), "populate-popup", G_CALLBACK( console_populate_popup ), NULL );
-}
-
-extern MemStream g_Clipboard;
-
-void Clipboard_CopyMap(){
- g_Clipboard.SetLength( 0 );
- Map_Export( &g_Clipboard, "xmap", false, true );
-}
-
-void Clipboard_PasteMap(){
- if ( g_Clipboard.GetLength() > 0 ) {
- g_Clipboard.Seek( 0, SEEK_SET );
- Map_Import( &g_Clipboard, "xmap", true );
- }
-}
-
-/*!
- Platform-independent GTK clipboard support.
- \todo Using GDK_SELECTION_CLIPBOARD fails on win32, so we use the win32 API directly for now.
- */
-#if defined ( __linux__ ) || defined ( __APPLE__ )
-
-enum
-{
- RADIANT_CLIPPINGS = 23,
-};
-
-static const GtkTargetEntry clipboard_targets[] = {
- { "RADIANT_CLIPPINGS", 0, RADIANT_CLIPPINGS, },
-};
-
-static void clipboard_get( GtkClipboard *clipboard, GtkSelectionData *selection_data, guint info, gpointer user_data_or_owner ){
- guchar *buffer;
- gint len;
- GdkAtom type = GDK_NONE;
-
- len = g_Clipboard.GetLength();
-
- if ( !len ) {
- buffer = NULL;
- }
- else
- {
- buffer = g_Clipboard.GetBuffer();
- }
-
- if ( info == clipboard_targets[0].info ) {
- type = gdk_atom_intern( clipboard_targets[0].target, FALSE );
- }
-
- gtk_selection_data_set( selection_data, type, 8, buffer, len );
-}
-
-static void clipboard_clear( GtkClipboard *clipboard, gpointer user_data_or_owner ){
-}
-
-static void clipboard_received( GtkClipboard *clipboard, GtkSelectionData *data, gpointer user_data ){
- g_Clipboard.SetLength( 0 );
-
- if ( data->length < 0 ) {
- Sys_FPrintf( SYS_ERR, "Error retrieving selection\n" );
- }
- else if ( strcmp( gdk_atom_name( data->type ), clipboard_targets[0].target ) == 0 ) {
- g_Clipboard.Write( data->data, data->length );
- }
-
- Clipboard_PasteMap();
-}
-
-void clipboard_copy(){
- Clipboard_CopyMap();
-
- GtkClipboard* clipboard = gtk_clipboard_get( GDK_SELECTION_CLIPBOARD );
-
- gtk_clipboard_set_with_data( clipboard, clipboard_targets, 1, clipboard_get, clipboard_clear, NULL );
-}
-
-void clipboard_paste(){
- GtkClipboard* clipboard = gtk_clipboard_get( GDK_SELECTION_CLIPBOARD );
-
- gtk_clipboard_request_contents( clipboard, gdk_atom_intern( clipboard_targets[0].target, FALSE ), clipboard_received, NULL );
-}
-
-
-#elif defined( WIN32 )
-
-void clipboard_copy(){
- Clipboard_CopyMap();
-
- bool bClipped = false;
- UINT nClipboard = ::RegisterClipboardFormat( "RadiantClippings" );
- if ( nClipboard > 0 ) {
- if ( ::OpenClipboard( NULL ) ) {
- EmptyClipboard();
- long lSize = g_Clipboard.GetLength();
- HANDLE h = ::GlobalAlloc( GMEM_ZEROINIT | GMEM_MOVEABLE | GMEM_DDESHARE, lSize + sizeof( long ) );
- if ( h != NULL ) {
- unsigned char *cp = reinterpret_cast<unsigned char*>( ::GlobalLock( h ) );
- memcpy( cp, &lSize, sizeof( long ) );
- cp += sizeof( long );
- g_Clipboard.Seek( 0, SEEK_SET );
- g_Clipboard.Read( cp, lSize );
- ::GlobalUnlock( h );
- ::SetClipboardData( nClipboard, h );
- ::CloseClipboard();
- bClipped = true;
- }
- }
- }
-
- if ( !bClipped ) {
- Sys_Printf( "Unable to register Windows clipboard formats, copy/paste between editors will not be possible\n" );
- }
-}
-
-void clipboard_paste(){
- bool bPasted = false;
- UINT nClipboard = ::RegisterClipboardFormat( "RadiantClippings" );
- if ( nClipboard > 0 && ::OpenClipboard( NULL ) ) {
- if ( IsClipboardFormatAvailable( nClipboard ) ) {
- HANDLE h = ::GetClipboardData( nClipboard );
- if ( h ) {
- g_Clipboard.SetLength( 0 );
- unsigned char *cp = reinterpret_cast<unsigned char*>( ::GlobalLock( h ) );
- long lSize = 0;
- memcpy( &lSize, cp, sizeof( long ) );
- cp += sizeof( long );
- g_Clipboard.Write( cp, lSize );
- ::GlobalUnlock( h );
- }
- }
- ::CloseClipboard();
- }
-
- Clipboard_PasteMap();
-}
-
-#endif
-
-void MainFrame::Copy(){
- clipboard_copy();
-}
-
-void MainFrame::Paste(){
- clipboard_paste();
- UpdateSurfaceDialog();
-}
-
-
-#ifdef DBG_WINDOWPOS
-GtkWidget *watchit = NULL;
-
-void CheckWatchit( char *msg ){
- static int width = 0;
- if ( ( watchit != NULL ) && ( watchit->allocation.width != width ) ) {
- Sys_Printf( "CheckWatchit %s: %d\n", msg, watchit->allocation.width );
- width = watchit->allocation.width;
- }
-}
-#endif
-
-#ifdef _WIN32
-BOOL CALLBACK m_pCountMonitor( HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonitor, LPARAM dwData ){
- int *n = (int *) dwData;
-
- ( *n )++;
-
- return TRUE;
-}
-
-struct monitorInfo_s {
- GdkRectangle *win_monitors;
- int i_win_mon;
-};
-
-BOOL CALLBACK m_pEnumMonitor( HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonitor, LPARAM dwData ){
- monitorInfo_s *monitorInfo = (monitorInfo_s *) dwData;
- GdkRectangle *monitor;
- MONITORINFOEX lpmi;
-
- monitor = monitorInfo->win_monitors + monitorInfo->i_win_mon;
-
- memset( &lpmi, 0, sizeof( MONITORINFOEX ) );
- lpmi.cbSize = sizeof( MONITORINFOEX );
-
- GetMonitorInfo( hMonitor, &lpmi );
-
- if ( lpmi.dwFlags & MONITORINFOF_PRIMARY ) {
- RECT rect;
-
- SystemParametersInfo( SPI_GETWORKAREA, 0, &rect, 0 );
- monitor->x = rect.left;
- monitor->y = rect.top;
- monitor->width = rect.right - rect.left;
- monitor->height = rect.bottom - rect.top;
-
- if ( monitorInfo->i_win_mon != 0 ) {
- GdkRectangle temp = *monitor;
- *monitor = monitorInfo->win_monitors[0];
- monitorInfo->win_monitors[0] = temp;
- }
- }
- else {
- monitor->x = lpmi.rcMonitor.left;
- monitor->y = lpmi.rcMonitor.top;
- monitor->width = lpmi.rcMonitor.right - lpmi.rcMonitor.left;
- monitor->height = lpmi.rcMonitor.bottom - lpmi.rcMonitor.top;
- }
-
- monitorInfo->i_win_mon++;
-
- return TRUE;
-}
-
-void PositionWindowOnPrimaryScreen( window_position_t& position ){
- const GdkRectangle primaryMonitorRect = g_pParentWnd->GetPrimaryMonitorRect();
-
- if ( position.x <= primaryMonitorRect.x + 6 ) {
- position.x = primaryMonitorRect.x + 6;
- }
- else if ( position.x >= ( primaryMonitorRect.x + primaryMonitorRect.width ) - 6 ) {
- position.x = primaryMonitorRect.x + 6;
- }
-
- if ( position.y <= primaryMonitorRect.y + 6 ) {
- position.y = primaryMonitorRect.y + 6;
- }
- else if ( position.y >= ( primaryMonitorRect.y + primaryMonitorRect.height ) - 6 ) {
- position.y = primaryMonitorRect.y + 6;
- }
-
- if ( position.x + position.w >= ( primaryMonitorRect.x + primaryMonitorRect.width ) - 18 ) {
- position.w = primaryMonitorRect.width - 18;
- }
- if ( position.y + position.h >= ( primaryMonitorRect.y + primaryMonitorRect.height ) - 18 ) {
- position.h = primaryMonitorRect.height - 18;
- }
-}
-#endif
-
-GtkWidget* create_framed_widget( GtkWidget* widget ){
- GtkWidget* frame = gtk_frame_new( (char*)NULL );
- gtk_widget_show( frame );
- gtk_frame_set_shadow_type( GTK_FRAME( frame ), GTK_SHADOW_IN );
- gtk_container_add( GTK_CONTAINER( frame ), widget );
- gtk_widget_show( widget );
- return frame;
-}
-
-gboolean entry_focus_in( GtkWidget *widget, GdkEventFocus *event, gpointer user_data ){
- gtk_window_remove_accel_group( GTK_WINDOW( g_pParentWnd->m_pWidget ), global_accel );
- return FALSE;
-}
-
-gboolean entry_focus_out( GtkWidget *widget, GdkEventFocus *event, gpointer user_data ){
- gtk_window_add_accel_group( GTK_WINDOW( g_pParentWnd->m_pWidget ), global_accel );
- return FALSE;
-}
-
-GtkWidget* create_framed_texwnd( TexWnd* texwnd ){
- GtkWidget* frame = gtk_frame_new( (char*)NULL );
- gtk_widget_show( frame );
- gtk_frame_set_shadow_type( GTK_FRAME( frame ), GTK_SHADOW_IN );
-
- GtkWidget* hbox = gtk_hbox_new( FALSE, 0 );
- gtk_widget_show( hbox );
- gtk_container_add( GTK_CONTAINER( frame ), hbox );
-
- GtkWidget* w = gtk_vscrollbar_new( GTK_ADJUSTMENT( gtk_adjustment_new( 0,0,0,1,1,1 ) ) );
- gtk_widget_show( w );
- gtk_box_pack_end( GTK_BOX( hbox ), w, FALSE, TRUE, 0 );
- g_qeglobals_gui.d_texture_scroll = w;
-
- GtkWidget* texbox = gtk_vbox_new( FALSE, 0 );
- gtk_widget_show( texbox );
- gtk_box_pack_start( GTK_BOX( hbox ), texbox, TRUE, TRUE, 0 );
-
- w = gtk_entry_new();
- gtk_box_pack_start( GTK_BOX( texbox ), w, FALSE, FALSE, 0 );
- texwnd->m_pFilter = w;
- g_signal_connect( G_OBJECT( w ), "focus_in_event", G_CALLBACK( entry_focus_in ), NULL );
- g_signal_connect( G_OBJECT( w ), "focus_out_event", G_CALLBACK( entry_focus_out ), NULL );
-
- w = texwnd->GetWidget();
- gtk_box_pack_start( GTK_BOX( texbox ), w, TRUE, TRUE, 0 );
- gtk_widget_show( w );
-
- return frame;
-}
-
-static ZWnd *create_floating_zwnd( MainFrame *mainframe ){
- ZWnd *pZWnd = new ZWnd();
- GtkWidget* wnd = create_floating( mainframe );
-
- gtk_window_set_title( GTK_WINDOW( wnd ), "Z" );
-
- pZWnd->m_pParent = wnd;
-
- {
- GtkWidget* frame = create_framed_widget( pZWnd->GetWidget() );
- gtk_container_add( GTK_CONTAINER( wnd ), frame );
- }
-
- gtk_widget_realize( wnd );
-
- // turn OFF minimize and maximize boxes.
- // Must be *after* realize, or wnd->window is NULL
- // should do the right thing on *nix, need to verify.
- gdk_window_set_decorations( wnd->window,
- GdkWMDecoration( GDK_DECOR_ALL | GDK_DECOR_MINIMIZE | GDK_DECOR_MAXIMIZE ) );
- //TODO 50 by observation, will vary depending on decoration sizes
- {
- GdkGeometry geometry;
- geometry.min_width = 50;
- //we only care about width, but have to set this too, or get nasty bugs
- geometry.min_height = 10;
- gdk_window_set_geometry_hints( wnd->window,&geometry,GDK_HINT_MIN_SIZE );
- }
-
-#ifdef _WIN32
- if ( g_PrefsDlg.m_bStartOnPrimMon ) {
- PositionWindowOnPrimaryScreen( g_PrefsDlg.mWindowInfo.posZWnd );
- }
-#endif
- load_window_pos( wnd, g_PrefsDlg.mWindowInfo.posZWnd );
-
- if ( g_PrefsDlg.m_bZVis ) {
- gtk_widget_show( wnd );
- }
-
- return pZWnd;
-}
-
-static const int gutter = 12;
-
-void MainFrame::Create(){
- GtkWidget* window = gtk_window_new( GTK_WINDOW_TOPLEVEL );
- m_pWidget = window;
- gtk_widget_set_events( window, GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK );
- gtk_signal_connect( GTK_OBJECT( window ), "delete_event",
- GTK_SIGNAL_FUNC( mainframe_delete ), this );
- gtk_signal_connect( GTK_OBJECT( window ), "destroy",
- GTK_SIGNAL_FUNC( mainframe_destroy ), this );
- gtk_signal_connect( GTK_OBJECT( window ), "key_press_event",
- GTK_SIGNAL_FUNC( mainframe_keypress ), this );
- gtk_signal_connect( GTK_OBJECT( window ), "key_release_event",
- GTK_SIGNAL_FUNC( mainframe_keyrelease ), this );
- gtk_signal_connect( GTK_OBJECT( window ), "map_event",
- GTK_SIGNAL_FUNC( mainframe_map ), this );
- gtk_signal_connect( GTK_OBJECT( window ), "unmap_event",
- GTK_SIGNAL_FUNC( mainframe_unmap ), this );
-
- g_qeglobals_gui.d_main_window = window;
-
-#ifdef _WIN32
- // calculate gdk offset
- int n_win_monitors = 0;
-
- monitorInfo_s monitorInfo;
-
- // detect multiple monitors
- EnumDisplayMonitors( NULL, NULL, m_pCountMonitor, reinterpret_cast<LPARAM>( &n_win_monitors ) );
-
- monitorInfo.win_monitors = new GdkRectangle [ n_win_monitors ];
- monitorInfo.i_win_mon = 0;
- EnumDisplayMonitors( NULL, NULL, m_pEnumMonitor, reinterpret_cast<LPARAM>( &monitorInfo ) );
-
- gdk_offset_x = G_MININT;
- gdk_offset_y = G_MININT;
-
- // calculate offset
- for ( monitorInfo.i_win_mon = 0; monitorInfo.i_win_mon < n_win_monitors; monitorInfo.i_win_mon++ ) {
- gdk_offset_x = MAX( gdk_offset_x, -monitorInfo.win_monitors[monitorInfo.i_win_mon].x );
- gdk_offset_y = MAX( gdk_offset_y, -monitorInfo.win_monitors[monitorInfo.i_win_mon].y );
- }
-
- Sys_Printf( "GDK's coordinate system is offset by %d over the x-axis and %d over the y-axis from Windows' coordinate system.\n", gdk_offset_x, gdk_offset_y );
-
- if ( g_PrefsDlg.m_bStartOnPrimMon ) {
- // get gdk monitors
- GdkDisplay *display;
- GdkScreen *screen;
- gint n_gdk_monitors = 0;
- gint i_mon;
- GdkRectangle rect;
-
- // detect multiple monitors
- display = gdk_display_get_default();
- Sys_Printf( "GDK detects that server %s manages %d screens\n", gdk_display_get_name( display ), gdk_display_get_n_screens( display ) );
-
- screen = gdk_display_get_screen( display, 1 );
- n_gdk_monitors = gdk_screen_get_n_monitors( screen );
-
- Sys_Printf( "GDK detects that screen 1 has %d monitors\n", n_gdk_monitors );
-
- for ( i_mon = 0; i_mon < n_gdk_monitors; i_mon++ ) {
- memset( &rect, 0, sizeof( rect ) );
- gdk_screen_get_monitor_geometry( screen, i_mon, &rect );
- Sys_Printf( " monitor %d: x: %d y: %d w: %d h: %d\n", i_mon, rect.x, rect.y, rect.width, rect.height );
-
- if ( i_mon == 0 ) {
- memcpy( &primaryMonitorRect, &rect, sizeof( primaryMonitorRect ) );
- }
- }
-
- PositionWindowOnPrimaryScreen( g_PrefsDlg.mWindowInfo.position );
- }
- else {
- primaryMonitorRect.x = primaryMonitorRect.y = 0;
- primaryMonitorRect.width = gdk_screen_width();
- primaryMonitorRect.height = gdk_screen_height();
- }
-
-#endif
-
- load_window_pos( window, g_PrefsDlg.mWindowInfo.position );
-
- GtkWidget* vbox = gtk_vbox_new( FALSE, 0 );
- gtk_container_add( GTK_CONTAINER( window ), vbox );
- gtk_widget_show( vbox );
-
- create_main_menu( window, vbox );
- MRU_Load();
- create_main_toolbar( window, vbox );
- create_plugin_toolbar( window,vbox );
-
- m_nCurrentStyle = g_PrefsDlg.m_nView;
-
- g_pGroupDlg->Create();
- OnPluginsRefresh();
-
- CreateQEChildren();
-
- gtk_widget_show( window );
-
- // not needed on win32, it's in the .rc
-#ifndef _WIN32
- {
- GdkPixmap *pixmap;
- GdkBitmap *mask;
- load_pixmap( "icon.bmp", window, &pixmap, &mask );
- gdk_window_set_icon( window->window, NULL, pixmap, mask );
- }
-#endif
-
- if ( CurrentStyle() == eRegular || CurrentStyle() == eRegularLeft ) {
- {
- GtkWidget* vsplit = gtk_vpaned_new();
- m_pSplits[0] = vsplit;
- gtk_box_pack_start( GTK_BOX( vbox ), vsplit, TRUE, TRUE, 0 );
- gtk_widget_show( vsplit );
-
- {
- GtkWidget* hsplit = gtk_hpaned_new();
- m_pSplits[2] = hsplit;
- gtk_paned_add1( GTK_PANED( vsplit ), hsplit );
- gtk_widget_show( hsplit );
-
- {
- GtkWidget* hsplit2 = gtk_hpaned_new();
- m_pSplits[3] = hsplit2;
- gtk_paned_add2( GTK_PANED( hsplit ), hsplit2 );
- gtk_widget_show( hsplit2 );
-
- {
- GtkWidget* vsplit2 = gtk_vpaned_new();
- m_pSplits[1] = vsplit2;
- if ( CurrentStyle() == eRegular ) {
- gtk_paned_add2( GTK_PANED( hsplit2 ), vsplit2 );
- }
- else{
- gtk_paned_add1( GTK_PANED( hsplit ), vsplit2 );
- }
- gtk_widget_show( vsplit2 );
-
- // camera
- m_pCamWnd = new CamWnd();
- {
- GtkWidget* frame = create_framed_widget( m_pCamWnd->GetWidget() );
- gtk_paned_add1( GTK_PANED( vsplit2 ), frame );
- }
-
- // xy
- m_pXYWnd = new XYWnd();
- m_pXYWnd->SetViewType( XY );
- {
- GtkWidget* frame = create_framed_widget( m_pXYWnd->GetWidget() );
- gtk_paned_add1( GTK_PANED( hsplit2 ), frame );
- }
-
- // z
- m_pZWnd = new ZWnd();
- {
- GtkWidget* frame = create_framed_widget( m_pZWnd->GetWidget() );
- if ( CurrentStyle() == eRegular ) {
- gtk_paned_add1( GTK_PANED( hsplit ), frame );
- }
- else{
- gtk_paned_add2( GTK_PANED( hsplit2 ), frame );
- }
- }
-
- // textures
- m_pTexWnd = new TexWnd();
- {
- GtkWidget* frame = create_framed_texwnd( m_pTexWnd );
- gtk_paned_add2( GTK_PANED( vsplit2 ), frame );
- }
-
- // console
- {
- GtkWidget* scr = gtk_scrolled_window_new( NULL, NULL );
- gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW( scr ), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC );
- gtk_scrolled_window_set_shadow_type( GTK_SCROLLED_WINDOW( scr ), GTK_SHADOW_IN );
- gtk_widget_show( scr );
- gtk_paned_pack2( GTK_PANED( vsplit ), scr, FALSE, TRUE );
-
- {
- GtkWidget* text = gtk_text_view_new();
- gtk_widget_set_size_request( text, 0, -1 ); // allow shrinking
- gtk_text_view_set_wrap_mode( GTK_TEXT_VIEW( text ), GTK_WRAP_WORD );
- gtk_text_view_set_editable( GTK_TEXT_VIEW( text ), FALSE );
- gtk_container_add( GTK_CONTAINER( scr ), text );
- gtk_widget_show( text );
- g_qeglobals_gui.d_edit = text;
- }
- }
- }
- }
- }
- }
-
- gtk_paned_set_position( GTK_PANED( m_pSplits[0] ), g_PrefsDlg.mWindowInfo.nXYHeight + 28 );
-
- if ( CurrentStyle() == eRegular ) {
- gtk_paned_set_position( GTK_PANED( m_pSplits[2] ), g_PrefsDlg.mWindowInfo.nZWidth );
- gtk_paned_set_position( GTK_PANED( m_pSplits[3] ), g_PrefsDlg.mWindowInfo.nXYWidth );
- }
- else
- {
- gtk_paned_set_position( GTK_PANED( m_pSplits[2] ), g_PrefsDlg.mWindowInfo.nCamWidth );
- while ( gtk_events_pending() ) gtk_main_iteration();
- gtk_paned_set_position( GTK_PANED( m_pSplits[3] ), g_PrefsDlg.mWindowInfo.nXYWidth );
- }
-
- while ( gtk_events_pending() ) gtk_main_iteration();
-
- gtk_paned_set_position( GTK_PANED( m_pSplits[1] ), g_PrefsDlg.mWindowInfo.nCamHeight );
- }
- else if ( CurrentStyle() == eFloating ) {
- {
- GtkWidget* wnd = create_floating( this );
- gtk_window_set_title( GTK_WINDOW( wnd ), "Camera" );
-
-#ifdef _WIN32
- if ( g_PrefsDlg.m_bStartOnPrimMon ) {
- PositionWindowOnPrimaryScreen( g_PrefsDlg.mWindowInfo.posCamWnd );
- }
-#endif
- load_window_pos( wnd, g_PrefsDlg.mWindowInfo.posCamWnd );
-
- gtk_widget_show( wnd );
-
- m_pCamWnd = new CamWnd();
-
- {
- GtkWidget* frame = create_framed_widget( m_pCamWnd->GetWidget() );
- gtk_container_add( GTK_CONTAINER( wnd ), frame );
- }
-
- m_pCamWnd->m_pParent = wnd;
- }
-
- if ( g_PrefsDlg.m_bFloatingZ ) {
- m_pZWnd = create_floating_zwnd( this );
-
- {
- GtkWidget* wnd = create_floating( this );
- gtk_window_set_title( GTK_WINDOW( wnd ), "XY View" );
-
-#ifdef _WIN32
- if ( g_PrefsDlg.m_bStartOnPrimMon ) {
- PositionWindowOnPrimaryScreen( g_PrefsDlg.mWindowInfo.posXYWnd );
- }
-#endif
- load_window_pos( wnd, g_PrefsDlg.mWindowInfo.posXYWnd );
-
- m_pXYWnd = new XYWnd();
- m_pXYWnd->SetViewType( XY );
-
- {
- GtkWidget* frame = create_framed_widget( m_pXYWnd->GetWidget() );
- gtk_container_add( GTK_CONTAINER( wnd ), frame );
- }
-
- m_pXYWnd->m_pParent = wnd;
-
- gtk_widget_show( wnd );
- }
- }
- else
- {
- GtkWidget* wnd = create_floating( this );
- gtk_window_set_title( GTK_WINDOW( wnd ), "XY View" );
-
-#ifdef _WIN32
- if ( g_PrefsDlg.m_bStartOnPrimMon ) {
- PositionWindowOnPrimaryScreen( g_PrefsDlg.mWindowInfo.posXYWnd );
- }
-#endif
- load_window_pos( wnd, g_PrefsDlg.mWindowInfo.posXYWnd );
-
- m_pZWnd = new ZWnd();
- m_pZWnd->m_pParent = wnd;
-
- m_pXYWnd = new XYWnd();
- m_pXYWnd->SetViewType( XY );
- m_pXYWnd->m_pParent = wnd;
-
-
- {
- GtkWidget* hsplit = gtk_hpaned_new();
- m_pSplits[0] = hsplit;
- gtk_container_add( GTK_CONTAINER( wnd ), hsplit );
- gtk_widget_show( hsplit );
-
- {
- GtkWidget* frame = create_framed_widget( m_pZWnd->GetWidget() );
- gtk_paned_add1( GTK_PANED( hsplit ), frame );
- }
- {
- GtkWidget* frame = create_framed_widget( m_pXYWnd->GetWidget() );
- gtk_paned_add2( GTK_PANED( hsplit ), frame );
- }
- }
-
- gtk_widget_show( wnd );
-
- gtk_paned_set_position( GTK_PANED( m_pSplits[0] ), g_PrefsDlg.mWindowInfo.nZFloatWidth );
- }
-
- {
- GtkWidget* wnd = create_floating( this );
- gtk_window_set_title( GTK_WINDOW( wnd ), _( "XZ View" ) );
-
-#ifdef _WIN32
- if ( g_PrefsDlg.m_bStartOnPrimMon ) {
- PositionWindowOnPrimaryScreen( g_PrefsDlg.mWindowInfo.posXZWnd );
- }
-#endif
- load_window_pos( wnd, g_PrefsDlg.mWindowInfo.posXZWnd );
-
- m_pXZWnd = new XYWnd();
- m_pXZWnd->m_pParent = wnd;
- m_pXZWnd->SetViewType( XZ );
-
- {
- GtkWidget* frame = create_framed_widget( m_pXZWnd->GetWidget() );
- gtk_container_add( GTK_CONTAINER( wnd ), frame );
- }
-
- if ( g_PrefsDlg.m_bXZVis ) {
- gtk_widget_show( wnd );
- }
- }
-
- {
- GtkWidget* wnd = create_floating( this );
- gtk_window_set_title( GTK_WINDOW( wnd ), _( "YZ View" ) );
-
-#ifdef _WIN32
- if ( g_PrefsDlg.m_bStartOnPrimMon ) {
- PositionWindowOnPrimaryScreen( g_PrefsDlg.mWindowInfo.posYZWnd );
- }
-#endif
- load_window_pos( wnd, g_PrefsDlg.mWindowInfo.posYZWnd );
-
- m_pYZWnd = new XYWnd();
- m_pYZWnd->m_pParent = wnd;
- m_pYZWnd->SetViewType( YZ );
-
- {
- GtkWidget* frame = create_framed_widget( m_pYZWnd->GetWidget() );
- gtk_container_add( GTK_CONTAINER( wnd ), frame );
- }
-
- if ( g_PrefsDlg.m_bYZVis ) {
- gtk_widget_show( wnd );
- }
- }
-
- m_pTexWnd = new TexWnd();
- {
- GtkWidget* frame = create_framed_texwnd( m_pTexWnd );
- m_pTexWnd->m_pParent = g_pGroupDlg->m_pWidget;
-
- {
- GtkWidget* w = gtk_label_new( _( "Textures" ) );
- gtk_widget_show( w );
- gtk_notebook_insert_page( GTK_NOTEBOOK( g_pGroupDlg->m_pNotebook ), frame, w, 1 );
- }
- }
-
- g_pGroupDlg->Show();
- }
- else // 4 way
- {
- {
- GtkWidget* hsplit = gtk_hpaned_new();
- m_pSplits[0] = hsplit;
- gtk_box_pack_start( GTK_BOX( vbox ), hsplit, TRUE, TRUE, 0 );
- gtk_widget_show( hsplit );
-
- {
- GtkWidget* vsplit1 = gtk_vpaned_new();
- m_pSplits[1] = vsplit1;
- gtk_paned_add1( GTK_PANED( hsplit ), vsplit1 );
- gtk_widget_show( vsplit1 );
-
- {
- GtkWidget* vsplit2 = gtk_vpaned_new();
- m_pSplits[2] = vsplit2;
- gtk_paned_add2( GTK_PANED( hsplit ), vsplit2 );
- gtk_widget_show( vsplit2 );
-
- m_pCamWnd = new CamWnd();
- {
- GtkWidget* frame = create_framed_widget( m_pCamWnd->GetWidget() );
- gtk_paned_add1( GTK_PANED( vsplit1 ), frame );
- }
-
- m_pXYWnd = new XYWnd();
- m_pXYWnd->SetViewType( XY );
- {
- GtkWidget* frame = create_framed_widget( m_pXYWnd->GetWidget() );
- gtk_paned_add1( GTK_PANED( vsplit2 ), frame );
- }
-
- m_pYZWnd = new XYWnd();
- m_pYZWnd->SetViewType( YZ );
- {
- GtkWidget* frame = create_framed_widget( m_pYZWnd->GetWidget() );
- gtk_paned_add2( GTK_PANED( vsplit1 ), frame );
- }
-
- m_pXZWnd = new XYWnd();
- m_pXZWnd->SetViewType( XZ );
- {
- GtkWidget* frame = create_framed_widget( m_pXZWnd->GetWidget() );
- gtk_paned_add2( GTK_PANED( vsplit2 ), frame );
- }
- }
- }
- }
-
- // g_qeglobals_gui.d_edit = NULL;
-
- {
- m_pTexWnd = new TexWnd();
- GtkWidget* frame = create_framed_texwnd( m_pTexWnd );
-
- {
- GtkWidget* w = gtk_label_new( _( "Textures" ) );
- gtk_widget_show( w );
- gtk_notebook_insert_page( GTK_NOTEBOOK( g_pGroupDlg->m_pNotebook ), frame, w, 1 );
- }
- }
-
- m_pTexWnd->m_pParent = g_pGroupDlg->m_pWidget;
-// gtk_widget_realize (m_pTexWnd->GetWidget ());
- m_pZWnd = create_floating_zwnd( this );
-
- while ( gtk_events_pending() )
- gtk_main_iteration();
-
- {
- int x = GTK_PANED( m_pSplits[0] )->max_position / 2 - gutter;
- gtk_paned_set_position( GTK_PANED( m_pSplits[0] ), x );
- }
-
- {
- int y = GTK_PANED( m_pSplits[1] )->max_position / 2 - gutter;
- gtk_paned_set_position( GTK_PANED( m_pSplits[1] ), y );
- gtk_paned_set_position( GTK_PANED( m_pSplits[2] ), y );
- }
- }
-
- if ( g_PrefsDlg.mWindowInfo.nState & GDK_WINDOW_STATE_MAXIMIZED ) {
- gtk_window_maximize( GTK_WINDOW( window ) );
- }
-
- gtk_widget_show( window );
-
- Texture_Init();
-
- if ( m_pXYWnd ) { // this is always true?
- m_pXYWnd->SetActive( true );
- }
- m_bSplittersOK = true;
- Texture_SetMode( g_qeglobals.d_savedinfo.iTexMenu );
-
- g_pParentWnd->OnEntitiesSetViewAs( 0 );
-
-// m_wndTextureBar.Create (vbox);
- create_main_statusbar( window, vbox );
-
- LoadCommandMap();
- ShowMenuItemKeyBindings( window );
-
- if ( g_qeglobals_gui.d_edit != NULL ) {
- console_construct( g_qeglobals_gui.d_edit );
- }
-
- // bool load_last = FALSE;
-
- SetGridStatus();
- SetButtonMenuStates();
-
- // m_bShowShader and m_bTextureShaderlistOnly have a menu checkbox, update it now
- GtkWidget *item;
- g_bIgnoreCommands++;
- item = GTK_WIDGET( g_object_get_data( G_OBJECT( m_pWidget ), "menu_textures_shaders_show" ) );
- gtk_check_menu_item_set_active( GTK_CHECK_MENU_ITEM( item ), g_PrefsDlg.m_bShowShaders ? TRUE : FALSE );
- item = GTK_WIDGET( g_object_get_data( G_OBJECT( m_pWidget ), "menu_textures_shaderlistonly" ) );
- gtk_check_menu_item_set_active( GTK_CHECK_MENU_ITEM( item ), g_PrefsDlg.m_bTexturesShaderlistOnly ? TRUE : FALSE );
- g_bIgnoreCommands--;
-
-// if (g_PrefsDlg.m_bTextureBar)
-// gtk_widget_show (m_wndTextureBar.m_pWidget);
-
- SetActiveXY( m_pXYWnd );
-
- s_idle_id = gtk_timeout_add( 25, mainframe_idle, this );
-
- QGL_InitExtensions();
-
- if ( g_PrefsDlg.mLocalPrefs.mbEmpty ) {
- g_PrefsDlg.mLocalPrefs.mbEmpty = false;
- g_PrefsDlg.SavePrefs();
- }
-
- // remove the pid file
- remove( g_pidGameFile.GetBuffer() );
-
- Sys_Printf( "Entering message loop\n" );
-
- m_bDoLoop = true;
-
- m_nTimer = gtk_timeout_add( 1000, timer, this );
-}
-
-// =============================================================================
-// MainFrame class
-
-MainFrame::MainFrame(){
- m_bDoLoop = false;
- m_bSplittersOK = false;
- g_pParentWnd = this;
- m_pXYWnd = (XYWnd*)NULL;
- m_pCamWnd = NULL;
- m_pTexWnd = (TexWnd*)NULL;
- m_pZWnd = (ZWnd*)NULL;
- m_pYZWnd = (XYWnd*)NULL;
- m_pXZWnd = (XYWnd*)NULL;
- m_pActiveXY = (XYWnd*)NULL;
- m_bCamPreview = true;
- m_pWatchBSP = NULL;
- for ( int n = 0; n < 6; n++ )
- m_pStatusLabel[n] = NULL;
- m_bNeedStatusUpdate = false;
- m_nTimer = 0;
- m_bSleeping = false;
- Create();
-}
-
-MainFrame::~MainFrame(){
- while ( g_BSPFrontendCommands )
- {
- free( g_BSPFrontendCommands->data );
- g_BSPFrontendCommands = g_slist_remove( g_BSPFrontendCommands, g_BSPFrontendCommands->data );
- }
-}
-
-void MainFrame::ReleaseContexts(){
- if ( m_pXYWnd ) {
- m_pXYWnd->DestroyContext();
- }
- if ( m_pYZWnd ) {
- m_pYZWnd->DestroyContext();
- }
- if ( m_pXZWnd ) {
- m_pXZWnd->DestroyContext();
- }
- if ( m_pCamWnd ) {
- m_pCamWnd->DestroyContext();
- }
- if ( m_pTexWnd ) {
- m_pTexWnd->DestroyContext();
- }
- if ( m_pZWnd ) {
- m_pZWnd->DestroyContext();
- }
-}
-
-void MainFrame::CreateContexts(){
- if ( m_pCamWnd ) {
- m_pCamWnd->CreateContext();
- }
- if ( m_pXYWnd ) {
- m_pXYWnd->CreateContext();
- }
- if ( m_pYZWnd ) {
- m_pYZWnd->CreateContext();
- }
- if ( m_pXZWnd ) {
- m_pXZWnd->CreateContext();
- }
- if ( m_pTexWnd ) {
- m_pTexWnd->CreateContext();
- }
- if ( m_pZWnd ) {
- m_pZWnd->CreateContext();
- }
-}