]> git.xonotic.org Git - xonotic/netradiant.git/blobdiff - radiant/mainframe.cpp
Merge commit 'd930835fa0ffd32d2e6459e11e526ec0733745bc' into master-merge
[xonotic/netradiant.git] / radiant / mainframe.cpp
index 8cc59bc18576ae7b622b6c77c5666f5b6cd187d1..69ae9652a83946ddb30e44316e78bfbee0361d36 100644 (file)
@@ -1,4 +1,4 @@
-/*
+/*
    Copyright (C) 1999-2006 Id Software, Inc. and contributors.
    For a list of contributors, see the accompanying CONTRIBUTORS file.
 
@@ -134,16 +134,16 @@ struct layout_globals_t
        layout_globals_t() :
                m_position( -1, -1, 640, 480 ),
 
-               nXYHeight( 300 ),
-               nXYWidth( 300 ),
-               nCamWidth( 200 ),
-               nCamHeight( 200 ),
-               nState( GDK_WINDOW_STATE_MAXIMIZED ){
+               nXYHeight( 350 ),
+               nXYWidth( 600 ),
+               nCamWidth( 300 ),
+               nCamHeight( 210 ),
+               nState( 0 ){
        }
 };
 
 layout_globals_t g_layout_globals;
-glwindow_globals_t g_glwindow_globals;
+//glwindow_globals_t g_glwindow_globals;
 
 
 // VFS
@@ -261,7 +261,7 @@ void HomePaths_Realise(){
                        if ( shfolder ) {
                                FreeLibrary( shfolder );
                        }
-                       if ( SHGetFolderPath( NULL, CSIDL_PERSONAL, NULL, 0, mydocsdir ) ) {
+                       if ( SUCCEEDED( SHGetFolderPath( NULL, CSIDL_PERSONAL, NULL, 0, mydocsdir ) ) ) {
                                path.clear();
                                path << DirectoryCleaned( mydocsdir ) << "My Games/" << ( prefix + 1 ) << "/";
                                // win32: only add it if it already exists
@@ -903,8 +903,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 );
@@ -1093,8 +1091,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;
@@ -1109,8 +1105,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 ) ),
@@ -1149,19 +1143,17 @@ ui::MenuItem 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;
 }
@@ -1691,6 +1683,27 @@ void ClipperMode(){
 }
 
 
+void ToggleRotateScaleModes(){
+       if ( g_currentToolMode == RotateMode ) {
+               ScaleMode();
+       }
+       else
+       {
+               RotateMode();
+       }
+}
+
+void ToggleDragScaleModes(){
+       if ( g_currentToolMode == DragMode ) {
+               ScaleMode();
+       }
+       else
+       {
+               DragMode();
+       }
+}
+
+
 void Texdef_Rotate( float angle ){
        StringOutputStream command;
        command << "brushRotateTexture -angle " << angle;
@@ -2025,6 +2038,7 @@ void ClipperChangeNotify(){
 
 LatchedValue<int> g_Layout_viewStyle( 0, "Window Layout" );
 LatchedValue<bool> g_Layout_enableDetachableMenus( true, "Detachable Menus" );
+LatchedValue<bool> g_Layout_enableMainToolbar( true, "Main Toolbar" );
 LatchedValue<bool> g_Layout_enablePatchToolbar( true, "Patch Toolbar" );
 LatchedValue<bool> g_Layout_enablePluginToolbar( true, "Plugin Toolbar" );
 LatchedValue<bool> g_Layout_enableFilterToolbar( true, "Filter Toolbar" );
@@ -2049,18 +2063,18 @@ ui::MenuItem create_file_menu(){
 #endif
 
        create_menu_item_with_mnemonic( menu, "_Open...", "OpenMap" );
-
        create_menu_item_with_mnemonic( menu, "_Import...", "ImportMap" );
+       menu_separator( menu );
        create_menu_item_with_mnemonic( menu, "_Save", "SaveMap" );
        create_menu_item_with_mnemonic( menu, "Save _as...", "SaveMapAs" );
        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 );
 //     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 );
+       //menu_separator( menu );
        create_menu_item_with_mnemonic( menu, "_Pointfile...", "TogglePointfile" );
        menu_separator( menu );
        MRU_constructMenu( menu );
@@ -2088,8 +2102,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" );
@@ -2112,20 +2124,6 @@ ui::MenuItem create_edit_menu(){
        return edit_menu_item;
 }
 
-void fill_view_xy_top_menu( ui::Menu menu ){
-       create_check_menu_item_with_mnemonic( menu, "XY (Top) View", "ToggleView" );
-}
-
-
-void fill_view_yz_side_menu( ui::Menu menu ){
-       create_check_menu_item_with_mnemonic( menu, "YZ (Side) View", "ToggleSideView" );
-}
-
-
-void fill_view_xz_front_menu( ui::Menu menu ){
-       create_check_menu_item_with_mnemonic( menu, "XZ (Front) View", "ToggleFrontView" );
-}
-
 
 ui::Widget g_toggle_z_item{ui::null};
 ui::Widget g_toggle_console_item{ui::null};
@@ -2141,13 +2139,13 @@ ui::MenuItem create_view_menu( MainFrame::EViewStyle style ){
        }
 
        if ( style == MainFrame::eFloating ) {
-               fill_view_camera_menu( menu );
-               fill_view_xy_top_menu( menu );
-               fill_view_yz_side_menu( menu );
-               fill_view_xz_front_menu( menu );
+               create_check_menu_item_with_mnemonic( menu, "Camera View", "ToggleCamera" );
+               create_check_menu_item_with_mnemonic( menu, "XY (Top) View", "ToggleView" );
+               create_check_menu_item_with_mnemonic( menu, "XZ (Front) View", "ToggleFrontView" );
+               create_check_menu_item_with_mnemonic( menu, "YZ (Side) View", "ToggleSideView" );
        }
        if ( style == MainFrame::eFloating || style == MainFrame::eSplit ) {
-               create_menu_item_with_mnemonic( menu, "Console View", "ToggleConsole" );
+               create_menu_item_with_mnemonic( menu, "Console", "ToggleConsole" );
                create_menu_item_with_mnemonic( menu, "Texture Browser", "ToggleTextures" );
                create_menu_item_with_mnemonic( menu, "Entity Inspector", "ToggleEntityInspector" );
        }
@@ -2165,6 +2163,7 @@ ui::MenuItem create_view_menu( MainFrame::EViewStyle style ){
                if ( g_Layout_enableDetachableMenus.m_value ) {
                        menu_tearoff( camera_menu );
                }
+               create_menu_item_with_mnemonic( camera_menu, "Focus on Selected", "CameraFocusOnSelected" );
                create_menu_item_with_mnemonic( camera_menu, "_Center", "CenterView" );
                create_menu_item_with_mnemonic( camera_menu, "_Up Floor", "UpFloor" );
                create_menu_item_with_mnemonic( camera_menu, "_Down Floor", "DownFloor" );
@@ -2177,9 +2176,10 @@ ui::MenuItem create_view_menu( MainFrame::EViewStyle style ){
                menu_separator( camera_menu );
                create_menu_item_with_mnemonic( camera_menu, "Next leak spot", "NextLeakSpot" );
                create_menu_item_with_mnemonic( camera_menu, "Previous leak spot", "PrevLeakSpot" );
-               menu_separator( camera_menu );
-               create_menu_item_with_mnemonic( camera_menu, "Look Through Selected", "LookThroughSelected" );
-               create_menu_item_with_mnemonic( camera_menu, "Look Through Camera", "LookThroughCamera" );
+               //cameramodel is not implemented in instances, thus useless
+//             menu_separator( camera_menu );
+//             create_menu_item_with_mnemonic( camera_menu, "Look Through Selected", "LookThroughSelected" );
+//             create_menu_item_with_mnemonic( camera_menu, "Look Through Camera", "LookThroughCamera" );
        }
        menu_separator( menu );
        {
@@ -2190,10 +2190,13 @@ ui::MenuItem create_view_menu( MainFrame::EViewStyle style ){
                if ( style == MainFrame::eRegular || style == MainFrame::eRegularLeft || style == MainFrame::eFloating ) {
                        create_menu_item_with_mnemonic( orthographic_menu, "_Next (XY, YZ, XY)", "NextView" );
                        create_menu_item_with_mnemonic( orthographic_menu, "XY (Top)", "ViewTop" );
-                       create_menu_item_with_mnemonic( orthographic_menu, "YZ", "ViewSide" );
-                       create_menu_item_with_mnemonic( orthographic_menu, "XZ", "ViewFront" );
+                       create_menu_item_with_mnemonic( orthographic_menu, "XZ (Front)", "ViewFront" );
+                       create_menu_item_with_mnemonic( orthographic_menu, "YZ (Side)", "ViewSide" );
                        menu_separator( orthographic_menu );
                }
+               else{
+                       create_menu_item_with_mnemonic( orthographic_menu, "Center on Selected", "NextView" );
+               }
 
                create_menu_item_with_mnemonic( orthographic_menu, "Center on Selected", "CenterXYView" );
                menu_separator( orthographic_menu );
@@ -2209,20 +2212,21 @@ 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" );
+               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" );
        }
 
        {
@@ -2234,13 +2238,7 @@ ui::MenuItem 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 );
@@ -2252,10 +2250,10 @@ ui::MenuItem 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;
 }
@@ -2278,6 +2276,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 );
 
        {
@@ -2289,6 +2290,9 @@ ui::MenuItem create_selection_menu(){
                create_menu_item_with_mnemonic( menu_in_menu, "Nudge Right", "SelectNudgeRight" );
                create_menu_item_with_mnemonic( menu_in_menu, "Nudge Up", "SelectNudgeUp" );
                create_menu_item_with_mnemonic( menu_in_menu, "Nudge Down", "SelectNudgeDown" );
+               menu_separator( menu_in_menu );
+               create_menu_item_with_mnemonic( menu_in_menu, "Nudge +Z", "MoveSelectionUP" );
+               create_menu_item_with_mnemonic( menu_in_menu, "Nudge -Z", "MoveSelectionDOWN" );
        }
        {
                auto menu_in_menu = create_sub_menu_with_mnemonic( menu, "Rotate" );
@@ -2298,6 +2302,9 @@ ui::MenuItem create_selection_menu(){
                create_menu_item_with_mnemonic( menu_in_menu, "Rotate X", "RotateSelectionX" );
                create_menu_item_with_mnemonic( menu_in_menu, "Rotate Y", "RotateSelectionY" );
                create_menu_item_with_mnemonic( menu_in_menu, "Rotate Z", "RotateSelectionZ" );
+               menu_separator( menu_in_menu );
+               create_menu_item_with_mnemonic( menu_in_menu, "Rotate Clockwise", "RotateSelectionClockwise" );
+               create_menu_item_with_mnemonic( menu_in_menu, "Rotate Anticlockwise", "RotateSelectionAnticlockwise" );
        }
        {
                auto menu_in_menu = create_sub_menu_with_mnemonic( menu, "Flip" );
@@ -2307,6 +2314,9 @@ ui::MenuItem create_selection_menu(){
                create_menu_item_with_mnemonic( menu_in_menu, "Flip _X", "MirrorSelectionX" );
                create_menu_item_with_mnemonic( menu_in_menu, "Flip _Y", "MirrorSelectionY" );
                create_menu_item_with_mnemonic( menu_in_menu, "Flip _Z", "MirrorSelectionZ" );
+               menu_separator( menu_in_menu );
+               create_menu_item_with_mnemonic( menu_in_menu, "Flip Horizontally", "MirrorSelectionHorizontally" );
+               create_menu_item_with_mnemonic( menu_in_menu, "Flip Vertically", "MirrorSelectionVertically" );
        }
        menu_separator( menu );
        create_menu_item_with_mnemonic( menu, "Arbitrary rotation...", "ArbitraryRotation" );
@@ -2325,6 +2335,7 @@ ui::MenuItem create_bsp_menu(){
        }
 
        create_menu_item_with_mnemonic( menu, "Customize...", "BuildMenuCustomize" );
+       create_menu_item_with_mnemonic( menu, "Run recent build", "Build_runRecentExecutedBuild" );
 
        menu_separator( menu );
 
@@ -2364,8 +2375,10 @@ ui::MenuItem create_misc_menu(){
        create_menu_item_with_mnemonic( menu, "Find brush...", "FindBrush" );
        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<void(), WXY_Print>());
-       create_menu_item_with_mnemonic( menu, "_Background select", makeCallbackF(WXY_BackgroundSelect) );
+//  create_menu_item_with_mnemonic(menu, "_Print XY View", makeCallbackF( WXY_Print ));
+       create_menu_item_with_mnemonic( menu, "_Background image...", makeCallbackF(WXY_BackgroundSelect) );
+       create_menu_item_with_mnemonic( menu, "Fullscreen", "Fullscreen" );
+       create_menu_item_with_mnemonic( menu, "Maximize view", "MaximizeView" );
        return misc_menu_item;
 }
 
@@ -2423,7 +2436,7 @@ ui::MenuItem create_help_menu(){
        create_game_help_menu( menu );
 
        create_menu_item_with_mnemonic( menu, "Bug report", makeCallbackF(OpenBugReportURL) );
-       create_menu_item_with_mnemonic( menu, "Shortcuts list", makeCallbackF(DoCommandListDlg) );
+       create_menu_item_with_mnemonic( menu, "Shortcuts", makeCallbackF(DoCommandListDlg) );
        create_menu_item_with_mnemonic( menu, "_About...", makeCallbackF(DoAbout) );
 
        return help_menu_item;
@@ -2455,14 +2468,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(){
@@ -2487,8 +2500,8 @@ void TexdefNudge_registerShortcuts(){
 }
 
 void SelectNudge_registerShortcuts(){
-       command_connect_accelerator( "MoveSelectionDOWN" );
-       command_connect_accelerator( "MoveSelectionUP" );
+       //command_connect_accelerator( "MoveSelectionDOWN" );
+       //command_connect_accelerator( "MoveSelectionUP" );
        //command_connect_accelerator("SelectNudgeLeft");
        //command_connect_accelerator("SelectNudgeRight");
        //command_connect_accelerator("SelectNudgeUp");
@@ -2509,10 +2522,22 @@ void SurfaceInspector_registerShortcuts(){
        command_connect_accelerator( "FitTexture" );
 }
 
+void TexBro_registerShortcuts(){
+       command_connect_accelerator( "FindReplaceTextures" );
+       command_connect_accelerator( "RefreshShaders" );
+}
+
+void Misc_registerShortcuts(){
+       //refresh models
+       command_connect_accelerator( "RefreshReferences" );
+       command_connect_accelerator( "MouseRotateOrScale" );
+       command_connect_accelerator( "MouseDragOrScale" );
+}
+
 
 void register_shortcuts(){
 //     PatchInspector_registerShortcuts();
-       Patch_registerShortcuts();
+       //Patch_registerShortcuts();
        Grid_registerShortcuts();
 //     XYWnd_registerShortcuts();
        CamWnd_registerShortcuts();
@@ -2522,6 +2547,8 @@ void register_shortcuts(){
        SelectNudge_registerShortcuts();
 //     SnapToGrid_registerShortcuts();
 //     SelectByType_registerShortcuts();
+       TexBro_registerShortcuts();
+       Misc_registerShortcuts();
 }
 
 void File_constructToolbar( ui::Toolbar toolbar ){
@@ -2535,12 +2562,17 @@ void UndoRedo_constructToolbar( ui::Toolbar toolbar ){
 }
 
 void RotateFlip_constructToolbar( ui::Toolbar toolbar ){
-       toolbar_append_button( toolbar, "x-axis Flip", "brush_flipx.png", "MirrorSelectionX" );
-       toolbar_append_button( toolbar, "x-axis Rotate", "brush_rotatex.png", "RotateSelectionX" );
-       toolbar_append_button( toolbar, "y-axis Flip", "brush_flipy.png", "MirrorSelectionY" );
-       toolbar_append_button( toolbar, "y-axis Rotate", "brush_rotatey.png", "RotateSelectionY" );
-       toolbar_append_button( toolbar, "z-axis Flip", "brush_flipz.png", "MirrorSelectionZ" );
-       toolbar_append_button( toolbar, "z-axis Rotate", "brush_rotatez.png", "RotateSelectionZ" );
+//     toolbar_append_button( toolbar, "x-axis Flip", "brush_flipx.png", "MirrorSelectionX" );
+//     toolbar_append_button( toolbar, "x-axis Rotate", "brush_rotatex.png", "RotateSelectionX" );
+//     toolbar_append_button( toolbar, "y-axis Flip", "brush_flipy.png", "MirrorSelectionY" );
+//     toolbar_append_button( toolbar, "y-axis Rotate", "brush_rotatey.png", "RotateSelectionY" );
+//     toolbar_append_button( toolbar, "z-axis Flip", "brush_flipz.png", "MirrorSelectionZ" );
+//     toolbar_append_button( toolbar, "z-axis Rotate", "brush_rotatez.png", "RotateSelectionZ" );
+       toolbar_append_button( toolbar, "Flip Horizontally", "brush_flip_hor.png", "MirrorSelectionHorizontally" );
+       toolbar_append_button( toolbar, "Flip Vertically", "brush_flip_vert.png", "MirrorSelectionVertically" );
+
+       toolbar_append_button( toolbar, "Rotate Clockwise", "brush_rotate_clock.png", "RotateSelectionClockwise" );
+       toolbar_append_button( toolbar, "Rotate Anticlockwise", "brush_rotate_anti.png", "RotateSelectionAnticlockwise" );
 }
 
 void Select_constructToolbar( ui::Toolbar toolbar ){
@@ -2551,8 +2583,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", "CSGHollow" );
        toolbar_append_button( toolbar, "Make Room", "selection_makeroom.png", "CSGRoom" );
+       toolbar_append_button( toolbar, "CSG Tool", "ellipsis.png", "CSGTool" );
 }
 
 void ComponentModes_constructToolbar( ui::Toolbar toolbar ){
@@ -2567,13 +2599,13 @@ 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 ){
        toolbar_append_toggle_button( toolbar, "Translate (W)", "select_mousetranslate.png", "MouseTranslate" );
        toolbar_append_toggle_button( toolbar, "Rotate (R)", "select_mouserotate.png", "MouseRotate" );
-       toolbar_append_toggle_button( toolbar, "Scale", "select_mousescale.png", "MouseScale" );
+       toolbar_append_toggle_button( toolbar, "Scale (Q)", "select_mousescale.png", "MouseScale" );
        toolbar_append_toggle_button( toolbar, "Resize (Q)", "select_mouseresize.png", "MouseDrag" );
 
        Clipper_constructToolbar( toolbar );
@@ -2583,7 +2615,9 @@ ui::Toolbar create_main_toolbar( MainFrame::EViewStyle style ){
        auto toolbar = ui::Toolbar::from( gtk_toolbar_new() );
        gtk_orientable_set_orientation( GTK_ORIENTABLE(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 );
        toolbar.show();
 
        auto space = [&]() {
@@ -2614,7 +2648,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::eSplit ) {
                space();
 
                XYWnd_constructToolbar( toolbar );
@@ -2636,25 +2670,22 @@ ui::Toolbar create_main_toolbar( MainFrame::EViewStyle style ){
 
        space();
 
-       toolbar_append_toggle_button( toolbar, "Texture Lock (SHIFT +T)", "texture_lock.png", "TogTexLock" );
+       toolbar_append_toggle_button( toolbar, "Texture Lock (SHIFT + T)", "texture_lock.png", "TogTexLock" );
 
        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" );
+       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 ) {
+               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");
 
        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 );
-       }
+       toolbar_append_button( toolbar, "Refresh Models", "refresh_models.png", "RefreshReferences" );
 
        return toolbar;
 }
@@ -2945,6 +2976,13 @@ ui::Window create_splash(){
        image.show();
        window.add(image);
 
+       if( gtk_image_get_storage_type( image ) == GTK_IMAGE_PIXBUF ){
+               GdkBitmap* mask;
+               GdkPixbuf* pix = gtk_image_get_pixbuf( image );
+               gdk_pixbuf_render_pixmap_and_mask( pix, NULL, &mask, 255 );
+               gtk_widget_shape_combine_mask ( GTK_WIDGET( window ), mask, 0, 0 );
+       }
+
        window.dimensions(-1, -1);
        window.show();
 
@@ -3013,6 +3051,7 @@ void MainFrame::Create(){
        auto vbox = ui::VBox( FALSE, 0 );
        window.add(vbox);
        vbox.show();
+       gtk_container_set_focus_chain( GTK_CONTAINER( vbox ), NULL );
 
        global_accel_connect_window( window );
 
@@ -3023,8 +3062,10 @@ void MainFrame::Create(){
     auto main_menu = create_main_menu( CurrentStyle() );
        vbox.pack_start( main_menu, FALSE, FALSE, 0 );
 
-    auto main_toolbar = create_main_toolbar( CurrentStyle() );
-       vbox.pack_start( 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 ){
                auto PFbox = ui::HBox( FALSE, 3 );
@@ -3054,6 +3095,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() ) {
@@ -3063,19 +3108,9 @@ void MainFrame::Create(){
 #if GDEF_OS_WINDOWS
        if ( g_multimon_globals.m_bStartOnPrimMon ) {
                PositionWindowOnPrimaryScreen( g_layout_globals.m_position );
-               window_set_position( window, g_layout_globals.m_position );
        }
-       else
 #endif
-       if ( g_layout_globals.nState & GDK_WINDOW_STATE_MAXIMIZED ) {
-               gtk_window_maximize( window );
-               WindowPosition default_position( -1, -1, 640, 480 );
-               window_set_position( window, default_position );
-       }
-       else
-       {
-               window_set_position( window, g_layout_globals.m_position );
-       }
+       window_set_position( window, g_layout_globals.m_position );
 
        m_window = window;
 
@@ -3100,23 +3135,23 @@ void MainFrame::Create(){
                                m_vSplit2 = vsplit2;
 
                                if ( CurrentStyle() == eRegular ){
-                                       gtk_paned_add1( GTK_PANED( hsplit ), vsplit );
-                                       gtk_paned_add2( GTK_PANED( hsplit ), vsplit2 );
+                                       gtk_paned_pack1( GTK_PANED( hsplit ), vsplit, TRUE, TRUE );
+                                       gtk_paned_pack2( GTK_PANED( hsplit ), vsplit2, TRUE, TRUE );
                                }
                                else{
-                                       gtk_paned_add2( GTK_PANED( hsplit ), vsplit );
-                                       gtk_paned_add1( GTK_PANED( hsplit ), vsplit2 );
+                                       gtk_paned_pack2( GTK_PANED( hsplit ), vsplit, TRUE, TRUE );
+                                       gtk_paned_pack1( GTK_PANED( hsplit ), vsplit2, TRUE, TRUE );
                                }
 
                                // console
                                ui::Widget console_window = Console_constructWindow( window );
-                               gtk_paned_pack2( GTK_PANED( vsplit ), console_window, FALSE, TRUE );
+                               gtk_paned_pack2( GTK_PANED( vsplit ), console_window, TRUE, 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 );
+                               gtk_paned_pack1( GTK_PANED( vsplit ), xy_window, TRUE, TRUE );
 
                                {
                                        // camera
@@ -3125,27 +3160,15 @@ void MainFrame::Create(){
                                        CamWnd_setParent( *m_pCamWnd, window );
                                        auto camera_window = create_framed_widget( CamWnd_getWidget( *m_pCamWnd ) );
 
-                                       gtk_paned_add1( GTK_PANED( vsplit2 ), camera_window  );
+                                       gtk_paned_pack1( GTK_PANED( vsplit2 ), GTK_WIDGET( camera_window ) , TRUE, TRUE);
 
                                        // textures
                                        auto texture_window = create_framed_widget( TextureBrowser_constructWindow( window ) );
 
-                                       gtk_paned_add2( GTK_PANED( vsplit2 ), texture_window  );
+                                       gtk_paned_pack2( GTK_PANED( vsplit2 ), GTK_WIDGET( texture_window ), TRUE, TRUE );
                                }
                        }
                }
-
-               gtk_paned_set_position( GTK_PANED( m_vSplit ), g_layout_globals.nXYHeight );
-
-               if ( CurrentStyle() == eRegular ) {
-                       gtk_paned_set_position( GTK_PANED( m_hSplit ), g_layout_globals.nXYWidth );
-               }
-               else
-               {
-                       gtk_paned_set_position( GTK_PANED( m_hSplit ), g_layout_globals.nCamWidth );
-               }
-
-               gtk_paned_set_position( GTK_PANED( m_vSplit2 ), g_layout_globals.nCamHeight );
        }
        else if ( CurrentStyle() == eFloating )
        {
@@ -3236,10 +3259,14 @@ void MainFrame::Create(){
                {
                        auto frame = create_framed_widget( TextureBrowser_constructWindow( GroupDialog_getWindow() ) );
                        g_page_textures = GroupDialog_addPage( "Textures", frame, TextureBrowserExportTitleCaller() );
-
                        WORKAROUND_GOBJECT_SET_GLWIDGET( GroupDialog_getWindow(), TextureBrowser_getGLWidget() );
                }
 
+               // FIXME: find a way to do it with newer syntax
+               // m_vSplit = 0;
+               // m_hSplit = 0;
+               // m_vSplit2 = 0;
+
                GroupDialog_show();
        }
        else if ( CurrentStyle() == eSplit )
@@ -3265,11 +3292,11 @@ void MainFrame::Create(){
 
                ui::Widget xz = m_pXZWnd->GetWidget();
 
-        auto split = create_split_views( camera, yz, xy, xz );
-               vbox.pack_start( split, TRUE, TRUE, 0 );
+               m_hSplit = create_split_views( camera, yz, xy, xz, m_vSplit, m_vSplit2 );
+               vbox.pack_start( m_hSplit, 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() );
 
                        WORKAROUND_GOBJECT_SET_GLWIDGET( window, TextureBrowser_getGLWidget() );
@@ -3302,7 +3329,9 @@ void MainFrame::Create(){
                vbox.pack_start( hsplit, TRUE, TRUE, 0 );
                hsplit.show();
 
-               ui::Widget split = create_split_views( camera, yz, xy, xz );
+               /* Before merging NetRadiantCustom:
+               ui::Widget split = create_split_views( camera, yz, xy, xz ); */
+               m_hSplit = create_split_views( camera, yz, xy, xz, m_vSplit, m_vSplit2 );
 
                ui::Widget vsplit = ui::VPaned(ui::New);
                vsplit.show();
@@ -3313,11 +3342,19 @@ void MainFrame::Create(){
                // console
                ui::Widget console_window = create_framed_widget( Console_constructWindow( window ) );
 
-               gtk_paned_add1( GTK_PANED( hsplit ), split );
+               /* Before merging NetRadiantCustom:
+               gtk_paned_add1( GTK_PANED( hsplit ), m_hSplit );
                gtk_paned_add2( GTK_PANED( hsplit ), vsplit );
 
                gtk_paned_add1( GTK_PANED( vsplit ), texture_window  );
                gtk_paned_add2( GTK_PANED( vsplit ), console_window  );
+               */
+
+               gtk_paned_pack1( GTK_PANED( hsplit ), m_hSplit, TRUE, TRUE );
+               gtk_paned_pack2( GTK_PANED( hsplit ), vsplit, TRUE, TRUE);
+
+               gtk_paned_pack1( GTK_PANED( vsplit ), texture_window, TRUE, TRUE );
+               gtk_paned_pack2( GTK_PANED( vsplit ), console_window, TRUE, TRUE );
 
                hsplit.connect( "size_allocate", G_CALLBACK( hpaned_allocate ), &g_single_hpaned );
                hsplit.connect( "notify::position", G_CALLBACK( paned_position ), &g_single_hpaned );
@@ -3343,6 +3380,25 @@ void MainFrame::Create(){
 
        EverySecondTimer_enable();
 
+       if ( g_layout_globals.nState & GDK_WINDOW_STATE_MAXIMIZED ) {
+               gtk_window_maximize( window );
+       }
+       if ( g_layout_globals.nState & GDK_WINDOW_STATE_FULLSCREEN ) {
+               gtk_window_fullscreen( window );
+       }
+       if ( !FloatingGroupDialog() ) {
+               gtk_paned_set_position( GTK_PANED( m_vSplit ), g_layout_globals.nXYHeight );
+
+               if ( CurrentStyle() == eRegular ) {
+                       gtk_paned_set_position( GTK_PANED( m_hSplit ), g_layout_globals.nXYWidth );
+               }
+               else
+               {
+                       gtk_paned_set_position( GTK_PANED( m_hSplit ), g_layout_globals.nCamWidth );
+               }
+
+               gtk_paned_set_position( GTK_PANED( m_vSplit2 ), g_layout_globals.nCamHeight );
+       }
        //GlobalShortcuts_reportUnregistered();
 }
 
@@ -3361,7 +3417,9 @@ void MainFrame::SaveWindowInfo(){
                g_layout_globals.nCamHeight = gtk_paned_get_position( GTK_PANED( m_vSplit2 ) );
        }
 
-       g_layout_globals.m_position = m_position_tracker.getPosition();
+       if( gdk_window_get_state( GTK_WIDGET( m_window )->window ) == 0 ){
+               g_layout_globals.m_position = m_position_tracker.getPosition();
+       }
 
        g_layout_globals.nState = gdk_window_get_state( gtk_widget_get_window(m_window ) );
 }
@@ -3500,6 +3558,10 @@ void Layout_constructPreferences( PreferencesPage& page ){
                "", "Detachable Menus",
                make_property( g_Layout_enableDetachableMenus )
                );
+       page.appendCheckBox(
+               "", "Main Toolbar",
+               make_property( g_Layout_enableMainToolbar )
+               );
        if ( !string_empty( g_pGameDescription->getKeyValue( "no_patch" ) ) ) {
                page.appendCheckBox(
                        "", "Patch Toolbar",
@@ -3525,6 +3587,93 @@ void Layout_registerPreferencesPage(){
        PreferencesDialog_addInterfacePage( makeCallbackF(Layout_constructPage) );
 }
 
+void MainFrame_toggleFullscreen(){
+       GtkWindow* wnd = MainFrame_getWindow();
+       if( gdk_window_get_state( GTK_WIDGET( wnd )->window ) & GDK_WINDOW_STATE_FULLSCREEN ){
+               //some portion of buttsex, because gtk_window_unfullscreen doesn't work correctly after calling some modal window
+               bool maximize = ( gdk_window_get_state( GTK_WIDGET( wnd )->window ) & GDK_WINDOW_STATE_MAXIMIZED );
+               gtk_window_unfullscreen( wnd );
+               if( maximize ){
+                       gtk_window_unmaximize( wnd );
+                       gtk_window_maximize( wnd );
+               }
+               else{
+                       gtk_window_move( wnd, g_layout_globals.m_position.x, g_layout_globals.m_position.y );
+                       gtk_window_resize( wnd, g_layout_globals.m_position.w, g_layout_globals.m_position.h );
+               }
+       }
+       else{
+               gtk_window_fullscreen( wnd );
+       }
+}
+
+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( GTK_WIDGET( g_pParentWnd->m_vSplit )->window, &vSplitX, &vSplitY );
+               gdk_window_get_origin( GTK_WIDGET( g_pParentWnd->m_vSplit2 )->window, &vSplit2X, &vSplit2Y );
+               gdk_window_get_origin( GTK_WIDGET( 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"
 #include "transformpath/transformpath.h"
@@ -3568,24 +3717,20 @@ void MainFrame_Construct(){
        GlobalCommands_insert( "ToggleEntityInspector", makeCallbackF(EntityInspector_ToggleShow), Accelerator( 'N' ) );
        GlobalCommands_insert( "EntityList", makeCallbackF(EntityList_toggleShown), Accelerator( 'L' ) );
 
-       GlobalCommands_insert( "ShowHidden", makeCallbackF(Select_ShowAllHidden), Accelerator( 'H', (GdkModifierType)GDK_SHIFT_MASK ) );
-       GlobalCommands_insert( "HideSelected", makeCallbackF(HideSelected), Accelerator( 'H' ) );
+//     GlobalCommands_insert( "ShowHidden", makeCallbackF( Select_ShowAllHidden ), Accelerator( 'H', (GdkModifierType)GDK_SHIFT_MASK ) );
+//     GlobalCommands_insert( "HideSelected", makeCallbackF( HideSelected ), Accelerator( 'H' ) );
+
+       Select_registerCommands();
 
        GlobalToggles_insert( "DragVertices", makeCallbackF(SelectVertexMode), ToggleItem::AddCallbackCaller( g_vertexMode_button ), Accelerator( 'V' ) );
        GlobalToggles_insert( "DragEdges", makeCallbackF(SelectEdgeMode), ToggleItem::AddCallbackCaller( g_edgeMode_button ), Accelerator( 'E' ) );
        GlobalToggles_insert( "DragFaces", makeCallbackF(SelectFaceMode), ToggleItem::AddCallbackCaller( g_faceMode_button ), Accelerator( 'F' ) );
 
-       GlobalCommands_insert( "MirrorSelectionX", makeCallbackF(Selection_Flipx) );
-       GlobalCommands_insert( "RotateSelectionX", makeCallbackF(Selection_Rotatex) );
-       GlobalCommands_insert( "MirrorSelectionY", makeCallbackF(Selection_Flipy) );
-       GlobalCommands_insert( "RotateSelectionY", makeCallbackF(Selection_Rotatey) );
-       GlobalCommands_insert( "MirrorSelectionZ", makeCallbackF(Selection_Flipz) );
-       GlobalCommands_insert( "RotateSelectionZ", makeCallbackF(Selection_Rotatez) );
-
-       GlobalCommands_insert( "ArbitraryRotation", makeCallbackF(DoRotateDlg) );
-       GlobalCommands_insert( "ArbitraryScale", makeCallbackF(DoScaleDlg) );
+       GlobalCommands_insert( "ArbitraryRotation", makeCallbackF(DoRotateDlg), Accelerator( 'R', (GdkModifierType)GDK_SHIFT_MASK ) );
+       GlobalCommands_insert( "ArbitraryScale", makeCallbackF(DoScaleDlg), Accelerator( 'S', (GdkModifierType)( GDK_SHIFT_MASK | GDK_CONTROL_MASK ) ) );
 
        GlobalCommands_insert( "BuildMenuCustomize", makeCallbackF(DoBuildMenu) );
+       GlobalCommands_insert( "Build_runRecentExecutedBuild", makeCallbackF(Build_runRecentExecutedBuild), Accelerator( GDK_F5 ) );
 
        GlobalCommands_insert( "FindBrush", makeCallbackF(DoFind) );
 
@@ -3597,7 +3742,9 @@ void MainFrame_Construct(){
        GlobalToggles_insert( "MouseTranslate", makeCallbackF(TranslateMode), ToggleItem::AddCallbackCaller( g_translatemode_button ), Accelerator( 'W' ) );
        GlobalToggles_insert( "MouseRotate", makeCallbackF(RotateMode), ToggleItem::AddCallbackCaller( g_rotatemode_button ), Accelerator( 'R' ) );
        GlobalToggles_insert( "MouseScale", makeCallbackF(ScaleMode), ToggleItem::AddCallbackCaller( g_scalemode_button ) );
-       GlobalToggles_insert( "MouseDrag", makeCallbackF(DragMode), ToggleItem::AddCallbackCaller( g_dragmode_button ), Accelerator( 'Q' ) );
+       GlobalToggles_insert( "MouseDrag", makeCallbackF(DragMode), ToggleItem::AddCallbackCaller( g_dragmode_button ) );
+       GlobalCommands_insert( "MouseRotateOrScale", makeCallbackF(ToggleRotateScaleModes) );
+       GlobalCommands_insert( "MouseDragOrScale", makeCallbackF(ToggleDragScaleModes), Accelerator( 'Q' ) );
 
 #ifndef GARUX_DISABLE_GTKTHEME
        GlobalCommands_insert( "gtkThemeDlg", makeCallbackF(gtkThemeDlg) );
@@ -3606,13 +3753,11 @@ void MainFrame_Construct(){
        GlobalCommands_insert( "ColorSchemeQER", makeCallbackF(ColorScheme_QER) );
        GlobalCommands_insert( "ColorSchemeBlackAndGreen", makeCallbackF(ColorScheme_Black) );
        GlobalCommands_insert( "ColorSchemeYdnar", makeCallbackF(ColorScheme_Ydnar) );
-       GlobalCommands_insert("ColorSchemeAdwaitaDark", makeCallbackF(ColorScheme_AdwaitaDark));
+       GlobalCommands_insert( "ColorSchemeAdwaitaDark", makeCallbackF(ColorScheme_AdwaitaDark));
        GlobalCommands_insert( "ChooseTextureBackgroundColor", makeCallback( g_ColoursMenu.m_textureback ) );
        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 ) );
@@ -3622,11 +3767,14 @@ void MainFrame_Construct(){
        GlobalCommands_insert( "ChooseClipperColor", makeCallback( g_ColoursMenu.m_clipper ) );
        GlobalCommands_insert( "ChooseOrthoViewNameColor", makeCallback( g_ColoursMenu.m_viewname ) );
 
+       GlobalCommands_insert( "Fullscreen", makeCallbackF( MainFrame_toggleFullscreen ), Accelerator( GDK_F11 ) );
+       GlobalCommands_insert( "MaximizeView", makeCallbackF( Maximize_View ), Accelerator( GDK_F12 ) );
+
 
        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( "CSGHollow", makeCallbackF(CSG_MakeHollow) );
        GlobalCommands_insert( "CSGRoom", makeCallbackF(CSG_MakeRoom) );
+       GlobalCommands_insert( "CSGTool", makeCallbackF(CSG_Tool) );
 
        Grid_registerCommands();
 
@@ -3660,6 +3808,7 @@ void MainFrame_Construct(){
        GlobalSelectionSystem().addSelectionChangeCallback( ComponentModeSelectionChangedCaller() );
 
        GlobalPreferenceSystem().registerPreference( "DetachableMenus", make_property_string( g_Layout_enableDetachableMenus.m_latched ) );
+       GlobalPreferenceSystem().registerPreference( "MainToolBar", make_property_string( g_Layout_enableMainToolbar.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 ) );
@@ -3713,6 +3862,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();
@@ -3739,7 +3889,7 @@ void MainFrame_Destroy(){
 
 
 void GLWindow_Construct(){
-       GlobalPreferenceSystem().registerPreference( "MouseButtons", make_property_string( g_glwindow_globals.m_nMouseType ) );
+//     GlobalPreferenceSystem().registerPreference( "MouseButtons", make_property_string( g_glwindow_globals.m_nMouseType ) );
 }
 
 void GLWindow_Destroy(){