X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=radiant%2Fmainframe.cpp;h=c9c39ac6ac74787437357913e72e3f19e6337b8d;hb=b85323ca88049904b00b284044ea1f048cc0d447;hp=5a9f9be6d93a6f82ec2633b0b2d814d96270b3c4;hpb=e744bb6dadcd57fff460b7e6409ecd61bfe272c7;p=xonotic%2Fnetradiant.git diff --git a/radiant/mainframe.cpp b/radiant/mainframe.cpp index 5a9f9be6..c9c39ac6 100644 --- a/radiant/mainframe.cpp +++ b/radiant/mainframe.cpp @@ -100,6 +100,12 @@ #include "feedback.h" #include "referencecache.h" #include "texwindow.h" +#include "filterbar.h" + +#define GARUX_DISABLE_GTKTHEME +#ifndef GARUX_DISABLE_GTKTHEME +#include "gtktheme.h" +#endif struct layout_globals_t @@ -605,8 +611,10 @@ ui::Window BuildDialog(){ PathsDialog g_PathsDialog; +bool g_strEnginePath_was_empty_1st_start = false; + void EnginePath_verify(){ - if ( !file_exists( g_strEnginePath.c_str() ) ) { + if ( !file_exists( g_strEnginePath.c_str() ) || g_strEnginePath_was_empty_1st_start ) { g_PathsDialog.Create(); g_PathsDialog.DoModal(); g_PathsDialog.Destroy(); @@ -1061,6 +1069,10 @@ ui::MenuItem create_colours_menu(){ create_menu_item_with_mnemonic( menu_3, "Black and Green", "ColorSchemeBlackAndGreen" ); create_menu_item_with_mnemonic( menu_3, "Maya/Max/Lightwave Emulation", "ColorSchemeYdnar" ); +#ifndef GARUX_DISABLE_GTKTHEME + create_menu_item_with_mnemonic( menu_in_menu, "GTK Theme...", "gtkThemeDlg" ); +#endif + menu_separator( menu_in_menu ); create_menu_item_with_mnemonic( menu_in_menu, "_Texture Background...", "ChooseTextureBackgroundColor" ); @@ -1937,6 +1949,7 @@ LatchedValue g_Layout_viewStyle( 0, "Window Layout" ); LatchedValue g_Layout_enableDetachableMenus( true, "Detachable Menus" ); LatchedValue g_Layout_enablePatchToolbar( true, "Patch Toolbar" ); LatchedValue g_Layout_enablePluginToolbar( true, "Plugin Toolbar" ); +LatchedValue g_Layout_enableFilterToolbar( true, "Filter Toolbar" ); ui::MenuItem create_file_menu(){ @@ -1965,15 +1978,16 @@ ui::MenuItem create_file_menu(){ create_menu_item_with_mnemonic( menu, "_Export selected...", "ExportSelected" ); menu_separator( menu ); create_menu_item_with_mnemonic( menu, "Save re_gion...", "SaveRegion" ); - menu_separator( menu ); - create_menu_item_with_mnemonic( menu, "_Refresh models", "RefreshReferences" ); - menu_separator( menu ); +// menu_separator( menu ); +// create_menu_item_with_mnemonic( menu, "_Refresh models", "RefreshReferences" ); +// menu_separator( menu ); create_menu_item_with_mnemonic( menu, "Pro_ject settings...", "ProjectSettings" ); menu_separator( menu ); create_menu_item_with_mnemonic( menu, "_Pointfile...", "TogglePointfile" ); menu_separator( menu ); MRU_constructMenu( menu ); menu_separator( menu ); +// create_menu_item_with_mnemonic( menu, "Check for NetRadiant update (web)", "CheckForUpdate" ); // FIXME create_menu_item_with_mnemonic( menu, "E_xit", "Exit" ); return file_menu_item; @@ -1996,19 +2010,21 @@ ui::MenuItem create_edit_menu(){ create_menu_item_with_mnemonic( menu, "_Duplicate", "CloneSelection" ); create_menu_item_with_mnemonic( menu, "Duplicate, make uni_que", "CloneSelectionAndMakeUnique" ); create_menu_item_with_mnemonic( menu, "D_elete", "DeleteSelection" ); - menu_separator( menu ); - create_menu_item_with_mnemonic( menu, "Pa_rent", "ParentSelection" ); + //create_menu_item_with_mnemonic( menu, "Pa_rent", "ParentSelection" ); menu_separator( menu ); create_menu_item_with_mnemonic( menu, "C_lear Selection", "UnSelectSelection" ); create_menu_item_with_mnemonic( menu, "_Invert Selection", "InvertSelection" ); create_menu_item_with_mnemonic( menu, "Select i_nside", "SelectInside" ); create_menu_item_with_mnemonic( menu, "Select _touching", "SelectTouching" ); - auto convert_menu = create_sub_menu_with_mnemonic( menu, "E_xpand Selection" ); - if ( g_Layout_enableDetachableMenus.m_value ) { - menu_tearoff( convert_menu ); - } - create_menu_item_with_mnemonic( convert_menu, "To Whole _Entities", "ExpandSelectionToEntities" ); + menu_separator( menu ); + +// auto convert_menu = create_sub_menu_with_mnemonic( menu, "E_xpand Selection" ); +// if ( g_Layout_enableDetachableMenus.m_value ) { +// menu_tearoff( convert_menu ); +// } + create_menu_item_with_mnemonic( menu, "Select All Of Type", "SelectAllOfType" ); + create_menu_item_with_mnemonic( menu, "_Expand Selection To Entities", "ExpandSelectionToEntities" ); menu_separator( menu ); create_menu_item_with_mnemonic( menu, "Pre_ferences...", "Preferences" ); @@ -2060,6 +2076,7 @@ ui::MenuItem create_view_menu( MainFrame::EViewStyle style ){ create_menu_item_with_mnemonic( menu, "Entity Inspector", "ViewEntityInfo" ); } create_menu_item_with_mnemonic( menu, "_Surface Inspector", "SurfaceInspector" ); + create_menu_item_with_mnemonic( menu, "_Patch Inspector", "PatchInspector" ); create_menu_item_with_mnemonic( menu, "Entity List", "EntityList" ); menu_separator( menu ); @@ -2095,6 +2112,8 @@ ui::MenuItem create_view_menu( MainFrame::EViewStyle style ){ menu_separator( orthographic_menu ); } + create_menu_item_with_mnemonic( orthographic_menu, "Center on Selected", "CenterXYView" ); + menu_separator( orthographic_menu ); create_menu_item_with_mnemonic( orthographic_menu, "_XY 100%", "Zoom100" ); create_menu_item_with_mnemonic( orthographic_menu, "XY Zoom _In", "ZoomIn" ); create_menu_item_with_mnemonic( orthographic_menu, "XY Zoom _Out", "ZoomOut" ); @@ -2107,6 +2126,12 @@ ui::MenuItem create_view_menu( MainFrame::EViewStyle style ){ if ( g_Layout_enableDetachableMenus.m_value ) { menu_tearoff( menu_in_menu ); } + create_menu_item_with_mnemonic( menu_in_menu, "Show Size Info", "ToggleSizePaint" ); + create_menu_item_with_mnemonic( menu_in_menu, "Show Crosshair", "ToggleCrosshairs" ); + create_menu_item_with_mnemonic( menu_in_menu, "Show Grid", "ToggleGrid" ); + + menu_separator( menu_in_menu ); + create_check_menu_item_with_mnemonic( menu_in_menu, "Show _Angles", "ShowAngles" ); create_check_menu_item_with_mnemonic( menu_in_menu, "Show _Names", "ShowNames" ); create_check_menu_item_with_mnemonic( menu_in_menu, "Show Blocks", "ShowBlocks" ); @@ -2126,12 +2151,14 @@ ui::MenuItem create_view_menu( MainFrame::EViewStyle style ){ } menu_separator( menu ); { - auto menu_in_menu = create_sub_menu_with_mnemonic( menu, "Hide/Show" ); - if ( g_Layout_enableDetachableMenus.m_value ) { - menu_tearoff( menu_in_menu ); - } - create_menu_item_with_mnemonic( menu_in_menu, "Hide Selected", "HideSelected" ); - create_menu_item_with_mnemonic( menu_in_menu, "Show Hidden", "ShowHidden" ); +// GtkMenu* menu_in_menu = create_sub_menu_with_mnemonic( menu, "Hide/Show" ); +// if ( g_Layout_enableDetachableMenus.m_value ) { +// menu_tearoff( menu_in_menu ); +// } +// create_menu_item_with_mnemonic( menu_in_menu, "Hide Selected", "HideSelected" ); +// create_menu_item_with_mnemonic( menu_in_menu, "Show Hidden", "ShowHidden" ); + create_menu_item_with_mnemonic( menu, "Hide Selected", "HideSelected" ); + create_menu_item_with_mnemonic( menu, "Show Hidden", "ShowHidden" ); } menu_separator( menu ); { @@ -2168,6 +2195,9 @@ ui::MenuItem create_selection_menu(){ create_check_menu_item_with_mnemonic( menu_in_menu, "_Faces", "DragFaces" ); } + menu_separator( menu ); + create_menu_item_with_mnemonic( menu, "Snap To Grid", "SnapToGrid" ); + menu_separator( menu ); { @@ -2306,7 +2336,7 @@ ui::MenuItem create_help_menu(){ menu_tearoff( menu ); } - create_menu_item_with_mnemonic( menu, "Manual", "OpenManual" ); +// create_menu_item_with_mnemonic( menu, "Manual", "OpenManual" ); // this creates all the per-game drop downs for the game pack helps // it will take care of hooking the Sys_OpenURL calls etc. @@ -2345,13 +2375,13 @@ void PatchInspector_registerShortcuts(){ } void Patch_registerShortcuts(){ - command_connect_accelerator( "InvertCurveTextureX" ); - command_connect_accelerator( "InvertCurveTextureY" ); - command_connect_accelerator( "PatchInsertInsertColumn" ); - command_connect_accelerator( "PatchInsertInsertRow" ); - command_connect_accelerator( "PatchDeleteLastColumn" ); - command_connect_accelerator( "PatchDeleteLastRow" ); - command_connect_accelerator( "NaturalizePatch" ); +// command_connect_accelerator( "InvertCurveTextureX" ); +// command_connect_accelerator( "InvertCurveTextureY" ); +// command_connect_accelerator( "PatchInsertInsertColumn" ); +// command_connect_accelerator( "PatchInsertInsertRow" ); +// command_connect_accelerator( "PatchDeleteLastColumn" ); +// command_connect_accelerator( "PatchDeleteLastRow" ); +// command_connect_accelerator( "NaturalizePatch" ); //command_connect_accelerator("CapCurrentCurve"); } @@ -2383,6 +2413,8 @@ void SelectNudge_registerShortcuts(){ //command_connect_accelerator("SelectNudgeRight"); //command_connect_accelerator("SelectNudgeUp"); //command_connect_accelerator("SelectNudgeDown"); + command_connect_accelerator( "UnSelectSelection2" ); + command_connect_accelerator( "DeleteSelection2" ); } void SnapToGrid_registerShortcuts(){ @@ -2399,17 +2431,17 @@ void SurfaceInspector_registerShortcuts(){ void register_shortcuts(){ - PatchInspector_registerShortcuts(); +// PatchInspector_registerShortcuts(); Patch_registerShortcuts(); Grid_registerShortcuts(); - XYWnd_registerShortcuts(); +// XYWnd_registerShortcuts(); CamWnd_registerShortcuts(); Manipulators_registerShortcuts(); SurfaceInspector_registerShortcuts(); TexdefNudge_registerShortcuts(); SelectNudge_registerShortcuts(); - SnapToGrid_registerShortcuts(); - SelectByType_registerShortcuts(); +// SnapToGrid_registerShortcuts(); +// SelectByType_registerShortcuts(); } void File_constructToolbar( ui::Toolbar toolbar ){ @@ -2439,8 +2471,8 @@ void Select_constructToolbar( ui::Toolbar toolbar ){ void CSG_constructToolbar( ui::Toolbar toolbar ){ toolbar_append_button( toolbar, "CSG Subtract (SHIFT + U)", "selection_csgsubtract.png", "CSGSubtract" ); toolbar_append_button( toolbar, "CSG Merge (CTRL + U)", "selection_csgmerge.png", "CSGMerge" ); - toolbar_append_button( toolbar, "Make Hollow", "selection_makehollow.png", "CSGMakeHollow" ); - toolbar_append_button( toolbar, "Make Room", "selection_makeroom.png", "CSGMakeRoom" ); + toolbar_append_button( toolbar, "Make Hollow", "selection_makehollow.png", "CSGHollow" ); + toolbar_append_button( toolbar, "Make Room", "selection_makeroom.png", "CSGRoom" ); } void ComponentModes_constructToolbar( ui::Toolbar toolbar ){ @@ -2907,11 +2939,29 @@ void MainFrame::Create(){ auto main_toolbar = create_main_toolbar( CurrentStyle() ); vbox.pack_start( main_toolbar, FALSE, FALSE, 0 ); - auto plugin_toolbar = create_plugin_toolbar(); - if ( !g_Layout_enablePluginToolbar.m_value ) { - plugin_toolbar.hide(); + if ( g_Layout_enablePluginToolbar.m_value || g_Layout_enableFilterToolbar.m_value ){ + auto PFbox = ui::HBox( FALSE, 3 ); + vbox.pack_start( PFbox, FALSE, FALSE, 0 ); + PFbox.show(); + if ( g_Layout_enablePluginToolbar.m_value ){ + auto plugin_toolbar = create_plugin_toolbar(); + if ( g_Layout_enableFilterToolbar.m_value ){ + PFbox.pack_start( plugin_toolbar, FALSE, FALSE, 0 ); + } + else{ + PFbox.pack_start( plugin_toolbar, TRUE, TRUE, 0 ); + } + } + if ( g_Layout_enableFilterToolbar.m_value ){ + ui::Toolbar filter_toolbar = create_filter_toolbar(); + PFbox.pack_start( filter_toolbar, TRUE, TRUE, 0 ); + } } - vbox.pack_start( plugin_toolbar, FALSE, FALSE, 0 ); + + /*GtkToolbar* plugin_toolbar = create_plugin_toolbar(); + if ( !g_Layout_enablePluginToolbar.m_value ) { + gtk_widget_hide( GTK_WIDGET( plugin_toolbar ) ); + }*/ ui::Widget main_statusbar = create_main_statusbar(reinterpret_cast(m_pStatusLabel)); vbox.pack_end(main_statusbar, FALSE, TRUE, 2); @@ -2946,42 +2996,41 @@ void MainFrame::Create(){ if ( CurrentStyle() == eRegular || CurrentStyle() == eRegularLeft ) { { - ui::Widget vsplit = ui::VPaned(ui::New); - m_vSplit = vsplit; - vbox.pack_start( vsplit, TRUE, TRUE, 0 ); - vsplit.show(); + ui::Widget hsplit = ui::HPaned(ui::New); + m_hSplit = hsplit; - // console - ui::Widget console_window = Console_constructWindow( window ); - gtk_paned_pack2( GTK_PANED( vsplit ), console_window, FALSE, TRUE ); + vbox.pack_start( hsplit, TRUE, TRUE, 0 ); + hsplit.show(); { - ui::Widget hsplit = ui::HPaned(ui::New); - hsplit.show(); - m_hSplit = hsplit; - gtk_paned_add1( GTK_PANED( vsplit ), hsplit ); + ui::Widget vsplit = ui::VPaned(ui::New); + vsplit.show(); + m_vSplit = vsplit; + + ui::Widget vsplit2 = ui::VPaned(ui::New); + vsplit2.show(); + m_vSplit2 = vsplit2; + + if ( CurrentStyle() == eRegular ){ + gtk_paned_add1( GTK_PANED( hsplit ), vsplit ); + gtk_paned_add2( GTK_PANED( hsplit ), vsplit2 ); + } + else{ + gtk_paned_add2( GTK_PANED( hsplit ), vsplit ); + gtk_paned_add1( GTK_PANED( hsplit ), vsplit2 ); + } + // console + ui::Widget console_window = Console_constructWindow( window ); + gtk_paned_pack2( GTK_PANED( vsplit ), console_window, FALSE, TRUE ); + // xy m_pXYWnd = new XYWnd(); m_pXYWnd->SetViewType( XY ); ui::Widget xy_window = ui::Widget(create_framed_widget( m_pXYWnd->GetWidget( ) )); + gtk_paned_add1( GTK_PANED( vsplit ), xy_window ); { - ui::Widget vsplit2 = ui::VPaned(ui::New); - vsplit2.show(); - m_vSplit2 = vsplit2; - - if ( CurrentStyle() == eRegular ) { - gtk_paned_add1( GTK_PANED( hsplit ), xy_window ); - gtk_paned_add2( GTK_PANED( hsplit ), vsplit2 ); - } - else - { - gtk_paned_add1( GTK_PANED( hsplit ), vsplit2 ); - gtk_paned_add2( GTK_PANED( hsplit ), xy_window ); - } - - // camera m_pCamWnd = NewCamWnd(); GlobalCamera_setCamWnd( *m_pCamWnd ); @@ -3026,6 +3075,11 @@ void MainFrame::Create(){ window.add(frame); } CamWnd_setParent( *m_pCamWnd, window ); +#define GARUX_GTK_WORKAROUND +#ifndef GARUX_GTK_WORKAROUND + /* workaround for gtk 2.24 issue: not displayed glwidget after toggle */ + g_object_set_data( G_OBJECT( window ), "glwidget", CamWnd_getWidget( *m_pCamWnd ) ); +#endif g_floating_windows.push_back( window ); } @@ -3045,6 +3099,10 @@ void MainFrame::Create(){ window.add(frame); } XY_Top_Shown_Construct( window ); +#ifndef GARUX_GTK_WORKAROUND + /* workaround for gtk 2.24 issue: not displayed glwidget after toggle */ + g_object_set_data( G_OBJECT( window ), "glwidget", m_pXYWnd->GetWidget() ); +#endif g_floating_windows.push_back( window ); } @@ -3064,6 +3122,10 @@ void MainFrame::Create(){ } XZ_Front_Shown_Construct( window ); +#ifndef GARUX_GTK_WORKAROUND + /* workaround for gtk 2.24 issue: not displayed glwidget after toggle */ + g_object_set_data( G_OBJECT( window ), "glwidget", m_pXZWnd->GetWidget() ); +#endif g_floating_windows.push_back( window ); } @@ -3083,6 +3145,10 @@ void MainFrame::Create(){ } YZ_Side_Shown_Construct( window ); +#ifndef GARUX_GTK_WORKAROUND + /* workaround for gtk 2.24 issue: not displayed glwidget after toggle */ + g_object_set_data( G_OBJECT( window ), "glwidget", m_pYZWnd->GetWidget() ); +#endif g_floating_windows.push_back( window ); } @@ -3090,6 +3156,11 @@ void MainFrame::Create(){ { auto frame = create_framed_widget( TextureBrowser_constructWindow( GroupDialog_getWindow() ) ); g_page_textures = GroupDialog_addPage( "Textures", frame, TextureBrowserExportTitleCaller() ); +#ifndef GARUX_GTK_WORKAROUND + /* workaround for gtk 2.24 issue: not displayed glwidget after toggle */ + g_object_set_data( G_OBJECT( GroupDialog_getWindow() ), "glwidget", TextureBrowser_getGLWidget() ); +#endif + } GroupDialog_show(); @@ -3123,6 +3194,10 @@ void MainFrame::Create(){ { auto frame = create_framed_widget( TextureBrowser_constructWindow( window ) ); g_page_textures = GroupDialog_addPage( "Textures", frame, TextureBrowserExportTitleCaller() ); +#ifndef GARUX_GTK_WORKAROUND + /* workaround for gtk 2.24 issue: not displayed glwidget after toggle */ + g_object_set_data( G_OBJECT( GroupDialog_getWindow() ), "glwidget", TextureBrowser_getGLWidget() ); +#endif } } @@ -3310,6 +3385,10 @@ void Layout_constructPreferences( PreferencesPage& page ){ "", "Plugin Toolbar", make_property( g_Layout_enablePluginToolbar ) ); + page.appendCheckBox( + "", "Filter Toolbar", + make_property( g_Layout_enableFilterToolbar ) + ); } void Layout_constructPage( PreferenceGroup& group ){ @@ -3347,9 +3426,13 @@ void MainFrame_Construct(){ GlobalCommands_insert( "PasteToCamera", makeCallbackF(PasteToCamera), Accelerator( 'V', (GdkModifierType)GDK_MOD1_MASK ) ); GlobalCommands_insert( "CloneSelection", makeCallbackF(Selection_Clone), Accelerator( GDK_KEY_space ) ); GlobalCommands_insert( "CloneSelectionAndMakeUnique", makeCallbackF(Selection_Clone_MakeUnique), Accelerator( GDK_KEY_space, (GdkModifierType)GDK_SHIFT_MASK ) ); - GlobalCommands_insert( "DeleteSelection", makeCallbackF(deleteSelection), Accelerator( GDK_KEY_BackSpace ) ); +// GlobalCommands_insert( "DeleteSelection", makeCallbackF(deleteSelection), Accelerator( GDK_KEY_BackSpace ) ); + GlobalCommands_insert( "DeleteSelection2", makeCallbackF(deleteSelection), Accelerator( GDK_KEY_BackSpace ) ); + GlobalCommands_insert( "DeleteSelection", makeCallbackF(deleteSelection), Accelerator( 'Z' ) ); GlobalCommands_insert( "ParentSelection", makeCallbackF(Scene_parentSelected) ); - GlobalCommands_insert( "UnSelectSelection", makeCallbackF(Selection_Deselect), Accelerator( GDK_KEY_Escape ) ); +// GlobalCommands_insert( "UnSelectSelection", makeCallbackF(Selection_Deselect), Accelerator( GDK_KEY_Escape ) ); + GlobalCommands_insert( "UnSelectSelection2", makeCallbackF(Selection_Deselect), Accelerator( GDK_KEY_Escape ) ); + GlobalCommands_insert( "UnSelectSelection", makeCallbackF(Selection_Deselect), Accelerator( 'C' ) ); GlobalCommands_insert( "InvertSelection", makeCallbackF(Select_Invert), Accelerator( 'I' ) ); GlobalCommands_insert( "SelectInside", makeCallbackF(Select_Inside) ); GlobalCommands_insert( "SelectTouching", makeCallbackF(Select_Touching) ); @@ -3391,6 +3474,9 @@ void MainFrame_Construct(){ GlobalToggles_insert( "MouseScale", makeCallbackF(ScaleMode), ToggleItem::AddCallbackCaller( g_scalemode_button ) ); GlobalToggles_insert( "MouseDrag", makeCallbackF(DragMode), ToggleItem::AddCallbackCaller( g_dragmode_button ), Accelerator( 'Q' ) ); +#ifndef GARUX_DISABLE_GTKTHEME + GlobalCommands_insert( "gtkThemeDlg", makeCallbackF(gtkThemeDlg) ); +#endif GlobalCommands_insert( "ColorSchemeOriginal", makeCallbackF(ColorScheme_Original) ); GlobalCommands_insert( "ColorSchemeQER", makeCallbackF(ColorScheme_QER) ); GlobalCommands_insert( "ColorSchemeBlackAndGreen", makeCallbackF(ColorScheme_Black) ); @@ -3413,8 +3499,8 @@ void MainFrame_Construct(){ GlobalCommands_insert( "CSGSubtract", makeCallbackF(CSG_Subtract), Accelerator( 'U', (GdkModifierType)GDK_SHIFT_MASK ) ); GlobalCommands_insert( "CSGMerge", makeCallbackF(CSG_Merge), Accelerator( 'U', (GdkModifierType) GDK_CONTROL_MASK ) ); - GlobalCommands_insert( "CSGMakeHollow", makeCallbackF(CSG_MakeHollow) ); - GlobalCommands_insert( "CSGMakeRoom", makeCallbackF(CSG_MakeRoom) ); + GlobalCommands_insert( "CSGHollow", makeCallbackF(CSG_MakeHollow) ); + GlobalCommands_insert( "CSGRoom", makeCallbackF(CSG_MakeRoom) ); Grid_registerCommands(); @@ -3450,6 +3536,7 @@ void MainFrame_Construct(){ GlobalPreferenceSystem().registerPreference( "DetachableMenus", make_property_string( g_Layout_enableDetachableMenus.m_latched ) ); GlobalPreferenceSystem().registerPreference( "PatchToolBar", make_property_string( g_Layout_enablePatchToolbar.m_latched ) ); GlobalPreferenceSystem().registerPreference( "PluginToolBar", make_property_string( g_Layout_enablePluginToolbar.m_latched ) ); + GlobalPreferenceSystem().registerPreference( "FilterToolBar", make_property_string( g_Layout_enableFilterToolbar.m_latched ) ); GlobalPreferenceSystem().registerPreference( "QE4StyleWindows", make_property_string( g_Layout_viewStyle.m_latched ) ); GlobalPreferenceSystem().registerPreference( "XYHeight", make_property_string( g_layout_globals.nXYHeight ) ); GlobalPreferenceSystem().registerPreference( "XYWidth", make_property_string( g_layout_globals.nXYWidth ) ); @@ -3467,7 +3554,10 @@ void MainFrame_Construct(){ GlobalPreferenceSystem().registerPreference( "YZWnd", make_property(g_posYZWnd) ); GlobalPreferenceSystem().registerPreference( "XZWnd", make_property(g_posXZWnd) ); + GlobalPreferenceSystem().registerPreference( "EnginePath", make_property_string( g_strEnginePath ) ); + if ( g_strEnginePath.empty() ) { + g_strEnginePath_was_empty_1st_start = true; const char* ENGINEPATH_ATTRIBUTE = #if GDEF_OS_WINDOWS "enginepath_win32" @@ -3482,10 +3572,9 @@ void MainFrame_Construct(){ StringOutputStream path( 256 ); path << DirectoryCleaned( g_pGameDescription->getRequiredKeyValue( ENGINEPATH_ATTRIBUTE ) ); g_strEnginePath = path.c_str(); + GlobalPreferenceSystem().registerPreference( "EnginePath", make_property_string( g_strEnginePath ) ); } - GlobalPreferenceSystem().registerPreference( "EnginePath", make_property_string( g_strEnginePath ) ); - GlobalPreferenceSystem().registerPreference( "DisableEnginePath", make_property_string( g_disableEnginePath ) ); GlobalPreferenceSystem().registerPreference( "DisableHomePath", make_property_string( g_disableHomePath ) ); @@ -3498,6 +3587,7 @@ void MainFrame_Construct(){ g_Layout_enableDetachableMenus.useLatched(); g_Layout_enablePatchToolbar.useLatched(); g_Layout_enablePluginToolbar.useLatched(); + g_Layout_enableFilterToolbar.useLatched(); Layout_registerPreferencesPage(); Paths_registerPreferencesPage();