fix maximize mode

git-svn-id: svn://code.dyne.org/veejay/trunk@1272 eb8d1916-c9e9-0310-b8de-cf0c9472ead5
This commit is contained in:
Niels Elburg
2008-12-28 17:28:53 +00:00
parent 1b5bfb8566
commit abaa89b58e
10 changed files with 27844 additions and 36422 deletions

View File

@@ -5,10 +5,17 @@ AM_CFLAGS=$(OP_CFLAGS)
INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/src -I$(top_srcdir)/mjpeg $(VEEJAY_CFLAGS ) $(GTK_CFLAGS) \
$(GLIB_CFLAGS) $(GLADE_CFLAGS) -DGNOMELOCALEDIR=\""$(datadir)/locale"\" -DGVEEJAY_DATADIR=\""$(gveejay_datadir)"\"
GVEEJAY_BIN=reloaded
bin_PROGRAMS = $(GVEEJAY_BIN)
GVEEJAY_BIN=reloaded
reloaded_SOURCES = widgets/gtkcolorsel.c widgets/gtkknob.c widgets/cellrendererspin.c widgets/gtktimeselection.c vj-midi.c curve.c utils.c tracksources.c gveejay.c keyboard.c sequence.c multitrack.c vj-api.c ${gveejay_headers}
LAUNCHER_BIN=gveejay
gveejay_SOURCES = launcher.c ${gveejay_headers}
bin_PROGRAMS = $(GVEEJAY_BIN) $(LAUNCHER_BIN)
gveejay_LDFLAGS= $(VEEJAY_LIBS) $(GTK_LIBS) $(GLIB_LIBS) $(GLADE_LIBS) -lgthread-2.0 -export-dynamic
reloaded_LDFLAGS = -L$(top_builddir)/mjpeg/ -lmjpegutils $(VEEJAY_LIBS) $(GTK_LIBS) $(GLIB_LIBS)\
$(GLADE_LIBS) $(FFMPEG_AVCODEC_LIBS) $(FFMPEG_SWSCALER_LIBS) $(ALSA_LIBS) -lgthread-2.0 -export-dynamic

View File

@@ -2757,7 +2757,7 @@ on_spin_samplebank_select_value_changed
page = max_page;
gtk_spin_button_set_value(spinbutton,page);
}
gtk_notebook_set_current_page_(samplebank, page);
gtk_notebook_set_current_page_(GTK_WIDGET(samplebank), page);
}
void
on_button_samplebank_prev_clicked (GtkButton *button,

View File

@@ -160,6 +160,8 @@ gboolean gveejay_idle(gpointer data)
veejay_update_multitrack( get_ui_info() );
update_gveejay();
}
} else {
gveejay_sleep( get_ui_info() );
}
}

View File

@@ -571,7 +571,7 @@ static sequence_view_t *new_sequence_view( void *vp, int num )
gtk_box_pack_start( GTK_BOX(seqv->main_vbox),GTK_WIDGET( seqv->area), FALSE,FALSE,0);
gtk_widget_set_size_request_( seqv->area, 176,176 );
gtk_widget_set_size_request_( seqv->area, 176,144 ); //FIXME
seqv->panel = gtk_frame_new(NULL);
seqv->toggle = gtk_toggle_button_new_with_label( "preview" );

View File

@@ -91,7 +91,7 @@ static struct
{
{ 1,"notebook18", 3 }, // On which notebook page is the multitrack view
{ 0,"vjdeck", 2 },
{ NULL, 0 }
{ 0,NULL, 0 }
};
#define MAX_SLOW 100
@@ -594,7 +594,7 @@ static int add_bank( gint bank_num );
static void set_selection_of_slot_in_samplebank(gboolean active);
static void remove_sample_from_slot();
static void create_ref_slots(int envelope_size);
static void create_sequencer_slots(int n );
static void create_sequencer_slots(int x, int y);
//void setup_knobs();
void free_samplebank(void);
void reset_samplebank(void);
@@ -652,7 +652,7 @@ void gtk_widget_set_size_request__( GtkWidget *w, gint iw, gint h, const char *
static struct
{
const char *text;
gchar *text;
} text_msg_[] =
{
{ "Running realtime" },
@@ -678,8 +678,8 @@ static struct
{ NULL },
};
static uint32_t preview_box_w_ = 352;
static uint32_t preview_box_h_ = 288;
static int preview_box_w_ = 352;
static int preview_box_h_ = 288;
static void *bankport_ = NULL;
@@ -727,7 +727,7 @@ static struct
const char *name;
} uiwidgets[] =
{
{"vbox594"},
{"veejay_box"},
{NULL}
};
@@ -965,13 +965,17 @@ gboolean device_selection_func( GtkTreeSelection *sel,
if( gtk_tree_model_get_iter( model, &iter, path ) )
{
gint num = 0;
gtk_tree_model_get(model, &iter, V4L_NUM,&num, -1 );
//gtk_tree_model_get(model, &iter, V4L_NUM,&num, -1 );
gchar *file = NULL;
gtk_tree_model_get( model, &iter, V4L_LOCATION, &file, -1 );
sscanf( file, "/dev/video%d", &num );
if(! path_currently_selected )
{
gtk_tree_model_get_value(model, &iter, V4L_SPINBOX, &val);
info->uc.strtmpl[0].dev = num;
info->uc.strtmpl[0].channel = (int) g_value_get_float(&val);
}
g_free(file);
}
return TRUE;
}
@@ -991,7 +995,7 @@ static void setup_v4l_devices()
g_object_unref( G_OBJECT( store ));
setup_tree_text_column( "tree_v4ldevices", V4L_NUM, "#",0 );
setup_tree_text_column( "tree_v4ldevices", V4L_NAME, "Device Name",240);
setup_tree_text_column( "tree_v4ldevices", V4L_NAME, "Device Name",0);
setup_tree_spin_column( "tree_v4ldevices", V4L_SPINBOX, "Channel");
setup_tree_text_column( "tree_v4ldevices", V4L_LOCATION, "Location",0);
@@ -2005,6 +2009,8 @@ void gveejay_popup_err( const char *type, char *msg )
message_dialog( type, msg );
}
void reportbug();
void update_gui();
#include "callback.c"
enum
@@ -2110,22 +2116,22 @@ static void single_vims(int id)
static gchar *recv_vims(int slen, int *bytes_written)
{
int tmp_len = slen+1;
char tmp[tmp_len];
unsigned char tmp[tmp_len];
veejay_memset(tmp,0,sizeof(tmp));
int ret = vj_client_read( info->client, V_CMD, tmp, slen );
if( ret == -1 )
reloaded_schedule_restart();
int len = 0;
sscanf( tmp, "%d", &len );
gchar *result = NULL;
sscanf( (char*)tmp, "%d", &len );
unsigned char *result = NULL;
if( ret <= 0 || len <= 0 || slen <= 0)
return result;
result = (gchar*) vj_calloc(sizeof(gchar) * (len + 1) );
return (gchar*)result;
result = (unsigned char*) vj_calloc(sizeof(unsigned char) * (len + 1) );
*bytes_written = vj_client_read( info->client, V_CMD, result, len );
if( *bytes_written == -1 )
reloaded_schedule_restart();
return result;
return (gchar*)result;
}
static gdouble get_numd(const char *name)
@@ -2291,7 +2297,7 @@ static gchar *get_textview_buffer(const char *name)
GtkWidget *view = glade_xml_get_widget_( info->main_window,name );
if(!view) {
veejay_msg(0, "No such widget (textview): '%s'",name);
return;
return NULL;
}
if(view)
{
@@ -2438,6 +2444,9 @@ static void update_spin_incr( const char *name, gdouble step, gdouble page )
veejay_msg(0, "No such widget (spin): '%s'",name);
return;
}
#ifdef STRICT_CHECKING
veejay_msg(VEEJAY_MSG_DEBUG, "SpinButton: %s, step=%g,page=%g",name,step,page);
#endif
gtk_spin_button_set_increments(GTK_SPIN_BUTTON(w),step,page );
}
@@ -2448,7 +2457,7 @@ static void update_spin_range(const char *name, gint min, gint max, gint val)
veejay_msg(0, "No such widget (spin): '%s'",name);
return;
}
gtk_spin_button_set_range( GTK_SPIN_BUTTON(w), (gdouble)min, (gdouble) max );
gtk_spin_button_set_value( GTK_SPIN_BUTTON(w), (gdouble)val);
}
@@ -2476,6 +2485,10 @@ static void update_spin_value(const char *name, gint value )
veejay_msg(0, "No such widget (spin): '%s'",name);
return;
}
#ifdef STRICT_CHECKING
veejay_msg(VEEJAY_MSG_DEBUG, "SpinButton: %s, value=%d",name,value);
#endif
gtk_spin_button_set_value( GTK_SPIN_BUTTON(w), (gdouble) value );
}
@@ -2837,7 +2850,7 @@ static void update_current_slot(int *history, int pm, int last_pm)
}
/* Actions for sample */
if(last_pm != pm || pm == MODE_SAMPLE )
if( ( info->status_tokens[CURRENT_ID] != history[CURRENT_ID] || last_pm != pm) && pm == MODE_SAMPLE )
{
int marker_go = 0;
/* Update marker bounds */
@@ -3075,7 +3088,6 @@ gboolean capture_data (GIOChannel *source, GIOCondition condition, gpointer data
void reportbug()
{
char l[3] = { 'e','n', '\0'};
char *home = getenv("HOME");
char *lang = getenv("LANG");
char URL[1024];
@@ -3278,6 +3290,7 @@ static void setup_tree_text_column( const char *tree_name, int type, const char
if(len)
{
veejay_msg(VEEJAY_MSG_DEBUG, "Tree %s ,Title %s, width=%d", tree_name,title, len );
gtk_tree_view_column_set_min_width( column, len);
}
}
@@ -3303,7 +3316,7 @@ static void setup_effectchain_info( void )
g_object_unref( G_OBJECT( store ));
setup_tree_text_column( "tree_chain", FXC_ID, "#",0 );
setup_tree_text_column( "tree_chain", FXC_FXID, "Effect",( ui_skin_ == 0?350 : 250) );
setup_tree_text_column( "tree_chain", FXC_FXID, "Effect",0 ); //FIXME
setup_tree_pixmap_column( "tree_chain", FXC_FXSTATUS, "Run"); // todo: could be checkbox!!
setup_tree_pixmap_column( "tree_chain", FXC_KF , "Anim" ); // parameter interpolation on/off per entry
GtkTreeSelection *selection;
@@ -3791,8 +3804,8 @@ void setup_samplelist_info()
effect_sources_model = gtk_tree_view_get_model( GTK_TREE_VIEW(effect_sources_tree ));
effect_sources_store = GTK_LIST_STORE(effect_sources_model);
setup_tree_text_column( "tree_sources", SL_ID, "Id",175 );
setup_tree_text_column( "tree_sources", SL_TIMECODE, "Length" ,175);
setup_tree_text_column( "tree_sources", SL_ID, "Id",0 );
setup_tree_text_column( "tree_sources", SL_TIMECODE, "Length" ,0);
GtkTreeSelection *selection;
selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(effect_sources_tree));
@@ -3880,8 +3893,6 @@ static void select_slot__( int pm )
#ifdef STRICT_CHECKING
assert( history != NULL );
#endif
int poke_slot = 0;
int bank_page = 0;
if( pm == MODE_SAMPLE || pm == MODE_STREAM )
{
@@ -4081,7 +4092,6 @@ static void load_samplelist_info(gboolean with_reset_slotselection)
gchar *gtype = _utf8str( source );
int bank_page = 0; int poke_slot = 0;
int full = verify_bank_capacity( &bank_page , &poke_slot, values[0], 1);
if(bank_page >= 0)
{
if( info->sample_banks[bank_page]->slot[poke_slot] <= 0 )
@@ -4419,10 +4429,10 @@ static void setup_editlist_info()
editlist_store = GTK_LIST_STORE(editlist_model);
setup_tree_text_column( "editlisttree", COLUMN_INT, "#",0);
setup_tree_text_column( "editlisttree", COLUMN_STRING0, "Timecode",75 );
setup_tree_text_column( "editlisttree", COLUMN_STRINGA, "Filename",300);
setup_tree_text_column( "editlisttree", COLUMN_STRINGB, "Duration",75);
setup_tree_text_column( "editlisttree", COLUMN_STRINGC, "FOURCC",50);
setup_tree_text_column( "editlisttree", COLUMN_STRING0, "Timecode",0 );
setup_tree_text_column( "editlisttree", COLUMN_STRINGA, "Filename",0);
setup_tree_text_column( "editlisttree", COLUMN_STRINGB, "Duration",0);
setup_tree_text_column( "editlisttree", COLUMN_STRINGC, "FOURCC",0);
g_signal_connect( editlist_tree, "row-activated",
(GCallback) on_editlist_row_activated, NULL );
@@ -4701,7 +4711,7 @@ static char *tokenize_on_space( char *q )
char *p = q;
while( *p != '\0' && !isblank( *p ) && *p != ' ' && *p != 20)
{
*p++;
(*p)++;
n++;
}
if( n <= 0 )
@@ -5252,7 +5262,7 @@ void find_user_themes(int theme)
{
if( data[i] == '\0' || data[i] == '\n' ) break;
*dst = data[i];
*dst++;
(*dst)++;
}
}
close( sloppy );
@@ -5392,6 +5402,14 @@ GdkPixbuf *vj_gdk_pixbuf_scale_simple( GdkPixbuf *src, int dw, int dh, GdkInterp
return res;*/
}
void gveejay_sleep( void *u )
{
struct timespec nsecsleep;
nsecsleep.tv_nsec = 1000000 * 4;
nsecsleep.tv_sec = 0;
nanosleep( &nsecsleep, NULL );
}
int gveejay_time_to_sync( vj_gui_t *ui )
{
@@ -6421,6 +6439,61 @@ gboolean slow_scroll_event( GtkWidget *widget, GdkEventScroll *ev, gpointer use
return FALSE;
}
static struct
{
char *name;
} spinboxes[] = {
{ "button_portnum" },
{ "screenshot_width" },
{ "screenshot_height" },
{ "preview_width" },
{ "preview_height" },
{ "preview_delay" },
{ "priout_width" },
{ "priout_height" },
{ "priout_x" },
{ "priout_y" },
{ "inputstream_portnum" },
{ "button_fx_entry" },
{ "curve_spinstart" },
{ "curve_spinend" },
{ "spin_text_start" },
{ "spin_text_end" },
{ "spin_text_size" },
{ "spin_text_x" },
{ "spin_text_y" },
{ "spin_sampleduration" },
{ "spin_samplestart" },
{ "spin_sampleend" },
{ "spin_samplespeed" },
{ "spin_framedelay" },
{ "button_el_selend" },
{ "button_el_selstart" },
{ "button_el_selpaste" },
{ "stream_length" },
{ "spin_streamduration" },
{ "spin_samplebank_select" },
{ "button_fadedur" },
{ NULL }
};
static void debug_spinboxes()
{
int i;
for( i = 0; spinboxes[i].name != NULL ; i ++ ) {
GtkWidget *spin = glade_xml_get_widget_( info->main_window, spinboxes[i].name );
GtkAdjustment *adj = gtk_spin_button_get_adjustment( GTK_SPIN_BUTTON(spin) );
veejay_msg(VEEJAY_MSG_DEBUG, "%s: Lower=%g,Upper=%g,Value=%g,Step=%g,Page Incr=%g,Page Size=%g",
spinboxes[i].name,
adj->lower,
adj->upper,
adj->value,
adj->step_increment,
adj->page_increment,
adj->page_size );
}
}
void vj_gui_init(char *glade_file, int launcher, char *hostname, int port_num, int use_threads)
{
int i;
@@ -6488,6 +6561,9 @@ void vj_gui_init(char *glade_file, int launcher, char *hostname, int port_num,
GtkWidget *mainw = glade_xml_get_widget_(info->main_window,"gveejay_window" );
#ifdef STRICT_CHECKING
debug_spinboxes();
#endif
sprintf(text, "Reloaded - version %s",VERSION);
gtk_label_set_text( GTK_LABEL(glade_xml_get_widget_(info->main_window, "build_revision")), text);
@@ -6510,7 +6586,7 @@ void vj_gui_init(char *glade_file, int launcher, char *hostname, int port_num,
//SEQ
create_sequencer_slots( 10 );
create_sequencer_slots( 10,10 );
char slider_name[16];
for( i = 0 ; i < 8 ; i ++ ) {
@@ -7367,7 +7443,7 @@ static gboolean on_cacheslot_activated_by_mouse (GtkWidget *widget, GdkEventButt
static void create_sequencer_slots(int envelope_size)
static void create_sequencer_slots(int nx, int ny)
{
GtkWidget *vbox = glade_xml_get_widget_ (info->main_window, "SampleSequencerBox");
info->sample_sequencer = gtk_frame_new(NULL);
@@ -7375,20 +7451,21 @@ static void create_sequencer_slots(int envelope_size)
gtk_widget_show(info->sample_sequencer);
info->sequencer_view = (sequence_envelope*) vj_calloc(sizeof(sequence_envelope) );
info->sequencer_view->gui_slot = (sequence_gui_slot_t**) vj_calloc(sizeof(sequence_gui_slot_t*) * ( envelope_size * envelope_size + 1 ) );
info->sequencer_view->gui_slot = (sequence_gui_slot_t**) vj_calloc(sizeof(sequence_gui_slot_t*) * ( nx * ny + 1 ) );
GtkWidget *table = gtk_table_new( envelope_size, envelope_size, TRUE );
GtkWidget *table = gtk_table_new( nx, ny, TRUE );
gtk_container_add( GTK_CONTAINER(info->sample_sequencer), table );
gtk_widget_show(table);
gint col=0;
gint row=0;
for( col = 0; col < envelope_size; col ++ )
for( row = 0; row < envelope_size; row ++ )
gint k = 0;
for( col = 0; col < ny; col ++ )
for( row = 0; row < nx; row ++ )
{
sequence_gui_slot_t *gui_slot = (sequence_gui_slot_t*)vj_calloc(sizeof(sequence_gui_slot_t));
info->sequencer_view->gui_slot[row+(col * envelope_size)] = gui_slot;
info->sequencer_view->gui_slot[k] = gui_slot;
gui_slot->event_box = gtk_event_box_new();
gtk_event_box_set_visible_window(GTK_EVENT_BOX(gui_slot->event_box), TRUE);
@@ -7397,12 +7474,12 @@ static void create_sequencer_slots(int envelope_size)
g_signal_connect( G_OBJECT(gui_slot->event_box),
"button_press_event",
G_CALLBACK(on_sequencerslot_activated_by_mouse), //@@@@
(gpointer)row+(col * envelope_size )
(gpointer) k
);
gtk_widget_show(GTK_WIDGET(gui_slot->event_box));
gui_slot->frame = gtk_frame_new(NULL);
gtk_container_set_border_width (GTK_CONTAINER(gui_slot->frame),2);
gtk_container_set_border_width (GTK_CONTAINER(gui_slot->frame),0);
gtk_frame_set_shadow_type(GTK_FRAME( gui_slot->frame), GTK_SHADOW_IN );
gtk_widget_show(GTK_WIDGET(gui_slot->frame));
gtk_container_add (GTK_CONTAINER (gui_slot->event_box), gui_slot->frame);
@@ -7419,8 +7496,8 @@ static void create_sequencer_slots(int envelope_size)
}
gtk_widget_set_size_request_( table, 300,300);
info->sequencer_view->envelope_size = envelope_size;
// gtk_widget_set_size_request_( table, 300,300);
// info->sequencer_view->envelope_size = envelope_size;
}
@@ -7469,7 +7546,7 @@ static void create_ref_slots(int envelope_size)
/* The sample's image */
gui_slot->image = gtk_image_new();
gtk_box_pack_start (GTK_BOX (gui_slot->main_vbox), GTK_WIDGET(gui_slot->image), TRUE, TRUE, 0);
gtk_widget_set_size_request_( gui_slot->image, info->sequence_view->w,info->sequence_view->h );
// gtk_widget_set_size_request_( gui_slot->image, info->sequence_view->w,info->sequence_view->h );
gtk_widget_show( GTK_WIDGET(gui_slot->image));
gtk_table_attach_defaults ( GTK_TABLE(table), gui_slot->event_box, row, row+1, col, col+1);

View File

@@ -56,4 +56,5 @@ int gveejay_restart();
int gveejay_update();
int update_gveejay();
int veejay_update_multitrack( void *data );
void gveejay_sleep( void *ui );
#endif