]> de.git.xonotic.org Git - xonotic/netradiant.git/blobdiff - contrib/camera/dialogs.cpp
GTK: wrap GTK_WIDGET
[xonotic/netradiant.git] / contrib / camera / dialogs.cpp
index acd2fbd4fbda8cb08936ffc582d27a99669833c5..e2366239877e3683e800dc09e320166cda9bf10a 100644 (file)
@@ -61,7 +61,7 @@ static gint ci_editmode_add( GtkWidget *widget, gpointer data ){
    }*/
 
 static gint ci_new( GtkWidget *widget, gpointer data ){
-       GtkWidget *window, *w, *vbox, *vbox2, *hbox, *frame; //, *name;
+       GtkWidget *w, *hbox; //, *name;
        GtkWidget *fixed, *interpolated, *spline;
        EMessageBoxReturn ret;
        int loop = 1;
@@ -69,10 +69,10 @@ static gint ci_new( GtkWidget *widget, gpointer data ){
 //     char buf[128];
 
        // create the window
-       window = gtk_window_new( GTK_WINDOW_TOPLEVEL );
+       auto window = ui::Window( ui::window_type::TOP );
        gtk_window_set_title( GTK_WINDOW( window ), "New Camera" );
-       gtk_signal_connect( GTK_OBJECT( window ), "delete_event", GTK_SIGNAL_FUNC( dialog_delete_callback ), NULL );
-       gtk_signal_connect( GTK_OBJECT( window ), "destroy", GTK_SIGNAL_FUNC( gtk_widget_destroy ), NULL );
+       window.connect( "delete_event", G_CALLBACK( dialog_delete_callback ), NULL );
+       window.connect( "destroy", G_CALLBACK( gtk_widget_destroy ), NULL );
        gtk_window_set_transient_for( GTK_WINDOW( window ), GTK_WINDOW( g_pCameraInspectorWnd ) );
 
        g_object_set_data( G_OBJECT( window ), "loop", &loop );
@@ -81,72 +81,72 @@ static gint ci_new( GtkWidget *widget, gpointer data ){
        gtk_widget_realize( window );
 
        // fill the window
-       vbox = gtk_vbox_new( FALSE, 5 );
-       gtk_container_add( GTK_CONTAINER( window ), vbox );
-       gtk_widget_show( vbox );
+       auto vbox = ui::VBox( FALSE, 5 );
+       window.add(vbox);
+       vbox.show();
 
        // -------------------------- //
 
-       hbox = gtk_hbox_new( FALSE, 5 );
-       gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
-       gtk_widget_show( hbox );
+       hbox = ui::HBox( FALSE, 5 );
+       vbox.pack_start( hbox, FALSE, FALSE, 0 );
+       hbox.show();
 
-       frame = gtk_frame_new( "Type" );
-       gtk_box_pack_start( GTK_BOX( hbox ), frame, TRUE, TRUE, 0 );
-       gtk_widget_show( frame );
+       auto frame = ui::Frame( "Type" );
+       hbox.pack_start( frame, TRUE, TRUE, 0 );
+       frame.show();
 
-       vbox2 = gtk_vbox_new( FALSE, 5 );
-       gtk_container_add( GTK_CONTAINER( frame ), vbox2 );
+       auto vbox2 = ui::VBox( FALSE, 5 );
+       frame.add(vbox2);
        gtk_container_set_border_width( GTK_CONTAINER( vbox2 ), 5 );
-       gtk_widget_show( vbox2 );
+       vbox2.show();
 
        // -------------------------- //
 
        fixed = gtk_radio_button_new_with_label( targetTypeRadio, "Fixed" );
-       gtk_box_pack_start( GTK_BOX( vbox2 ), fixed, FALSE, FALSE, 3 );
-       gtk_widget_show( fixed );
-       targetTypeRadio = gtk_radio_button_group( GTK_RADIO_BUTTON( fixed ) );
+       vbox2.pack_start( fixed, FALSE, FALSE, 3 );
+       fixed.show();
+       targetTypeRadio = gtk_radio_button_get_group( GTK_RADIO_BUTTON( fixed ) );
 
        interpolated = gtk_radio_button_new_with_label( targetTypeRadio, "Interpolated" );
-       gtk_box_pack_start( GTK_BOX( vbox2 ), interpolated, FALSE, FALSE, 3 );
-       gtk_widget_show( interpolated );
-       targetTypeRadio = gtk_radio_button_group( GTK_RADIO_BUTTON( interpolated ) );
+       vbox2.pack_start( interpolated, FALSE, FALSE, 3 );
+       interpolated.show();
+       targetTypeRadio = gtk_radio_button_get_group( GTK_RADIO_BUTTON( interpolated ) );
 
        spline = gtk_radio_button_new_with_label( targetTypeRadio, "Spline" );
-       gtk_box_pack_start( GTK_BOX( vbox2 ), spline, FALSE, FALSE, 3 );
-       gtk_widget_show( spline );
-       targetTypeRadio = gtk_radio_button_group( GTK_RADIO_BUTTON( spline ) );
+       vbox2.pack_start( spline, FALSE, FALSE, 3 );
+       spline.show();
+       targetTypeRadio = gtk_radio_button_get_group( GTK_RADIO_BUTTON( spline ) );
 
        // -------------------------- //
 
        w = gtk_hseparator_new();
-       gtk_box_pack_start( GTK_BOX( vbox ), w, FALSE, FALSE, 2 );
-       gtk_widget_show( w );
+       vbox.pack_start( w, FALSE, FALSE, 2 );
+       w.show();
 
        // -------------------------- //
 
-       hbox = gtk_hbox_new( FALSE, 5 );
-       gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
-       gtk_widget_show( hbox );
+       hbox = ui::HBox( FALSE, 5 );
+       vbox.pack_start( hbox, FALSE, FALSE, 0 );
+       hbox.show();
 
-       w = gtk_button_new_with_label( "Ok" );
-       gtk_box_pack_start( GTK_BOX( hbox ), w, TRUE, TRUE, 0 );
-       gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( eIDOK ) );
-       gtk_widget_show( w );
+       w = ui::Button( "Ok" );
+       hbox.pack_start( w, TRUE, TRUE, 0 );
+       w.connect( "clicked", G_CALLBACK( dialog_button_callback ), GINT_TO_POINTER( eIDOK ) );
+       w.show();
 
-       GTK_WIDGET_SET_FLAGS( w, GTK_CAN_DEFAULT );
+       gtk_widget_set_can_default( w, true );
        gtk_widget_grab_default( w );
 
-       w = gtk_button_new_with_label( "Cancel" );
-       gtk_box_pack_start( GTK_BOX( hbox ), w, TRUE, TRUE, 0 );
-       gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( eIDCANCEL ) );
-       gtk_widget_show( w );
+       w = ui::Button( "Cancel" );
+       hbox.pack_start( w, TRUE, TRUE, 0 );
+       w.connect( "clicked", G_CALLBACK( dialog_button_callback ), GINT_TO_POINTER( eIDCANCEL ) );
+       w.show();
        ret = eIDCANCEL;
 
        // -------------------------- //
 
        gtk_window_set_position( GTK_WINDOW( window ),GTK_WIN_POS_CENTER );
-       gtk_widget_show( window );
+       window.show();
        gtk_grab_add( window );
 
        bool dialogError = TRUE;
@@ -171,7 +171,7 @@ static gint ci_new( GtkWidget *widget, gpointer data ){
        }
 
        gtk_grab_remove( window );
-       gtk_widget_destroy( window );
+       window.destroy();
 
        return TRUE;
 }
@@ -314,7 +314,7 @@ static gint ci_pathlist_changed( GtkWidget *widget, gpointer data ){
        }
 
        // start edit mode
-       if ( g_pCameraInspectorWnd && GTK_WIDGET_VISIBLE( g_pCameraInspectorWnd ) ) {
+       if ( g_pCameraInspectorWnd && gtk_widget_get_visible( g_pCameraInspectorWnd ) ) {
                DoStartEdit( GetCurrentCam() );
        }
 
@@ -353,7 +353,7 @@ static void RefreshEventList( void ){
 }
 
 static gint ci_rename( GtkWidget *widget, gpointer data ){
-       GtkWidget *window, *w, *vbox, *hbox, *name;
+       GtkWidget *w, *hbox, *name;
        EMessageBoxReturn ret;
        int loop = 1;
 
@@ -362,10 +362,10 @@ static gint ci_rename( GtkWidget *widget, gpointer data ){
        }
 
        // create the window
-       window = gtk_window_new( GTK_WINDOW_TOPLEVEL );
+       auto window = ui::Window( ui::window_type::TOP );
        gtk_window_set_title( GTK_WINDOW( window ), "Rename Path" );
-       gtk_signal_connect( GTK_OBJECT( window ), "delete_event", GTK_SIGNAL_FUNC( dialog_delete_callback ), NULL );
-       gtk_signal_connect( GTK_OBJECT( window ), "destroy", GTK_SIGNAL_FUNC( gtk_widget_destroy ), NULL );
+       window.connect( "delete_event", G_CALLBACK( dialog_delete_callback ), NULL );
+       window.connect( "destroy", G_CALLBACK( gtk_widget_destroy ), NULL );
        gtk_window_set_transient_for( GTK_WINDOW( window ), GTK_WINDOW( g_pCameraInspectorWnd ) );
 
        g_object_set_data( G_OBJECT( window ), "loop", &loop );
@@ -374,23 +374,23 @@ static gint ci_rename( GtkWidget *widget, gpointer data ){
        gtk_widget_realize( window );
 
        // fill the window
-       vbox = gtk_vbox_new( FALSE, 5 );
-       gtk_container_add( GTK_CONTAINER( window ), vbox );
-       gtk_widget_show( vbox );
+       auto vbox = ui::VBox( FALSE, 5 );
+       window.add(vbox);
+       vbox.show();
 
        // -------------------------- //
 
-       hbox = gtk_hbox_new( FALSE, 5 );
-       gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
-       gtk_widget_show( hbox );
+       hbox = ui::HBox( FALSE, 5 );
+       vbox.pack_start( hbox, FALSE, FALSE, 0 );
+       hbox.show();
 
-       w = gtk_label_new( "Name:" );
-       gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 0 );
-       gtk_widget_show( w );
+       w = ui::Label( "Name:" );
+       hbox.pack_start( w, FALSE, FALSE, 0 );
+       w.show();
 
-       name = gtk_entry_new();
-       gtk_box_pack_start( GTK_BOX( hbox ), name, FALSE, FALSE, 0 );
-       gtk_widget_show( name );
+       name = ui::Entry();
+       hbox.pack_start( name, FALSE, FALSE, 0 );
+       name.show();
 
        if ( g_iActiveTarget < 0 ) {
                gtk_entry_set_text( GTK_ENTRY( name ), GetCurrentCam()->GetCam()->getPositionObj()->getName() );
@@ -402,33 +402,33 @@ static gint ci_rename( GtkWidget *widget, gpointer data ){
        // -------------------------- //
 
        w = gtk_hseparator_new();
-       gtk_box_pack_start( GTK_BOX( vbox ), w, FALSE, FALSE, 2 );
-       gtk_widget_show( w );
+       vbox.pack_start( w, FALSE, FALSE, 2 );
+       w.show();
 
        // -------------------------- //
 
-       hbox = gtk_hbox_new( FALSE, 5 );
-       gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
-       gtk_widget_show( hbox );
+       hbox = ui::HBox( FALSE, 5 );
+       vbox.pack_start( hbox, FALSE, FALSE, 0 );
+       hbox.show();
 
-       w = gtk_button_new_with_label( "Ok" );
-       gtk_box_pack_start( GTK_BOX( hbox ), w, TRUE, TRUE, 0 );
-       gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( eIDOK ) );
-       gtk_widget_show( w );
+       w = ui::Button( "Ok" );
+       hbox.pack_start( w, TRUE, TRUE, 0 );
+       w.connect( "clicked", G_CALLBACK( dialog_button_callback ), GINT_TO_POINTER( eIDOK ) );
+       w.show();
 
-       GTK_WIDGET_SET_FLAGS( w, GTK_CAN_DEFAULT );
+       gtk_widget_set_can_default( w, true );
        gtk_widget_grab_default( w );
 
-       w = gtk_button_new_with_label( "Cancel" );
-       gtk_box_pack_start( GTK_BOX( hbox ), w, TRUE, TRUE, 0 );
-       gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( eIDCANCEL ) );
-       gtk_widget_show( w );
+       w = ui::Button( "Cancel" );
+       hbox.pack_start( w, TRUE, TRUE, 0 );
+       w.connect( "clicked", G_CALLBACK( dialog_button_callback ), GINT_TO_POINTER( eIDCANCEL ) );
+       w.show();
        ret = eIDCANCEL;
 
        // -------------------------- //
 
        gtk_window_set_position( GTK_WINDOW( window ),GTK_WIN_POS_CENTER );
-       gtk_widget_show( window );
+       window.show();
        gtk_grab_add( window );
 
        bool dialogError = TRUE;
@@ -463,13 +463,13 @@ static gint ci_rename( GtkWidget *widget, gpointer data ){
        }
 
        gtk_grab_remove( window );
-       gtk_widget_destroy( window );
+       window.destroy();
 
        return TRUE;
 }
 
 static gint ci_add_target( GtkWidget *widget, gpointer data ){
-       GtkWidget *window, *w, *vbox, *vbox2, *hbox, *frame, *name;
+       GtkWidget *w, *hbox, *name;
        GtkWidget *fixed, *interpolated, *spline;
        EMessageBoxReturn ret;
        int loop = 1;
@@ -481,10 +481,10 @@ static gint ci_add_target( GtkWidget *widget, gpointer data ){
        }
 
        // create the window
-       window = gtk_window_new( GTK_WINDOW_TOPLEVEL );
+       auto window = ui::Window( ui::window_type::TOP );
        gtk_window_set_title( GTK_WINDOW( window ), "Add Target" );
-       gtk_signal_connect( GTK_OBJECT( window ), "delete_event", GTK_SIGNAL_FUNC( dialog_delete_callback ), NULL );
-       gtk_signal_connect( GTK_OBJECT( window ), "destroy", GTK_SIGNAL_FUNC( gtk_widget_destroy ), NULL );
+       window.connect( "delete_event", G_CALLBACK( dialog_delete_callback ), NULL );
+       window.connect( "destroy", G_CALLBACK( gtk_widget_destroy ), NULL );
        gtk_window_set_transient_for( GTK_WINDOW( window ), GTK_WINDOW( g_pCameraInspectorWnd ) );
 
        g_object_set_data( G_OBJECT( window ), "loop", &loop );
@@ -493,89 +493,89 @@ static gint ci_add_target( GtkWidget *widget, gpointer data ){
        gtk_widget_realize( window );
 
        // fill the window
-       vbox = gtk_vbox_new( FALSE, 5 );
-       gtk_container_add( GTK_CONTAINER( window ), vbox );
-       gtk_widget_show( vbox );
+       auto vbox = ui::VBox( FALSE, 5 );
+       window.add(vbox);
+       vbox.show();
 
        // -------------------------- //
 
-       hbox = gtk_hbox_new( FALSE, 5 );
-       gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
-       gtk_widget_show( hbox );
+       hbox = ui::HBox( FALSE, 5 );
+       vbox.pack_start( hbox, FALSE, FALSE, 0 );
+       hbox.show();
 
-       w = gtk_label_new( "Name:" );
-       gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 0 );
-       gtk_widget_show( w );
+       w = ui::Label( "Name:" );
+       hbox.pack_start( w, FALSE, FALSE, 0 );
+       w.show();
 
-       name = gtk_entry_new();
-       gtk_box_pack_start( GTK_BOX( hbox ), name, TRUE, TRUE, 0 );
-       gtk_widget_show( name );
+       name = ui::Entry();
+       hbox.pack_start( name, TRUE, TRUE, 0 );
+       name.show();
 
        sprintf( buf, "target%i", GetCurrentCam()->GetCam()->numTargets() + 1 );
        gtk_entry_set_text( GTK_ENTRY( name ), buf );
 
        // -------------------------- //
 
-       hbox = gtk_hbox_new( FALSE, 5 );
-       gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
-       gtk_widget_show( hbox );
+       hbox = ui::HBox( FALSE, 5 );
+       vbox.pack_start( hbox, FALSE, FALSE, 0 );
+       hbox.show();
 
-       frame = gtk_frame_new( "Type" );
-       gtk_box_pack_start( GTK_BOX( hbox ), frame, TRUE, TRUE, 0 );
-       gtk_widget_show( frame );
+       auto frame = ui::Frame( "Type" );
+       hbox.pack_start( frame, TRUE, TRUE, 0 );
+       frame.show();
 
-       vbox2 = gtk_vbox_new( FALSE, 5 );
-       gtk_container_add( GTK_CONTAINER( frame ), vbox2 );
+       auto vbox2 = ui::VBox( FALSE, 5 );
+       frame.add(vbox2);
        gtk_container_set_border_width( GTK_CONTAINER( vbox2 ), 5 );
-       gtk_widget_show( vbox2 );
+       vbox2.show();
 
        // -------------------------- //
 
        fixed = gtk_radio_button_new_with_label( targetTypeRadio, "Fixed" );
-       gtk_box_pack_start( GTK_BOX( vbox2 ), fixed, FALSE, FALSE, 3 );
-       gtk_widget_show( fixed );
-       targetTypeRadio = gtk_radio_button_group( GTK_RADIO_BUTTON( fixed ) );
+       vbox2.pack_start( fixed, FALSE, FALSE, 3 );
+       fixed.show();
+       targetTypeRadio = gtk_radio_button_get_group( GTK_RADIO_BUTTON( fixed ) );
 
        interpolated = gtk_radio_button_new_with_label( targetTypeRadio, "Interpolated" );
-       gtk_box_pack_start( GTK_BOX( vbox2 ), interpolated, FALSE, FALSE, 3 );
-       gtk_widget_show( interpolated );
-       targetTypeRadio = gtk_radio_button_group( GTK_RADIO_BUTTON( interpolated ) );
+       vbox2.pack_start( interpolated, FALSE, FALSE, 3 );
+       interpolated.show();
+       targetTypeRadio = gtk_radio_button_get_group( GTK_RADIO_BUTTON( interpolated ) );
 
        spline = gtk_radio_button_new_with_label( targetTypeRadio, "Spline" );
-       gtk_box_pack_start( GTK_BOX( vbox2 ), spline, FALSE, FALSE, 3 );
-       gtk_widget_show( spline );
-       targetTypeRadio = gtk_radio_button_group( GTK_RADIO_BUTTON( spline ) );
+       vbox2.pack_start( spline, FALSE, FALSE, 3 );
+       spline.show();
+       targetTypeRadio = gtk_radio_button_get_group( GTK_RADIO_BUTTON( spline ) );
 
        // -------------------------- //
 
        w = gtk_hseparator_new();
-       gtk_box_pack_start( GTK_BOX( vbox ), w, FALSE, FALSE, 2 );
-       gtk_widget_show( w );
+       vbox.pack_start( w, FALSE, FALSE, 2 );
+       w.show();
 
        // -------------------------- //
 
-       hbox = gtk_hbox_new( FALSE, 5 );
-       gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
-       gtk_widget_show( hbox );
+       hbox = ui::HBox( FALSE, 5 );
+       vbox.pack_start( hbox, FALSE, FALSE, 0 );
+       hbox.show();
 
-       w = gtk_button_new_with_label( "Ok" );
-       gtk_box_pack_start( GTK_BOX( hbox ), w, TRUE, TRUE, 0 );
-       gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( eIDOK ) );
-       gtk_widget_show( w );
+       w = ui::Button( "Ok" );
+       hbox.pack_start( w, TRUE, TRUE, 0 );
+       w.connect( "clicked", G_CALLBACK( dialog_button_callback ), GINT_TO_POINTER( eIDOK ) );
+       w.show();
 
-       GTK_WIDGET_SET_FLAGS( w, GTK_CAN_DEFAULT );
+       gtk_widget_set_can_default( w, true );
        gtk_widget_grab_default( w );
 
-       w = gtk_button_new_with_label( "Cancel" );
-       gtk_box_pack_start( GTK_BOX( hbox ), w, TRUE, TRUE, 0 );
-       gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( eIDCANCEL ) );
-       gtk_widget_show( w );
+       w = ui::Button( "Cancel" );
+       hbox.pack_start( w, TRUE, TRUE, 0 );
+       w.connect( "clicked", G_CALLBACK( dialog_button_callback ), GINT_TO_POINTER( eIDCANCEL ) );
+       w.show();
        ret = eIDCANCEL;
 
        // -------------------------- //
 
        gtk_window_set_position( GTK_WINDOW( window ),GTK_WIN_POS_CENTER );
-       gtk_widget_show( window );
+       window.show();
        gtk_grab_add( window );
 
        bool dialogError = TRUE;
@@ -611,7 +611,7 @@ static gint ci_add_target( GtkWidget *widget, gpointer data ){
 
                                // Select the last item in the listbox
                                li = g_list_last( GTK_LIST( GTK_COMBO( g_pPathListCombo )->list )->children );
-                               gtk_list_select_child( GTK_LIST( GTK_COMBO( g_pPathListCombo )->list ), GTK_WIDGET( li->data ) );
+                               gtk_list_select_child( GTK_LIST( GTK_COMBO( g_pPathListCombo )->list ), li->data  );
 
                                // If this was the first one, refresh the event list
                                if ( GetCurrentCam()->GetCam()->numTargets() == 1 ) {
@@ -629,7 +629,7 @@ static gint ci_add_target( GtkWidget *widget, gpointer data ){
        }
 
        gtk_grab_remove( window );
-       gtk_widget_destroy( window );
+       window.destroy();
 
        return TRUE;
 }
@@ -675,7 +675,7 @@ void RefreshCamListCombo( void ){
                combo_cam = firstCam;
                while ( li && combo_cam ) {
                        if ( combo_cam == GetCurrentCam() ) {
-                               gtk_list_select_child( GTK_LIST( GTK_COMBO( g_pCamListCombo )->list ), GTK_WIDGET( li->data ) );
+                               gtk_list_select_child( GTK_LIST( GTK_COMBO( g_pCamListCombo )->list ), li->data  );
                                break;
                        }
                        li = li->next;
@@ -756,7 +756,7 @@ static gint ci_camlist_changed( GtkWidget *widget, gpointer data ){
 
        // start edit mode
        g_iActiveTarget = -1;
-       if ( g_pCameraInspectorWnd && GTK_WIDGET_VISIBLE( g_pCameraInspectorWnd ) ) {
+       if ( g_pCameraInspectorWnd && gtk_widget_get_visible( g_pCameraInspectorWnd ) ) {
                DoStartEdit( GetCurrentCam() );
        }
 
@@ -817,7 +817,7 @@ const char *camEventStr[] = {
 };
 
 static gint ci_add( GtkWidget *widget, gpointer data ){
-       GtkWidget *window, *w, *vbox, *vbox2, *hbox, *frame, *parameters;
+       GtkWidget *w, *hbox, *parameters;
        GtkWidget *eventWidget[EVENT_COUNT];
        EMessageBoxReturn ret;
        int i, loop = 1;
@@ -829,10 +829,10 @@ static gint ci_add( GtkWidget *widget, gpointer data ){
        }
 
        // create the window
-       window = gtk_window_new( GTK_WINDOW_TOPLEVEL );
+       auto window = ui::Window( ui::window_type::TOP );
        gtk_window_set_title( GTK_WINDOW( window ), "Add Event" );
-       gtk_signal_connect( GTK_OBJECT( window ), "delete_event", GTK_SIGNAL_FUNC( dialog_delete_callback ), NULL );
-       gtk_signal_connect( GTK_OBJECT( window ), "destroy", GTK_SIGNAL_FUNC( gtk_widget_destroy ), NULL );
+       window.connect( "delete_event", G_CALLBACK( dialog_delete_callback ), NULL );
+       window.connect( "destroy", G_CALLBACK( gtk_widget_destroy ), NULL );
        gtk_window_set_transient_for( GTK_WINDOW( window ), GTK_WINDOW( g_pCameraInspectorWnd ) );
 
        g_object_set_data( G_OBJECT( window ), "loop", &loop );
@@ -841,32 +841,32 @@ static gint ci_add( GtkWidget *widget, gpointer data ){
        gtk_widget_realize( window );
 
        // fill the window
-       vbox = gtk_vbox_new( FALSE, 5 );
-       gtk_container_add( GTK_CONTAINER( window ), vbox );
-       gtk_widget_show( vbox );
+       auto vbox = ui::VBox( FALSE, 5 );
+       window.add(vbox);
+       vbox.show();
 
        // -------------------------- //
 
-       hbox = gtk_hbox_new( FALSE, 5 );
-       gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
-       gtk_widget_show( hbox );
+       hbox = ui::HBox( FALSE, 5 );
+       vbox.pack_start( hbox, FALSE, FALSE, 0 );
+       hbox.show();
 
-       frame = gtk_frame_new( "Type" );
-       gtk_box_pack_start( GTK_BOX( hbox ), frame, TRUE, TRUE, 0 );
-       gtk_widget_show( frame );
+       auto frame = ui::Frame( "Type" );
+       hbox.pack_start( frame, TRUE, TRUE, 0 );
+       frame.show();
 
-       vbox2 = gtk_vbox_new( FALSE, 5 );
-       gtk_container_add( GTK_CONTAINER( frame ), vbox2 );
+       auto vbox2 = ui::VBox( FALSE, 5 );
+       frame.add(vbox2);
        gtk_container_set_border_width( GTK_CONTAINER( vbox2 ), 5 );
-       gtk_widget_show( vbox2 );
+       vbox2.show();
 
        // -------------------------- //
 
        for ( i = 1; i < EVENT_COUNT; i++ ) {
                eventWidget[i] = gtk_radio_button_new_with_label( eventTypeRadio, camEventStr[i] );
-               gtk_box_pack_start( GTK_BOX( vbox2 ), eventWidget[i], FALSE, FALSE, 3 );
-               gtk_widget_show( eventWidget[i] );
-               eventTypeRadio = gtk_radio_button_group( GTK_RADIO_BUTTON( eventWidget[i] ) );
+               vbox2.pack_start( eventWidget[i], FALSE, FALSE, 3 );
+               eventWidget[i].show();
+               eventTypeRadio = gtk_radio_button_get_group( GTK_RADIO_BUTTON( eventWidget[i] ) );
                if ( camEventFlags[i][1] == false ) {
                        gtk_widget_set_sensitive( eventWidget[i], FALSE );
                }
@@ -874,48 +874,48 @@ static gint ci_add( GtkWidget *widget, gpointer data ){
 
        // -------------------------- //
 
-       hbox = gtk_hbox_new( FALSE, 5 );
-       gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
-       gtk_widget_show( hbox );
+       hbox = ui::HBox( FALSE, 5 );
+       vbox.pack_start( hbox, FALSE, FALSE, 0 );
+       hbox.show();
 
-       w = gtk_label_new( "Parameters:" );
-       gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 0 );
-       gtk_widget_show( w );
+       w = ui::Label( "Parameters:" );
+       hbox.pack_start( w, FALSE, FALSE, 0 );
+       w.show();
 
-       parameters = gtk_entry_new();
-       gtk_box_pack_start( GTK_BOX( hbox ), parameters, TRUE, TRUE, 0 );
-       gtk_widget_show( parameters );
+       parameters = ui::Entry();
+       hbox.pack_start( parameters, TRUE, TRUE, 0 );
+       parameters.show();
 
        // -------------------------- //
 
        w = gtk_hseparator_new();
-       gtk_box_pack_start( GTK_BOX( vbox ), w, FALSE, FALSE, 2 );
-       gtk_widget_show( w );
+       vbox.pack_start( w, FALSE, FALSE, 2 );
+       w.show();
 
        // -------------------------- //
 
-       hbox = gtk_hbox_new( FALSE, 5 );
-       gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
-       gtk_widget_show( hbox );
+       hbox = ui::HBox( FALSE, 5 );
+       vbox.pack_start( hbox, FALSE, FALSE, 0 );
+       hbox.show();
 
-       w = gtk_button_new_with_label( "Ok" );
-       gtk_box_pack_start( GTK_BOX( hbox ), w, TRUE, TRUE, 0 );
-       gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( eIDOK ) );
-       gtk_widget_show( w );
+       w = ui::Button( "Ok" );
+       hbox.pack_start( w, TRUE, TRUE, 0 );
+       w.connect( "clicked", G_CALLBACK( dialog_button_callback ), GINT_TO_POINTER( eIDOK ) );
+       w.show();
 
-       GTK_WIDGET_SET_FLAGS( w, GTK_CAN_DEFAULT );
+       gtk_widget_set_can_default( w, true );
        gtk_widget_grab_default( w );
 
-       w = gtk_button_new_with_label( "Cancel" );
-       gtk_box_pack_start( GTK_BOX( hbox ), w, TRUE, TRUE, 0 );
-       gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( eIDCANCEL ) );
-       gtk_widget_show( w );
+       w = ui::Button( "Cancel" );
+       hbox.pack_start( w, TRUE, TRUE, 0 );
+       w.connect( "clicked", G_CALLBACK( dialog_button_callback ), GINT_TO_POINTER( eIDCANCEL ) );
+       w.show();
        ret = eIDCANCEL;
 
        // -------------------------- //
 
        gtk_window_set_position( GTK_WINDOW( window ),GTK_WIN_POS_CENTER );
-       gtk_widget_show( window );
+       window.show();
        gtk_grab_add( window );
 
        bool dialogError = TRUE;
@@ -952,7 +952,7 @@ static gint ci_add( GtkWidget *widget, gpointer data ){
        }
 
        gtk_grab_remove( window );
-       gtk_widget_destroy( window );
+       window.destroy();
 
        return TRUE;
 }
@@ -992,14 +992,14 @@ static gint ci_timeline_changed( GtkAdjustment *adjustment ){
 }
 
 GtkWidget *CreateCameraInspectorDialog( void ){
-       GtkWidget *window, *w, *vbox, *hbox, *table, *frame;
+       GtkWidget *w, *hbox;
 
        // create the window
-       window = gtk_window_new( GTK_WINDOW_TOPLEVEL );
+       auto window = ui::Window( ui::window_type::TOP );
        gtk_window_set_title( GTK_WINDOW( window ), "Camera Inspector" );
-       gtk_signal_connect( GTK_OBJECT( window ), "delete_event", GTK_SIGNAL_FUNC( ci_close ), NULL );
-       gtk_signal_connect( GTK_OBJECT( window ), "expose_event", GTK_SIGNAL_FUNC( ci_expose ), NULL );
-       //  gtk_signal_connect( GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC( gtk_widget_destroy ), NULL );
+       window.connect( "delete_event", G_CALLBACK( ci_close ), NULL );
+       window.connect( "expose_event", G_CALLBACK( ci_expose ), NULL );
+       //  window.connect( "destroy", G_CALLBACK( gtk_widget_destroy ), NULL );
        gtk_window_set_transient_for( GTK_WINDOW( window ), GTK_WINDOW( g_pRadiantWnd ) );
 
        // don't use show, as you don't want to have it displayed on startup ;-)
@@ -1010,9 +1010,9 @@ GtkWidget *CreateCameraInspectorDialog( void ){
        // the table
        // -------------------------- //
 
-       table = gtk_table_new( 3, 2, FALSE );
-       gtk_widget_show( table );
-       gtk_container_add( GTK_CONTAINER( window ), table );
+       auto table = ui::Table( 3, 2, FALSE );
+       table.show();
+       window.add(table);
        gtk_container_set_border_width( GTK_CONTAINER( table ), 5 );
        gtk_table_set_row_spacings( GTK_TABLE( table ), 5 );
        gtk_table_set_col_spacings( GTK_TABLE( table ), 5 );
@@ -1020,105 +1020,105 @@ GtkWidget *CreateCameraInspectorDialog( void ){
        // the properties column
        // -------------------------- //
 
-       vbox = gtk_vbox_new( FALSE, 5 );
-       gtk_widget_show( vbox );
+       vbox = ui::VBox( FALSE, 5 );
+       vbox.show();
        gtk_table_attach( GTK_TABLE( table ), vbox, 0, 1, 0, 1,
                                          (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ),
                                          (GtkAttachOptions) ( GTK_FILL ), 0, 0 );
 
        // -------------------------- //
 
-       hbox = gtk_hbox_new( FALSE, 5 );
-       gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
-       gtk_widget_show( hbox );
+       hbox = ui::HBox( FALSE, 5 );
+       vbox.pack_start( hbox, FALSE, FALSE, 0 );
+       hbox.show();
 
-       w = gtk_label_new( "File:" );
-       gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 0 );
-       gtk_widget_show( w );
+       w = ui::Label( "File:" );
+       hbox.pack_start( w, FALSE, FALSE, 0 );
+       w.show();
 
        g_pCamListCombo = gtk_combo_new();
-       gtk_box_pack_start( GTK_BOX( hbox ), g_pCamListCombo, TRUE, TRUE, 0 );
-       gtk_widget_show( g_pCamListCombo );
+       hbox.pack_start( g_pCamListCombo, TRUE, TRUE, 0 );
+       g_pCamListCombo.show();
 
        // -------------------------- //
 
-       hbox = gtk_hbox_new( FALSE, 5 );
-       gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
-       gtk_widget_show( hbox );
+       hbox = ui::HBox( FALSE, 5 );
+       vbox.pack_start( hbox, FALSE, FALSE, 0 );
+       hbox.show();
 
-       w = gtk_label_new( "Name:" );
-       gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 0 );
-       gtk_widget_show( w );
+       w = ui::Label( "Name:" );
+       hbox.pack_start( w, FALSE, FALSE, 0 );
+       w.show();
 
-       g_pCamName = gtk_entry_new();
-       gtk_box_pack_start( GTK_BOX( hbox ), g_pCamName, FALSE, FALSE, 0 );
-       gtk_widget_show( g_pCamName );
+       g_pCamName = ui::Entry();
+       hbox.pack_start( g_pCamName, FALSE, FALSE, 0 );
+       g_pCamName.show();
 
-       w = gtk_label_new( "Type: " );
-       gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 0 );
-       gtk_widget_show( w );
+       w = ui::Label( "Type: " );
+       hbox.pack_start( w, FALSE, FALSE, 0 );
+       w.show();
 
-       w = gtk_label_new( "" );
-       gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 0 );
-       gtk_widget_show( w );
+       w = ui::Label( "" );
+       hbox.pack_start( w, FALSE, FALSE, 0 );
+       w.show();
        g_pCamType = GTK_LABEL( w );
 
        RefreshCamListCombo();
 
-       gtk_entry_set_editable( GTK_ENTRY( GTK_COMBO( g_pCamListCombo )->entry ), FALSE );
-       gtk_signal_connect( GTK_OBJECT( GTK_COMBO( g_pCamListCombo )->entry ), "changed", GTK_SIGNAL_FUNC( ci_camlist_changed ), NULL );
+       gtk_editable_set_editable( GTK_EDITABLE( GTK_COMBO( g_pCamListCombo )->entry ), FALSE );
+       ( GTK_COMBO( g_pCamListCombo )->entry ).connect( "changed", G_CALLBACK( ci_camlist_changed ), NULL );
 
        // -------------------------- //
 
-       frame = gtk_frame_new( "Path and Target editing" );
-       gtk_widget_show( frame );
+       auto frame = ui::Frame( "Path and Target editing" );
+       frame.show();
        gtk_table_attach( GTK_TABLE( table ), frame, 0, 1, 1, 2,
                                          (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ),
                                          (GtkAttachOptions) ( GTK_FILL ), 0, 0 );
 
-       vbox = gtk_vbox_new( FALSE, 5 );
-       gtk_container_add( GTK_CONTAINER( frame ), vbox );
+       auto vbox = ui::VBox( FALSE, 5 );
+       frame.add(vbox);
        gtk_container_set_border_width( GTK_CONTAINER( vbox ), 5 );
-       gtk_widget_show( vbox );
+       vbox.show();
 
        // -------------------------- //
 
-       hbox = gtk_hbox_new( FALSE, 5 );
-       gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
-       gtk_widget_show( hbox );
+       hbox = ui::HBox( FALSE, 5 );
+       vbox.pack_start( hbox, FALSE, FALSE, 0 );
+       hbox.show();
 
-       w = gtk_label_new( "Edit:" );
-       gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 0 );
-       gtk_widget_show( w );
+       w = ui::Label( "Edit:" );
+       hbox.pack_start( w, FALSE, FALSE, 0 );
+       w.show();
 
        g_pPathListCombo = gtk_combo_new();
-       gtk_box_pack_start( GTK_BOX( hbox ), g_pPathListCombo, TRUE, TRUE, 0 );
-       gtk_widget_show( g_pPathListCombo );
+       hbox.pack_start( g_pPathListCombo, TRUE, TRUE, 0 );
+       g_pPathListCombo.show();
 
        RefreshPathListCombo();
 
-       gtk_entry_set_editable( GTK_ENTRY( GTK_COMBO( g_pPathListCombo )->entry ), FALSE );
-       gtk_signal_connect( GTK_OBJECT( GTK_COMBO( g_pPathListCombo )->entry ), "changed", GTK_SIGNAL_FUNC( ci_pathlist_changed ), NULL );
+       gtk_editable_set_editable( GTK_EDITABLE( GTK_COMBO( g_pPathListCombo )->entry ), FALSE );
+       ( GTK_COMBO( g_pPathListCombo )->entry ).connect( "changed", G_CALLBACK( ci_pathlist_changed ), NULL );
 
        // -------------------------- //
 
-       hbox = gtk_hbox_new( FALSE, 5 );
-       gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
-       gtk_widget_show( hbox );
+       hbox = ui::HBox( FALSE, 5 );
+       vbox.pack_start( hbox, FALSE, FALSE, 0 );
+       hbox.show();
 
        g_pEditModeEditRadioButton = gtk_radio_button_new_with_label( g_pEditTypeRadio, "Edit Points" );
-       gtk_box_pack_start( GTK_BOX( hbox ), g_pEditModeEditRadioButton, FALSE, FALSE, 3 );
-       gtk_widget_show( g_pEditModeEditRadioButton );
-       g_pEditTypeRadio = gtk_radio_button_group( GTK_RADIO_BUTTON( g_pEditModeEditRadioButton ) );
+       hbox.pack_start( g_pEditModeEditRadioButton, FALSE, FALSE, 3 );
+       g_pEditModeEditRadioButton.show();
+       g_pEditTypeRadio = gtk_radio_button_get_group( GTK_RADIO_BUTTON( g_pEditModeEditRadioButton ) );
 
-       gtk_signal_connect( GTK_OBJECT( g_pEditModeEditRadioButton ), "clicked", GTK_SIGNAL_FUNC( ci_editmode_edit ), NULL );
+       g_pEditModeEditRadioButton.connect( "clicked", G_CALLBACK( ci_editmode_edit ), NULL );
 
        g_pEditModeAddRadioButton = gtk_radio_button_new_with_label( g_pEditTypeRadio, "Add Points" );
-       gtk_box_pack_start( GTK_BOX( hbox ), g_pEditModeAddRadioButton, FALSE, FALSE, 3 );
-       gtk_widget_show( g_pEditModeAddRadioButton );
-       g_pEditTypeRadio = gtk_radio_button_group( GTK_RADIO_BUTTON( g_pEditModeAddRadioButton ) );
+       hbox.pack_start( g_pEditModeAddRadioButton, FALSE, FALSE, 3 );
+       g_pEditModeAddRadioButton.show();
+       g_pEditTypeRadio = gtk_radio_button_get_group( GTK_RADIO_BUTTON( g_pEditModeAddRadioButton ) );
 
-       gtk_signal_connect( GTK_OBJECT( g_pEditModeAddRadioButton ), "clicked", GTK_SIGNAL_FUNC( ci_editmode_add ), NULL );
+       g_pEditModeAddRadioButton.connect( "clicked", G_CALLBACK( ci_editmode_add ), NULL );
 
        // see if we should use a different default
        if ( g_iEditMode == 1 ) {
@@ -1126,161 +1126,161 @@ GtkWidget *CreateCameraInspectorDialog( void ){
                gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( g_pEditModeAddRadioButton ), TRUE );
        }
 
-       w = gtk_label_new( "Type: " );
-       gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 0 );
-       gtk_widget_show( w );
+       w = ui::Label( "Type: " );
+       hbox.pack_start( w, FALSE, FALSE, 0 );
+       w.show();
 
-       w = gtk_label_new( "" );
-       gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 0 );
-       gtk_widget_show( w );
+       w = ui::Label( "" );
+       hbox.pack_start( w, FALSE, FALSE, 0 );
+       w.show();
        g_pPathType = GTK_LABEL( w );
 
        // -------------------------- //
 
-       hbox = gtk_hbox_new( FALSE, 5 );
-       gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
-       gtk_widget_show( hbox );
+       hbox = ui::HBox( FALSE, 5 );
+       vbox.pack_start( hbox, FALSE, FALSE, 0 );
+       hbox.show();
 
-       w = gtk_button_new_with_label( "Rename..." );
-       gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, TRUE, 0 );
-       gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( ci_rename ), NULL );
-       gtk_widget_show( w );
+       w = ui::Button( "Rename..." );
+       hbox.pack_start( w, FALSE, TRUE, 0 );
+       w.connect( "clicked", G_CALLBACK( ci_rename ), NULL );
+       w.show();
 
-       w = gtk_button_new_with_label( "Add Target..." );
-       gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, TRUE, 0 );
-       gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( ci_add_target ), NULL );
-       gtk_widget_show( w );
+       w = ui::Button( "Add Target..." );
+       hbox.pack_start( w, FALSE, TRUE, 0 );
+       w.connect( "clicked", G_CALLBACK( ci_add_target ), NULL );
+       w.show();
 
        // not available in splines library
        /*w = gtk_button_new_with_label( "Delete Selected" );
-          gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, TRUE, 0);
-          gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( ci_delete_selected ), NULL );
-          gtk_widget_show( w );
+          hbox.pack_start( w, FALSE, TRUE, 0);
+          w.connect( "clicked", G_CALLBACK( ci_delete_selected ), NULL );
+          w.show();
 
           w = gtk_button_new_with_label( "Select All" );
-          gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, TRUE, 0);
-          gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( ci_select_all ), NULL );
-          gtk_widget_show( w );*/
+          hbox.pack_start( w, FALSE, TRUE, 0);
+          w.connect( "clicked", G_CALLBACK( ci_select_all ), NULL );
+          w.show();*/
 
        // -------------------------- //
 
-       frame = gtk_frame_new( "Time" );
-       gtk_widget_show( frame );
+       frame = ui::Frame( "Time" );
+       frame.show();
        gtk_table_attach( GTK_TABLE( table ), frame, 0, 1, 2, 3,
                                          (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ),
                                          (GtkAttachOptions) ( GTK_FILL ), 0, 0 );
 
-       vbox = gtk_vbox_new( FALSE, 5 );
-       gtk_container_add( GTK_CONTAINER( frame ), vbox );
+       vbox = ui::VBox( FALSE, 5 );
+       frame.add(vbox);
        gtk_container_set_border_width( GTK_CONTAINER( vbox ), 5 );
-       gtk_widget_show( vbox );
+       vbox.show();
 
        // -------------------------- //
 
-       hbox = gtk_hbox_new( FALSE, 5 );
-       gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
-       gtk_widget_show( hbox );
+       hbox = ui::HBox( FALSE, 5 );
+       vbox.pack_start( hbox, FALSE, FALSE, 0 );
+       hbox.show();
 
-       w = gtk_label_new( "Length (seconds):" );
-       gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 0 );
-       gtk_widget_show( w );
+       w = ui::Label( "Length (seconds):" );
+       hbox.pack_start( w, FALSE, FALSE, 0 );
+       w.show();
 
-       g_pSecondsEntry = gtk_entry_new();
-       gtk_box_pack_start( GTK_BOX( hbox ), g_pSecondsEntry, FALSE, FALSE, 0 );
-       gtk_widget_show( g_pSecondsEntry );
+       g_pSecondsEntry = ui::Entry();
+       hbox.pack_start( g_pSecondsEntry, FALSE, FALSE, 0 );
+       g_pSecondsEntry.show();
 
        // -------------------------- //
 
-       hbox = gtk_hbox_new( FALSE, 5 );
-       gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
-       gtk_widget_show( hbox );
+       hbox = ui::HBox( FALSE, 5 );
+       vbox.pack_start( hbox, FALSE, FALSE, 0 );
+       hbox.show();
 
-       w = gtk_label_new( "Current Time: " );
-       gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 0 );
-       gtk_widget_show( w );
+       w = ui::Label( "Current Time: " );
+       hbox.pack_start( w, FALSE, FALSE, 0 );
+       w.show();
 
-       w = gtk_label_new( "0.00" );
-       gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 0 );
-       gtk_widget_show( w );
+       w = ui::Label( "0.00" );
+       hbox.pack_start( w, FALSE, FALSE, 0 );
+       w.show();
        g_pCurrentTime = GTK_LABEL( w );
 
-       w = gtk_label_new( " of " );
-       gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 0 );
-       gtk_widget_show( w );
+       w = ui::Label( " of " );
+       hbox.pack_start( w, FALSE, FALSE, 0 );
+       w.show();
 
-       w = gtk_label_new( "0.00" );
-       gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 0 );
-       gtk_widget_show( w );
+       w = ui::Label( "0.00" );
+       hbox.pack_start( w, FALSE, FALSE, 0 );
+       w.show();
        g_pTotalTime = GTK_LABEL( w );
 
        // -------------------------- //
 
-       hbox = gtk_hbox_new( FALSE, 5 );
-       gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
-       gtk_widget_show( hbox );
-
-       g_pTimeLine = GTK_ADJUSTMENT( gtk_adjustment_new( 0, 0, 30000, 100, 250, 0 ) );
-       gtk_signal_connect( GTK_OBJECT( g_pTimeLine ), "value_changed", GTK_SIGNAL_FUNC( ci_timeline_changed ), NULL );
-       w = gtk_hscale_new( g_pTimeLine );
-       gtk_box_pack_start( GTK_BOX( hbox ), w, TRUE, TRUE, 0 );
-       gtk_widget_show( w );
+       hbox = ui::HBox( FALSE, 5 );
+       vbox.pack_start( hbox, FALSE, FALSE, 0 );
+       hbox.show();
+
+       g_pTimeLine = ui::Adjustment( 0, 0, 30000, 100, 250, 0 );
+       g_pTimeLine.connect( "value_changed", G_CALLBACK( ci_timeline_changed ), NULL );
+       w = ui::HScale( g_pTimeLine );
+       hbox.pack_start( w, TRUE, TRUE, 0 );
+       w.show();
        gtk_scale_set_draw_value( GTK_SCALE( w ), FALSE );
 
        // -------------------------- //
 
-       hbox = gtk_hbox_new( FALSE, 5 );
-       gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
-       gtk_widget_show( hbox );
+       hbox = ui::HBox( FALSE, 5 );
+       vbox.pack_start( hbox, FALSE, FALSE, 0 );
+       hbox.show();
 
-       g_pTrackCamera = gtk_check_button_new_with_label( "Track Camera" );
-       gtk_box_pack_start( GTK_BOX( hbox ), g_pTrackCamera, FALSE, FALSE, 0 );
-       gtk_widget_show( g_pTrackCamera );
+       g_pTrackCamera = ui::CheckButton( "Track Camera" );
+       hbox.pack_start( g_pTrackCamera, FALSE, FALSE, 0 );
+       g_pTrackCamera.show();
 
        // -------------------------- //
 
-       hbox = gtk_hbox_new( FALSE, 5 );
-       gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
-       gtk_widget_show( hbox );
+       hbox = ui::HBox( FALSE, 5 );
+       vbox.pack_start( hbox, FALSE, FALSE, 0 );
+       hbox.show();
 
-       w = gtk_label_new( "Events:" );
-       gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 0 );
-       gtk_widget_show( w );
+       w = ui::Label( "Events:" );
+       hbox.pack_start( w, FALSE, FALSE, 0 );
+       w.show();
 
        // -------------------------- //
 
-       hbox = gtk_hbox_new( FALSE, 5 );
-       gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
-       gtk_widget_show( hbox );
+       hbox = ui::HBox( FALSE, 5 );
+       vbox.pack_start( hbox, FALSE, FALSE, 0 );
+       hbox.show();
 
-       w = gtk_scrolled_window_new( NULL, NULL );
-       gtk_widget_set_usize( w, 0, 150 );
+       auto scr = w = ui::ScrolledWindow();
+       gtk_widget_set_size_request( w, 0, 150 );
        gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW( w ), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC );
-       gtk_box_pack_start( GTK_BOX( hbox ), w, TRUE, TRUE, 0 );
-       gtk_widget_show( w );
+       hbox.pack_start( w, TRUE, TRUE, 0 );
+       w.show();
 
        g_pEventsList = gtk_clist_new( 3 );
-       gtk_container_add( GTK_CONTAINER( w ), g_pEventsList );
-       //gtk_signal_connect( GTK_OBJECT(g_pEventsList), "select_row", GTK_SIGNAL_FUNC (proplist_select_row), NULL);
+       scr.add(g_pEventsList);
+       //g_pEventsList.connect( "select_row", G_CALLBACK (proplist_select_row), NULL);
        gtk_clist_set_selection_mode( GTK_CLIST( g_pEventsList ), GTK_SELECTION_BROWSE );
        gtk_clist_column_titles_hide( GTK_CLIST( g_pEventsList ) );
        gtk_clist_set_column_auto_resize( GTK_CLIST( g_pEventsList ), 0, TRUE );
        gtk_clist_set_column_auto_resize( GTK_CLIST( g_pEventsList ), 1, TRUE );
        gtk_clist_set_column_auto_resize( GTK_CLIST( g_pEventsList ), 2, TRUE );
-       gtk_widget_show( g_pEventsList );
+       g_pEventsList.show();
 
-       vbox = gtk_vbox_new( FALSE, 5 );
-       gtk_box_pack_start( GTK_BOX( hbox ), vbox, FALSE, FALSE, 0 );
-       gtk_widget_show( vbox );
+       vbox = ui::VBox( FALSE, 5 );
+       hbox.pack_start( vbox, FALSE, FALSE, 0 );
+       vbox.show();
 
-       w = gtk_button_new_with_label( "Add..." );
-       gtk_box_pack_start( GTK_BOX( vbox ), w, FALSE, FALSE, 0 );
-       gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( ci_add ), NULL );
-       gtk_widget_show( w );
+       w = ui::Button( "Add..." );
+       vbox.pack_start( w, FALSE, FALSE, 0 );
+       w.connect( "clicked", G_CALLBACK( ci_add ), NULL );
+       w.show();
 
-       w = gtk_button_new_with_label( "Del" );
-       gtk_box_pack_start( GTK_BOX( vbox ), w, FALSE, FALSE, 0 );
-       gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( ci_del ), NULL );
-       gtk_widget_show( w );
+       w = ui::Button( "Del" );
+       vbox.pack_start( w, FALSE, FALSE, 0 );
+       w.connect( "clicked", G_CALLBACK( ci_del ), NULL );
+       w.show();
 
        // -------------------------- //
 
@@ -1294,71 +1294,71 @@ GtkWidget *CreateCameraInspectorDialog( void ){
        // -------------------------- //
 
        vbox = gtk_vbox_new( FALSE, 5 );
-       gtk_widget_show( vbox );
+       vbox.show();
        gtk_table_attach( GTK_TABLE( table ), vbox, 1, 2, 0, 1,
                                          (GtkAttachOptions) ( GTK_FILL ),
                                          (GtkAttachOptions) ( GTK_FILL ), 0, 0 );
 
        w = gtk_button_new_with_label( "New..." );
-       gtk_box_pack_start( GTK_BOX( vbox ), w, FALSE, FALSE, 0 );
-       gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( ci_new ), NULL );
-       gtk_widget_show( w );
+       vbox.pack_start( w, FALSE, FALSE, 0 );
+       w.connect( "clicked", G_CALLBACK( ci_new ), NULL );
+       w.show();
 
        w = gtk_button_new_with_label( "Load..." );
-       gtk_box_pack_start( GTK_BOX( vbox ), w, FALSE, FALSE, 0 );
-       gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( ci_load ), NULL );
-       gtk_widget_show( w );
+       vbox.pack_start( w, FALSE, FALSE, 0 );
+       w.connect( "clicked", G_CALLBACK( ci_load ), NULL );
+       w.show();
 
        // -------------------------- //
 
        vbox = gtk_vbox_new( FALSE, 5 );
-       gtk_widget_show( vbox );
+       vbox.show();
        gtk_table_attach( GTK_TABLE( table ), vbox, 1, 2, 1, 2,
                                          (GtkAttachOptions) ( GTK_FILL ),
                                          (GtkAttachOptions) ( GTK_FILL ), 0, 0 );
 
        w = gtk_button_new_with_label( "Save..." );
-       gtk_box_pack_start( GTK_BOX( vbox ), w, FALSE, FALSE, 0 );
-       gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( ci_save ), NULL );
-       gtk_widget_show( w );
+       vbox.pack_start( w, FALSE, FALSE, 0 );
+       w.connect( "clicked", G_CALLBACK( ci_save ), NULL );
+       w.show();
 
        w = gtk_button_new_with_label( "Unload" );
-       gtk_box_pack_start( GTK_BOX( vbox ), w, FALSE, FALSE, 0 );
-       gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( ci_unload ), NULL );
-       gtk_widget_show( w );
+       vbox.pack_start( w, FALSE, FALSE, 0 );
+       w.connect( "clicked", G_CALLBACK( ci_unload ), NULL );
+       w.show();
 
        hbox = gtk_hbox_new( FALSE, 5 );
-       gtk_box_pack_start( GTK_BOX( vbox ), hbox, TRUE, TRUE, 0 );
-       gtk_widget_show( hbox );
+       vbox.pack_start( hbox, TRUE, TRUE, 0 );
+       hbox.show();
 
        w = gtk_button_new_with_label( "Apply" );
-       gtk_box_pack_start( GTK_BOX( vbox ), w, FALSE, FALSE, 0 );
-       gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( ci_apply ), NULL );
-       gtk_widget_show( w );
+       vbox.pack_start( w, FALSE, FALSE, 0 );
+       w.connect( "clicked", G_CALLBACK( ci_apply ), NULL );
+       w.show();
 
        w = gtk_button_new_with_label( "Preview" );
-       gtk_box_pack_start( GTK_BOX( vbox ), w, FALSE, FALSE, 0 );
-       gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( ci_preview ), NULL );
-       gtk_widget_show( w );
+       vbox.pack_start( w, FALSE, FALSE, 0 );
+       w.connect( "clicked", G_CALLBACK( ci_preview ), NULL );
+       w.show();
 
        // -------------------------- //
 
        vbox = gtk_vbox_new( FALSE, 5 );
-       gtk_widget_show( vbox );
+       vbox.show();
        gtk_table_attach( GTK_TABLE( table ), vbox, 1, 2, 2, 3,
                                          (GtkAttachOptions) ( GTK_FILL ),
                                          (GtkAttachOptions) ( GTK_FILL ), 0, 0 );
 
        hbox = gtk_hbox_new( FALSE, 5 );
-       gtk_box_pack_start( GTK_BOX( vbox ), hbox, TRUE, TRUE, 0 );
-       gtk_widget_show( hbox );
+       vbox.pack_start( hbox, TRUE, TRUE, 0 );
+       hbox.show();
 
        w = gtk_button_new_with_label( "Close" );
-       gtk_box_pack_start( GTK_BOX( vbox ), w, FALSE, FALSE, 0 );
-       gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( ci_close ), NULL );
-       GTK_WIDGET_SET_FLAGS( w, GTK_CAN_DEFAULT );
+       vbox.pack_start( w, FALSE, FALSE, 0 );
+       w.connect( "clicked", G_CALLBACK( ci_close ), NULL );
+       gtk_widget_set_can_default( w, true );
        gtk_widget_grab_default( w );
-       gtk_widget_show( w );
+       w.show();
 
        // -------------------------- //