X-Git-Url: http://research.m1stereo.tv/gitweb?a=blobdiff_plain;f=src%2Fdv1394app.c;fp=src%2Fdv1394app.c;h=801ae90095a8c55d8f18b841f2514a843ce7f038;hb=9d371665b5776eb4cb529fe8f242fccce32f6c8d;hp=bbc86dd7690e8091b2040419db7a1f8c407af240;hpb=a4f8e1e8eae55f79e247de2c7825885dca6ea119;p=rugen diff --git a/src/dv1394app.c b/src/dv1394app.c index bbc86dd..801ae90 100644 --- a/src/dv1394app.c +++ b/src/dv1394app.c @@ -99,6 +99,10 @@ static gboolean on_connect_pressed( GtkWidget *button, gpointer user_data ) instance_connect( this, server, port ); } gtk_widget_destroy( this->connect ); + this->guard = 1; + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( lookup_widget( this->window, "button_connect" ) ), TRUE ); + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( lookup_widget( this->window, "button_disconnect" ) ), FALSE ); + this->guard = 0; return FALSE; } @@ -109,6 +113,7 @@ static gboolean on_connect_pressed( GtkWidget *button, gpointer user_data ) static gboolean on_cancel_pressed( GtkWidget *button, gpointer user_data ) { dv1394app this = user_data; + if ( this->guard ) return FALSE; gtk_widget_destroy( this->connect ); return FALSE; } @@ -121,6 +126,7 @@ void on_item_connect_activate( GtkMenuItem *menuitem, gpointer user_data ) dv1394app this = user_data; GtkWidget *widget; + if ( this->guard ) return; this->connect = create_window_connection( ); /* Connection set up handling */ @@ -138,7 +144,14 @@ void on_item_connect_activate( GtkMenuItem *menuitem, gpointer user_data ) void on_item_disconnect_activate( GtkMenuItem *menuitem, gpointer user_data ) { dv1394app this = user_data; + + if ( this->guard ) return; dv1394app_disconnect( this ); + + this->guard = 1; + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( lookup_widget( this->window, "button_connect" ) ), FALSE ); + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( lookup_widget( this->window, "button_disconnect" ) ), TRUE ); + this->guard = 0; } /** Main window - quit menu item selected. @@ -154,14 +167,20 @@ static gboolean on_page_switch_pressed( GtkWidget *button, gpointer user_data ) dv1394app this = user_data; int index = 0; GtkWidget *notebook = lookup_widget( button, "notebook1" ); - + + if ( this->guard ) return TRUE; + this->guard = 1; + for ( index = 0; index < this->page_count; index ++ ) + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( this->page_buttons[ index ] ), FALSE ); for ( index = 0; index < this->page_count; index ++ ) { + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( this->page_buttons[ index ] ), FALSE ); if ( this->page_buttons[ index ] == button ) break; } - + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( this->page_buttons[ index ] ), TRUE ); gtk_notebook_set_current_page( GTK_NOTEBOOK( notebook ), index ); + this->guard = 0; return TRUE; } @@ -232,7 +251,7 @@ static gboolean on_transport_pressed( GtkWidget *button, gpointer data ) static void dv1394app_register_page( dv1394app this, page item ) { - GtkWidget *toolbar = lookup_widget( this->window, "toolbar2" ); + GtkWidget *toolbar = lookup_widget( this->window, "toolbar1" ); GtkIconSize size = gtk_toolbar_get_icon_size( GTK_TOOLBAR( toolbar ) ); GtkWidget *widget = lookup_widget( this->window, "notebook1" ); GtkWidget *bin = gtk_frame_new( NULL ); @@ -246,7 +265,7 @@ static void dv1394app_register_page( dv1394app this, page item ) gtk_widget_show( bin ); page_get_toolbar_info( item, size, &widget, &label ); - this->page_buttons[ this->page_count ] = gtk_toolbar_append_element( GTK_TOOLBAR ( toolbar ), GTK_TOOLBAR_CHILD_BUTTON, NULL, label, NULL, NULL, widget, NULL, NULL); + this->page_buttons[ this->page_count ] = gtk_toolbar_append_element( GTK_TOOLBAR ( toolbar ), GTK_TOOLBAR_CHILD_TOGGLEBUTTON, NULL, label, NULL, NULL, widget, NULL, NULL); gtk_label_set_use_underline( GTK_LABEL(((GtkToolbarChild*)(g_list_last( GTK_TOOLBAR( toolbar )->children)->data))->label), TRUE); gtk_widget_show( widget ); gtk_signal_connect( GTK_OBJECT( this->page_buttons[ this->page_count ] ), "clicked", GTK_SIGNAL_FUNC( on_page_switch_pressed ), this ); @@ -355,23 +374,26 @@ dv1394app dv1394app_init( GtkWidget *window, char *instance ) gtk_signal_connect( GTK_OBJECT( this->window ), "destroy", GTK_SIGNAL_FUNC( on_main_window_delete_event ), this ); /* Menu item signal handling */ - widget = lookup_widget( this->window, "item_connect" ); - gtk_signal_connect( GTK_OBJECT( widget ), "activate", GTK_SIGNAL_FUNC( on_item_connect_activate ), this ); +// widget = lookup_widget( this->window, "item_connect" ); +// gtk_signal_connect( GTK_OBJECT( widget ), "activate", GTK_SIGNAL_FUNC( on_item_connect_activate ), this ); widget = lookup_widget( this->window, "button_connect" ); gtk_signal_connect( GTK_OBJECT( widget ), "clicked", GTK_SIGNAL_FUNC( on_item_connect_activate ), this ); - widget = lookup_widget( this->window, "item_disconnect" ); - gtk_signal_connect( GTK_OBJECT( widget ), "activate", GTK_SIGNAL_FUNC( on_item_disconnect_activate ), this ); +// widget = lookup_widget( this->window, "item_disconnect" ); +// gtk_signal_connect( GTK_OBJECT( widget ), "activate", GTK_SIGNAL_FUNC( on_item_disconnect_activate ), this ); widget = lookup_widget( this->window, "button_disconnect" ); gtk_signal_connect( GTK_OBJECT( widget ), "clicked", GTK_SIGNAL_FUNC( on_item_disconnect_activate ), this ); - widget = lookup_widget( this->window, "item_quit" ); - gtk_signal_connect( GTK_OBJECT( widget ), "activate", GTK_SIGNAL_FUNC( on_item_quit_activate ), this ); - widget = lookup_widget( this->window, "button_quit" ); - gtk_signal_connect( GTK_OBJECT( widget ), "clicked", GTK_SIGNAL_FUNC( on_item_quit_activate ), this ); - +// widget = lookup_widget( this->window, "item_quit" ); +// gtk_signal_connect( GTK_OBJECT( widget ), "activate", GTK_SIGNAL_FUNC( on_item_quit_activate ), this ); +// widget = lookup_widget( this->window, "button_quit" ); +// gtk_signal_connect( GTK_OBJECT( widget ), "clicked", GTK_SIGNAL_FUNC( on_item_quit_activate ), this ); + /* Initialise the pages. */ dv1394app_register_page( this, page_status_init( this ) ); dv1394app_register_page( this, page_clips_init( this ) ); dv1394app_register_page( this, page_command_init( this ) ); + this->guard = 1; + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( this->page_buttons[ 0 ] ), TRUE ); + this->guard = 0; /* Remove the empty page */ widget = lookup_widget( this->window, "notebook1" ); @@ -427,7 +449,12 @@ dv1394app dv1394app_init( GtkWidget *window, char *instance ) *port ++ = '\0'; else port = "5250"; - instance_connect( this, server, port ); + this->guard = 1; + if ( instance_connect( this, server, port ) ) + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( lookup_widget( this->window, "button_connect" ) ), TRUE ); + else + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( lookup_widget( this->window, "button_disconnect" ) ), TRUE ); + this->guard = 0; free( server ); }