X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=radiant%2Fentityinspector.cpp;h=82c0bb5f96533254b2c9c32480186a1e5876a222;hb=569c0d2b9f44331d0b9c0ae7594147efb9e632e1;hp=a0a3bdfad9aaf830644938013d7b66116909b82a;hpb=771bab14ffa4b131540b125aff6554265662f874;p=xonotic%2Fnetradiant.git diff --git a/radiant/entityinspector.cpp b/radiant/entityinspector.cpp index a0a3bdfa..82c0bb5f 100644 --- a/radiant/entityinspector.cpp +++ b/radiant/entityinspector.cpp @@ -22,6 +22,7 @@ #include "entityinspector.h" #include "debugging/debugging.h" +#include #include "ientity.h" #include "ifilesystem.h" @@ -121,12 +122,12 @@ public: BooleanAttribute( const char* key ) : m_key( key ), m_check( 0 ){ - GtkCheckButton* check = GTK_CHECK_BUTTON( gtk_check_button_new() ); - gtk_widget_show( GTK_WIDGET( check ) ); + auto check = ui::CheckButton(GTK_CHECK_BUTTON( gtk_check_button_new() )); + check.show(); m_check = check; - guint handler = g_signal_connect( G_OBJECT( check ), "toggled", G_CALLBACK( toggled ), this ); + guint handler = check.connect( "toggled", G_CALLBACK( toggled ), this ); g_object_set_data( G_OBJECT( check ), "handler", gint_to_pointer( handler ) ); update(); @@ -164,10 +165,10 @@ NonModalEntry m_nonModal; public: StringAttribute( const char* key ) : m_key( key ), - m_entry( nullptr ), + m_entry( ui::null ), m_nonModal( ApplyCaller( *this ), UpdateCaller( *this ) ){ auto entry = ui::Entry(); - gtk_widget_show( GTK_WIDGET( entry ) ); + entry.show(); gtk_widget_set_size_request( GTK_WIDGET( entry ), 50, -1 ); m_entry = entry; @@ -176,7 +177,7 @@ StringAttribute( const char* key ) : ui::Widget getWidget() const { return ui::Widget(GTK_WIDGET( m_entry )); } -GtkEntry* getEntry() const { +ui::Entry getEntry() const { return m_entry; } @@ -323,7 +324,7 @@ NonModalEntry m_nonModal; public: AngleAttribute( const char* key ) : m_key( key ), - m_entry( nullptr ), + m_entry( ui::null ), m_nonModal( ApplyCaller( *this ), UpdateCaller( *this ) ){ auto entry = numeric_entry_new(); m_entry = entry; @@ -370,11 +371,11 @@ ui::Entry m_entry; NonModalEntry m_nonModal; RadioHBox m_radio; NonModalRadio m_nonModalRadio; -GtkHBox* m_hbox; +ui::HBox m_hbox{ui::null}; public: DirectionAttribute( const char* key ) : m_key( key ), - m_entry( nullptr ), + m_entry( ui::null ), m_nonModal( ApplyCaller( *this ), UpdateCaller( *this ) ), m_radio( RadioHBox_new( STRING_ARRAY_RANGE( buttons ) ) ), m_nonModalRadio( ApplyRadioCaller( *this ) ){ @@ -385,7 +386,7 @@ DirectionAttribute( const char* key ) : m_nonModalRadio.connect( m_radio.m_radio ); m_hbox = ui::HBox( FALSE, 4 ); - gtk_widget_show( GTK_WIDGET( m_hbox ) ); + m_hbox.show(); gtk_box_pack_start( GTK_BOX( m_hbox ), GTK_WIDGET( m_radio.m_hbox ), TRUE, TRUE, 0 ); gtk_box_pack_start( GTK_BOX( m_hbox ), GTK_WIDGET( m_entry ), TRUE, TRUE, 0 ); @@ -455,7 +456,7 @@ public: ui::Entry m_roll; ui::Entry m_pitch; ui::Entry m_yaw; -AnglesEntry() : m_roll( nullptr ), m_pitch( nullptr ), m_yaw( nullptr ){ +AnglesEntry() : m_roll( ui::null ), m_pitch( ui::null ), m_yaw( ui::null ){ } }; @@ -473,7 +474,7 @@ AnglesAttribute( const char* key ) : m_nonModal( ApplyCaller( *this ), UpdateCaller( *this ) ), m_hbox(ui::HBox( TRUE, 4 )) { - gtk_widget_show( GTK_WIDGET( m_hbox ) ); + m_hbox.show(); { auto entry = numeric_entry_new(); gtk_box_pack_start( m_hbox, GTK_WIDGET( entry ), TRUE, TRUE, 0 ); @@ -545,7 +546,7 @@ public: ui::Entry m_x; ui::Entry m_y; ui::Entry m_z; -Vector3Entry() : m_x( nullptr ), m_y( nullptr ), m_z( nullptr ){ +Vector3Entry() : m_x( ui::null ), m_y( ui::null ), m_z( ui::null ){ } }; @@ -554,13 +555,13 @@ class Vector3Attribute : public EntityAttribute CopiedString m_key; Vector3Entry m_vector3; NonModalEntry m_nonModal; -GtkBox* m_hbox; +ui::Box m_hbox{ui::null}; public: Vector3Attribute( const char* key ) : m_key( key ), m_nonModal( ApplyCaller( *this ), UpdateCaller( *this ) ){ m_hbox = ui::HBox( TRUE, 4 ); - gtk_widget_show( GTK_WIDGET( m_hbox ) ); + m_hbox.show(); { auto entry = numeric_entry_new(); gtk_box_pack_start( m_hbox, GTK_WIDGET( entry ), TRUE, TRUE, 0 ); @@ -639,10 +640,10 @@ static gboolean changed( GtkComboBox *widget, NonModalComboBox* self ){ public: NonModalComboBox( const Callback& changed ) : m_changed( changed ), m_changedHandler( 0 ){ } -void connect( GtkComboBox* combo ){ - m_changedHandler = g_signal_connect( G_OBJECT( combo ), "changed", G_CALLBACK( changed ), this ); +void connect( ui::ComboBox combo ){ + m_changedHandler = combo.connect( "changed", G_CALLBACK( changed ), this ); } -void setActive( GtkComboBox* combo, int value ){ +void setActive( ui::ComboBox combo, int value ){ g_signal_handler_disconnect( G_OBJECT( combo ), m_changedHandler ); gtk_combo_box_set_active( combo, value ); connect( combo ); @@ -652,7 +653,7 @@ void setActive( GtkComboBox* combo, int value ){ class ListAttribute : public EntityAttribute { CopiedString m_key; -GtkComboBox* m_combo; +ui::ComboBox m_combo; NonModalComboBox m_nonModal; const ListAttributeType& m_type; public: @@ -668,7 +669,7 @@ ListAttribute( const char* key, const ListAttributeType& type ) : gtk_combo_box_text_append_text( GTK_COMBO_BOX_TEXT( combo ), ( *i ).first.c_str() ); } - gtk_widget_show( GTK_WIDGET( combo ) ); + combo.show(); m_nonModal.connect( combo ); m_combo = combo; @@ -716,8 +717,8 @@ GtkCheckButton* g_entitySpawnflagsCheck[MAX_FLAGS]; GtkEntry* g_entityKeyEntry; GtkEntry* g_entityValueEntry; -ui::ListStore g_entlist_store{nullptr}; -ui::ListStore g_entprops_store{nullptr}; +ui::ListStore g_entlist_store{ui::null}; +ui::ListStore g_entprops_store{ui::null}; const EntityClass* g_current_flags = 0; const EntityClass* g_current_comment = 0; const EntityClass* g_current_attributes = 0; @@ -730,7 +731,7 @@ int spawn_table[MAX_FLAGS]; // the table is a 4x4 in which we need to put the comment box g_entityClassComment and the spawn flags.. GtkTable* g_spawnflagsTable; -GtkVBox* g_attributeBox = 0; +ui::VBox g_attributeBox{ui::null}; typedef std::vector EntityAttributes; EntityAttributes g_entityAttributes; } @@ -873,7 +874,7 @@ void SurfaceFlags_setEntityClass( EntityClass* eclass ){ for ( int i = 0; i < g_spawnflag_count; ++i ) { ui::Widget widget = ui::Widget(GTK_WIDGET( g_entitySpawnflagsCheck[i] )); - gtk_widget_show( widget ); + widget.show(); StringOutputStream str( 16 ); str << LowerCase( eclass->flagnames[spawn_table[i]] ); @@ -881,7 +882,7 @@ void SurfaceFlags_setEntityClass( EntityClass* eclass ){ gtk_table_attach( g_spawnflagsTable, widget, i % 4, i % 4 + 1, i / 4, i / 4 + 1, (GtkAttachOptions)( GTK_FILL ), (GtkAttachOptions)( GTK_FILL ), 0, 0 ); - g_object_unref( widget ); + widget.unref(); gtk_label_set_text( GTK_LABEL( gtk_bin_get_child(GTK_BIN(widget)) ), str.c_str() ); } @@ -967,7 +968,7 @@ void EntityInspector_setEntityClass( EntityClass *eclass ){ if ( eclass != g_current_attributes ) { g_current_attributes = eclass; - container_remove_all( GTK_CONTAINER( g_attributeBox ) ); + container_remove_all( g_attributeBox ); GlobalEntityAttributes_clear(); for ( EntityClassAttributes::const_iterator i = eclass->m_attributes.begin(); i != eclass->m_attributes.end(); ++i ) @@ -1194,7 +1195,7 @@ static gint EntityClassList_button_press( ui::Widget widget, GdkEventButton *eve static gint EntityClassList_keypress( ui::Widget widget, GdkEventKey* event, gpointer data ){ unsigned int code = gdk_keyval_to_upper( event->keyval ); - if ( event->keyval == GDK_Return ) { + if ( event->keyval == GDK_KEY_Return ) { EntityClassList_createEntity(); return TRUE; } @@ -1260,7 +1261,7 @@ static void SpawnflagCheck_toggled( ui::Widget widget, gpointer data ){ } static gint EntityEntry_keypress( GtkEntry* widget, GdkEventKey* event, gpointer data ){ - if ( event->keyval == GDK_Return ) { + if ( event->keyval == GDK_KEY_Return ) { if ( widget == g_entityKeyEntry ) { gtk_entry_set_text( g_entityValueEntry, "" ); gtk_window_set_focus( GTK_WINDOW( gtk_widget_get_toplevel( GTK_WIDGET( widget ) ) ), GTK_WIDGET( g_entityValueEntry ) ); @@ -1271,7 +1272,7 @@ static gint EntityEntry_keypress( GtkEntry* widget, GdkEventKey* event, gpointer } return TRUE; } - if ( event->keyval == GDK_Escape ) { + if ( event->keyval == GDK_KEY_Escape ) { gtk_window_set_focus( GTK_WINDOW( gtk_widget_get_toplevel( GTK_WIDGET( widget ) ) ), NULL ); return TRUE; } @@ -1289,29 +1290,29 @@ void EntityInspector_destroyWindow( ui::Widget widget, gpointer data ){ ui::Widget EntityInspector_constructWindow( ui::Window toplevel ){ ui::Widget vbox = ui::VBox( FALSE, 2 ); - gtk_widget_show( vbox ); + vbox.show(); gtk_container_set_border_width( GTK_CONTAINER( vbox ), 2 ); - g_signal_connect( G_OBJECT( vbox ), "destroy", G_CALLBACK( EntityInspector_destroyWindow ), 0 ); + vbox.connect( "destroy", G_CALLBACK( EntityInspector_destroyWindow ), 0 ); { ui::Widget split1 = ui::VPaned(); gtk_box_pack_start( GTK_BOX( vbox ), split1, TRUE, TRUE, 0 ); - gtk_widget_show( split1 ); + split1.show(); g_entity_split1 = split1; { ui::Widget split2 = ui::VPaned(); gtk_paned_add1( GTK_PANED( split1 ), split2 ); - gtk_widget_show( split2 ); + split2.show(); g_entity_split2 = split2; { // class list - ui::Widget scr = ui::ScrolledWindow(); - gtk_widget_show( scr ); + auto scr = ui::ScrolledWindow(); + scr.show(); gtk_paned_add1( GTK_PANED( split2 ), scr ); gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW( scr ), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS ); gtk_scrolled_window_set_shadow_type( GTK_SCROLLED_WINDOW( scr ), GTK_SHADOW_IN ); @@ -1319,11 +1320,11 @@ ui::Widget EntityInspector_constructWindow( ui::Window toplevel ){ { ui::ListStore store = ui::ListStore(gtk_list_store_new( 2, G_TYPE_STRING, G_TYPE_POINTER )); - GtkTreeView* view = ui::TreeView( ui::TreeModel( GTK_TREE_MODEL( store ) )); + auto view = ui::TreeView( ui::TreeModel( GTK_TREE_MODEL( store ) )); gtk_tree_view_set_enable_search( GTK_TREE_VIEW( view ), FALSE ); gtk_tree_view_set_headers_visible( view, FALSE ); - g_signal_connect( G_OBJECT( view ), "button_press_event", G_CALLBACK( EntityClassList_button_press ), 0 ); - g_signal_connect( G_OBJECT( view ), "key_press_event", G_CALLBACK( EntityClassList_keypress ), 0 ); + view.connect( "button_press_event", G_CALLBACK( EntityClassList_button_press ), 0 ); + view.connect( "key_press_event", G_CALLBACK( EntityClassList_keypress ), 0 ); { auto renderer = ui::CellRendererText(); @@ -1332,34 +1333,34 @@ ui::Widget EntityInspector_constructWindow( ui::Window toplevel ){ } { - GtkTreeSelection* selection = gtk_tree_view_get_selection( view ); - g_signal_connect( G_OBJECT( selection ), "changed", G_CALLBACK( EntityClassList_selection_changed ), 0 ); + auto selection = ui::TreeSelection(gtk_tree_view_get_selection( view )); + selection.connect( "changed", G_CALLBACK( EntityClassList_selection_changed ), 0 ); } - gtk_widget_show( GTK_WIDGET( view ) ); + view.show(); - gtk_container_add( GTK_CONTAINER( scr ), GTK_WIDGET( view ) ); + scr.add(view); - g_object_unref( G_OBJECT( store ) ); + store.unref(); g_entityClassList = view; g_entlist_store = store; } } { - ui::Widget scr = ui::ScrolledWindow(); - gtk_widget_show( scr ); + auto scr = ui::ScrolledWindow(); + scr.show(); gtk_paned_add2( GTK_PANED( split2 ), scr ); gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW( scr ), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS ); gtk_scrolled_window_set_shadow_type( GTK_SCROLLED_WINDOW( scr ), GTK_SHADOW_IN ); { - GtkTextView* text = ui::TextView(); + auto text = ui::TextView(); gtk_widget_set_size_request( GTK_WIDGET( text ), 0, -1 ); // allow shrinking gtk_text_view_set_wrap_mode( text, GTK_WRAP_WORD ); gtk_text_view_set_editable( text, FALSE ); - gtk_widget_show( GTK_WIDGET( text ) ); - gtk_container_add( GTK_CONTAINER( scr ), GTK_WIDGET( text ) ); + text.show(); + scr.add(text); g_entityClassComment = text; } } @@ -1368,34 +1369,34 @@ ui::Widget EntityInspector_constructWindow( ui::Window toplevel ){ { ui::Widget split2 = ui::VPaned(); gtk_paned_add2( GTK_PANED( split1 ), split2 ); - gtk_widget_show( split2 ); + split2.show(); { ui::Widget vbox2 = ui::VBox( FALSE, 2 ); - gtk_widget_show( vbox2 ); + vbox2.show(); gtk_paned_pack1( GTK_PANED( split2 ), vbox2, FALSE, FALSE ); { // Spawnflags (4 colums wide max, or window gets too wide.) - GtkTable* table = ui::Table( 4, 4, FALSE ); + auto table = ui::Table( 4, 4, FALSE ); gtk_box_pack_start( GTK_BOX( vbox2 ), GTK_WIDGET( table ), FALSE, TRUE, 0 ); - gtk_widget_show( GTK_WIDGET( table ) ); + table.show(); g_spawnflagsTable = table; for ( int i = 0; i < MAX_FLAGS; i++ ) { - GtkCheckButton* check = ui::CheckButton( "" ); + auto check = ui::CheckButton( "" ); g_object_ref( GTK_WIDGET( check ) ); - g_object_set_data( G_OBJECT( check ), "handler", gint_to_pointer( g_signal_connect( G_OBJECT( check ), "toggled", G_CALLBACK( SpawnflagCheck_toggled ), 0 ) ) ); + g_object_set_data( G_OBJECT( check ), "handler", gint_to_pointer( check.connect( "toggled", G_CALLBACK( SpawnflagCheck_toggled ), 0 ) ) ); g_entitySpawnflagsCheck[i] = check; } } { // key/value list - ui::Widget scr = ui::ScrolledWindow(); - gtk_widget_show( scr ); + auto scr = ui::ScrolledWindow(); + scr.show(); gtk_box_pack_start( GTK_BOX( vbox2 ), scr, TRUE, TRUE, 0 ); gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW( scr ), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC ); gtk_scrolled_window_set_shadow_type( GTK_SCROLLED_WINDOW( scr ), GTK_SHADOW_IN ); @@ -1420,15 +1421,15 @@ ui::Widget EntityInspector_constructWindow( ui::Window toplevel ){ } { - GtkTreeSelection* selection = gtk_tree_view_get_selection( GTK_TREE_VIEW( view ) ); - g_signal_connect( G_OBJECT( selection ), "changed", G_CALLBACK( EntityProperties_selection_changed ), 0 ); + auto selection = ui::TreeSelection(gtk_tree_view_get_selection( GTK_TREE_VIEW( view ) )); + selection.connect( "changed", G_CALLBACK( EntityProperties_selection_changed ), 0 ); } - gtk_widget_show( view ); + view.show(); - gtk_container_add( GTK_CONTAINER( scr ), view ); + scr.add(view); - g_object_unref( G_OBJECT( store ) ); + store.unref(); g_entprops_store = store; } @@ -1436,37 +1437,37 @@ ui::Widget EntityInspector_constructWindow( ui::Window toplevel ){ { // key/value entry - GtkTable* table = ui::Table( 2, 2, FALSE ); - gtk_widget_show( GTK_WIDGET( table ) ); + auto table = ui::Table( 2, 2, FALSE ); + table.show(); gtk_box_pack_start( GTK_BOX( vbox2 ), GTK_WIDGET( table ), FALSE, TRUE, 0 ); gtk_table_set_row_spacings( table, 3 ); gtk_table_set_col_spacings( table, 5 ); { auto entry = ui::Entry(); - gtk_widget_show( GTK_WIDGET( entry ) ); + entry.show(); gtk_table_attach( table, GTK_WIDGET( entry ), 1, 2, 0, 1, (GtkAttachOptions)( GTK_EXPAND | GTK_FILL ), (GtkAttachOptions)( 0 ), 0, 0 ); gtk_widget_set_events( GTK_WIDGET( entry ), GDK_KEY_PRESS_MASK ); - g_signal_connect( G_OBJECT( entry ), "key_press_event", G_CALLBACK( EntityEntry_keypress ), 0 ); + entry.connect( "key_press_event", G_CALLBACK( EntityEntry_keypress ), 0 ); g_entityKeyEntry = entry; } { auto entry = ui::Entry(); - gtk_widget_show( GTK_WIDGET( entry ) ); + entry.show(); gtk_table_attach( table, GTK_WIDGET( entry ), 1, 2, 1, 2, (GtkAttachOptions)( GTK_EXPAND | GTK_FILL ), (GtkAttachOptions)( 0 ), 0, 0 ); gtk_widget_set_events( GTK_WIDGET( entry ), GDK_KEY_PRESS_MASK ); - g_signal_connect( G_OBJECT( entry ), "key_press_event", G_CALLBACK( EntityEntry_keypress ), 0 ); + entry.connect( "key_press_event", G_CALLBACK( EntityEntry_keypress ), 0 ); g_entityValueEntry = entry; } { - GtkLabel* label = GTK_LABEL( ui::Label( "Value" ) ); - gtk_widget_show( GTK_WIDGET( label ) ); + auto label = ui::Label( "Value" ); + label.show(); gtk_table_attach( table, GTK_WIDGET( label ), 0, 1, 1, 2, (GtkAttachOptions)( GTK_FILL ), (GtkAttachOptions)( 0 ), 0, 0 ); @@ -1474,8 +1475,8 @@ ui::Widget EntityInspector_constructWindow( ui::Window toplevel ){ } { - GtkLabel* label = GTK_LABEL( ui::Label( "Key" ) ); - gtk_widget_show( GTK_WIDGET( label ) ); + auto label = ui::Label( "Key" ); + label.show(); gtk_table_attach( table, GTK_WIDGET( label ), 0, 1, 0, 1, (GtkAttachOptions)( GTK_FILL ), (GtkAttachOptions)( 0 ), 0, 0 ); @@ -1484,39 +1485,39 @@ ui::Widget EntityInspector_constructWindow( ui::Window toplevel ){ } { - GtkBox* hbox = ui::HBox( TRUE, 4 ); - gtk_widget_show( GTK_WIDGET( hbox ) ); + auto hbox = ui::HBox( TRUE, 4 ); + hbox.show(); gtk_box_pack_start( GTK_BOX( vbox2 ), GTK_WIDGET( hbox ), FALSE, TRUE, 0 ); { - GtkButton* button = ui::Button( "Clear All" ); - gtk_widget_show( GTK_WIDGET( button ) ); - g_signal_connect( G_OBJECT( button ), "clicked", G_CALLBACK( EntityInspector_clearAllKeyValues ), 0 ); + auto button = ui::Button( "Clear All" ); + button.show(); + button.connect( "clicked", G_CALLBACK( EntityInspector_clearAllKeyValues ), 0 ); gtk_box_pack_start( hbox, GTK_WIDGET( button ), TRUE, TRUE, 0 ); } { - GtkButton* button = ui::Button( "Delete Key" ); - gtk_widget_show( GTK_WIDGET( button ) ); - g_signal_connect( G_OBJECT( button ), "clicked", G_CALLBACK( EntityInspector_clearKeyValue ), 0 ); + auto button = ui::Button( "Delete Key" ); + button.show(); + button.connect( "clicked", G_CALLBACK( EntityInspector_clearKeyValue ), 0 ); gtk_box_pack_start( hbox, GTK_WIDGET( button ), TRUE, TRUE, 0 ); } } } { - ui::Widget scr = ui::ScrolledWindow(); - gtk_widget_show( scr ); + auto scr = ui::ScrolledWindow(); + scr.show(); gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW( scr ), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC ); - ui::Widget viewport = ui::Widget(gtk_viewport_new( 0, 0 )); - gtk_widget_show( viewport ); + auto viewport = ui::Container(GTK_CONTAINER(gtk_viewport_new( 0, 0 ))); + viewport.show(); gtk_viewport_set_shadow_type( GTK_VIEWPORT( viewport ), GTK_SHADOW_NONE ); g_attributeBox = ui::VBox( FALSE, 2 ); - gtk_widget_show( GTK_WIDGET( g_attributeBox ) ); + g_attributeBox.show(); - gtk_container_add( GTK_CONTAINER( viewport ), GTK_WIDGET( g_attributeBox ) ); - gtk_container_add( GTK_CONTAINER( scr ), viewport ); + viewport.add(g_attributeBox); + scr.add(viewport); gtk_paned_pack2( GTK_PANED( split2 ), scr, FALSE, FALSE ); } }