X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=radiant%2Fmainframe.cpp;h=c9c39ac6ac74787437357913e72e3f19e6337b8d;hb=b85323ca88049904b00b284044ea1f048cc0d447;hp=f3e71af49ee5ce021295183da0f0a5fd366940ee;hpb=11c140ba5e462d14fc1708c60e099746d4c1fded;p=xonotic%2Fnetradiant.git diff --git a/radiant/mainframe.cpp b/radiant/mainframe.cpp index f3e71af4..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" ); @@ -1998,8 +2010,6 @@ 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, "Snap To Grid", "SnapToGrid" ); //create_menu_item_with_mnemonic( menu, "Pa_rent", "ParentSelection" ); menu_separator( menu ); create_menu_item_with_mnemonic( menu, "C_lear Selection", "UnSelectSelection" ); @@ -2185,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 ); { @@ -2362,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"); } @@ -2400,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(){ @@ -2416,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 ){ @@ -2456,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 ){ @@ -2924,42 +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 ); + } } - if ( g_Layout_enableFilterToolbar.m_value ) { - auto space = [&]() { - auto btn = gtk_separator_tool_item_new(); - gtk_widget_show(GTK_WIDGET(btn)); - gtk_container_add(GTK_CONTAINER(plugin_toolbar), GTK_WIDGET(btn)); - }; - - space(); - toolbar_append_toggle_button( plugin_toolbar, "World (ALT + 1)", "f-world.bmp", "FilterWorldBrushes" ); - toolbar_append_toggle_button( plugin_toolbar, "Details (CTRL + D)", "f-details.bmp", "FilterDetails" ); - toolbar_append_toggle_button( plugin_toolbar, "Structural (CTRL + SHIFT + D)", "f-structural.bmp", "FilterStructural" ); - toolbar_append_toggle_button( plugin_toolbar, "Patches (CTRL + P)", "patch_wireframe.png", "FilterPatches" ); - space(); - toolbar_append_toggle_button( plugin_toolbar, "Areaportals (ALT + 3)", "f-areaportal.bmp", "FilterAreaportals" ); - toolbar_append_toggle_button( plugin_toolbar, "Translucent (ALT + 4)", "f-translucent.bmp", "FilterTranslucent" ); - toolbar_append_toggle_button( plugin_toolbar, "Liquids (ALT + 5)", "f-liquids.bmp", "FilterLiquids" ); - toolbar_append_toggle_button( plugin_toolbar, "Caulk (ALT + 6)", "f-caulk.bmp", "FilterCaulk" ); - toolbar_append_toggle_button( plugin_toolbar, "Clips (ALT + 7)", "f-clip.bmp", "FilterClips" ); - toolbar_append_toggle_button( plugin_toolbar, "HintsSkips (CTRL + H)", "f-hint.bmp", "FilterHintsSkips" ); - //toolbar_append_toggle_button( plugin_toolbar, "Paths (ALT + 8)", "texture_lock.bmp", "FilterPaths" ); - space(); - toolbar_append_toggle_button( plugin_toolbar, "Entities (ALT + 2)", "f-entities.bmp", "FilterEntities" ); - toolbar_append_toggle_button( plugin_toolbar, "Lights (ALT + 0)", "lightinspector.png", "FilterLights" ); - toolbar_append_toggle_button( plugin_toolbar, "Models (SHIFT + M)", "f-models.bmp", "FilterModels" ); - toolbar_append_toggle_button( plugin_toolbar, "Triggers (CTRL + SHIFT + T)", "f-triggers.bmp", "FilterTriggers" ); - toolbar_append_toggle_button( plugin_toolbar, "Decals (SHIFT + D)", "f-decals.bmp", "FilterDecals" ); - space(); - toolbar_append_button( plugin_toolbar, "InvertFilters", "f-invert.bmp", "InvertFilters" ); - toolbar_append_button( plugin_toolbar, "ResetFilters", "f-reset.bmp", "ResetFilters" ); - } - 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); @@ -2994,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 ); @@ -3074,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 ); } @@ -3093,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 ); } @@ -3112,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 ); } @@ -3131,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 ); } @@ -3138,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(); @@ -3171,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 } } @@ -3399,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) ); @@ -3443,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) ); @@ -3465,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(); @@ -3520,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" @@ -3535,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 ) );