+ global_accel_connect_window( window );
+
+ window_connect_focus_in_clear_focus_widget( window );
+
+
+ {
+ GtkVBox* vbox = ui::VBox( FALSE, 5 );
+ gtk_container_set_border_width( GTK_CONTAINER( vbox ), 5 );
+ gtk_widget_show( GTK_WIDGET( vbox ) );
+ gtk_container_add( GTK_CONTAINER( window ), GTK_WIDGET( vbox ) );
+ {
+ GtkHBox* hbox = GTK_HBOX( gtk_hbox_new( FALSE, 5 ) );
+ gtk_widget_show( GTK_WIDGET( hbox ) );
+ gtk_box_pack_start( GTK_BOX( vbox ), GTK_WIDGET( hbox ), TRUE, TRUE, 0 );
+ {
+ GtkVBox* vbox2 = ui::VBox( FALSE, 0 );
+ gtk_container_set_border_width( GTK_CONTAINER( vbox2 ), 0 );
+ gtk_widget_show( GTK_WIDGET( vbox2 ) );
+ gtk_box_pack_start( GTK_BOX( hbox ), GTK_WIDGET( vbox2 ), TRUE, TRUE, 0 );
+ {
+ GtkFrame* frame = GTK_FRAME( gtk_frame_new( "Details" ) );
+ gtk_widget_show( GTK_WIDGET( frame ) );
+ gtk_box_pack_start( GTK_BOX( vbox2 ), GTK_WIDGET( frame ), TRUE, TRUE, 0 );
+ {
+ GtkVBox* vbox3 = ui::VBox( FALSE, 5 );
+ gtk_container_set_border_width( GTK_CONTAINER( vbox3 ), 5 );
+ gtk_widget_show( GTK_WIDGET( vbox3 ) );
+ gtk_container_add( GTK_CONTAINER( frame ), GTK_WIDGET( vbox3 ) );
+ {
+ GtkTable* table = GTK_TABLE( gtk_table_new( 2, 2, FALSE ) );
+ gtk_widget_show( GTK_WIDGET( table ) );
+ gtk_box_pack_start( GTK_BOX( vbox3 ), GTK_WIDGET( table ), TRUE, TRUE, 0 );
+ gtk_table_set_row_spacings( table, 5 );
+ gtk_table_set_col_spacings( table, 5 );
+ {
+ GtkLabel* label = GTK_LABEL( ui::Label( "Row:" ) );
+ gtk_widget_show( GTK_WIDGET( label ) );
+ gtk_table_attach( table, GTK_WIDGET( label ), 0, 1, 0, 1,
+ (GtkAttachOptions)( GTK_EXPAND | GTK_FILL ),
+ (GtkAttachOptions)( 0 ), 0, 0 );
+ }
+ {
+ GtkLabel* label = GTK_LABEL( ui::Label( "Column:" ) );
+ gtk_widget_show( GTK_WIDGET( label ) );
+ gtk_table_attach( table, GTK_WIDGET( label ), 1, 2, 0, 1,
+ (GtkAttachOptions)( GTK_EXPAND | GTK_FILL ),
+ (GtkAttachOptions)( 0 ), 0, 0 );
+ }
+ {
+ GtkComboBox* combo = GTK_COMBO_BOX( gtk_combo_box_new_text() );
+ g_signal_connect( G_OBJECT( combo ), "changed", G_CALLBACK( OnSelchangeComboColRow ), this );
+ AddDialogData( *combo, m_nRow );
+
+ gtk_widget_show( GTK_WIDGET( combo ) );
+ gtk_table_attach( table, GTK_WIDGET( combo ), 0, 1, 1, 2,
+ (GtkAttachOptions)( GTK_EXPAND | GTK_FILL ),
+ (GtkAttachOptions)( 0 ), 0, 0 );
+ gtk_widget_set_usize( GTK_WIDGET( combo ), 60, -1 );
+ m_pRowCombo = combo;
+ }
+
+ {
+ GtkComboBox* combo = GTK_COMBO_BOX( gtk_combo_box_new_text() );
+ g_signal_connect( G_OBJECT( combo ), "changed", G_CALLBACK( OnSelchangeComboColRow ), this );
+ AddDialogData( *combo, m_nCol );
+
+ gtk_widget_show( GTK_WIDGET( combo ) );
+ gtk_table_attach( table, GTK_WIDGET( combo ), 1, 2, 1, 2,
+ (GtkAttachOptions)( GTK_EXPAND | GTK_FILL ),
+ (GtkAttachOptions)( 0 ), 0, 0 );
+ gtk_widget_set_usize( GTK_WIDGET( combo ), 60, -1 );
+ m_pColCombo = combo;
+ }
+ }
+ GtkTable* table = GTK_TABLE( gtk_table_new( 5, 2, FALSE ) );
+ gtk_widget_show( GTK_WIDGET( table ) );
+ gtk_box_pack_start( GTK_BOX( vbox3 ), GTK_WIDGET( table ), TRUE, TRUE, 0 );
+ gtk_table_set_row_spacings( table, 5 );
+ gtk_table_set_col_spacings( table, 5 );
+ {
+ GtkLabel* label = GTK_LABEL( ui::Label( "X:" ) );
+ gtk_widget_show( GTK_WIDGET( label ) );
+ gtk_table_attach( table, GTK_WIDGET( label ), 0, 1, 0, 1,
+ (GtkAttachOptions)( GTK_EXPAND | GTK_FILL ),
+ (GtkAttachOptions)( 0 ), 0, 0 );
+ }
+ {
+ GtkLabel* label = GTK_LABEL( ui::Label( "Y:" ) );
+ gtk_widget_show( GTK_WIDGET( label ) );
+ gtk_table_attach( table, GTK_WIDGET( label ), 0, 1, 1, 2,
+ (GtkAttachOptions)( GTK_EXPAND | GTK_FILL ),
+ (GtkAttachOptions)( 0 ), 0, 0 );
+ }
+ {
+ GtkLabel* label = GTK_LABEL( ui::Label( "Z:" ) );
+ gtk_widget_show( GTK_WIDGET( label ) );
+ gtk_table_attach( table, GTK_WIDGET( label ), 0, 1, 2, 3,
+ (GtkAttachOptions)( GTK_EXPAND | GTK_FILL ),
+ (GtkAttachOptions)( 0 ), 0, 0 );
+ }
+ {
+ GtkLabel* label = GTK_LABEL( ui::Label( "S:" ) );
+ gtk_widget_show( GTK_WIDGET( label ) );
+ gtk_table_attach( table, GTK_WIDGET( label ), 0, 1, 3, 4,
+ (GtkAttachOptions)( GTK_EXPAND | GTK_FILL ),
+ (GtkAttachOptions)( 0 ), 0, 0 );
+ }
+ {
+ GtkLabel* label = GTK_LABEL( ui::Label( "T:" ) );
+ gtk_widget_show( GTK_WIDGET( label ) );
+ gtk_table_attach( table, GTK_WIDGET( label ), 0, 1, 4, 5,
+ (GtkAttachOptions)( GTK_EXPAND | GTK_FILL ),
+ (GtkAttachOptions)( 0 ), 0, 0 );
+ }
+ {
+ GtkEntry* entry = GTK_ENTRY( gtk_entry_new() );
+ gtk_widget_show( GTK_WIDGET( entry ) );
+ gtk_table_attach( table, GTK_WIDGET( entry ), 1, 2, 0, 1,
+ (GtkAttachOptions)( GTK_EXPAND | GTK_FILL ),
+ (GtkAttachOptions)( 0 ), 0, 0 );
+ AddDialogData( *entry, m_fX );
+
+ g_signal_connect( G_OBJECT( entry ), "key_press_event", G_CALLBACK( OnDialogKey ), 0 );
+ }
+ {
+ GtkEntry* entry = GTK_ENTRY( gtk_entry_new() );
+ gtk_widget_show( GTK_WIDGET( entry ) );
+ gtk_table_attach( table, GTK_WIDGET( entry ), 1, 2, 1, 2,
+ (GtkAttachOptions)( GTK_EXPAND | GTK_FILL ),
+ (GtkAttachOptions)( 0 ), 0, 0 );
+ AddDialogData( *entry, m_fY );
+
+ g_signal_connect( G_OBJECT( entry ), "key_press_event", G_CALLBACK( OnDialogKey ), 0 );
+ }
+ {
+ GtkEntry* entry = GTK_ENTRY( gtk_entry_new() );
+ gtk_widget_show( GTK_WIDGET( entry ) );
+ gtk_table_attach( table, GTK_WIDGET( entry ), 1, 2, 2, 3,
+ (GtkAttachOptions)( GTK_EXPAND | GTK_FILL ),
+ (GtkAttachOptions)( 0 ), 0, 0 );
+ AddDialogData( *entry, m_fZ );
+
+ g_signal_connect( G_OBJECT( entry ), "key_press_event", G_CALLBACK( OnDialogKey ), 0 );
+ }
+ {
+ GtkEntry* entry = GTK_ENTRY( gtk_entry_new() );
+ gtk_widget_show( GTK_WIDGET( entry ) );
+ gtk_table_attach( table, GTK_WIDGET( entry ), 1, 2, 3, 4,
+ (GtkAttachOptions)( GTK_EXPAND | GTK_FILL ),
+ (GtkAttachOptions)( 0 ), 0, 0 );
+ AddDialogData( *entry, m_fS );
+
+ g_signal_connect( G_OBJECT( entry ), "key_press_event", G_CALLBACK( OnDialogKey ), 0 );
+ }
+ {
+ GtkEntry* entry = GTK_ENTRY( gtk_entry_new() );
+ gtk_widget_show( GTK_WIDGET( entry ) );
+ gtk_table_attach( table, GTK_WIDGET( entry ), 1, 2, 4, 5,
+ (GtkAttachOptions)( GTK_EXPAND | GTK_FILL ),
+ (GtkAttachOptions)( 0 ), 0, 0 );
+ AddDialogData( *entry, m_fT );
+
+ g_signal_connect( G_OBJECT( entry ), "key_press_event", G_CALLBACK( OnDialogKey ), 0 );
+ }
+ }
+ }
+ if ( g_pGameDescription->mGameType == "doom3" ) {
+ GtkFrame* frame = GTK_FRAME( gtk_frame_new( "Tesselation" ) );
+ gtk_widget_show( GTK_WIDGET( frame ) );
+ gtk_box_pack_start( GTK_BOX( vbox2 ), GTK_WIDGET( frame ), TRUE, TRUE, 0 );
+ {
+ GtkVBox* vbox3 = ui::VBox( FALSE, 5 );
+ gtk_container_set_border_width( GTK_CONTAINER( vbox3 ), 5 );
+ gtk_widget_show( GTK_WIDGET( vbox3 ) );
+ gtk_container_add( GTK_CONTAINER( frame ), GTK_WIDGET( vbox3 ) );
+ {
+ GtkTable* table = GTK_TABLE( gtk_table_new( 3, 2, FALSE ) );
+ gtk_widget_show( GTK_WIDGET( table ) );
+ gtk_box_pack_start( GTK_BOX( vbox3 ), GTK_WIDGET( table ), TRUE, TRUE, 0 );
+ gtk_table_set_row_spacings( table, 5 );
+ gtk_table_set_col_spacings( table, 5 );
+ {
+ GtkLabel* label = GTK_LABEL( ui::Label( "Fixed" ) );
+ gtk_widget_show( GTK_WIDGET( label ) );
+ gtk_table_attach( table, GTK_WIDGET( label ), 0, 1, 0, 1,
+ (GtkAttachOptions)( GTK_EXPAND | GTK_FILL ),
+ (GtkAttachOptions)( 0 ), 0, 0 );
+ }
+ {
+ GtkCheckButton* check = GTK_CHECK_BUTTON( gtk_check_button_new() );
+ gtk_widget_show( GTK_WIDGET( check ) );
+ gtk_table_attach( table, GTK_WIDGET( check ), 1, 2, 0, 1,
+ (GtkAttachOptions)( GTK_EXPAND | GTK_FILL ),
+ (GtkAttachOptions)( 0 ), 0, 0 );
+ m_subdivisions.m_enabled = check;
+ guint handler_id = g_signal_connect( G_OBJECT( check ), "toggled", G_CALLBACK( &Subdivisions::applyGtk ), &m_subdivisions );
+ g_object_set_data( G_OBJECT( check ), "handler", gint_to_pointer( handler_id ) );
+ }
+ {
+ GtkLabel* label = GTK_LABEL( ui::Label( "Horizontal" ) );
+ gtk_widget_show( GTK_WIDGET( label ) );
+ gtk_table_attach( table, GTK_WIDGET( label ), 0, 1, 1, 2,
+ (GtkAttachOptions)( GTK_EXPAND | GTK_FILL ),
+ (GtkAttachOptions)( 0 ), 0, 0 );
+ }
+ {
+ GtkEntry* entry = GTK_ENTRY( gtk_entry_new() );
+ gtk_widget_show( GTK_WIDGET( entry ) );
+ gtk_table_attach( table, GTK_WIDGET( entry ), 1, 2, 1, 2,
+ (GtkAttachOptions)( GTK_EXPAND | GTK_FILL ),
+ (GtkAttachOptions)( 0 ), 0, 0 );
+ m_subdivisions.m_horizontal = entry;
+ m_horizontalSubdivisionsEntry.connect( entry );
+ }
+ {
+ GtkLabel* label = GTK_LABEL( ui::Label( "Vertical" ) );
+ gtk_widget_show( GTK_WIDGET( label ) );
+ gtk_table_attach( table, GTK_WIDGET( label ), 0, 1, 2, 3,
+ (GtkAttachOptions)( GTK_EXPAND | GTK_FILL ),
+ (GtkAttachOptions)( 0 ), 0, 0 );
+ }
+ {
+ GtkEntry* entry = GTK_ENTRY( gtk_entry_new() );
+ gtk_widget_show( GTK_WIDGET( entry ) );
+ gtk_table_attach( table, GTK_WIDGET( entry ), 1, 2, 2, 3,
+ (GtkAttachOptions)( GTK_EXPAND | GTK_FILL ),
+ (GtkAttachOptions)( 0 ), 0, 0 );
+ m_subdivisions.m_vertical = entry;
+ m_verticalSubdivisionsEntry.connect( entry );
+ }
+ }
+ }
+ }
+ }
+ {
+ GtkFrame* frame = GTK_FRAME( gtk_frame_new( "Texturing" ) );
+ gtk_widget_show( GTK_WIDGET( frame ) );
+ gtk_box_pack_start( GTK_BOX( hbox ), GTK_WIDGET( frame ), TRUE, TRUE, 0 );
+ {
+ GtkVBox* vbox2 = ui::VBox( FALSE, 5 );
+ gtk_widget_show( GTK_WIDGET( vbox2 ) );
+ gtk_container_add( GTK_CONTAINER( frame ), GTK_WIDGET( vbox2 ) );
+ gtk_container_set_border_width( GTK_CONTAINER( vbox2 ), 5 );
+ {
+ GtkLabel* label = GTK_LABEL( ui::Label( "Name:" ) );
+ gtk_widget_show( GTK_WIDGET( label ) );
+ gtk_box_pack_start( GTK_BOX( vbox2 ), GTK_WIDGET( label ), TRUE, TRUE, 0 );
+ gtk_label_set_justify( label, GTK_JUSTIFY_LEFT );
+ gtk_misc_set_alignment( GTK_MISC( label ), 0, 0.5 );
+ }
+ {
+ GtkEntry* entry = GTK_ENTRY( gtk_entry_new() );
+ // gtk_entry_set_editable (GTK_ENTRY (entry), false);
+ gtk_widget_show( GTK_WIDGET( entry ) );
+ gtk_box_pack_start( GTK_BOX( vbox2 ), GTK_WIDGET( entry ), TRUE, TRUE, 0 );
+ AddDialogData( *entry, m_strName );
+
+ g_signal_connect( G_OBJECT( entry ), "key_press_event", G_CALLBACK( OnDialogKey ), 0 );
+ }
+ {
+ GtkTable* table = GTK_TABLE( gtk_table_new( 5, 4, FALSE ) );
+ gtk_widget_show( GTK_WIDGET( table ) );
+ gtk_box_pack_start( GTK_BOX( vbox2 ), GTK_WIDGET( table ), TRUE, TRUE, 0 );
+ gtk_table_set_row_spacings( table, 5 );
+ gtk_table_set_col_spacings( table, 5 );
+ {
+ GtkLabel* label = GTK_LABEL( ui::Label( "Horizontal Shift Step" ) );
+ gtk_widget_show( GTK_WIDGET( label ) );
+ gtk_table_attach( table, GTK_WIDGET( label ), 2, 4, 0, 1,
+ (GtkAttachOptions)( GTK_FILL|GTK_EXPAND ),
+ (GtkAttachOptions)( 0 ), 0, 0 );
+ gtk_misc_set_alignment( GTK_MISC( label ), 0, 0.5 );
+ }
+ {
+ GtkLabel* label = GTK_LABEL( ui::Label( "Vertical Shift Step" ) );
+ gtk_widget_show( GTK_WIDGET( label ) );
+ gtk_table_attach( table, GTK_WIDGET( label ), 2, 4, 1, 2,
+ (GtkAttachOptions)( GTK_FILL|GTK_EXPAND ),
+ (GtkAttachOptions)( 0 ), 0, 0 );
+ gtk_misc_set_alignment( GTK_MISC( label ), 0, 0.5 );
+ }
+ {
+ GtkLabel* label = GTK_LABEL( ui::Label( "Horizontal Stretch Step" ) );
+ gtk_widget_show( GTK_WIDGET( label ) );
+ gtk_table_attach( table, GTK_WIDGET( label ), 2, 3, 2, 3,
+ (GtkAttachOptions)( GTK_FILL|GTK_EXPAND ),
+ (GtkAttachOptions)( 0 ), 0, 0 );
+ gtk_misc_set_alignment( GTK_MISC( label ), 0, 0.5 );
+ }
+ {
+ GtkButton* button = GTK_BUTTON( gtk_button_new_with_label( "Flip" ) );
+ gtk_widget_show( GTK_WIDGET( button ) );
+ gtk_table_attach( table, GTK_WIDGET( button ), 3, 4, 2, 3,
+ (GtkAttachOptions)( GTK_FILL ),
+ (GtkAttachOptions)( 0 ), 0, 0 );
+ g_signal_connect( G_OBJECT( button ), "clicked", G_CALLBACK( OnBtnPatchFlipX ), 0 );
+ gtk_widget_set_usize( GTK_WIDGET( button ), 60, -1 );
+ }
+ {
+ GtkLabel* label = GTK_LABEL( ui::Label( "Vertical Stretch Step" ) );
+ gtk_widget_show( GTK_WIDGET( label ) );
+ gtk_table_attach( table, GTK_WIDGET( label ), 2, 3, 3, 4,
+ (GtkAttachOptions)( GTK_FILL|GTK_EXPAND ),
+ (GtkAttachOptions)( 0 ), 0, 0 );
+ gtk_misc_set_alignment( GTK_MISC( label ), 0, 0.5 );
+ }
+ {
+ GtkButton* button = GTK_BUTTON( gtk_button_new_with_label( "Flip" ) );
+ gtk_widget_show( GTK_WIDGET( button ) );
+ gtk_table_attach( table, GTK_WIDGET( button ), 3, 4, 3, 4,
+ (GtkAttachOptions)( GTK_FILL ),
+ (GtkAttachOptions)( 0 ), 0, 0 );
+ g_signal_connect( G_OBJECT( button ), "clicked", G_CALLBACK( OnBtnPatchFlipY ), 0 );
+ gtk_widget_set_usize( GTK_WIDGET( button ), 60, -1 );
+ }
+ {
+ GtkLabel* label = GTK_LABEL( ui::Label( "Rotate Step" ) );
+ gtk_widget_show( GTK_WIDGET( label ) );
+ gtk_table_attach( table, GTK_WIDGET( label ), 2, 4, 4, 5,
+ (GtkAttachOptions)( GTK_FILL|GTK_EXPAND ),
+ (GtkAttachOptions)( 0 ), 0, 0 );
+ gtk_misc_set_alignment( GTK_MISC( label ), 0, 0.5 );
+ }
+ {
+ GtkEntry* entry = GTK_ENTRY( gtk_entry_new() );
+ gtk_widget_show( GTK_WIDGET( entry ) );
+ gtk_table_attach( table, GTK_WIDGET( entry ), 0, 1, 0, 1,
+ (GtkAttachOptions)( GTK_FILL ),
+ (GtkAttachOptions)( 0 ), 0, 0 );
+ gtk_widget_set_usize( GTK_WIDGET( entry ), 50, -2 );
+ g_object_set_data( G_OBJECT( window ), "hshift_entry", entry );
+ // we fill in this data, if no patch is selected the widgets are unmodified when the inspector is raised
+ // so we need to have at least one initialisation somewhere
+ entry_set_float( entry, g_pi_globals.shift[0] );
+
+ GtkAdjustment* adj = GTK_ADJUSTMENT( gtk_adjustment_new( 0, -8192, 8192, 1, 1, 0 ) );
+ g_signal_connect( G_OBJECT( adj ), "value_changed", G_CALLBACK( OnSpinChanged ), entry );
+ g_object_set_data( G_OBJECT( window ), "hshift_adj", adj );
+
+ GtkSpinButton* spin = GTK_SPIN_BUTTON( gtk_spin_button_new( adj, 1, 0 ) );
+ gtk_widget_show( GTK_WIDGET( spin ) );
+ gtk_table_attach( table, GTK_WIDGET( spin ), 1, 2, 0, 1,
+ (GtkAttachOptions)( 0 ),
+ (GtkAttachOptions)( 0 ), 0, 0 );
+ gtk_widget_set_usize( GTK_WIDGET( spin ), 10, -2 );
+ GTK_WIDGET_UNSET_FLAGS( spin, GTK_CAN_FOCUS );
+ }
+ {
+ GtkEntry* entry = GTK_ENTRY( gtk_entry_new() );
+ gtk_widget_show( GTK_WIDGET( entry ) );
+ gtk_table_attach( table, GTK_WIDGET( entry ), 0, 1, 1, 2,
+ (GtkAttachOptions)( GTK_FILL ),
+ (GtkAttachOptions)( 0 ), 0, 0 );
+ gtk_widget_set_usize( GTK_WIDGET( entry ), 50, -2 );
+ entry_set_float( entry, g_pi_globals.shift[1] );
+
+ GtkAdjustment* adj = GTK_ADJUSTMENT( gtk_adjustment_new( 0, -8192, 8192, 1, 1, 0 ) );
+ g_signal_connect( G_OBJECT( adj ), "value_changed", G_CALLBACK( OnSpinChanged ), entry );
+ g_object_set_data( G_OBJECT( window ), "vshift_adj", adj );
+
+ GtkSpinButton* spin = GTK_SPIN_BUTTON( gtk_spin_button_new( adj, 1, 0 ) );
+ gtk_widget_show( GTK_WIDGET( spin ) );
+ gtk_table_attach( table, GTK_WIDGET( spin ), 1, 2, 1, 2,
+ (GtkAttachOptions)( 0 ),
+ (GtkAttachOptions)( 0 ), 0, 0 );
+ gtk_widget_set_usize( GTK_WIDGET( spin ), 10, -2 );
+ GTK_WIDGET_UNSET_FLAGS( spin, GTK_CAN_FOCUS );
+ }
+ {
+ GtkEntry* entry = GTK_ENTRY( gtk_entry_new() );
+ gtk_widget_show( GTK_WIDGET( entry ) );
+ gtk_table_attach( table, GTK_WIDGET( entry ), 0, 1, 2, 3,
+ (GtkAttachOptions)( GTK_FILL ),
+ (GtkAttachOptions)( 0 ), 0, 0 );
+ gtk_widget_set_usize( GTK_WIDGET( entry ), 50, -2 );
+ entry_set_float( entry, g_pi_globals.scale[0] );
+
+ GtkAdjustment* adj = GTK_ADJUSTMENT( gtk_adjustment_new( 0, -1000, 1000, 1, 1, 0 ) );
+ g_signal_connect( G_OBJECT( adj ), "value_changed", G_CALLBACK( OnSpinChanged ), entry );
+ g_object_set_data( G_OBJECT( window ), "hscale_adj", adj );
+
+ GtkSpinButton* spin = GTK_SPIN_BUTTON( gtk_spin_button_new( adj, 1, 0 ) );
+ gtk_widget_show( GTK_WIDGET( spin ) );
+ gtk_table_attach( table, GTK_WIDGET( spin ), 1, 2, 2, 3,
+ (GtkAttachOptions)( 0 ),
+ (GtkAttachOptions)( 0 ), 0, 0 );
+ gtk_widget_set_usize( GTK_WIDGET( spin ), 10, -2 );
+ GTK_WIDGET_UNSET_FLAGS( spin, GTK_CAN_FOCUS );
+ }
+ {
+ GtkEntry* entry = GTK_ENTRY( gtk_entry_new() );
+ gtk_widget_show( GTK_WIDGET( entry ) );
+ gtk_table_attach( table, GTK_WIDGET( entry ), 0, 1, 3, 4,
+ (GtkAttachOptions)( GTK_FILL ),
+ (GtkAttachOptions)( 0 ), 0, 0 );
+ gtk_widget_set_usize( GTK_WIDGET( entry ), 50, -2 );
+ entry_set_float( entry, g_pi_globals.scale[1] );
+
+ GtkAdjustment* adj = GTK_ADJUSTMENT( gtk_adjustment_new( 0, -1000, 1000, 1, 1, 0 ) );
+ g_signal_connect( G_OBJECT( adj ), "value_changed", G_CALLBACK( OnSpinChanged ), entry );
+ g_object_set_data( G_OBJECT( window ), "vscale_adj", adj );
+
+ GtkSpinButton* spin = GTK_SPIN_BUTTON( gtk_spin_button_new( adj, 1, 0 ) );
+ gtk_widget_show( GTK_WIDGET( spin ) );
+ gtk_table_attach( table, GTK_WIDGET( spin ), 1, 2, 3, 4,
+ (GtkAttachOptions)( 0 ),
+ (GtkAttachOptions)( 0 ), 0, 0 );
+ gtk_widget_set_usize( GTK_WIDGET( spin ), 10, -2 );
+ GTK_WIDGET_UNSET_FLAGS( spin, GTK_CAN_FOCUS );
+ }
+ {
+ GtkEntry* entry = GTK_ENTRY( gtk_entry_new() );
+ gtk_widget_show( GTK_WIDGET( entry ) );
+ gtk_table_attach( table, GTK_WIDGET( entry ), 0, 1, 4, 5,
+ (GtkAttachOptions)( GTK_FILL ),
+ (GtkAttachOptions)( 0 ), 0, 0 );
+ gtk_widget_set_usize( GTK_WIDGET( entry ), 50, -2 );
+ entry_set_float( entry, g_pi_globals.rotate );
+
+ GtkAdjustment* adj = GTK_ADJUSTMENT( gtk_adjustment_new( 0, -1000, 1000, 1, 1, 0 ) ); // NOTE: Arnout - this really should be 360 but can't change it anymore as it could break existing maps
+ g_signal_connect( G_OBJECT( adj ), "value_changed", G_CALLBACK( OnSpinChanged ), entry );
+ g_object_set_data( G_OBJECT( window ), "rotate_adj", adj );
+
+ GtkSpinButton* spin = GTK_SPIN_BUTTON( gtk_spin_button_new( adj, 1, 0 ) );
+ gtk_widget_show( GTK_WIDGET( spin ) );
+ gtk_table_attach( table, GTK_WIDGET( spin ), 1, 2, 4, 5,
+ (GtkAttachOptions)( 0 ),
+ (GtkAttachOptions)( 0 ), 0, 0 );
+ gtk_widget_set_usize( GTK_WIDGET( spin ), 10, -2 );
+ GTK_WIDGET_UNSET_FLAGS( spin, GTK_CAN_FOCUS );
+ }
+ }
+ GtkHBox* hbox2 = GTK_HBOX( gtk_hbox_new( TRUE, 5 ) );
+ gtk_widget_show( GTK_WIDGET( hbox2 ) );
+ gtk_box_pack_start( GTK_BOX( vbox2 ), GTK_WIDGET( hbox2 ), TRUE, FALSE, 0 );
+ {
+ GtkButton* button = GTK_BUTTON( gtk_button_new_with_label( "Auto Cap" ) );
+ gtk_widget_show( GTK_WIDGET( button ) );
+ gtk_box_pack_end( GTK_BOX( hbox2 ), GTK_WIDGET( button ), TRUE, FALSE, 0 );
+ g_signal_connect( G_OBJECT( button ), "clicked", G_CALLBACK( OnBtnPatchAutoCap ), 0 );
+ gtk_widget_set_usize( GTK_WIDGET( button ), 60, -1 );
+ }
+ {
+ GtkButton* button = GTK_BUTTON( gtk_button_new_with_label( "CAP" ) );
+ gtk_widget_show( GTK_WIDGET( button ) );
+ gtk_box_pack_end( GTK_BOX( hbox2 ), GTK_WIDGET( button ), TRUE, FALSE, 0 );
+ g_signal_connect( G_OBJECT( button ), "clicked", G_CALLBACK( OnBtnPatchdetails ), 0 );
+ gtk_widget_set_usize( GTK_WIDGET( button ), 60, -1 );
+ }
+ {
+ GtkButton* button = GTK_BUTTON( gtk_button_new_with_label( "Set..." ) );
+ gtk_widget_show( GTK_WIDGET( button ) );
+ gtk_box_pack_end( GTK_BOX( hbox2 ), GTK_WIDGET( button ), TRUE, FALSE, 0 );
+ g_signal_connect( G_OBJECT( button ), "clicked", G_CALLBACK( OnBtnPatchreset ), 0 );
+ gtk_widget_set_usize( GTK_WIDGET( button ), 60, -1 );
+ }
+ {
+ GtkButton* button = GTK_BUTTON( gtk_button_new_with_label( "Natural" ) );
+ gtk_widget_show( GTK_WIDGET( button ) );
+ gtk_box_pack_end( GTK_BOX( hbox2 ), GTK_WIDGET( button ), TRUE, FALSE, 0 );
+ g_signal_connect( G_OBJECT( button ), "clicked", G_CALLBACK( OnBtnPatchnatural ), 0 );
+ gtk_widget_set_usize( GTK_WIDGET( button ), 60, -1 );
+ }
+ {
+ GtkButton* button = GTK_BUTTON( gtk_button_new_with_label( "Fit" ) );
+ gtk_widget_show( GTK_WIDGET( button ) );
+ gtk_box_pack_end( GTK_BOX( hbox2 ), GTK_WIDGET( button ), TRUE, FALSE, 0 );
+ g_signal_connect( G_OBJECT( button ), "clicked", G_CALLBACK( OnBtnPatchfit ), 0 );
+ gtk_widget_set_usize( GTK_WIDGET( button ), 60, -1 );
+ }
+ }
+ }
+ }
+ }
+
+ return window;
+}
+
+// sync the dialog our internal data structures
+void PatchInspector::exportData(){
+ m_bListenChanged = false;
+ Dialog::exportData();
+ m_bListenChanged = true;
+}
+void PatchInspector::importData(){
+ m_bListenChanged = false;
+ Dialog::importData();
+ m_bListenChanged = true;