mirror of
https://github.com/game-stop/veejay.git
synced 2025-12-23 08:09:58 +01:00
gveejayreloaded UI track switching update
git-svn-id: svn://code.dyne.org/veejay/trunk@729 eb8d1916-c9e9-0310-b8de-cf0c9472ead5
This commit is contained in:
@@ -2309,6 +2309,7 @@ void on_previewbw_toggled( GtkWidget *w , gpointer user_data)
|
||||
|
||||
void on_previewtoggle_toggled(GtkWidget *w, gpointer user_data)
|
||||
{
|
||||
if(!multitrack_locked( info->mt ) )
|
||||
multitrack_toggle_preview( info->mt, -1, is_button_toggled("previewtoggle"),
|
||||
glade_xml_get_widget(info->main_window, "imageA") );
|
||||
|
||||
|
||||
@@ -85,6 +85,9 @@ typedef struct
|
||||
int height;
|
||||
int master_track;
|
||||
GdkPixbuf *logo;
|
||||
GtkWidget *preview_toggle;
|
||||
int pw;
|
||||
int ph;
|
||||
} multitracker_t;
|
||||
|
||||
static volatile int MAX_TRACKS = 4;
|
||||
@@ -480,6 +483,19 @@ static gboolean update_sequence_widgets( gpointer data )
|
||||
return TRUE;
|
||||
}*/
|
||||
|
||||
static void sequence_preview_size(multitracker_t *mt, int track_num)
|
||||
{
|
||||
float ratio = mt->width / (float)mt->height;
|
||||
int w = 80;
|
||||
int h = ( (int)( (float)w/ratio ))/16*16;
|
||||
|
||||
if(!gvr_track_configure( mt->preview, track_num,w,h ) )
|
||||
{
|
||||
veejay_msg(0, "Unable to configure preview %d x %d",w , h );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static void sequence_preview_cb(GtkWidget *widget, gpointer user_data)
|
||||
{
|
||||
sequence_view_t *v = (sequence_view_t*) user_data;
|
||||
@@ -491,16 +507,7 @@ static void sequence_preview_cb(GtkWidget *widget, gpointer user_data)
|
||||
|
||||
gvr_track_toggle_preview( mt->preview, v->num,status );
|
||||
|
||||
float ratio = mt->width / (float)mt->height;
|
||||
int w = 80;
|
||||
int h = ( (int)( (float)w/ratio ))/16*16;
|
||||
|
||||
if(!gvr_track_configure( mt->preview, v->num,w,h ) )
|
||||
{
|
||||
veejay_msg(0, "Unable to configure preview %d x %d",w , h );
|
||||
status = 0;
|
||||
}
|
||||
|
||||
sequence_preview_size( mt, v->num );
|
||||
|
||||
if( !status )
|
||||
{
|
||||
@@ -762,6 +769,7 @@ void *multitrack_new(
|
||||
GtkWidget *win,
|
||||
GtkWidget *box,
|
||||
GtkWidget *msg,
|
||||
GtkWidget *preview_toggle,
|
||||
gint max_w,
|
||||
gint max_h,
|
||||
GtkWidget *main_preview_area)
|
||||
@@ -775,7 +783,7 @@ void *multitrack_new(
|
||||
mt->main_box = box;
|
||||
mt->status_bar = msg;
|
||||
mt->logo = load_logo_image();
|
||||
|
||||
mt->preview_toggle = preview_toggle;
|
||||
mt->scroll = gtk_scrolled_window_new(NULL,NULL);
|
||||
gtk_widget_set_size_request(mt->scroll,450, 300);
|
||||
gtk_container_set_border_width(GTK_CONTAINER(mt->scroll),1);
|
||||
@@ -863,12 +871,45 @@ int multrack_audoadd( void *data, char *hostname, int port_num )
|
||||
int track = 0;
|
||||
|
||||
if(!gvr_track_connect( mt->preview, hostname, port_num, &track ) )
|
||||
return -1;
|
||||
{
|
||||
if(!gvr_track_already_open( mt->preview, hostname,port_num))
|
||||
return -1;
|
||||
}
|
||||
|
||||
if(mt->pw > 0 && mt->ph > 0 )
|
||||
{
|
||||
/* re-configure current master track for preview-size */
|
||||
sequence_preview_size( mt, mt->master_track );
|
||||
|
||||
/* configure master preview size */
|
||||
if(!gvr_track_configure( mt->preview, track, mt->pw,mt->ph ) )
|
||||
{
|
||||
veejay_msg(0, "Unable to configure preview %d x %d",mt->pw , mt->ph );
|
||||
}
|
||||
|
||||
|
||||
int preview = gvr_get_preview_status( mt->preview, mt->master_track );
|
||||
|
||||
/* set status of preview toggle button in trackview */
|
||||
if( track == 0 )
|
||||
{
|
||||
mt->view[track]->status_lock=1;
|
||||
gtk_toggle_button_set_active(
|
||||
GTK_TOGGLE_BUTTON( mt->preview_toggle), (preview ? TRUE: FALSE ) );
|
||||
mt->view[track]->status_lock=0;
|
||||
}
|
||||
else
|
||||
{
|
||||
mt->view[track]->status_lock=1;
|
||||
gtk_toggle_button_set_active(
|
||||
GTK_TOGGLE_BUTTON( mt->view[track]->toggle ), (preview ? TRUE: FALSE ) );
|
||||
mt->view[track]->status_lock=0;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
mt->master_track = track;
|
||||
|
||||
veejay_msg(VEEJAY_MSG_INFO, "Master is Track %d, Veejay Host %s: %d",
|
||||
mt->master_track, hostname, port_num );
|
||||
|
||||
gtk_widget_set_sensitive_(GTK_WIDGET(mt->view[track]->panel), TRUE );
|
||||
|
||||
@@ -876,6 +917,13 @@ int multrack_audoadd( void *data, char *hostname, int port_num )
|
||||
return track;
|
||||
}
|
||||
|
||||
int multitrack_locked( void *data)
|
||||
{
|
||||
multitracker_t *mt = (multitracker_t*) data;
|
||||
|
||||
return mt->view[mt->master_track]->status_lock;
|
||||
}
|
||||
|
||||
void multitrack_configure( void *data, float fps, int video_width, int video_height )
|
||||
{
|
||||
multitracker_t *mt = (multitracker_t*) data;
|
||||
@@ -925,6 +973,9 @@ void multitrack_set_quality( void *data , int quality )
|
||||
{
|
||||
veejay_msg(0, "Unable to configure preview %d x %d",w , h );
|
||||
}
|
||||
|
||||
mt->pw = w;
|
||||
mt->ph = h;
|
||||
}
|
||||
|
||||
void multitrack_toggle_preview( void *data, int track_id, int status, GtkWidget *img )
|
||||
|
||||
@@ -7,6 +7,7 @@ void *multitrack_new(
|
||||
GtkWidget *win,
|
||||
GtkWidget *box,
|
||||
GtkWidget *msg,
|
||||
GtkWidget *button,
|
||||
gint max_w,
|
||||
gint max_h,
|
||||
GtkWidget *main_preview_area);
|
||||
|
||||
@@ -66,7 +66,7 @@ static int veejay_get_image_data(veejay_preview_t *vp, veejay_track_t *v );
|
||||
static int track_find( veejay_preview_t *vp );
|
||||
static int veejay_process_status( veejay_preview_t *vp, veejay_track_t *v );
|
||||
static void gvr_preview_process_image( veejay_preview_t *vp, veejay_track_t *v );
|
||||
static int track_exists( veejay_preview_t *vp, const char *hostname, int port_num );
|
||||
static int track_exists( veejay_preview_t *vp, const char *hostname, int port_num, int *at );
|
||||
static int gvr_preview_process_status( veejay_preview_t *vp, veejay_track_t *v );
|
||||
|
||||
void *gvr_preview_init(int max_tracks)
|
||||
@@ -353,7 +353,7 @@ static void gvr_preview_process_image( veejay_preview_t *vp, veejay_track_t *v )
|
||||
}
|
||||
}
|
||||
|
||||
static int track_exists( veejay_preview_t *vp, const char *hostname, int port_num )
|
||||
static int track_exists( veejay_preview_t *vp, const char *hostname, int port_num, int *at_track )
|
||||
{
|
||||
int i;
|
||||
|
||||
@@ -363,7 +363,11 @@ static int track_exists( veejay_preview_t *vp, const char *hostname, int port_nu
|
||||
{
|
||||
veejay_track_t *v = vp->tracks[i];
|
||||
if( strcasecmp( hostname, v->hostname ) == 0 && v->port_num == port_num )
|
||||
{
|
||||
if( at_track )
|
||||
*at_track = i;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
@@ -415,18 +419,27 @@ int gvr_track_get_portnum( void *preview, int num)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int gvr_track_connect( void *preview, const char *hostname, int port_num, int *new_track )
|
||||
int gvr_track_already_open( void *preview, const char *hostname,
|
||||
int port )
|
||||
{
|
||||
veejay_preview_t *vp = (veejay_preview_t*) preview;
|
||||
|
||||
if(track_exists( vp, hostname, port_num ) )
|
||||
return 0;
|
||||
|
||||
if(track_exists( vp, hostname, port, NULL ) )
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int gvr_track_connect( void *preview, const char *hostname, int port_num, int *new_track )
|
||||
{
|
||||
veejay_preview_t *vp = (veejay_preview_t*) preview;
|
||||
int track_num = track_find( vp );
|
||||
|
||||
if(track_num == -1)
|
||||
return 0;
|
||||
|
||||
if(track_exists( vp, hostname, port_num, new_track ) )
|
||||
return 0;
|
||||
|
||||
vj_client *fd = vj_client_alloc(0,0,0);
|
||||
if(!vj_client_connect( fd, hostname, NULL, port_num ) )
|
||||
{
|
||||
@@ -451,8 +464,6 @@ int gvr_track_connect( void *preview, const char *hostname, int port_num, int *
|
||||
vp->tracks[ track_num ] = vt;
|
||||
g_mutex_unlock( vp->mutex );
|
||||
|
||||
*new_track = track_num;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -626,6 +637,13 @@ int gvr_track_configure( void *preview, int track_num, int w, int h )
|
||||
return 1;
|
||||
}
|
||||
|
||||
int gvr_get_preview_status( void *preview, int track_num )
|
||||
{
|
||||
veejay_preview_t *vp = (veejay_preview_t*) preview;
|
||||
return vp->tracks[track_num]->preview;
|
||||
}
|
||||
|
||||
|
||||
int gvr_track_toggle_preview( void *preview, int track_num, int status )
|
||||
{
|
||||
veejay_preview_t *vp = (veejay_preview_t*) preview;
|
||||
|
||||
@@ -6540,6 +6540,7 @@ void vj_gui_init(char *glade_file, int launcher, char *hostname, int port_num)
|
||||
glade_xml_get_widget_( info->main_window, "gveejay_window" ),
|
||||
glade_xml_get_widget_( info->main_window, "mt_box" ),
|
||||
glade_xml_get_widget_( info->main_window, "statusbar") ,
|
||||
glade_xml_get_widget_( info->main_window, "previewtoggle"),
|
||||
pw,
|
||||
ph,
|
||||
img_wid);
|
||||
|
||||
Reference in New Issue
Block a user