]> git.xonotic.org Git - xonotic/netradiant.git/blobdiff - radiant/build.cpp
radiant/build: add comment telling MaingFrame_getWindow() is suspicious
[xonotic/netradiant.git] / radiant / build.cpp
index a1eab6c36a392a395b814816bc45c7eaa002c087..2ff2b83d8c8b6a0d9dafe9660403033f1a924de9 100644 (file)
@@ -76,6 +76,25 @@ void setString( const char* string ){
        m_string = string;
 }
 void evaluate( StringBuffer& output ){
+       // replace ".[ExecutableType]" with "[ExecutableExt]"
+       {
+               StringBuffer output;
+               const char *pattern = ".[ExecutableType]";
+               for ( const char *i = m_string.c_str(); *i != '\0'; ++i )
+               {
+                       if ( strncmp( pattern, i, sizeof( pattern ) ) == 0 )
+                       {
+                               output.push_string("[ExecutableExt]");
+                               i += strlen( pattern ) - 1;
+                       }
+                       else
+                       {
+                               output.push_back(*i);
+                       }
+               }
+               setString(output.c_str());
+       }
+
        StringBuffer variable;
        bool in_variable = false;
        for ( const char* i = m_string.c_str(); *i != '\0'; ++i )
@@ -657,7 +676,7 @@ ProjectList( Project& project ) : m_project( project ), m_changed( false ){
 }
 };
 
-gboolean project_cell_edited( GtkCellRendererText* cell, gchar* path_string, gchar* new_text, ProjectList* projectList ){
+gboolean project_cell_edited(ui::CellRendererText cell, gchar* path_string, gchar* new_text, ProjectList* projectList ){
        Project& project = projectList->m_project;
 
        auto path = ui::TreePath( path_string );
@@ -699,7 +718,7 @@ gboolean project_key_press( ui::TreeView widget, GdkEventKey* event, ProjectList
        Project& project = projectList->m_project;
 
        if ( event->keyval == GDK_KEY_Delete ) {
-               auto selection = ui::TreeSelection(gtk_tree_view_get_selection(widget));
+               auto selection = ui::TreeSelection::from(gtk_tree_view_get_selection(widget));
                GtkTreeIter iter;
                GtkTreeModel* model;
                if ( gtk_tree_selection_get_selected( selection, &model, &iter ) ) {
@@ -757,7 +776,7 @@ gboolean project_selection_changed( ui::TreeSelection selection, ui::ListStore s
        return FALSE;
 }
 
-gboolean commands_cell_edited( GtkCellRendererText* cell, gchar* path_string, gchar* new_text, ui::ListStore store ){
+gboolean commands_cell_edited(ui::CellRendererText cell, gchar* path_string, gchar* new_text, ui::ListStore store ){
        if ( g_current_build == 0 ) {
                return FALSE;
        }
@@ -823,6 +842,12 @@ gboolean commands_key_press( ui::TreeView widget, GdkEventKey* event, ui::ListSt
 ui::Window BuildMenuDialog_construct( ModalDialog& modal, ProjectList& projectList ){
        ui::Window window = MainFrame_getWindow().create_dialog_window("Build Menu", G_CALLBACK(dialog_delete_callback ), &modal, -1, 400 );
 
+       // FIXME: GTK_WIN_POS_CENTER_ON_PARENT must be used instead but does not work
+       // for unknown reason.
+       // It's possible MaingFrame_getWindow() does not return the main window.
+       // It's known the preferences window has same issue when using MaingFrame_getWindow().
+       gtk_window_set_position( window, GTK_WIN_POS_CENTER_ALWAYS );
+
        {
                auto table1 = create_dialog_table( 2, 2, 4, 4, 4 );
                window.add(table1);
@@ -838,8 +863,8 @@ ui::Window BuildMenuDialog_construct( ModalDialog& modal, ProjectList& projectLi
                                vbox.pack_start( button, FALSE, FALSE, 0 );
                        }
                }
-               auto buildViewStore = ui::ListStore(gtk_list_store_new( 1, G_TYPE_STRING ));
-               auto buildView = ui::TreeView( ui::TreeModel( buildViewStore ));
+               auto buildViewStore = ui::ListStore::from(gtk_list_store_new( 1, G_TYPE_STRING ));
+               auto buildView = ui::TreeView( ui::TreeModel::from( buildViewStore._handle ));
                {
                        auto frame = create_dialog_frame( "Build menu" );
             table1.attach(frame, {0, 1, 0, 1});
@@ -881,9 +906,9 @@ ui::Window BuildMenuDialog_construct( ModalDialog& modal, ProjectList& projectLi
                                frame.add(scr);
 
                                {
-                                       auto store = ui::ListStore(gtk_list_store_new( 1, G_TYPE_STRING ));
+                                       auto store = ui::ListStore::from(gtk_list_store_new( 1, G_TYPE_STRING ));
 
-                                       auto view = ui::TreeView(ui::TreeModel( store ));
+                                       auto view = ui::TreeView(ui::TreeModel::from( store._handle ));
                                        gtk_tree_view_set_headers_visible(view, FALSE );
 
                                        auto renderer = ui::CellRendererText(ui::New);
@@ -904,7 +929,7 @@ ui::Window BuildMenuDialog_construct( ModalDialog& modal, ProjectList& projectLi
 
                                        view.connect( "key_press_event", G_CALLBACK( commands_key_press ), store );
 
-                                       auto sel = ui::TreeSelection(gtk_tree_view_get_selection(buildView ));
+                                       auto sel = ui::TreeSelection::from(gtk_tree_view_get_selection(buildView ));
                                        sel.connect( "changed", G_CALLBACK( project_selection_changed ), store );
                                }
                        }
@@ -1026,7 +1051,7 @@ void SaveBuildMenu(){
 #include "stringio.h"
 
 void BuildMenu_Construct(){
-       GlobalPreferenceSystem().registerPreference( "BuildMenu", CopiedStringImportStringCaller( g_buildMenu ), CopiedStringExportStringCaller( g_buildMenu ) );
+       GlobalPreferenceSystem().registerPreference( "BuildMenu", make_property_string( g_buildMenu ) );
        LoadBuildMenu();
 }
 void BuildMenu_Destroy(){