X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=radiant%2Fsurfacedialog.cpp;h=9ae43fd7e130fcbe6beb03047e6bacf29c4c5c72;hb=194f81c25d91995457d19fce3042c6cb2d1ff474;hp=f97745598e2c551174ca5ea4321368f6d9614056;hpb=1ce2d1a4685918788e3f22c8f26f652e474da6c0;p=xonotic%2Fnetradiant.git diff --git a/radiant/surfacedialog.cpp b/radiant/surfacedialog.cpp index f9774559..9ae43fd7 100644 --- a/radiant/surfacedialog.cpp +++ b/radiant/surfacedialog.cpp @@ -88,8 +88,8 @@ gboolean expose( ui::Widget, GdkEventExpose *, gpointer ); gboolean button_press( ui::Widget, GdkEventButton *, gpointer ); gboolean button_release( ui::Widget, GdkEventButton *, gpointer ); gboolean motion( ui::Widget, GdkEventMotion *, gpointer ); -void flipX( GtkToggleButton *, gpointer ); -void flipY( GtkToggleButton *, gpointer ); +void flipX( ui::ToggleButton, gpointer ); +void flipY( ui::ToggleButton, gpointer ); //End Textool function prototypes @@ -105,7 +105,7 @@ void queueDraw(){ #endif -inline void spin_button_set_step( GtkSpinButton* spin, gfloat step ){ +inline void spin_button_set_step( ui::SpinButton spin, gfloat step ){ #if 1 gtk_adjustment_set_step_increment(gtk_spin_button_get_adjustment( spin ), step); #else @@ -120,19 +120,19 @@ class Increment { float& m_f; public: -GtkSpinButton* m_spin; +ui::SpinButton m_spin; ui::Entry m_entry; -Increment( float& f ) : m_f( f ), m_spin( 0 ), m_entry( ui::null ){ +Increment( float& f ) : m_f( f ), m_spin( ui::null ), m_entry( ui::null ){ } void cancel(){ entry_set_float( m_entry, m_f ); } -typedef MemberCaller CancelCaller; +typedef MemberCaller CancelCaller; void apply(){ m_f = static_cast( entry_get_float( m_entry ) ); spin_button_set_step( m_spin, m_f ); } -typedef MemberCaller ApplyCaller; +typedef MemberCaller ApplyCaller; }; void SurfaceInspector_GridChange(); @@ -162,8 +162,6 @@ NonModalEntry m_valueEntry; ui::Entry m_valueEntryWidget{ui::null}; public: WindowPositionTracker m_positionTracker; -WindowPositionTrackerImportStringCaller m_importPosition; -WindowPositionTrackerExportStringCaller m_exportPosition; // Dialog Data float m_fitHorizontal; @@ -174,7 +172,7 @@ Increment m_vshiftIncrement; Increment m_hscaleIncrement; Increment m_vscaleIncrement; Increment m_rotateIncrement; -GtkEntry* m_texture; +ui::Entry m_texture{ui::null}; SurfaceInspector() : m_textureEntry( ApplyShaderCaller( *this ), UpdateCaller( *this ) ), @@ -190,8 +188,6 @@ SurfaceInspector() : m_rotateEntry( Increment::ApplyCaller( m_rotateIncrement ), Increment::CancelCaller( m_rotateIncrement ) ), m_idleDraw( UpdateCaller( *this ) ), m_valueEntry( ApplyFlagsCaller( *this ), UpdateCaller( *this ) ), - m_importPosition( m_positionTracker ), - m_exportPosition( m_positionTracker ), m_hshiftIncrement( g_si_globals.shift[0] ), m_vshiftIncrement( g_si_globals.shift[1] ), m_hscaleIncrement( g_si_globals.scale[0] ), @@ -205,13 +201,13 @@ SurfaceInspector() : void constructWindow( ui::Window main_window ){ m_parent = main_window; Create(); - AddGridChangeCallback( FreeCaller() ); + AddGridChangeCallback( FreeCaller() ); } void destroyWindow(){ Destroy(); } -bool visible() const { - return gtk_widget_get_visible( GetWidget() ); +bool visible() { + return GetWidget().visible(); } void queueDraw(){ if ( visible() ) { @@ -220,13 +216,13 @@ void queueDraw(){ } void Update(); -typedef MemberCaller UpdateCaller; +typedef MemberCaller UpdateCaller; void ApplyShader(); -typedef MemberCaller ApplyShaderCaller; +typedef MemberCaller ApplyShaderCaller; void ApplyTexdef(); -typedef MemberCaller ApplyTexdefCaller; +typedef MemberCaller ApplyTexdefCaller; void ApplyFlags(); -typedef MemberCaller ApplyFlagsCaller; +typedef MemberCaller ApplyFlagsCaller; }; namespace @@ -577,7 +573,7 @@ const char* getContentFlagName( std::size_t bit ){ // ============================================================================= // SurfaceInspector class -guint togglebutton_connect_toggled( GtkToggleButton* button, const Callback& callback ){ +guint togglebutton_connect_toggled( ui::ToggleButton button, const Callback& callback ){ return g_signal_connect_swapped( G_OBJECT( button ), "toggled", G_CALLBACK( callback.getThunk() ), callback.getEnvironment() ); } @@ -593,25 +589,25 @@ ui::Window SurfaceInspector::BuildDialog(){ { // replaced by only the vbox: - ui::Widget vbox = ui::VBox( FALSE, 5 ); + auto vbox = ui::VBox( FALSE, 5 ); vbox.show(); window.add(vbox); gtk_container_set_border_width( GTK_CONTAINER( vbox ), 5 ); { - ui::Widget hbox2 = ui::HBox( FALSE, 5 ); + auto hbox2 = ui::HBox( FALSE, 5 ); hbox2.show(); - gtk_box_pack_start( GTK_BOX( vbox ), GTK_WIDGET( hbox2 ), FALSE, FALSE, 0 ); + vbox.pack_start( hbox2, FALSE, FALSE, 0 ); { ui::Widget label = ui::Label( "Texture" ); label.show(); - gtk_box_pack_start( GTK_BOX( hbox2 ), label, FALSE, TRUE, 0 ); + hbox2.pack_start( label, FALSE, TRUE, 0 ); } { - auto entry = ui::Entry(); + auto entry = ui::Entry(ui::New); entry.show(); - gtk_box_pack_start( GTK_BOX( hbox2 ), GTK_WIDGET( entry ), TRUE, TRUE, 0 ); + hbox2.pack_start( entry, TRUE, TRUE, 0 ); m_texture = entry; m_textureEntry.connect( entry ); GlobalTextureEntryCompletion::instance().connect( entry ); @@ -620,44 +616,36 @@ ui::Window SurfaceInspector::BuildDialog(){ { - ui::Widget table = ui::Table( 6, 4, FALSE ); + auto table = ui::Table(6, 4, FALSE); table.show(); - gtk_box_pack_start( GTK_BOX( vbox ), GTK_WIDGET( table ), FALSE, FALSE, 0 ); - gtk_table_set_row_spacings( GTK_TABLE( table ), 5 ); - gtk_table_set_col_spacings( GTK_TABLE( table ), 5 ); + vbox.pack_start( table, FALSE, FALSE, 0 ); + gtk_table_set_row_spacings(table, 5); + gtk_table_set_col_spacings(table, 5); { ui::Widget label = ui::Label( "Horizontal shift" ); label.show(); gtk_misc_set_alignment( GTK_MISC( label ), 0, 0 ); - gtk_table_attach( GTK_TABLE( table ), label, 0, 1, 0, 1, - (GtkAttachOptions) ( GTK_FILL ), - (GtkAttachOptions) ( 0 ), 0, 0 ); + table.attach(label, {0, 1, 0, 1}, {GTK_FILL, 0}); } { auto spin = ui::SpinButton( ui::Adjustment( 0, -8192, 8192, 2, 8, 0 ), 0, 2 ); m_hshiftIncrement.m_spin = spin; m_hshiftSpinner.connect( spin ); spin.show(); - gtk_table_attach( GTK_TABLE( table ), GTK_WIDGET( spin ), 1, 2, 0, 1, - (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), - (GtkAttachOptions) ( 0 ), 0, 0 ); - gtk_widget_set_size_request( GTK_WIDGET( spin ), 60, -1 ); + table.attach(spin, {1, 2, 0, 1}, {GTK_EXPAND | GTK_FILL, 0}); + spin.dimensions(60, -1); } { ui::Widget label = ui::Label( "Step" ); label.show(); gtk_misc_set_alignment( GTK_MISC( label ), 0, 0 ); - gtk_table_attach( GTK_TABLE( table ), label, 2, 3, 0, 1, - (GtkAttachOptions) ( GTK_FILL ), - (GtkAttachOptions) ( 0 ), 0, 0 ); + table.attach(label, {2, 3, 0, 1}, {GTK_FILL, 0}); } { - auto entry = ui::Entry(); + auto entry = ui::Entry(ui::New); entry.show(); - gtk_table_attach( GTK_TABLE( table ), GTK_WIDGET( entry ), 3, 4, 0, 1, - (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), - (GtkAttachOptions) ( 0 ), 0, 0 ); - gtk_widget_set_size_request( GTK_WIDGET( entry ), 50, -1 ); + table.attach(entry, {3, 4, 0, 1}, {GTK_EXPAND | GTK_FILL, 0}); + entry.dimensions(50, -1); m_hshiftIncrement.m_entry = entry; m_hshiftEntry.connect( entry ); } @@ -665,35 +653,27 @@ ui::Window SurfaceInspector::BuildDialog(){ ui::Widget label = ui::Label( "Vertical shift" ); label.show(); gtk_misc_set_alignment( GTK_MISC( label ), 0, 0 ); - gtk_table_attach( GTK_TABLE( table ), label, 0, 1, 1, 2, - (GtkAttachOptions) ( GTK_FILL ), - (GtkAttachOptions) ( 0 ), 0, 0 ); + table.attach(label, {0, 1, 1, 2}, {GTK_FILL, 0}); } { auto spin = ui::SpinButton( ui::Adjustment( 0, -8192, 8192, 2, 8, 0 ), 0, 2 ); m_vshiftIncrement.m_spin = spin; m_vshiftSpinner.connect( spin ); spin.show(); - gtk_table_attach( GTK_TABLE( table ), GTK_WIDGET( spin ), 1, 2, 1, 2, - (GtkAttachOptions) ( GTK_FILL ), - (GtkAttachOptions) ( 0 ), 0, 0 ); - gtk_widget_set_size_request( GTK_WIDGET( spin ), 60, -1 ); + table.attach(spin, {1, 2, 1, 2}, {GTK_FILL, 0}); + spin.dimensions(60, -1); } { ui::Widget label = ui::Label( "Step" ); label.show(); gtk_misc_set_alignment( GTK_MISC( label ), 0, 0 ); - gtk_table_attach( GTK_TABLE( table ), label, 2, 3, 1, 2, - (GtkAttachOptions) ( GTK_FILL ), - (GtkAttachOptions) ( 0 ), 0, 0 ); + table.attach(label, {2, 3, 1, 2}, {GTK_FILL, 0}); } { - auto entry = ui::Entry(); + auto entry = ui::Entry(ui::New); entry.show(); - gtk_table_attach( GTK_TABLE( table ), GTK_WIDGET( entry ), 3, 4, 1, 2, - (GtkAttachOptions) ( GTK_FILL ), - (GtkAttachOptions) ( 0 ), 0, 0 ); - gtk_widget_set_size_request( GTK_WIDGET( entry ), 50, -1 ); + table.attach(entry, {3, 4, 1, 2}, {GTK_FILL, 0}); + entry.dimensions(50, -1); m_vshiftIncrement.m_entry = entry; m_vshiftEntry.connect( entry ); } @@ -701,35 +681,27 @@ ui::Window SurfaceInspector::BuildDialog(){ ui::Widget label = ui::Label( "Horizontal stretch" ); label.show(); gtk_misc_set_alignment( GTK_MISC( label ), 0, 0 ); - gtk_table_attach( GTK_TABLE( table ), label, 0, 1, 2, 3, - (GtkAttachOptions) ( GTK_FILL ), - (GtkAttachOptions) ( 0 ), 0, 0 ); + table.attach(label, {0, 1, 2, 3}, {GTK_FILL, 0}); } { auto spin = ui::SpinButton( ui::Adjustment( 0, -8192, 8192, 2, 8, 0 ), 0, 5 ); m_hscaleIncrement.m_spin = spin; m_hscaleSpinner.connect( spin ); spin.show(); - gtk_table_attach( GTK_TABLE( table ), GTK_WIDGET( spin ), 1, 2, 2, 3, - (GtkAttachOptions) ( GTK_FILL ), - (GtkAttachOptions) ( 0 ), 0, 0 ); - gtk_widget_set_size_request( GTK_WIDGET( spin ), 60, -1 ); + table.attach(spin, {1, 2, 2, 3}, {GTK_FILL, 0}); + spin.dimensions(60, -1); } { ui::Widget label = ui::Label( "Step" ); label.show(); gtk_misc_set_alignment( GTK_MISC( label ), 0, 0 ); - gtk_table_attach( GTK_TABLE( table ), label, 2, 3, 2, 3, - (GtkAttachOptions) ( GTK_FILL ), - (GtkAttachOptions) ( 0 ), 2, 3 ); + table.attach(label, {2, 3, 2, 3}, {GTK_FILL, 0}); } { - auto entry = ui::Entry(); + auto entry = ui::Entry(ui::New); entry.show(); - gtk_table_attach( GTK_TABLE( table ), GTK_WIDGET( entry ), 3, 4, 2, 3, - (GtkAttachOptions) ( GTK_FILL ), - (GtkAttachOptions) ( 0 ), 2, 3 ); - gtk_widget_set_size_request( GTK_WIDGET( entry ), 50, -1 ); + table.attach(entry, {3, 4, 2, 3}, {GTK_FILL, 0}); + entry.dimensions(50, -1); m_hscaleIncrement.m_entry = entry; m_hscaleEntry.connect( entry ); } @@ -737,35 +709,27 @@ ui::Window SurfaceInspector::BuildDialog(){ ui::Widget label = ui::Label( "Vertical stretch" ); label.show(); gtk_misc_set_alignment( GTK_MISC( label ), 0, 0 ); - gtk_table_attach( GTK_TABLE( table ), label, 0, 1, 3, 4, - (GtkAttachOptions) ( GTK_FILL ), - (GtkAttachOptions) ( 0 ), 0, 0 ); + table.attach(label, {0, 1, 3, 4}, {GTK_FILL, 0}); } { auto spin = ui::SpinButton( ui::Adjustment( 0, -8192, 8192, 2, 8, 0 ), 0, 5 ); m_vscaleIncrement.m_spin = spin; m_vscaleSpinner.connect( spin ); spin.show(); - gtk_table_attach( GTK_TABLE( table ), GTK_WIDGET( spin ), 1, 2, 3, 4, - (GtkAttachOptions) ( GTK_FILL ), - (GtkAttachOptions) ( 0 ), 0, 0 ); - gtk_widget_set_size_request( GTK_WIDGET( spin ), 60, -1 ); + table.attach(spin, {1, 2, 3, 4}, {GTK_FILL, 0}); + spin.dimensions(60, -1); } { ui::Widget label = ui::Label( "Step" ); label.show(); gtk_misc_set_alignment( GTK_MISC( label ), 0, 0 ); - gtk_table_attach( GTK_TABLE( table ), label, 2, 3, 3, 4, - (GtkAttachOptions) ( GTK_FILL ), - (GtkAttachOptions) ( 0 ), 0, 0 ); + table.attach(label, {2, 3, 3, 4}, {GTK_FILL, 0}); } { - auto entry = ui::Entry(); + auto entry = ui::Entry(ui::New); entry.show(); - gtk_table_attach( GTK_TABLE( table ), GTK_WIDGET( entry ), 3, 4, 3, 4, - (GtkAttachOptions) ( GTK_FILL ), - (GtkAttachOptions) ( 0 ), 0, 0 ); - gtk_widget_set_size_request( GTK_WIDGET( entry ), 50, -1 ); + table.attach(entry, {3, 4, 3, 4}, {GTK_FILL, 0}); + entry.dimensions(50, -1); m_vscaleIncrement.m_entry = entry; m_vscaleEntry.connect( entry ); } @@ -773,36 +737,28 @@ ui::Window SurfaceInspector::BuildDialog(){ ui::Widget label = ui::Label( "Rotate" ); label.show(); gtk_misc_set_alignment( GTK_MISC( label ), 0, 0 ); - gtk_table_attach( GTK_TABLE( table ), label, 0, 1, 4, 5, - (GtkAttachOptions) ( GTK_FILL ), - (GtkAttachOptions) ( 0 ), 0, 0 ); + table.attach(label, {0, 1, 4, 5}, {GTK_FILL, 0}); } { auto spin = ui::SpinButton( ui::Adjustment( 0, -8192, 8192, 2, 8, 0 ), 0, 2 ); m_rotateIncrement.m_spin = spin; m_rotateSpinner.connect( spin ); spin.show(); - gtk_table_attach( GTK_TABLE( table ), GTK_WIDGET( spin ), 1, 2, 4, 5, - (GtkAttachOptions) ( GTK_FILL ), - (GtkAttachOptions) ( 0 ), 0, 0 ); - gtk_widget_set_size_request( GTK_WIDGET( spin ), 60, -1 ); + table.attach(spin, {1, 2, 4, 5}, {GTK_FILL, 0}); + spin.dimensions(60, -1); gtk_spin_button_set_wrap( spin, TRUE ); } { ui::Widget label = ui::Label( "Step" ); label.show(); gtk_misc_set_alignment( GTK_MISC( label ), 0, 0 ); - gtk_table_attach( GTK_TABLE( table ), label, 2, 3, 4, 5, - (GtkAttachOptions) ( GTK_FILL ), - (GtkAttachOptions) ( 0 ), 0, 0 ); + table.attach(label, {2, 3, 4, 5}, {GTK_FILL, 0}); } { - auto entry = ui::Entry(); + auto entry = ui::Entry(ui::New); entry.show(); - gtk_table_attach( GTK_TABLE( table ), GTK_WIDGET( entry ), 3, 4, 4, 5, - (GtkAttachOptions) ( GTK_FILL ), - (GtkAttachOptions) ( 0 ), 0, 0 ); - gtk_widget_set_size_request( GTK_WIDGET( entry ), 50, -1 ); + table.attach(entry, {3, 4, 4, 5}, {GTK_FILL, 0}); + entry.dimensions(50, -1); m_rotateIncrement.m_entry = entry; m_rotateEntry.connect( entry ); } @@ -810,9 +766,7 @@ ui::Window SurfaceInspector::BuildDialog(){ // match grid button ui::Widget button = ui::Button( "Match Grid" ); button.show(); - gtk_table_attach( GTK_TABLE( table ), button, 2, 4, 5, 6, - (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), - (GtkAttachOptions) ( 0 ), 0, 0 ); + table.attach(button, {2, 4, 5, 6}, {GTK_EXPAND | GTK_FILL, 0}); button.connect( "clicked", G_CALLBACK( OnBtnMatchGrid ), 0 ); } } @@ -820,119 +774,95 @@ ui::Window SurfaceInspector::BuildDialog(){ { auto frame = ui::Frame( "Texturing" ); frame.show(); - gtk_box_pack_start( GTK_BOX( vbox ), GTK_WIDGET( frame ), FALSE, FALSE, 0 ); + vbox.pack_start( frame, FALSE, FALSE, 0 ); { - ui::Widget table = ui::Table( 4, 4, FALSE ); + auto table = ui::Table(4, 4, FALSE); table.show(); frame.add(table); - gtk_table_set_row_spacings( GTK_TABLE( table ), 5 ); - gtk_table_set_col_spacings( GTK_TABLE( table ), 5 ); + gtk_table_set_row_spacings(table, 5); + gtk_table_set_col_spacings(table, 5); gtk_container_set_border_width( GTK_CONTAINER( table ), 5 ); { ui::Widget label = ui::Label( "Brush" ); label.show(); - gtk_table_attach( GTK_TABLE( table ), label, 0, 1, 0, 1, - (GtkAttachOptions) ( GTK_FILL ), - (GtkAttachOptions) ( 0 ), 0, 0 ); + table.attach(label, {0, 1, 0, 1}, {GTK_FILL, 0}); } { ui::Widget label = ui::Label( "Patch" ); label.show(); - gtk_table_attach( GTK_TABLE( table ), label, 0, 1, 2, 3, - (GtkAttachOptions) ( GTK_FILL ), - (GtkAttachOptions) ( 0 ), 0, 0 ); + table.attach(label, {0, 1, 2, 3}, {GTK_FILL, 0}); } { ui::Widget label = ui::Label( "Width" ); label.show(); - gtk_table_attach( GTK_TABLE( table ), label, 2, 3, 0, 1, - (GtkAttachOptions) ( GTK_FILL ), - (GtkAttachOptions) ( 0 ), 0, 0 ); + table.attach(label, {2, 3, 0, 1}, {GTK_FILL, 0}); } { ui::Widget label = ui::Label( "Height" ); label.show(); - gtk_table_attach( GTK_TABLE( table ), label, 3, 4, 0, 1, - (GtkAttachOptions) ( GTK_FILL ), - (GtkAttachOptions) ( 0 ), 0, 0 ); + table.attach(label, {3, 4, 0, 1}, {GTK_FILL, 0}); } { ui::Widget button = ui::Button( "Axial" ); button.show(); - gtk_table_attach( GTK_TABLE( table ), button, 0, 1, 1, 2, - (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), - (GtkAttachOptions) ( 0 ), 0, 0 ); + table.attach(button, {0, 1, 1, 2}, {GTK_EXPAND | GTK_FILL, 0}); button.connect( "clicked", G_CALLBACK( OnBtnAxial ), 0 ); - gtk_widget_set_size_request( button, 60, -1 ); + button.dimensions(60, -1); } { ui::Widget button = ui::Button( "Fit" ); button.show(); - gtk_table_attach( GTK_TABLE( table ), button, 1, 2, 1, 2, - (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), - (GtkAttachOptions) ( 0 ), 0, 0 ); + table.attach(button, {1, 2, 1, 2}, {GTK_EXPAND | GTK_FILL, 0}); button.connect( "clicked", G_CALLBACK( OnBtnFaceFit ), 0 ); - gtk_widget_set_size_request( button, 60, -1 ); + button.dimensions(60, -1); } { ui::Widget button = ui::Button( "CAP" ); button.show(); - gtk_table_attach( GTK_TABLE( table ), button, 0, 1, 3, 4, - (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), - (GtkAttachOptions) ( 0 ), 0, 0 ); + table.attach(button, {0, 1, 3, 4}, {GTK_EXPAND | GTK_FILL, 0}); button.connect( "clicked", G_CALLBACK( OnBtnPatchdetails ), 0 ); - gtk_widget_set_size_request( button, 60, -1 ); + button.dimensions(60, -1); } { ui::Widget button = ui::Button( "Set..." ); button.show(); - gtk_table_attach( GTK_TABLE( table ), button, 1, 2, 3, 4, - (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), - (GtkAttachOptions) ( 0 ), 0, 0 ); + table.attach(button, {1, 2, 3, 4}, {GTK_EXPAND | GTK_FILL, 0}); button.connect( "clicked", G_CALLBACK( OnBtnPatchreset ), 0 ); - gtk_widget_set_size_request( button, 60, -1 ); + button.dimensions(60, -1); } { ui::Widget button = ui::Button( "Natural" ); button.show(); - gtk_table_attach( GTK_TABLE( table ), button, 2, 3, 3, 4, - (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), - (GtkAttachOptions) ( 0 ), 0, 0 ); + table.attach(button, {2, 3, 3, 4}, {GTK_EXPAND | GTK_FILL, 0}); button.connect( "clicked", G_CALLBACK( OnBtnPatchnatural ), 0 ); - gtk_widget_set_size_request( button, 60, -1 ); + button.dimensions(60, -1); } { ui::Widget button = ui::Button( "Fit" ); button.show(); - gtk_table_attach( GTK_TABLE( table ), button, 3, 4, 3, 4, - (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), - (GtkAttachOptions) ( 0 ), 0, 0 ); + table.attach(button, {3, 4, 3, 4}, {GTK_EXPAND | GTK_FILL, 0}); button.connect( "clicked", G_CALLBACK( OnBtnPatchFit ), 0 ); - gtk_widget_set_size_request( button, 60, -1 ); + button.dimensions(60, -1); } { auto spin = ui::SpinButton( ui::Adjustment( 1, 0, 1 << 16, 1, 10, 0 ), 0, 6 ); spin.show(); - gtk_table_attach( GTK_TABLE( table ), spin, 2, 3, 1, 2, - (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), - (GtkAttachOptions) ( 0 ), 0, 0 ); - gtk_widget_set_size_request( spin, 60, -1 ); - AddDialogData( *GTK_SPIN_BUTTON( spin ), m_fitHorizontal ); + table.attach(spin, {2, 3, 1, 2}, {GTK_EXPAND | GTK_FILL, 0}); + spin.dimensions(60, -1); + AddDialogData( spin, m_fitHorizontal ); } { auto spin = ui::SpinButton( ui::Adjustment( 1, 0, 1 << 16, 1, 10, 0 ), 0, 6 ); spin.show(); - gtk_table_attach( GTK_TABLE( table ), spin, 3, 4, 1, 2, - (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), - (GtkAttachOptions) ( 0 ), 0, 0 ); - gtk_widget_set_size_request( spin, 60, -1 ); - AddDialogData( *GTK_SPIN_BUTTON( spin ), m_fitVertical ); + table.attach(spin, {3, 4, 1, 2}, {GTK_EXPAND | GTK_FILL, 0}); + spin.dimensions(60, -1); + AddDialogData( spin, m_fitVertical ); } } } @@ -940,7 +870,7 @@ ui::Window SurfaceInspector::BuildDialog(){ { auto frame = ui::Frame( "Surface Flags" ); frame.show(); - gtk_box_pack_start( GTK_BOX( vbox ), GTK_WIDGET( frame ), TRUE, TRUE, 0 ); + vbox.pack_start( frame, TRUE, TRUE, 0 ); { auto vbox3 = ui::VBox( FALSE, 4 ); //gtk_container_set_border_width(GTK_CONTAINER(vbox3), 4); @@ -949,23 +879,21 @@ ui::Window SurfaceInspector::BuildDialog(){ { auto table = ui::Table( 8, 4, FALSE ); table.show(); - gtk_box_pack_start( GTK_BOX( vbox3 ), GTK_WIDGET( table ), TRUE, TRUE, 0 ); + vbox3.pack_start( table, TRUE, TRUE, 0 ); gtk_table_set_row_spacings( table, 0 ); gtk_table_set_col_spacings( table, 0 ); GtkCheckButton** p = m_surfaceFlags; - for ( int c = 0; c != 4; ++c ) + for (unsigned int c = 0; c != 4; ++c) { - for ( int r = 0; r != 8; ++r ) + for (unsigned int r = 0; r != 8; ++r) { auto check = ui::CheckButton( getSurfaceFlagName( c * 8 + r ) ); check.show(); - gtk_table_attach( table, GTK_WIDGET( check ), c, c + 1, r, r + 1, - (GtkAttachOptions)( GTK_EXPAND | GTK_FILL ), - (GtkAttachOptions)( 0 ), 0, 0 ); + table.attach(check, {c, c + 1, r, r + 1}, {GTK_EXPAND | GTK_FILL, 0}); *p++ = check; - guint handler_id = togglebutton_connect_toggled( GTK_TOGGLE_BUTTON( check ), ApplyFlagsCaller( *this ) ); + guint handler_id = togglebutton_connect_toggled( check, ApplyFlagsCaller( *this ) ); g_object_set_data( G_OBJECT( check ), "handler", gint_to_pointer( handler_id ) ); } } @@ -975,7 +903,7 @@ ui::Window SurfaceInspector::BuildDialog(){ { auto frame = ui::Frame( "Content Flags" ); frame.show(); - gtk_box_pack_start( GTK_BOX( vbox ), GTK_WIDGET( frame ), TRUE, TRUE, 0 ); + vbox.pack_start( frame, TRUE, TRUE, 0 ); { auto vbox3 = ui::VBox( FALSE, 4 ); //gtk_container_set_border_width(GTK_CONTAINER(vbox3), 4); @@ -985,36 +913,34 @@ ui::Window SurfaceInspector::BuildDialog(){ auto table = ui::Table( 8, 4, FALSE ); table.show(); - gtk_box_pack_start( GTK_BOX( vbox3 ), GTK_WIDGET( table ), TRUE, TRUE, 0 ); + vbox3.pack_start( table, TRUE, TRUE, 0 ); gtk_table_set_row_spacings( table, 0 ); gtk_table_set_col_spacings( table, 0 ); GtkCheckButton** p = m_contentFlags; - for ( int c = 0; c != 4; ++c ) + for (unsigned int c = 0; c != 4; ++c) { - for ( int r = 0; r != 8; ++r ) + for (unsigned int r = 0; r != 8; ++r) { auto check = ui::CheckButton( getContentFlagName( c * 8 + r ) ); check.show(); - gtk_table_attach( table, GTK_WIDGET( check ), c, c + 1, r, r + 1, - (GtkAttachOptions)( GTK_EXPAND | GTK_FILL ), - (GtkAttachOptions)( 0 ), 0, 0 ); + table.attach(check, {c, c + 1, r, r + 1}, {GTK_EXPAND | GTK_FILL, 0}); *p++ = check; - guint handler_id = togglebutton_connect_toggled( GTK_TOGGLE_BUTTON( check ), ApplyFlagsCaller( *this ) ); + guint handler_id = togglebutton_connect_toggled( check, ApplyFlagsCaller( *this ) ); g_object_set_data( G_OBJECT( check ), "handler", gint_to_pointer( handler_id ) ); } } // not allowed to modify detail flag using Surface Inspector - gtk_widget_set_sensitive( GTK_WIDGET( m_contentFlags[BRUSH_DETAIL_FLAG] ), FALSE ); + gtk_widget_set_sensitive( ui::CheckButton::from(m_contentFlags[BRUSH_DETAIL_FLAG]), FALSE ); } } } { auto frame = ui::Frame( "Value" ); frame.show(); - gtk_box_pack_start( GTK_BOX( vbox ), GTK_WIDGET( frame ), TRUE, TRUE, 0 ); + vbox.pack_start( frame, TRUE, TRUE, 0 ); { auto vbox3 = ui::VBox( FALSE, 4 ); gtk_container_set_border_width( GTK_CONTAINER( vbox3 ), 4 ); @@ -1022,9 +948,9 @@ ui::Window SurfaceInspector::BuildDialog(){ frame.add(vbox3); { - auto entry = ui::Entry(); + auto entry = ui::Entry(ui::New); entry.show(); - gtk_box_pack_start( GTK_BOX( vbox3 ), GTK_WIDGET( entry ), TRUE, TRUE, 0 ); + vbox3.pack_start( entry, TRUE, TRUE, 0 ); m_valueEntryWidget = entry; m_valueEntry.connect( entry ); } @@ -1037,7 +963,7 @@ ui::Window SurfaceInspector::BuildDialog(){ // Shamus: Textool goodies... ui::Widget frame = ui::Frame( "Textool" ); frame.show(); - gtk_box_pack_start( GTK_BOX( vbox ), GTK_WIDGET( frame ), FALSE, FALSE, 0 ); + vbox.pack_start( frame , FALSE, FALSE, 0 ); { //Prolly should make this a member or global var, so the SI can draw on it... TexTool::g_textoolWin = glwidget_new( FALSE ); @@ -1047,7 +973,7 @@ ui::Window SurfaceInspector::BuildDialog(){ gtk_widget_set_can_focus( TexTool::g_textoolWin, true ); // <-- end stuff... TexTool::g_textoolWin.show(); - gtk_widget_set_size_request( TexTool::g_textoolWin, -1, 240 ); //Yeah! + TexTool::g_textoolWin.dimensions( -1, 240 ); //Yeah! frame.add(TexTool::g_textoolWin); TexTool::g_textoolWin.connect( "size_allocate", G_CALLBACK( TexTool::size_allocate ), NULL ); @@ -1059,14 +985,14 @@ ui::Window SurfaceInspector::BuildDialog(){ { ui::Widget hbox = ui::HBox( FALSE, 5 ); hbox.show(); - gtk_box_pack_start( GTK_BOX( vbox ), GTK_WIDGET( hbox ), FALSE, FALSE, 0 ); + vbox.pack_start( hbox , FALSE, FALSE, 0 ); // Checkboxes go here... (Flip X/Y) ui::Widget flipX = ui::CheckButton( "Flip X axis" ); ui::Widget flipY = ui::CheckButton( "Flip Y axis" ); flipX.show(); flipY.show(); - gtk_box_pack_start( GTK_BOX( hbox ), flipX, FALSE, FALSE, 0 ); - gtk_box_pack_start( GTK_BOX( hbox ), flipY, FALSE, FALSE, 0 ); + hbox.pack_start( flipX, FALSE, FALSE, 0 ); + hbox.pack_start( flipY, FALSE, FALSE, 0 ); //Instead of this, we probably need to create a vbox to put into the frame, then the //window, then the hbox. !!! FIX !!! @@ -1096,15 +1022,15 @@ ui::Window SurfaceInspector::BuildDialog(){ =============== */ -void spin_button_set_value_no_signal( GtkSpinButton* spin, gdouble value ){ +void spin_button_set_value_no_signal( ui::SpinButton spin, gdouble value ){ guint handler_id = gpointer_to_int( g_object_get_data( G_OBJECT( spin ), "handler" ) ); g_signal_handler_block( G_OBJECT( gtk_spin_button_get_adjustment( spin ) ), handler_id ); gtk_spin_button_set_value( spin, value ); g_signal_handler_unblock( G_OBJECT( gtk_spin_button_get_adjustment( spin ) ), handler_id ); } -void spin_button_set_step_increment( GtkSpinButton* spin, gdouble value ){ - GtkAdjustment* adjust = gtk_spin_button_get_adjustment( spin ); +void spin_button_set_step_increment( ui::SpinButton spin, gdouble value ){ + auto adjust = gtk_spin_button_get_adjustment( spin ); gtk_adjustment_set_step_increment(adjust, value); } @@ -1112,11 +1038,11 @@ void SurfaceInspector::Update(){ const char * name = SurfaceInspector_GetSelectedShader(); if ( shader_is_texture( name ) ) { - gtk_entry_set_text( m_texture, shader_get_textureName( name ) ); + m_texture.text(shader_get_textureName(name)); } else { - gtk_entry_set_text( m_texture, "" ); + m_texture.text(""); } texdef_t shiftScaleRotate; @@ -1172,12 +1098,12 @@ void SurfaceInspector::Update(){ for ( GtkCheckButton** p = m_surfaceFlags; p != m_surfaceFlags + 32; ++p ) { - toggle_button_set_active_no_signal( ui::CheckButton( *p ), flags.m_surfaceFlags & ( 1 << ( p - m_surfaceFlags ) ) ); + toggle_button_set_active_no_signal( ui::CheckButton::from( *p ), flags.m_surfaceFlags & ( 1 << ( p - m_surfaceFlags ) ) ); } for ( GtkCheckButton** p = m_contentFlags; p != m_contentFlags + 32; ++p ) { - toggle_button_set_active_no_signal( ui::CheckButton( *p ), flags.m_contentFlags & ( 1 << ( p - m_contentFlags ) ) ); + toggle_button_set_active_no_signal( ui::CheckButton::from( *p ), flags.m_contentFlags & ( 1 << ( p - m_contentFlags ) ) ); } } } @@ -1253,14 +1179,14 @@ void Face_getTexture( Face& face, CopiedString& shader, TextureProjection& proje face.GetTexdef( projection ); flags = face.getShader().m_flags; } -typedef Function4 FaceGetTexture; +typedef Function FaceGetTexture; void Face_setTexture( Face& face, const char* shader, const TextureProjection& projection, const ContentsFlagsValue& flags ){ face.SetShader( shader ); face.SetTexdef( projection ); face.SetFlags( flags ); } -typedef Function4 FaceSetTexture; +typedef Function FaceSetTexture; void Patch_getTexture( Patch& patch, CopiedString& shader, TextureProjection& projection, ContentsFlagsValue& flags ){ @@ -1268,16 +1194,16 @@ void Patch_getTexture( Patch& patch, CopiedString& shader, TextureProjection& pr projection = TextureProjection( texdef_t(), brushprimit_texdef_t(), Vector3( 0, 0, 0 ), Vector3( 0, 0, 0 ) ); flags = ContentsFlagsValue( 0, 0, 0, false ); } -typedef Function4 PatchGetTexture; +typedef Function PatchGetTexture; void Patch_setTexture( Patch& patch, const char* shader, const TextureProjection& projection, const ContentsFlagsValue& flags ){ patch.SetShader( shader ); } -typedef Function4 PatchSetTexture; +typedef Function PatchSetTexture; -typedef Callback3 GetTextureCallback; -typedef Callback3 SetTextureCallback; +typedef Callback GetTextureCallback; +typedef Callback SetTextureCallback; struct Texturable { @@ -1292,8 +1218,8 @@ void Face_getClosest( Face& face, SelectionTest& test, SelectionIntersection& be if ( intersection.valid() && SelectionIntersection_closer( intersection, bestIntersection ) ) { bestIntersection = intersection; - texturable.setTexture = makeCallback3( FaceSetTexture(), face ); - texturable.getTexture = makeCallback3( FaceGetTexture(), face ); + texturable.setTexture = makeCallback( FaceSetTexture(), face ); + texturable.getTexture = makeCallback( FaceGetTexture(), face ); } } @@ -1347,8 +1273,8 @@ bool pre( const scene::Path& path, scene::Instance& instance ) const { if ( occluded ) { Patch* patch = Node_getPatch( path.top() ); if ( patch != 0 ) { - m_texturable.setTexture = makeCallback3( PatchSetTexture(), *patch ); - m_texturable.getTexture = makeCallback3( PatchGetTexture(), *patch ); + m_texturable.setTexture = makeCallback( PatchSetTexture(), *patch ); + m_texturable.getTexture = makeCallback( PatchGetTexture(), *patch ); } else { @@ -1404,21 +1330,20 @@ void TextureClipboard_textureSelected( const char* shader ){ } class TextureBrowser; -extern TextureBrowser g_TextureBrowser; void TextureBrowser_SetSelectedShader( TextureBrowser& textureBrowser, const char* shader ); const char* TextureBrowser_GetSelectedShader( TextureBrowser& textureBrowser ); void Scene_copyClosestTexture( SelectionTest& test ){ CopiedString shader; if ( Scene_getClosestTexture( GlobalSceneGraph(), test, shader, g_faceTextureClipboard.m_projection, g_faceTextureClipboard.m_flags ) ) { - TextureBrowser_SetSelectedShader( g_TextureBrowser, shader.c_str() ); + TextureBrowser_SetSelectedShader( GlobalTextureBrowser(), shader.c_str() ); } } void Scene_applyClosestTexture( SelectionTest& test ){ UndoableCommand command( "facePaintTexture" ); - Scene_setClosestTexture( GlobalSceneGraph(), test, TextureBrowser_GetSelectedShader( g_TextureBrowser ), g_faceTextureClipboard.m_projection, g_faceTextureClipboard.m_flags ); + Scene_setClosestTexture( GlobalSceneGraph(), test, TextureBrowser_GetSelectedShader( GlobalTextureBrowser() ), g_faceTextureClipboard.m_projection, g_faceTextureClipboard.m_flags ); SceneChangeNotify(); } @@ -1433,13 +1358,13 @@ void SelectedFaces_copyTexture(){ face.GetTexdef( g_faceTextureClipboard.m_projection ); g_faceTextureClipboard.m_flags = face.getShader().m_flags; - TextureBrowser_SetSelectedShader( g_TextureBrowser, face.getShader().getShader() ); + TextureBrowser_SetSelectedShader( GlobalTextureBrowser(), face.getShader().getShader() ); } } void FaceInstance_pasteTexture( FaceInstance& faceInstance ){ faceInstance.getFace().SetTexdef( g_faceTextureClipboard.m_projection ); - faceInstance.getFace().SetShader( TextureBrowser_GetSelectedShader( g_TextureBrowser ) ); + faceInstance.getFace().SetShader( TextureBrowser_GetSelectedShader( GlobalTextureBrowser() ) ); faceInstance.getFace().SetFlags( g_faceTextureClipboard.m_flags ); SceneChangeNotify(); } @@ -1463,15 +1388,15 @@ void SurfaceInspector_constructPage( PreferenceGroup& group ){ SurfaceInspector_constructPreferences( page ); } void SurfaceInspector_registerPreferencesPage(){ - PreferencesDialog_addSettingsPage( FreeCaller1() ); + PreferencesDialog_addSettingsPage( makeCallbackF(SurfaceInspector_constructPage) ); } void SurfaceInspector_registerCommands(){ - GlobalCommands_insert( "FitTexture", FreeCaller(), Accelerator( 'B', (GdkModifierType)GDK_SHIFT_MASK ) ); - GlobalCommands_insert( "SurfaceInspector", FreeCaller(), Accelerator( 'S' ) ); + GlobalCommands_insert( "FitTexture", makeCallbackF(SurfaceInspector_FitTexture), Accelerator( 'B', (GdkModifierType)GDK_SHIFT_MASK ) ); + GlobalCommands_insert( "SurfaceInspector", makeCallbackF(SurfaceInspector_toggleShown), Accelerator( 'S' ) ); - GlobalCommands_insert( "FaceCopyTexture", FreeCaller() ); - GlobalCommands_insert( "FacePasteTexture", FreeCaller() ); + GlobalCommands_insert( "FaceCopyTexture", makeCallbackF(SelectedFaces_copyTexture) ); + GlobalCommands_insert( "FacePasteTexture", makeCallbackF(SelectedFaces_pasteTexture) ); } @@ -1485,17 +1410,17 @@ void SurfaceInspector_Construct(){ FaceTextureClipboard_setDefault(); - GlobalPreferenceSystem().registerPreference( "SurfaceWnd", getSurfaceInspector().m_importPosition, getSurfaceInspector().m_exportPosition ); - GlobalPreferenceSystem().registerPreference( "SI_SurfaceTexdef_Scale1", FloatImportStringCaller( g_si_globals.scale[0] ), FloatExportStringCaller( g_si_globals.scale[0] ) ); - GlobalPreferenceSystem().registerPreference( "SI_SurfaceTexdef_Scale2", FloatImportStringCaller( g_si_globals.scale[1] ), FloatExportStringCaller( g_si_globals.scale[1] ) ); - GlobalPreferenceSystem().registerPreference( "SI_SurfaceTexdef_Shift1", FloatImportStringCaller( g_si_globals.shift[0] ), FloatExportStringCaller( g_si_globals.shift[0] ) ); - GlobalPreferenceSystem().registerPreference( "SI_SurfaceTexdef_Shift2", FloatImportStringCaller( g_si_globals.shift[1] ), FloatExportStringCaller( g_si_globals.shift[1] ) ); - GlobalPreferenceSystem().registerPreference( "SI_SurfaceTexdef_Rotate", FloatImportStringCaller( g_si_globals.rotate ), FloatExportStringCaller( g_si_globals.rotate ) ); - GlobalPreferenceSystem().registerPreference( "SnapTToGrid", BoolImportStringCaller( g_si_globals.m_bSnapTToGrid ), BoolExportStringCaller( g_si_globals.m_bSnapTToGrid ) ); + GlobalPreferenceSystem().registerPreference( "SurfaceWnd", make_property( getSurfaceInspector().m_positionTracker) ); + GlobalPreferenceSystem().registerPreference( "SI_SurfaceTexdef_Scale1", make_property_string( g_si_globals.scale[0] ) ); + GlobalPreferenceSystem().registerPreference( "SI_SurfaceTexdef_Scale2", make_property_string( g_si_globals.scale[1] ) ); + GlobalPreferenceSystem().registerPreference( "SI_SurfaceTexdef_Shift1", make_property_string( g_si_globals.shift[0] ) ); + GlobalPreferenceSystem().registerPreference( "SI_SurfaceTexdef_Shift2", make_property_string( g_si_globals.shift[1] ) ); + GlobalPreferenceSystem().registerPreference( "SI_SurfaceTexdef_Rotate", make_property_string( g_si_globals.rotate ) ); + GlobalPreferenceSystem().registerPreference( "SnapTToGrid", make_property_string( g_si_globals.m_bSnapTToGrid ) ); - typedef FreeCaller1 SurfaceInspectorSelectionChangedCaller; + typedef FreeCaller SurfaceInspectorSelectionChangedCaller; GlobalSelectionSystem().addSelectionChangeCallback( SurfaceInspectorSelectionChangedCaller() ); - typedef FreeCaller SurfaceInspectorUpdateSelectionCaller; + typedef FreeCaller SurfaceInspectorUpdateSelectionCaller; Brush_addTextureChangedCallback( SurfaceInspectorUpdateSelectionCaller() ); Patch_addTextureChangedCallback( SurfaceInspectorUpdateSelectionCaller() ); @@ -2278,7 +2203,7 @@ gboolean motion( ui::Widget win, GdkEventMotion * e, gpointer ){ //It seems the fake tex coords conversion is screwing this stuff up... !!! FIX !!! //This is still wrong... Prolly need to do something with the oldScaleX/Y stuff... -void flipX( GtkToggleButton *, gpointer ){ +void flipX( ui::ToggleButton, gpointer ){ // globalOutputStream() << "--> Flip X...\n"; //Shamus: // SurfaceInspector_GetSelectedBPTexdef(); // Refresh g_selectedBrushPrimitTexdef... @@ -2292,7 +2217,7 @@ void flipX( GtkToggleButton *, gpointer ){ UpdateControlPoints(); } -void flipY( GtkToggleButton *, gpointer ){ +void flipY( ui::ToggleButton, gpointer ){ // globalOutputStream() << "--> Flip Y...\n"; // tm.coords[0][1] = -tm.coords[0][1]; // tm.coords[1][1] = -tm.coords[1][1];