]> git.xonotic.org Git - xonotic/netradiant.git/blobdiff - radiant/mainframe.cpp
menus...
[xonotic/netradiant.git] / radiant / mainframe.cpp
index 0bb43da61d022752d524ed978b0e3f79d243572d..e7f951e87f35d47a554f404efbd981ae93d2b5d8 100644 (file)
@@ -720,8 +720,6 @@ void ColorScheme_Original(){
        g_xywindow_globals.color_gridback = Vector3( 1.0f, 1.0f, 1.0f );
        g_xywindow_globals.color_gridminor = Vector3( 0.75f, 0.75f, 0.75f );
        g_xywindow_globals.color_gridmajor = Vector3( 0.5f, 0.5f, 0.5f );
-       g_xywindow_globals.color_gridminor_alt = Vector3( 0.5f, 0.0f, 0.0f );
-       g_xywindow_globals.color_gridmajor_alt = Vector3( 1.0f, 0.0f, 0.0f );
        g_xywindow_globals.color_gridblock = Vector3( 0.0f, 0.0f, 1.0f );
        g_xywindow_globals.color_gridtext = Vector3( 0.0f, 0.0f, 0.0f );
        g_xywindow_globals.color_selbrushes = Vector3( 1.0f, 0.0f, 0.0f );
@@ -857,8 +855,6 @@ ChooseColour m_textureback;
 ChooseColour m_xyback;
 ChooseColour m_gridmajor;
 ChooseColour m_gridminor;
-ChooseColour m_gridmajor_alt;
-ChooseColour m_gridminor_alt;
 ChooseColour m_gridtext;
 ChooseColour m_gridblock;
 ChooseColour m_cameraback;
@@ -873,8 +869,6 @@ ColoursMenu() :
        m_xyback( ColourGetCaller( g_xywindow_globals.color_gridback ), ColourSetCaller( g_xywindow_globals.color_gridback ) ),
        m_gridmajor( ColourGetCaller( g_xywindow_globals.color_gridmajor ), ColourSetCaller( g_xywindow_globals.color_gridmajor ) ),
        m_gridminor( ColourGetCaller( g_xywindow_globals.color_gridminor ), ColourSetCaller( g_xywindow_globals.color_gridminor ) ),
-       m_gridmajor_alt( ColourGetCaller( g_xywindow_globals.color_gridmajor_alt ), ColourSetCaller( g_xywindow_globals.color_gridmajor_alt ) ),
-       m_gridminor_alt( ColourGetCaller( g_xywindow_globals.color_gridminor_alt ), ColourSetCaller( g_xywindow_globals.color_gridminor_alt ) ),
        m_gridtext( ColourGetCaller( g_xywindow_globals.color_gridtext ), ColourSetCaller( g_xywindow_globals.color_gridtext ) ),
        m_gridblock( ColourGetCaller( g_xywindow_globals.color_gridblock ), ColourSetCaller( g_xywindow_globals.color_gridblock ) ),
        m_cameraback( ColourGetCaller( g_camwindow_globals.color_cameraback ), ColourSetCaller( g_camwindow_globals.color_cameraback ) ),
@@ -910,19 +904,17 @@ GtkMenuItem* create_colours_menu(){
        menu_separator( menu_in_menu );
 
        create_menu_item_with_mnemonic( menu_in_menu, "_Texture Background...", "ChooseTextureBackgroundColor" );
+       create_menu_item_with_mnemonic( menu_in_menu, "Camera Background...", "ChooseCameraBackgroundColor" );
        create_menu_item_with_mnemonic( menu_in_menu, "Grid Background...", "ChooseGridBackgroundColor" );
        create_menu_item_with_mnemonic( menu_in_menu, "Grid Major...", "ChooseGridMajorColor" );
        create_menu_item_with_mnemonic( menu_in_menu, "Grid Minor...", "ChooseGridMinorColor" );
-       create_menu_item_with_mnemonic( menu_in_menu, "Grid Major Small...", "ChooseSmallGridMajorColor" );
-       create_menu_item_with_mnemonic( menu_in_menu, "Grid Minor Small...", "ChooseSmallGridMinorColor" );
        create_menu_item_with_mnemonic( menu_in_menu, "Grid Text...", "ChooseGridTextColor" );
        create_menu_item_with_mnemonic( menu_in_menu, "Grid Block...", "ChooseGridBlockColor" );
-       create_menu_item_with_mnemonic( menu_in_menu, "Default Brush...", "ChooseBrushColor" );
-       create_menu_item_with_mnemonic( menu_in_menu, "Camera Background...", "ChooseCameraBackgroundColor" );
-       create_menu_item_with_mnemonic( menu_in_menu, "Selected Brush...", "ChooseSelectedBrushColor" );
+       create_menu_item_with_mnemonic( menu_in_menu, "Default Brush (2D)...", "ChooseBrushColor" );
+       create_menu_item_with_mnemonic( menu_in_menu, "Selected Brush and Sizing (2D)...", "ChooseSelectedBrushColor" );
        create_menu_item_with_mnemonic( menu_in_menu, "Selected Brush (Camera)...", "ChooseCameraSelectedBrushColor" );
        create_menu_item_with_mnemonic( menu_in_menu, "Clipper...", "ChooseClipperColor" );
-       create_menu_item_with_mnemonic( menu_in_menu, "Active View name...", "ChooseOrthoViewNameColor" );
+       create_menu_item_with_mnemonic( menu_in_menu, "Active View Name and Outline...", "ChooseOrthoViewNameColor" );
 
        return colours_menu_item;
 }
@@ -1818,6 +1810,7 @@ void ClipperChangeNotify(){
 
 LatchedInt g_Layout_viewStyle( 0, "Window Layout" );
 LatchedBool g_Layout_enableDetachableMenus( true, "Detachable Menus" );
+LatchedBool g_Layout_enableMainToolbar( true, "Main Toolbar" );
 LatchedBool g_Layout_enablePatchToolbar( true, "Patch Toolbar" );
 LatchedBool g_Layout_enablePluginToolbar( true, "Plugin Toolbar" );
 LatchedBool g_Layout_enableFilterToolbar( true, "Filter Toolbar" );
@@ -1998,20 +1991,21 @@ GtkMenuItem* 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" );
+               create_check_menu_item_with_mnemonic( menu_in_menu, "Show Entity _Angles", "ShowAngles" );
+               create_check_menu_item_with_mnemonic( menu_in_menu, "Show Entity _Names", "ShowNames" );
+               create_check_menu_item_with_mnemonic( menu_in_menu, "Show Light Radiuses", "ShowLightRadiuses" );
 
                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 Size Info", "ToggleSizePaint" );
+               create_check_menu_item_with_mnemonic( menu_in_menu, "Show Crosshair", "ToggleCrosshairs" );
+               create_check_menu_item_with_mnemonic( menu_in_menu, "Show Grid", "ToggleGrid" );
                create_check_menu_item_with_mnemonic( menu_in_menu, "Show Blocks", "ShowBlocks" );
                create_check_menu_item_with_mnemonic( menu_in_menu, "Show C_oordinates", "ShowCoordinates" );
                create_check_menu_item_with_mnemonic( menu_in_menu, "Show Window Outline", "ShowWindowOutline" );
                create_check_menu_item_with_mnemonic( menu_in_menu, "Show Axes", "ShowAxes" );
                create_check_menu_item_with_mnemonic( menu_in_menu, "Show Workzone", "ShowWorkzone" );
-               create_check_menu_item_with_mnemonic( menu_in_menu, "Show Stats", "ShowStats" );
+               create_check_menu_item_with_mnemonic( menu_in_menu, "Show Camera Stats", "ShowStats" );
        }
 
        {
@@ -2023,13 +2017,7 @@ GtkMenuItem* create_view_menu( MainFrame::EViewStyle style ){
        }
        menu_separator( menu );
        {
-//             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_check_menu_item_with_mnemonic( menu, "Hide Selected", "HideSelected" );
                create_menu_item_with_mnemonic( menu, "Show Hidden", "ShowHidden" );
        }
        menu_separator( menu );
@@ -2041,10 +2029,10 @@ GtkMenuItem* create_view_menu( MainFrame::EViewStyle style ){
                create_menu_item_with_mnemonic( menu_in_menu, "_Off", "RegionOff" );
                create_menu_item_with_mnemonic( menu_in_menu, "_Set XY", "RegionSetXY" );
                create_menu_item_with_mnemonic( menu_in_menu, "Set _Brush", "RegionSetBrush" );
-               create_menu_item_with_mnemonic( menu_in_menu, "Set Se_lected Brushes", "RegionSetSelection" );
+               create_check_menu_item_with_mnemonic( menu_in_menu, "Set Se_lected Brushes", "RegionSetSelection" );
        }
 
-       command_connect_accelerator( "CenterXYView" );
+       //command_connect_accelerator( "CenterXYView" );
 
        return view_menu_item;
 }
@@ -2158,8 +2146,9 @@ GtkMenuItem* create_misc_menu(){
        create_menu_item_with_mnemonic( menu, "Map Info...", "MapInfo" );
        // http://zerowing.idsoftware.com/bugzilla/show_bug.cgi?id=394
 //  create_menu_item_with_mnemonic(menu, "_Print XY View", FreeCaller<WXY_Print>());
-       create_menu_item_with_mnemonic( menu, "_Background select", FreeCaller<WXY_BackgroundSelect>() );
+       create_menu_item_with_mnemonic( menu, "_Background image...", FreeCaller<WXY_BackgroundSelect>() );
        create_menu_item_with_mnemonic( menu, "Fullscreen", "Fullscreen" );
+       create_menu_item_with_mnemonic( menu, "Maximize view", "MaximizeView" );
        return misc_menu_item;
 }
 
@@ -2391,69 +2380,60 @@ GtkToolbar* create_main_toolbar( MainFrame::EViewStyle style ){
        GtkToolbar* toolbar = GTK_TOOLBAR( gtk_toolbar_new() );
        gtk_toolbar_set_orientation( toolbar, GTK_ORIENTATION_HORIZONTAL );
        gtk_toolbar_set_style( toolbar, GTK_TOOLBAR_ICONS );
-
+//     gtk_toolbar_set_show_arrow( toolbar, TRUE );
+       //gtk_orientable_set_orientation( GTK_ORIENTABLE( toolbar ), GTK_ORIENTATION_HORIZONTAL );
+       //toolbar_append_space( toolbar );
        gtk_widget_show( GTK_WIDGET( toolbar ) );
 
        File_constructToolbar( toolbar );
-
-       gtk_toolbar_append_space( GTK_TOOLBAR( toolbar ) );
+       gtk_toolbar_append_space( toolbar );
 
        UndoRedo_constructToolbar( toolbar );
-
-       gtk_toolbar_append_space( GTK_TOOLBAR( toolbar ) );
+       gtk_toolbar_append_space( toolbar );
 
        RotateFlip_constructToolbar( toolbar );
-
-       gtk_toolbar_append_space( GTK_TOOLBAR( toolbar ) );
+       gtk_toolbar_append_space( toolbar );
 
        Select_constructToolbar( toolbar );
-
-       gtk_toolbar_append_space( GTK_TOOLBAR( toolbar ) );
+       gtk_toolbar_append_space( toolbar );
 
        CSG_constructToolbar( toolbar );
-
-       gtk_toolbar_append_space( GTK_TOOLBAR( toolbar ) );
+       gtk_toolbar_append_space( toolbar );
 
        ComponentModes_constructToolbar( toolbar );
+       gtk_toolbar_append_space( toolbar );
 
        if ( style == MainFrame::eRegular || style == MainFrame::eRegularLeft ) {
-               gtk_toolbar_append_space( GTK_TOOLBAR( toolbar ) );
-
                XYWnd_constructToolbar( toolbar );
+               gtk_toolbar_append_space( toolbar );
        }
 
-       gtk_toolbar_append_space( GTK_TOOLBAR( toolbar ) );
-
        CamWnd_constructToolbar( toolbar );
-
-       gtk_toolbar_append_space( GTK_TOOLBAR( toolbar ) );
+       gtk_toolbar_append_space( toolbar );
 
        Manipulators_constructToolbar( toolbar );
+       gtk_toolbar_append_space( toolbar );
 
        if ( g_Layout_enablePatchToolbar.m_value ) {
-               gtk_toolbar_append_space( GTK_TOOLBAR( toolbar ) );
-
                Patch_constructToolbar( toolbar );
+               gtk_toolbar_append_space( toolbar );
        }
 
-       gtk_toolbar_append_space( GTK_TOOLBAR( toolbar ) );
-
        toolbar_append_toggle_button( toolbar, "Texture Lock (SHIFT + T)", "texture_lock.png", "TogTexLock" );
+       gtk_toolbar_append_space( toolbar );
 
-       gtk_toolbar_append_space( GTK_TOOLBAR( toolbar ) );
-
-       GtkButton* g_view_entities_button = toolbar_append_button( toolbar, "Entities (N)", "entities.png", "ToggleEntityInspector" );
+       toolbar_append_button( toolbar, "Entities (N)", "entities.png", "ToggleEntityInspector" );
        // disable the console and texture button in the regular layouts
        if ( style != MainFrame::eRegular && style != MainFrame::eRegularLeft ) {
-               GtkButton* g_view_console_button = toolbar_append_button( toolbar, "Console (O)", "console.png", "ToggleConsole" );
-               GtkButton* g_view_textures_button = toolbar_append_button( toolbar, "Texture Browser (T)", "texture_browser.png", "ToggleTextures" );
+               toolbar_append_button( toolbar, "Console (O)", "console.png", "ToggleConsole" );
+               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");
 
-       gtk_toolbar_append_space( GTK_TOOLBAR( toolbar ) );
-       GtkButton* g_refresh_models_button = toolbar_append_button( toolbar, "Refresh Models", "refresh_models.png", "RefreshReferences" );
+       gtk_toolbar_append_space( toolbar );
+       toolbar_append_button( toolbar, "Refresh Models", "refresh_models.png", "RefreshReferences" );
 
        return toolbar;
 }
@@ -2818,10 +2798,10 @@ void MainFrame::Create(){
        GtkMenuBar* main_menu = create_main_menu( CurrentStyle() );
        gtk_box_pack_start( GTK_BOX( vbox ), GTK_WIDGET( main_menu ), FALSE, FALSE, 0 );
 
-       GtkToolbar* main_toolbar = create_main_toolbar( CurrentStyle() );
-       gtk_box_pack_start( GTK_BOX( vbox ), GTK_WIDGET( main_toolbar ), FALSE, FALSE, 0 );
-
-
+       if( g_Layout_enableMainToolbar.m_value ){
+               GtkToolbar* main_toolbar = create_main_toolbar( CurrentStyle() );
+               gtk_box_pack_start( GTK_BOX( vbox ), GTK_WIDGET( main_toolbar ), FALSE, FALSE, 0 );
+       }
 
 
        if ( g_Layout_enablePluginToolbar.m_value || g_Layout_enableFilterToolbar.m_value ){
@@ -3013,9 +2993,12 @@ void MainFrame::Create(){
                        g_page_textures = GroupDialog_addPage( "Textures", GTK_WIDGET( frame ), TextureBrowserExportTitleCaller() );
                        /* workaround for gtk 2.24 issue: not displayed glwidget after toggle */
                        g_object_set_data( G_OBJECT( GroupDialog_getWindow() ), "glwidget", TextureBrowser_getGLWidget() );
-
                }
 
+               m_vSplit = 0;
+               m_hSplit = 0;
+               m_vSplit2 = 0;
+
                GroupDialog_show();
        }
        else // 4 way
@@ -3041,8 +3024,8 @@ void MainFrame::Create(){
 
                GtkWidget* xz = m_pXZWnd->GetWidget();
 
-               GtkHPaned* split = create_split_views( camera, yz, xy, xz );
-               gtk_box_pack_start( GTK_BOX( vbox ), GTK_WIDGET( split ), TRUE, TRUE, 0 );
+               m_hSplit = create_split_views( camera, yz, xy, xz, m_vSplit, m_vSplit2 );
+               gtk_box_pack_start( GTK_BOX( vbox ), m_hSplit, TRUE, TRUE, 0 );
 
                {
                        GtkFrame* frame = create_framed_widget( TextureBrowser_constructWindow( GroupDialog_getWindow() ) );
@@ -3245,6 +3228,11 @@ void Layout_constructPreferences( PreferencesPage& page ){
                LatchedBoolImportCaller( g_Layout_enableDetachableMenus ),
                BoolExportCaller( g_Layout_enableDetachableMenus.m_latched )
                );
+       page.appendCheckBox(
+               "", "Main Toolbar",
+               LatchedBoolImportCaller( g_Layout_enableMainToolbar ),
+               BoolExportCaller( g_Layout_enableMainToolbar.m_latched )
+               );
        if ( !string_empty( g_pGameDescription->getKeyValue( "no_patch" ) ) ) {
                page.appendCheckBox(
                        "", "Patch Toolbar",
@@ -3293,6 +3281,73 @@ void MainFrame_toggleFullscreen(){
        }
 }
 
+class MaximizeView
+{
+public:
+       MaximizeView(): m_maximized( false ){
+       }
+       void toggle(){
+               return m_maximized ? restore() : maximize();
+       }
+private:
+       bool m_maximized;
+       int m_vSplitPos;
+       int m_vSplit2Pos;
+       int m_hSplitPos;
+
+       void restore(){
+               m_maximized = false;
+               gtk_paned_set_position( GTK_PANED( g_pParentWnd->m_vSplit ), m_vSplitPos );
+               gtk_paned_set_position( GTK_PANED( g_pParentWnd->m_vSplit2 ), m_vSplit2Pos );
+               gtk_paned_set_position( GTK_PANED( g_pParentWnd->m_hSplit ), m_hSplitPos );
+       }
+
+       void maximize(){
+               m_maximized = true;
+               m_vSplitPos = gtk_paned_get_position( GTK_PANED( g_pParentWnd->m_vSplit ) );
+               m_vSplit2Pos = gtk_paned_get_position( GTK_PANED( g_pParentWnd->m_vSplit2 ) );
+               m_hSplitPos = gtk_paned_get_position( GTK_PANED( g_pParentWnd->m_hSplit ) );
+
+               int vSplitX, vSplitY, vSplit2X, vSplit2Y, hSplitX, hSplitY;
+               gdk_window_get_origin( g_pParentWnd->m_vSplit->window, &vSplitX, &vSplitY );
+               gdk_window_get_origin( g_pParentWnd->m_vSplit2->window, &vSplit2X, &vSplit2Y );
+               gdk_window_get_origin( g_pParentWnd->m_hSplit->window, &hSplitX, &hSplitY );
+
+               vSplitY += m_vSplitPos;
+               vSplit2Y += m_vSplit2Pos;
+               hSplitX += m_hSplitPos;
+
+               int cur_x, cur_y;
+               Sys_GetCursorPos( MainFrame_getWindow(), &cur_x, &cur_y );
+
+               if( cur_x > hSplitX ){
+                       gtk_paned_set_position( GTK_PANED( g_pParentWnd->m_hSplit ), 0 );
+               }
+               else{
+                       gtk_paned_set_position( GTK_PANED( g_pParentWnd->m_hSplit ), 9999 );
+               }
+               if( cur_y > vSplitY ){
+                       gtk_paned_set_position( GTK_PANED( g_pParentWnd->m_vSplit ), 0 );
+               }
+               else{
+                       gtk_paned_set_position( GTK_PANED( g_pParentWnd->m_vSplit ), 9999 );
+               }
+               if( cur_y > vSplit2Y ){
+                       gtk_paned_set_position( GTK_PANED( g_pParentWnd->m_vSplit2 ), 0 );
+               }
+               else{
+                       gtk_paned_set_position( GTK_PANED( g_pParentWnd->m_vSplit2 ), 9999 );
+               }
+       }
+};
+
+MaximizeView g_maximizeview;
+
+void Maximize_View(){
+       if( g_pParentWnd != 0 && g_pParentWnd->m_vSplit != 0 && g_pParentWnd->m_vSplit2 != 0 && g_pParentWnd->m_hSplit != 0 )
+               g_maximizeview.toggle();
+}
+
 
 #include "preferencesystem.h"
 #include "stringio.h"
@@ -3337,8 +3392,9 @@ void MainFrame_Construct(){
        GlobalCommands_insert( "ToggleEntityInspector", FreeCaller<EntityInspector_ToggleShow>(), Accelerator( 'N' ) );
        GlobalCommands_insert( "EntityList", FreeCaller<EntityList_toggleShown>(), Accelerator( 'L' ) );
 
-       GlobalCommands_insert( "ShowHidden", FreeCaller<Select_ShowAllHidden>(), Accelerator( 'H', (GdkModifierType)GDK_SHIFT_MASK ) );
-       GlobalCommands_insert( "HideSelected", FreeCaller<HideSelected>(), Accelerator( 'H' ) );
+//     GlobalCommands_insert( "ShowHidden", FreeCaller<Select_ShowAllHidden>(), Accelerator( 'H', (GdkModifierType)GDK_SHIFT_MASK ) );
+//     GlobalCommands_insert( "HideSelected", FreeCaller<HideSelected>(), Accelerator( 'H' ) );
+       Hide_registerCommands();
 
        GlobalToggles_insert( "DragVertices", FreeCaller<SelectVertexMode>(), ToggleItem::AddCallbackCaller( g_vertexMode_button ), Accelerator( 'V' ) );
        GlobalToggles_insert( "DragEdges", FreeCaller<SelectEdgeMode>(), ToggleItem::AddCallbackCaller( g_edgeMode_button ), Accelerator( 'E' ) );
@@ -3380,8 +3436,6 @@ void MainFrame_Construct(){
        GlobalCommands_insert( "ChooseGridBackgroundColor", makeCallback( g_ColoursMenu.m_xyback ) );
        GlobalCommands_insert( "ChooseGridMajorColor", makeCallback( g_ColoursMenu.m_gridmajor ) );
        GlobalCommands_insert( "ChooseGridMinorColor", makeCallback( g_ColoursMenu.m_gridminor ) );
-       GlobalCommands_insert( "ChooseSmallGridMajorColor", makeCallback( g_ColoursMenu.m_gridmajor_alt ) );
-       GlobalCommands_insert( "ChooseSmallGridMinorColor", makeCallback( g_ColoursMenu.m_gridminor_alt ) );
        GlobalCommands_insert( "ChooseGridTextColor", makeCallback( g_ColoursMenu.m_gridtext ) );
        GlobalCommands_insert( "ChooseGridBlockColor", makeCallback( g_ColoursMenu.m_gridblock ) );
        GlobalCommands_insert( "ChooseBrushColor", makeCallback( g_ColoursMenu.m_brush ) );
@@ -3392,6 +3446,7 @@ void MainFrame_Construct(){
        GlobalCommands_insert( "ChooseOrthoViewNameColor", makeCallback( g_ColoursMenu.m_viewname ) );
 
        GlobalCommands_insert( "Fullscreen", FreeCaller<MainFrame_toggleFullscreen>(), Accelerator( GDK_F11 ) );
+       GlobalCommands_insert( "MaximizeView", FreeCaller<Maximize_View>(), Accelerator( GDK_F12 ) );
 
 
        GlobalCommands_insert( "CSGSubtract", FreeCaller<CSG_Subtract>(), Accelerator( 'U', (GdkModifierType)GDK_SHIFT_MASK ) );
@@ -3431,6 +3486,7 @@ void MainFrame_Construct(){
        GlobalSelectionSystem().addSelectionChangeCallback( ComponentModeSelectionChangedCaller() );
 
        GlobalPreferenceSystem().registerPreference( "DetachableMenus", BoolImportStringCaller( g_Layout_enableDetachableMenus.m_latched ), BoolExportStringCaller( g_Layout_enableDetachableMenus.m_latched ) );
+       GlobalPreferenceSystem().registerPreference( "MainToolBar", BoolImportStringCaller( g_Layout_enableMainToolbar.m_latched ), BoolExportStringCaller( g_Layout_enableMainToolbar.m_latched ) );
        GlobalPreferenceSystem().registerPreference( "PatchToolBar", BoolImportStringCaller( g_Layout_enablePatchToolbar.m_latched ), BoolExportStringCaller( g_Layout_enablePatchToolbar.m_latched ) );
        GlobalPreferenceSystem().registerPreference( "PluginToolBar", BoolImportStringCaller( g_Layout_enablePluginToolbar.m_latched ), BoolExportStringCaller( g_Layout_enablePluginToolbar.m_latched ) );
        GlobalPreferenceSystem().registerPreference( "FilterToolBar", BoolImportStringCaller( g_Layout_enableFilterToolbar.m_latched ), BoolExportStringCaller( g_Layout_enableFilterToolbar.m_latched ) );
@@ -3476,6 +3532,7 @@ void MainFrame_Construct(){
 
        g_Layout_viewStyle.useLatched();
        g_Layout_enableDetachableMenus.useLatched();
+       g_Layout_enableMainToolbar.useLatched();
        g_Layout_enablePatchToolbar.useLatched();
        g_Layout_enablePluginToolbar.useLatched();
        g_Layout_enableFilterToolbar.useLatched();