]> git.xonotic.org Git - xonotic/netradiant.git/blobdiff - radiant/mainframe.cpp
Merge commit '6592d65469e5386216a692ba3b5d6e7cc590c617' into garux-merge
[xonotic/netradiant.git] / radiant / mainframe.cpp
index 208d8043b79a416b15cb1fa3dba8f78bd7d582c5..25983e110569bae9339b7ec8a3f8e2a63694eb54 100644 (file)
 #include "texwindow.h"
 #include "filterbar.h"
 
+#define GARUX_DISABLE_GTKTHEME
+#ifndef GARUX_DISABLE_GTKTHEME
+#include "gtktheme.h"
+#endif
+
 
 struct layout_globals_t
 {
@@ -1064,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" );
@@ -2001,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" );
@@ -2188,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 );
 
        {
@@ -2365,14 +2375,14 @@ void PatchInspector_registerShortcuts(){
 }
 
 void Patch_registerShortcuts(){
-//     command_connect_accelerator( "InvertCurveTextureX" );
-//     command_connect_accelerator( "InvertCurveTextureY" );
+       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");
+       command_connect_accelerator( "NaturalizePatch" );
+       command_connect_accelerator( "CapCurrentCurve");
 }
 
 void Manipulators_registerShortcuts(){
@@ -2477,7 +2487,7 @@ void Clipper_constructToolbar( ui::Toolbar toolbar ){
 }
 
 void XYWnd_constructToolbar( ui::Toolbar toolbar ){
-       toolbar_append_button( toolbar, "Change views", "view_change.png", "NextView" );
+       toolbar_append_button( toolbar, "Change views (CTRL + TAB)", "view_change.png", "NextView" );
 }
 
 void Manipulators_constructToolbar( ui::Toolbar toolbar ){
@@ -2524,7 +2534,7 @@ ui::Toolbar create_main_toolbar( MainFrame::EViewStyle style ){
 
        ComponentModes_constructToolbar( toolbar );
 
-       if ( style == MainFrame::eRegular || style == MainFrame::eRegularLeft || style == MainFrame::eFloating ) {
+       if ( style == MainFrame::eRegular || style == MainFrame::eRegularLeft ) {
                space();
 
                XYWnd_constructToolbar( toolbar );
@@ -2551,21 +2561,16 @@ ui::Toolbar create_main_toolbar( MainFrame::EViewStyle style ){
        space();
 
        /*auto g_view_entities_button =*/ toolbar_append_button( toolbar, "Entities (N)", "entities.png", "ToggleEntityInspector" );
-       auto g_view_console_button = toolbar_append_button( toolbar, "Console (O)", "console.png", "ToggleConsole" );
-       auto g_view_textures_button = toolbar_append_button( toolbar, "Texture Browser (T)", "texture_browser.png", "ToggleTextures" );
+       if ( style == MainFrame::eRegular || style == MainFrame::eRegularLeft ) {
+               auto g_view_console_button = toolbar_append_button( toolbar, "Console (O)", "console.png", "ToggleConsole" );
+               auto g_view_textures_button = toolbar_append_button( toolbar, "Texture Browser (T)", "texture_browser.png", "ToggleTextures" );
+       }
        // TODO: call light inspector
        //GtkButton* g_view_lightinspector_button = toolbar_append_button(toolbar, "Light Inspector", "lightinspector.png", "ToggleLightInspector");
 
        space();
        /*auto g_refresh_models_button =*/ toolbar_append_button( toolbar, "Refresh Models", "refresh_models.png", "RefreshReferences" );
 
-
-       // disable the console and texture button in the regular layouts
-       if ( style == MainFrame::eRegular || style == MainFrame::eRegularLeft ) {
-               gtk_widget_set_sensitive( g_view_console_button , FALSE );
-               gtk_widget_set_sensitive( g_view_textures_button , FALSE );
-       }
-
        return toolbar;
 }
 
@@ -2957,6 +2962,10 @@ void MainFrame::Create(){
        vbox.pack_end(main_statusbar, FALSE, TRUE, 2);
 
        GroupDialog_constructWindow( window );
+
+       /* want to realize it immediately; otherwise gtk paned splits positions wont be set correctly for floating group dlg */
+       gtk_widget_realize ( GTK_WIDGET( GroupDialog_getWindow() ) );
+
        g_page_entity = GroupDialog_addPage( "Entities", EntityInspector_constructWindow( GroupDialog_getWindow() ), RawStringExportCaller( "Entities" ) );
 
        if ( FloatingGroupDialog() ) {
@@ -2987,16 +2996,20 @@ void MainFrame::Create(){
        if ( CurrentStyle() == eRegular || CurrentStyle() == eRegularLeft ) {
                {
                        ui::Widget hsplit = ui::HPaned(ui::New);
-                       m_vSplit = hsplit;
+                       m_hSplit = hsplit;
+
                        vbox.pack_start( hsplit, TRUE, TRUE, 0 );
                        hsplit.show();
+
                        {
                                ui::Widget vsplit = ui::VPaned(ui::New);
                                vsplit.show();
                                m_vSplit = vsplit;
+
                                ui::Widget vsplit2 = ui::VPaned(ui::New);
                                vsplit2.show();
-                               m_vSplit = vsplit2;
+                               m_vSplit2 = vsplit2;
+
                                if ( CurrentStyle() == eRegular ){
                                        gtk_paned_add1( GTK_PANED( hsplit ), vsplit );
                                        gtk_paned_add2( GTK_PANED( hsplit ), vsplit2 );
@@ -3014,8 +3027,8 @@ void MainFrame::Create(){
                                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 );
+
                                {
                                        // camera
                                        m_pCamWnd = NewCamWnd();
@@ -3061,6 +3074,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 );
                }
@@ -3080,6 +3098,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 );
                }
@@ -3099,6 +3121,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 );
                }
@@ -3118,6 +3144,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 );
                }
@@ -3125,6 +3155,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();
@@ -3156,8 +3191,12 @@ void MainFrame::Create(){
                vbox.pack_start( split, TRUE, TRUE, 0 );
 
                {
-            auto frame = create_framed_widget( TextureBrowser_constructWindow( window ) );
+            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
                }
        }
 
@@ -3434,6 +3473,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) );