mirror of
https://github.com/game-stop/veejay.git
synced 2025-12-23 16:20:03 +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)
|
void on_previewtoggle_toggled(GtkWidget *w, gpointer user_data)
|
||||||
{
|
{
|
||||||
|
if(!multitrack_locked( info->mt ) )
|
||||||
multitrack_toggle_preview( info->mt, -1, is_button_toggled("previewtoggle"),
|
multitrack_toggle_preview( info->mt, -1, is_button_toggled("previewtoggle"),
|
||||||
glade_xml_get_widget(info->main_window, "imageA") );
|
glade_xml_get_widget(info->main_window, "imageA") );
|
||||||
|
|
||||||
|
|||||||
@@ -85,6 +85,9 @@ typedef struct
|
|||||||
int height;
|
int height;
|
||||||
int master_track;
|
int master_track;
|
||||||
GdkPixbuf *logo;
|
GdkPixbuf *logo;
|
||||||
|
GtkWidget *preview_toggle;
|
||||||
|
int pw;
|
||||||
|
int ph;
|
||||||
} multitracker_t;
|
} multitracker_t;
|
||||||
|
|
||||||
static volatile int MAX_TRACKS = 4;
|
static volatile int MAX_TRACKS = 4;
|
||||||
@@ -480,6 +483,19 @@ static gboolean update_sequence_widgets( gpointer data )
|
|||||||
return TRUE;
|
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)
|
static void sequence_preview_cb(GtkWidget *widget, gpointer user_data)
|
||||||
{
|
{
|
||||||
sequence_view_t *v = (sequence_view_t*) 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 );
|
gvr_track_toggle_preview( mt->preview, v->num,status );
|
||||||
|
|
||||||
float ratio = mt->width / (float)mt->height;
|
sequence_preview_size( mt, v->num );
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if( !status )
|
if( !status )
|
||||||
{
|
{
|
||||||
@@ -762,6 +769,7 @@ void *multitrack_new(
|
|||||||
GtkWidget *win,
|
GtkWidget *win,
|
||||||
GtkWidget *box,
|
GtkWidget *box,
|
||||||
GtkWidget *msg,
|
GtkWidget *msg,
|
||||||
|
GtkWidget *preview_toggle,
|
||||||
gint max_w,
|
gint max_w,
|
||||||
gint max_h,
|
gint max_h,
|
||||||
GtkWidget *main_preview_area)
|
GtkWidget *main_preview_area)
|
||||||
@@ -775,7 +783,7 @@ void *multitrack_new(
|
|||||||
mt->main_box = box;
|
mt->main_box = box;
|
||||||
mt->status_bar = msg;
|
mt->status_bar = msg;
|
||||||
mt->logo = load_logo_image();
|
mt->logo = load_logo_image();
|
||||||
|
mt->preview_toggle = preview_toggle;
|
||||||
mt->scroll = gtk_scrolled_window_new(NULL,NULL);
|
mt->scroll = gtk_scrolled_window_new(NULL,NULL);
|
||||||
gtk_widget_set_size_request(mt->scroll,450, 300);
|
gtk_widget_set_size_request(mt->scroll,450, 300);
|
||||||
gtk_container_set_border_width(GTK_CONTAINER(mt->scroll),1);
|
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;
|
int track = 0;
|
||||||
|
|
||||||
if(!gvr_track_connect( mt->preview, hostname, port_num, &track ) )
|
if(!gvr_track_connect( mt->preview, hostname, port_num, &track ) )
|
||||||
|
{
|
||||||
|
if(!gvr_track_already_open( mt->preview, hostname,port_num))
|
||||||
return -1;
|
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;
|
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 );
|
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;
|
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 )
|
void multitrack_configure( void *data, float fps, int video_width, int video_height )
|
||||||
{
|
{
|
||||||
multitracker_t *mt = (multitracker_t*) data;
|
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 );
|
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 )
|
void multitrack_toggle_preview( void *data, int track_id, int status, GtkWidget *img )
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ void *multitrack_new(
|
|||||||
GtkWidget *win,
|
GtkWidget *win,
|
||||||
GtkWidget *box,
|
GtkWidget *box,
|
||||||
GtkWidget *msg,
|
GtkWidget *msg,
|
||||||
|
GtkWidget *button,
|
||||||
gint max_w,
|
gint max_w,
|
||||||
gint max_h,
|
gint max_h,
|
||||||
GtkWidget *main_preview_area);
|
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 track_find( veejay_preview_t *vp );
|
||||||
static int veejay_process_status( veejay_preview_t *vp, veejay_track_t *v );
|
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 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 );
|
static int gvr_preview_process_status( veejay_preview_t *vp, veejay_track_t *v );
|
||||||
|
|
||||||
void *gvr_preview_init(int max_tracks)
|
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;
|
int i;
|
||||||
|
|
||||||
@@ -363,9 +363,13 @@ static int track_exists( veejay_preview_t *vp, const char *hostname, int port_nu
|
|||||||
{
|
{
|
||||||
veejay_track_t *v = vp->tracks[i];
|
veejay_track_t *v = vp->tracks[i];
|
||||||
if( strcasecmp( hostname, v->hostname ) == 0 && v->port_num == port_num )
|
if( strcasecmp( hostname, v->hostname ) == 0 && v->port_num == port_num )
|
||||||
|
{
|
||||||
|
if( at_track )
|
||||||
|
*at_track = i;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -415,18 +419,27 @@ int gvr_track_get_portnum( void *preview, int num)
|
|||||||
return 0;
|
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;
|
veejay_preview_t *vp = (veejay_preview_t*) preview;
|
||||||
|
|
||||||
if(track_exists( vp, hostname, port_num ) )
|
if(track_exists( vp, hostname, port, NULL ) )
|
||||||
|
return 1;
|
||||||
return 0;
|
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 );
|
int track_num = track_find( vp );
|
||||||
|
|
||||||
if(track_num == -1)
|
if(track_num == -1)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
if(track_exists( vp, hostname, port_num, new_track ) )
|
||||||
|
return 0;
|
||||||
|
|
||||||
vj_client *fd = vj_client_alloc(0,0,0);
|
vj_client *fd = vj_client_alloc(0,0,0);
|
||||||
if(!vj_client_connect( fd, hostname, NULL, port_num ) )
|
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;
|
vp->tracks[ track_num ] = vt;
|
||||||
g_mutex_unlock( vp->mutex );
|
g_mutex_unlock( vp->mutex );
|
||||||
|
|
||||||
*new_track = track_num;
|
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -626,6 +637,13 @@ int gvr_track_configure( void *preview, int track_num, int w, int h )
|
|||||||
return 1;
|
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 )
|
int gvr_track_toggle_preview( void *preview, int track_num, int status )
|
||||||
{
|
{
|
||||||
veejay_preview_t *vp = (veejay_preview_t*) preview;
|
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, "gveejay_window" ),
|
||||||
glade_xml_get_widget_( info->main_window, "mt_box" ),
|
glade_xml_get_widget_( info->main_window, "mt_box" ),
|
||||||
glade_xml_get_widget_( info->main_window, "statusbar") ,
|
glade_xml_get_widget_( info->main_window, "statusbar") ,
|
||||||
|
glade_xml_get_widget_( info->main_window, "previewtoggle"),
|
||||||
pw,
|
pw,
|
||||||
ph,
|
ph,
|
||||||
img_wid);
|
img_wid);
|
||||||
|
|||||||
Reference in New Issue
Block a user