/*
* dv1394app.c -- GTK+ 2 dv1394d client demo
* Copyright (C) 2002-2003 Charles Yates <charles.yates@pandora.be>
+ * Copyright (C) 2010 Dan Dennedy <dan@dennedy.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
#include "interface.h"
#include "support.h"
#include "dv1394app.h"
-#include "util.h"
#include "page.h"
#include "gtkenhancedscale.h"
-#include <valerie/valerie_remote.h>
-#include <miracle/miracle_local.h>
+#include <mvcp/mvcp_remote.h>
+#include <melted/melted_local.h>
/** Window close event.
if ( this->parser == NULL )
{
if ( strstr( server, ".conf" ) == NULL )
- this->parser = valerie_parser_init_remote( server, atoi( port ) );
+ this->parser = mvcp_parser_init_remote( server, atoi( port ) );
else
- this->parser = miracle_parser_init_local( );
+ this->parser = melted_parser_init_local( );
- this->command = valerie_init( this->parser );
+ this->command = mvcp_init( this->parser );
if ( strstr( server, ".conf" ) != NULL )
- valerie_run( this->command, server );
+ mvcp_run( this->command, server );
- if ( valerie_connect( this->command ) == valerie_ok )
+ if ( mvcp_connect( this->command ) == mvcp_ok )
{
struct timespec t = { 1, 0 };
nanosleep( &t, NULL );
}
else
{
- valerie_close( this->command );
- valerie_parser_close( this->parser );
+ mvcp_close( this->command );
+ mvcp_parser_close( this->parser );
this->parser = NULL;
- beep( );
+// beep( );
}
}
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;
}
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;
}
dv1394app this = user_data;
GtkWidget *widget;
+ if ( this->guard ) return;
this->connect = create_window_connection( );
/* Connection set up handling */
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.
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;
}
{
int index = 0;
dv1394app this = ( dv1394app )data;
- valerie dv = dv1394app_get_command( this );
+ 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;
switch( index )
{
case 0:
- valerie_unit_clip_goto( dv, unit, valerie_absolute, 0, 0 );
+ mvcp_unit_clip_goto( dv, unit, mvcp_absolute, 0, 0 );
break;
case 1:
- valerie_unit_goto( dv, unit, 0 );
+ mvcp_unit_goto( dv, unit, 0 );
break;
case 2:
- valerie_unit_rewind( dv, unit );
+ mvcp_unit_rewind( dv, unit );
break;
case 3:
- valerie_unit_step( dv, unit, -1 );
+ mvcp_unit_step( dv, unit, -1 );
break;
case 4:
- valerie_unit_pause( dv, unit );
+ mvcp_unit_pause( dv, unit );
break;
case 5:
- valerie_unit_play( dv, unit );
+ mvcp_unit_play( dv, unit );
break;
case 6:
- valerie_unit_stop( dv, unit );
+ mvcp_unit_stop( dv, unit );
break;
case 7:
- valerie_unit_step( dv, unit, 1 );
+ mvcp_unit_step( dv, unit, 1 );
break;
case 8:
- valerie_unit_fast_forward( dv, unit );
+ mvcp_unit_fast_forward( dv, unit );
break;
case 9:
- valerie_unit_clip_goto( dv, unit, valerie_relative, 1, 0 );
+ mvcp_unit_clip_goto( dv, unit, mvcp_relative, 1, 0 );
break;
case 10:
- valerie_unit_clip_goto( dv, unit, valerie_absolute, 9999, -1 );
+ mvcp_unit_clip_goto( dv, unit, mvcp_absolute, 9999, -1 );
break;
+ case 11:
+ mvcp_unit_set( dv, unit, "eof", "loop");
+ break;
+
+ case 12:
+ mvcp_unit_set( dv, unit, "eof", "pause");
+ break;
+
default:
break;
}
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 );
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 );
#define TRIM_ADJ_IN 1
#define TRIM_ADJ_OUT 2
-void dv1394app_show_status( dv1394app this, valerie_status status )
+void dv1394app_show_status( dv1394app this, mvcp_status status )
{
int index = 0;
for ( index = 0; index < this->page_count; index ++ )
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 == 'p' );
+ gtk_widget_set_sensitive( lookup_widget( dv1394app_get_widget( this ), "transport_12" ), this->eof == 'l' );
}
static gboolean trim_pressed( GtkWidget *button, GdkEventButton *event, gpointer user_data )
{
dv1394app this = (dv1394app)user_data;
- valerie_unit_pause( dv1394app_get_command( this ), this->selected_unit );
+ mvcp_unit_pause( dv1394app_get_command( this ), this->selected_unit );
this->trim_in = -1;
this->trim_out = -1;
this->trim_in_use = 1;
dv1394app this = (dv1394app)user_data;
this->trim_in_use = 0;
if ( this->trim_in != -1 )
- valerie_unit_set_in( dv1394app_get_command( this ), this->selected_unit, this->trim_in );
+ mvcp_unit_set_in( dv1394app_get_command( this ), this->selected_unit, this->trim_in );
if ( this->trim_out != -1 )
- valerie_unit_set_out( dv1394app_get_command( this ), this->selected_unit, this->trim_out );
+ mvcp_unit_set_out( dv1394app_get_command( this ), this->selected_unit, this->trim_out );
return TRUE;
}
if ( !strcmp( value, "position" ) )
{
- valerie_unit_goto( dv1394app_get_command( this ), this->selected_unit, trim_adj[TRIM_ADJ_POS]->value );
+ mvcp_unit_goto( dv1394app_get_command( this ), this->selected_unit, trim_adj[TRIM_ADJ_POS]->value );
}
else if ( !strcmp( value, "in" ) )
{
this->trim_in = trim_adj[TRIM_ADJ_IN]->value;
- valerie_unit_goto( dv1394app_get_command( this ), this->selected_unit, trim_adj[TRIM_ADJ_IN]->value );
+ mvcp_unit_goto( dv1394app_get_command( this ), this->selected_unit, trim_adj[TRIM_ADJ_IN]->value );
}
else if ( !strcmp( value, "out" ) )
{
this->trim_out = trim_adj[TRIM_ADJ_OUT]->value;
- valerie_unit_goto( dv1394app_get_command( this ), this->selected_unit, trim_adj[TRIM_ADJ_OUT]->value );
+ mvcp_unit_goto( dv1394app_get_command( this ), this->selected_unit, trim_adj[TRIM_ADJ_OUT]->value );
}
gtk_widget_queue_draw (lookup_widget(this->window, "vbox_trim") );
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" );
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 );
*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 );
}
/** Get the applications parser.
*/
-valerie_parser dv1394app_get_parser( dv1394app this )
+mvcp_parser dv1394app_get_parser( dv1394app this )
{
return this->parser;
}
/** Return the command parser.
*/
-valerie dv1394app_get_command( dv1394app this )
+mvcp dv1394app_get_command( dv1394app this )
{
return this->command;
}
{
for ( index = 0; index < this->page_count; index ++ )
page_on_disconnect( this->pages[ index ] );
- valerie_close( this->command );
+ mvcp_close( this->command );
this->command = NULL;
- valerie_parser_close( this->parser );
+ mvcp_parser_close( this->parser );
this->parser = NULL;
}
}