]> de.git.xonotic.org Git - xonotic/netradiant.git/blobdiff - radiant/commands.cpp
do not remember game was switched when selected at startup, <3 @Garux
[xonotic/netradiant.git] / radiant / commands.cpp
index 21b6e90dcbfa20616cf34b545c2fb393b9370e5e..9c1b7682246febb16f70c082faba1da1b418dbd2 100644 (file)
@@ -71,7 +71,7 @@ typedef std::map<CopiedString, Command> Commands;
 
 Commands g_commands;
 
-void GlobalCommands_insert( const char* name, const Callback& callback, const Accelerator& accelerator ){
+void GlobalCommands_insert( const char* name, const Callback<void()>& callback, const Accelerator& accelerator ){
        bool added = g_commands.insert( Commands::value_type( name, Command( callback, GlobalShortcuts_insert( name, accelerator ) ) ) ).second;
        ASSERT_MESSAGE( added, "command already registered: " << makeQuoted( name ) );
 }
@@ -87,7 +87,7 @@ typedef std::map<CopiedString, Toggle> Toggles;
 
 Toggles g_toggles;
 
-void GlobalToggles_insert( const char* name, const Callback& callback, const BoolExportCallback& exportCallback, const Accelerator& accelerator ){
+void GlobalToggles_insert( const char* name, const Callback<void()>& callback, const Callback<void(const Callback<void(bool)> &)>& exportCallback, const Accelerator& accelerator ){
        bool added = g_toggles.insert( Toggles::value_type( name, Toggle( callback, GlobalShortcuts_insert( name, accelerator ), exportCallback ) ) ).second;
        ASSERT_MESSAGE( added, "toggle already registered: " << makeQuoted( name ) );
 }
@@ -102,7 +102,7 @@ typedef std::map<CopiedString, KeyEvent> KeyEvents;
 
 KeyEvents g_keyEvents;
 
-void GlobalKeyEvents_insert( const char* name, const Accelerator& accelerator, const Callback& keyDown, const Callback& keyUp ){
+void GlobalKeyEvents_insert( const char* name, const Accelerator& accelerator, const Callback<void()>& keyDown, const Callback<void()>& keyUp ){
        bool added = g_keyEvents.insert( KeyEvents::value_type( name, KeyEvent( GlobalShortcuts_insert( name, accelerator ), keyDown, keyUp ) ) ).second;
        ASSERT_MESSAGE( added, "command already registered: " << makeQuoted( name ) );
 }
@@ -161,17 +161,17 @@ void connect_accelerator( const char *name ){
 struct command_list_dialog_t : public ModalDialog
 {
        command_list_dialog_t()
-               : m_close_button( *this, eIDCANCEL ), m_list( NULL ), m_command_iter(), m_model( NULL ), m_waiting_for_key( false ){
+               : m_close_button( *this, eIDCANCEL ), m_list( ui::null ), m_command_iter(), m_model( ui::null ), m_waiting_for_key( false ){
        }
        ModalDialogButton m_close_button;
 
        ui::TreeView m_list;
        GtkTreeIter m_command_iter;
-       GtkTreeModel *m_model;
+       ui::TreeModel m_model;
        bool m_waiting_for_key;
 };
 
-void accelerator_clear_button_clicked( GtkButton *btn, gpointer dialogptr ){
+void accelerator_clear_button_clicked( ui::Button btn, gpointer dialogptr ){
        command_list_dialog_t &dialog = *(command_list_dialog_t *) dialogptr;
 
        if ( dialog.m_waiting_for_key ) {
@@ -179,11 +179,11 @@ void accelerator_clear_button_clicked( GtkButton *btn, gpointer dialogptr ){
                dialog.m_waiting_for_key = false;
                gtk_list_store_set( ui::ListStore::from( dialog.m_model ), &dialog.m_command_iter, 2, false, -1 );
                gtk_widget_set_sensitive( dialog.m_list , true );
-               dialog.m_model = NULL;
+               dialog.m_model = ui::TreeModel(ui::null);
                return;
        }
 
-       GtkTreeSelection *sel = gtk_tree_view_get_selection( dialog.m_list );
+       auto sel = gtk_tree_view_get_selection( dialog.m_list );
        GtkTreeModel *model;
        GtkTreeIter iter;
        if ( !gtk_tree_selection_get_selected( sel, &model, &iter ) ) {
@@ -209,18 +209,18 @@ void accelerator_clear_button_clicked( GtkButton *btn, gpointer dialogptr ){
        g_value_unset( &val );
 }
 
-void accelerator_edit_button_clicked( GtkButton *btn, gpointer dialogptr ){
+void accelerator_edit_button_clicked( ui::Button btn, gpointer dialogptr ){
        command_list_dialog_t &dialog = *(command_list_dialog_t *) dialogptr;
 
        // 1. find selected row
-       GtkTreeSelection *sel = gtk_tree_view_get_selection( dialog.m_list );
+       auto sel = gtk_tree_view_get_selection( dialog.m_list );
        GtkTreeModel *model;
        GtkTreeIter iter;
        if ( !gtk_tree_selection_get_selected( sel, &model, &iter ) ) {
                return;
        }
        dialog.m_command_iter = iter;
-       dialog.m_model = model;
+       dialog.m_model = ui::TreeModel::from(model);
 
        // 2. disallow changing the row
        //gtk_widget_set_sensitive(dialog.m_list, false);
@@ -287,10 +287,10 @@ bool accelerator_window_key_press( ui::Window widget, GdkEventKey *event, gpoint
        const char *commandName;
        const Accelerator &newAccel;
        ui::Widget widget;
-       GtkTreeModel *model;
+       ui::TreeModel model;
 public:
        bool allow;
-       VerifyAcceleratorNotTaken( const char *name, const Accelerator &accelerator, ui::Widget w, GtkTreeModel *m ) : commandName( name ), newAccel( accelerator ), widget( w ), model( m ), allow( true ){
+       VerifyAcceleratorNotTaken( const char *name, const Accelerator &accelerator, ui::Widget w, ui::TreeModel m ) : commandName( name ), newAccel( accelerator ), widget( w ), model( m ), allow( true ){
        }
        void visit( const char* name, Accelerator& accelerator ){
                if ( !strcmp( name, commandName ) ) {
@@ -306,7 +306,7 @@ public:
                        StringOutputStream msg;
                        msg << "The command " << name << " is already assigned to the key " << accelerator << ".\n\n"
                                << "Do you want to unassign " << name << " first?";
-                       auto r = widget.window().alert( msg.c_str(), "Key already used", ui::alert_type::YESNOCANCEL );
+                       auto r = ui::alert( widget.window(), msg.c_str(), "Key already used", ui::alert_type::YESNOCANCEL );
                        if ( r == ui::alert_response::YES ) {
                                // clear the ACTUAL accelerator too!
                                disconnect_accelerator( name );
@@ -360,7 +360,7 @@ public:
 
        g_value_unset( &val );
 
-       dialog.m_model = NULL;
+       dialog.m_model = ui::TreeModel(ui::null);
 
        return true;
 }
@@ -403,22 +403,22 @@ void DoCommandListDlg(){
                hbox.pack_start( scr, TRUE, TRUE, 0 );
 
                {
-                       ui::ListStore store = ui::ListStore(gtk_list_store_new( 4, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_BOOLEAN, G_TYPE_INT ));
+                       auto store = ui::ListStore::from(gtk_list_store_new( 4, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_BOOLEAN, G_TYPE_INT ));
 
-                       auto view = ui::TreeView(ui::TreeModel(store));
+                       auto view = ui::TreeView(ui::TreeModel::from(store._handle));
                        dialog.m_list = view;
 
                        gtk_tree_view_set_enable_search(view, false ); // annoying
 
                        {
                                auto renderer = ui::CellRendererText(ui::New);
-                               GtkTreeViewColumn* column = ui::TreeViewColumn( "Command", renderer, {{"text", 0}, {"weight-set", 2}, {"weight", 3}} );
+                               auto column = ui::TreeViewColumn( "Command", renderer, {{"text", 0}, {"weight-set", 2}, {"weight", 3}} );
                                gtk_tree_view_append_column(view, column );
                        }
 
                        {
                                auto renderer = ui::CellRendererText(ui::New);
-                               GtkTreeViewColumn* column = ui::TreeViewColumn( "Key", renderer, {{"text", 1}, {"weight-set", 2}, {"weight", 3}} );
+                               auto column = ui::TreeViewColumn( "Key", renderer, {{"text", 1}, {"weight-set", 2}, {"weight", 3}} );
                                gtk_tree_view_append_column(view, column );
                        }