X-Git-Url: http://research.m1stereo.tv/gitweb?a=blobdiff_plain;f=src%2Fdv1394app.c;h=6d0487bedb30fe83b036bf4357c986199ad0237f;hb=a8df0c97cff85597d130de44b039ca1a7f10b9e1;hp=801ae90095a8c55d8f18b841f2514a843ce7f038;hpb=9d371665b5776eb4cb529fe8f242fccce32f6c8d;p=rugen diff --git a/src/dv1394app.c b/src/dv1394app.c index 801ae90..6d0487b 100644 --- a/src/dv1394app.c +++ b/src/dv1394app.c @@ -192,7 +192,7 @@ static gboolean on_transport_pressed( GtkWidget *button, gpointer data ) mvcp dv = dv1394app_get_command( this ); int unit = dv1394app_get_selected_unit( this ); - for ( index = 0; index < 11; index ++ ) + for ( index = 0; index < TRANSPORT_BUTTONS_COUNT; index ++ ) if ( this->buttons[ index ] == button ) break; @@ -242,6 +242,16 @@ static gboolean on_transport_pressed( GtkWidget *button, gpointer data ) mvcp_unit_clip_goto( dv, unit, mvcp_absolute, 9999, -1 ); break; + case 11: + mvcp_unit_set( dv, unit, "eof", "loop"); + this->eof[this->selected_unit] = 0; + break; + + case 12: + mvcp_unit_set( dv, unit, "eof", "pause"); + this->eof[this->selected_unit] = 0; + break; + default: break; } @@ -305,6 +315,11 @@ void dv1394app_show_status( dv1394app this, mvcp_status status ) trim_adj[TRIM_ADJ_POS]->value = status->position; gtk_signal_emit_by_name( GTK_OBJECT(trim_adj[TRIM_ADJ_POS]), "value_changed" ); } + + gtk_widget_set_sensitive( lookup_widget( dv1394app_get_widget( this ), "transport_11" ), + this->eof[this->selected_unit] == 'p' ); + gtk_widget_set_sensitive( lookup_widget( dv1394app_get_widget( this ), "transport_12" ), + this->eof[this->selected_unit] == 'l' ); } static gboolean trim_pressed( GtkWidget *button, GdkEventButton *event, gpointer user_data ) @@ -388,8 +403,7 @@ dv1394app dv1394app_init( GtkWidget *window, char *instance ) // 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_operate_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 ); @@ -403,7 +417,7 @@ dv1394app dv1394app_init( GtkWidget *window, char *instance ) int index; GtkAccelGroup *accel_group = gtk_accel_group_new( ); - for ( index = 0; index < 11; index ++ ) + for ( index = 0; index < TRANSPORT_BUTTONS_COUNT; index ++ ) { char name[ 256 ]; sprintf( name, "transport_%d", index ); @@ -542,3 +556,25 @@ void dv1394app_close( dv1394app this ) page_close( this->pages[ -- this->page_count ] ); free( this ); } + +char* frames2tc( int f, float fps, char* buf ) +{ + int tc[4] = { 0, 0, 0, 0 }; + float d; + int t; + + if ( fps ) + { + d = f / fps; + t = d; + + tc[0] = (d - t) * fps; + tc[1] = t % 60; t /= 60; + tc[2] = t % 60; t /= 60; + tc[3] = t % 24; + } + + sprintf(buf, "%.2d:%.2d:%.2d:%.2d", tc[3], tc[2], tc[1], tc[0]); + + return buf; +}