]> de.git.xonotic.org Git - xonotic/netradiant.git/blobdiff - radiant/mainframe.cpp
GTK: wrap gtk_box_pack_start
[xonotic/netradiant.git] / radiant / mainframe.cpp
index 92e1960ab8543f4c18617023fe48e0ec450e177d..ecafc384ef048e0b282287de0554a7a785633d85 100644 (file)
@@ -26,6 +26,7 @@
 //
 
 #include "mainframe.h"
+#include "globaldefs.h"
 
 #include <gtk/gtk.h>
 
@@ -180,7 +181,7 @@ void VFS_Destroy(){
 
 // Home Paths
 
-#ifdef WIN32
+#if GDEF_OS_WINDOWS
 #include <shlobj.h>
 #include <objbase.h>
 const GUID qFOLDERID_SavedGames = {0x4C5C32FF, 0xBB9D, 0x43b0, {0xB5, 0xB4, 0x2D, 0x72, 0xE5, 0x4E, 0xAA, 0xA4}};
@@ -197,7 +198,7 @@ void HomePaths_Realise(){
                if ( !string_empty( prefix ) ) {
                        StringOutputStream path( 256 );
 
-#if defined( __APPLE__ )
+#if GDEF_OS_MACOS
                        path.clear();
                        path << DirectoryCleaned( g_get_home_dir() ) << "Library/Application Support" << ( prefix + 1 ) << "/";
                        if ( file_is_directory( path.c_str() ) ) {
@@ -208,7 +209,7 @@ void HomePaths_Realise(){
                        path << DirectoryCleaned( g_get_home_dir() ) << prefix << "/";
 #endif
 
-#if defined( WIN32 )
+#if GDEF_OS_WINDOWS
                        TCHAR mydocsdir[MAX_PATH + 1];
                        wchar_t *mydocsdirw;
                        HMODULE shfolder = LoadLibrary( "shfolder.dll" );
@@ -247,7 +248,7 @@ void HomePaths_Realise(){
                        }
 #endif
 
-#if defined( POSIX )
+#if GDEF_OS_POSIX
                        path.clear();
                        path << DirectoryCleaned( g_get_home_dir() ) << prefix << "/";
                        g_qeglobals.m_userEnginePath = path.c_str();
@@ -443,7 +444,7 @@ ui::Window BuildDialog(){
        frame.add(vbox2);
 
        {
-               PreferencesPage preferencesPage( *this, ui::Widget(GTK_WIDGET( vbox2 )) );
+               PreferencesPage preferencesPage( *this, vbox2 );
                Paths_constructPreferences( preferencesPage );
        }
 
@@ -539,11 +540,11 @@ void operator()( const char* name ) const {
 const char* const c_library_extension =
 #if defined( CMAKE_SHARED_MODULE_SUFFIX )
     CMAKE_SHARED_MODULE_SUFFIX
-#elif defined( WIN32 )
+#elif GDEF_OS_WINDOWS
        "dll"
-#elif defined ( __APPLE__ )
+#elif GDEF_OS_MACOS
        "dylib"
-#elif defined( __linux__ ) || defined ( __FreeBSD__ )
+#elif GDEF_OS_LINUX || GDEF_OS_BSD
        "so"
 #endif
 ;
@@ -957,13 +958,13 @@ void OpenBugReportURL(){
 }
 
 
-ui::Widget g_page_console;
+ui::Widget g_page_console{ui::null};
 
 void Console_ToggleShow(){
        GroupDialog_showPage( g_page_console );
 }
 
-ui::Widget g_page_entity;
+ui::Widget g_page_entity{ui::null};
 
 void EntityInspector_ToggleShow(){
        GroupDialog_showPage( g_page_entity );
@@ -1676,7 +1677,7 @@ bool ScreenUpdates_Enabled(){
 }
 
 void ScreenUpdates_process(){
-       if ( redrawRequired() && gtk_widget_get_visible( g_wait.m_window ) ) {
+       if ( redrawRequired() && g_wait.m_window.visible() ) {
                ui::process();
        }
 }
@@ -1698,8 +1699,8 @@ void ScreenUpdates_Disable( const char* message, const char* title ){
                        ScreenUpdates_process();
                }
        }
-       else if ( gtk_widget_get_visible( g_wait.m_window ) ) {
-               gtk_label_set_text( g_wait.m_label, message );
+       else if ( g_wait.m_window.visible() ) {
+               g_wait.m_label.text(message);
                ScreenUpdates_process();
        }
        g_wait_stack.push_back( message );
@@ -1718,8 +1719,8 @@ void ScreenUpdates_Enable(){
 
                //gtk_window_present(MainFrame_getWindow());
        }
-       else if ( gtk_widget_get_visible( g_wait.m_window ) ) {
-               gtk_label_set_text( g_wait.m_label, g_wait_stack.back().c_str() );
+       else if ( g_wait.m_window.visible() ) {
+               g_wait.m_label.text(g_wait_stack.back().c_str());
                ScreenUpdates_process();
        }
 }
@@ -1877,10 +1878,10 @@ void fill_view_xz_front_menu( ui::Menu menu ){
 }
 
 
-ui::Widget g_toggle_z_item;
-ui::Widget g_toggle_console_item;
-ui::Widget g_toggle_entity_item;
-ui::Widget g_toggle_entitylist_item;
+ui::Widget g_toggle_z_item{ui::null};
+ui::Widget g_toggle_console_item{ui::null};
+ui::Widget g_toggle_entity_item{ui::null};
+ui::Widget g_toggle_entitylist_item{ui::null};
 
 ui::MenuItem create_view_menu( MainFrame::EViewStyle style ){
        // View menu
@@ -2165,7 +2166,7 @@ ui::MenuItem create_help_menu(){
        return help_menu_item;
 }
 
-GtkMenuBar* create_main_menu( MainFrame::EViewStyle style ){
+ui::MenuBar create_main_menu( MainFrame::EViewStyle style ){
        auto menu_bar = ui::MenuBar(GTK_MENU_BAR( gtk_menu_bar_new() ));
        menu_bar.show();
 
@@ -2469,7 +2470,7 @@ WindowFocusPrinter g_mainframeFocusPrinter( "mainframe" );
 class MainWindowActive
 {
 static gboolean notify( ui::Window window, gpointer dummy, MainWindowActive* self ){
-       if ( g_wait.m_window && gtk_window_is_active( window ) && !gtk_widget_get_visible( g_wait.m_window ) ) {
+       if ( g_wait.m_window && gtk_window_is_active( window ) && !g_wait.m_window.visible() ) {
                g_wait.m_window.show();
        }
 
@@ -2511,7 +2512,7 @@ ui::Window MainFrame_getWindow()
 
 std::vector<ui::Widget> g_floating_windows;
 
-MainFrame::MainFrame() : m_window( 0 ), m_idleRedrawStatusText( RedrawStatusTextCaller( *this ) ){
+MainFrame::MainFrame() : m_idleRedrawStatusText( RedrawStatusTextCaller( *this ) ){
        m_pXYWnd = 0;
        m_pCamWnd = 0;
        m_pZWnd = 0;
@@ -2519,9 +2520,8 @@ MainFrame::MainFrame() : m_window( 0 ), m_idleRedrawStatusText( RedrawStatusText
        m_pXZWnd = 0;
        m_pActiveXY = 0;
 
-       for ( int n = 0; n < c_count_status; n++ )
-       {
-               m_pStatusLabel[n] = ui::root;
+       for (auto &n : m_pStatusLabel) {
+        n = NULL;
        }
 
        m_bSleeping = false;
@@ -2532,16 +2532,16 @@ MainFrame::MainFrame() : m_window( 0 ), m_idleRedrawStatusText( RedrawStatusText
 MainFrame::~MainFrame(){
        SaveWindowInfo();
 
-       gtk_widget_hide( GTK_WIDGET( m_window ) );
+       m_window.hide();
 
        Shutdown();
 
        for ( std::vector<ui::Widget>::iterator i = g_floating_windows.begin(); i != g_floating_windows.end(); ++i )
        {
-               gtk_widget_destroy( *i );
+               i->destroy();
        }
 
-       gtk_widget_destroy( GTK_WIDGET( m_window ) );
+       m_window.destroy();
 }
 
 void MainFrame::SetActiveXY( XYWnd* p ){
@@ -2603,7 +2603,7 @@ void MainFrame::CreateContexts(){
 #endif
 }
 
-#ifdef _DEBUG
+#if GDEF_DEBUG
 //#define DBG_SLEEP
 #endif
 
@@ -2689,7 +2689,7 @@ void show_splash(){
 }
 
 void hide_splash(){
-       gtk_widget_destroy( GTK_WIDGET( splash_screen ) );
+       splash_screen.destroy();
 }
 
 WindowPositionTracker g_posCamWnd;
@@ -2712,7 +2712,7 @@ void MainFrame::Create(){
 
        gtk_window_set_transient_for( splash_screen, window );
 
-#if !defined( WIN32 )
+#if !GDEF_OS_WINDOWS
        {
                GdkPixbuf* pixbuf = pixbuf_new_from_file_with_mask( "bitmaps/icon.png" );
                if ( pixbuf != 0 ) {
@@ -2736,7 +2736,7 @@ void MainFrame::Create(){
 
        GetPlugInMgr().Init( window );
 
-       ui::Widget vbox = ui::VBox( FALSE, 0 );
+       auto vbox = ui::VBox( FALSE, 0 );
        window.add(vbox);
        vbox.show();
 
@@ -2746,20 +2746,20 @@ void MainFrame::Create(){
 
        register_shortcuts();
 
-       GtkMenuBar* main_menu = create_main_menu( CurrentStyle() );
-       gtk_box_pack_start( GTK_BOX( vbox ), GTK_WIDGET( main_menu ), FALSE, FALSE, 0 );
+    auto main_menu = create_main_menu( CurrentStyle() );
+       vbox.pack_start( 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 );
+    auto main_toolbar = create_main_toolbar( CurrentStyle() );
+       vbox.pack_start( main_toolbar, FALSE, FALSE, 0 );
 
-       GtkToolbar* plugin_toolbar = create_plugin_toolbar();
+       auto plugin_toolbar = create_plugin_toolbar();
        if ( !g_Layout_enablePluginToolbar.m_value ) {
-               gtk_widget_hide( GTK_WIDGET( plugin_toolbar ) );
+               plugin_toolbar.hide();
        }
-       gtk_box_pack_start( GTK_BOX( vbox ), GTK_WIDGET( plugin_toolbar ), FALSE, FALSE, 0 );
+       vbox.pack_start( plugin_toolbar, FALSE, FALSE, 0 );
 
-       ui::Widget main_statusbar = create_main_statusbar( m_pStatusLabel );
-       gtk_box_pack_end( GTK_BOX( vbox ), main_statusbar, FALSE, TRUE, 2 );
+       ui::Widget main_statusbar = create_main_statusbar(reinterpret_cast<ui::Widget *>(m_pStatusLabel));
+       vbox.pack_end(main_statusbar, FALSE, TRUE, 2);
 
        GroupDialog_constructWindow( window );
        g_page_entity = GroupDialog_addPage( "Entities", EntityInspector_constructWindow( GroupDialog_getWindow() ), RawStringExportCaller( "Entities" ) );
@@ -2768,7 +2768,7 @@ void MainFrame::Create(){
                g_page_console = GroupDialog_addPage( "Console", Console_constructWindow( GroupDialog_getWindow() ), RawStringExportCaller( "Console" ) );
        }
 
-#ifdef WIN32
+#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 );
@@ -2791,9 +2791,9 @@ void MainFrame::Create(){
 
        if ( CurrentStyle() == eRegular || CurrentStyle() == eRegularLeft ) {
                {
-                       ui::Widget vsplit = ui::VPaned();
+                       ui::Widget vsplit = ui::VPaned(ui::New);
                        m_vSplit = vsplit;
-                       gtk_box_pack_start( GTK_BOX( vbox ), vsplit, TRUE, TRUE, 0 );
+                       vbox.pack_start( vsplit, TRUE, TRUE, 0 );
                        vsplit.show();
 
                        // console
@@ -2801,7 +2801,7 @@ void MainFrame::Create(){
                        gtk_paned_pack2( GTK_PANED( vsplit ), console_window, FALSE, TRUE );
 
                        {
-                               ui::Widget hsplit = ui::HPaned();
+                               ui::Widget hsplit = ui::HPaned(ui::New);
                                hsplit.show();
                                m_hSplit = hsplit;
                                gtk_paned_add1( GTK_PANED( vsplit ), hsplit );
@@ -2812,7 +2812,7 @@ void MainFrame::Create(){
                                ui::Widget xy_window = ui::Widget(GTK_WIDGET( create_framed_widget( m_pXYWnd->GetWidget() ) ));
 
                                {
-                                       ui::Widget vsplit2 = ui::VPaned();
+                                       ui::Widget vsplit2 = ui::VPaned(ui::New);
                                        vsplit2.show();
                                        m_vSplit2 = vsplit2;
 
@@ -2962,8 +2962,8 @@ void MainFrame::Create(){
 
                ui::Widget 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 );
+        auto split = create_split_views( camera, yz, xy, xz );
+               vbox.pack_start( split, TRUE, TRUE, 0 );
 
                {
                        GtkFrame* frame = create_framed_widget( TextureBrowser_constructWindow( window ) );
@@ -3040,11 +3040,11 @@ void MainFrame::Shutdown(){
 }
 
 void MainFrame::RedrawStatusText(){
-       gtk_label_set_text( GTK_LABEL( m_pStatusLabel[c_command_status] ), m_command_status.c_str() );
-       gtk_label_set_text( GTK_LABEL( m_pStatusLabel[c_position_status] ), m_position_status.c_str() );
-       gtk_label_set_text( GTK_LABEL( m_pStatusLabel[c_brushcount_status] ), m_brushcount_status.c_str() );
-       gtk_label_set_text( GTK_LABEL( m_pStatusLabel[c_texture_status] ), m_texture_status.c_str() );
-       gtk_label_set_text( GTK_LABEL( m_pStatusLabel[c_grid_status] ), m_grid_status.c_str() );
+       ui::Label::from(m_pStatusLabel[c_command_status]).text(m_command_status.c_str());
+       ui::Label::from(m_pStatusLabel[c_position_status]).text(m_position_status.c_str());
+       ui::Label::from(m_pStatusLabel[c_brushcount_status]).text(m_brushcount_status.c_str());
+       ui::Label::from(m_pStatusLabel[c_texture_status]).text(m_texture_status.c_str());
+       ui::Label::from(m_pStatusLabel[c_grid_status]).text(m_grid_status.c_str());
 }
 
 void MainFrame::UpdateStatusText(){
@@ -3108,7 +3108,7 @@ void GlobalGL_sharedContextCreated(){
        GlobalShaderCache().realise();
        Textures_Realise();
 
-#ifdef WIN32
+#if GDEF_OS_WINDOWS
        /* win32 is dodgy here, just use courier new then */
        g_font = glfont_create( "arial 9" );
 #else
@@ -3314,11 +3314,11 @@ void MainFrame_Construct(){
 
        {
                const char* ENGINEPATH_ATTRIBUTE =
-#if defined( WIN32 )
+#if GDEF_OS_WINDOWS
                        "enginepath_win32"
-#elif defined( __APPLE__ )
+#elif GDEF_OS_MACOS
                        "enginepath_macos"
-#elif defined( __linux__ ) || defined ( __FreeBSD__ )
+#elif GDEF_OS_LINUX || GDEF_OS_BSD
                        "enginepath_linux"
 #else
 #error "unknown platform"