diff --git a/veejay-current/gveejay-reloaded/callback.c b/veejay-current/gveejay-reloaded/callback.c
index 6f2d2d0c..01be70b4 100644
--- a/veejay-current/gveejay-reloaded/callback.c
+++ b/veejay-current/gveejay-reloaded/callback.c
@@ -75,21 +75,20 @@ void on_videobar_value_changed(GtkWidget *widget, gpointer user_data)
{
if(!info->status_lock)
{
- // gint slider_val = get_slider_val( "videobar" );
gdouble slider_val = GTK_ADJUSTMENT(GTK_RANGE(widget)->adjustment)->value;
gint val = 0;
switch(info->status_tokens[PLAY_MODE])
{
case MODE_PLAIN:
- val = (gint) (slider_val * info->status_tokens[TOTAL_FRAMES] );
+ val = slider_val * info->status_tokens[TOTAL_FRAMES];
break;
case MODE_SAMPLE:
- val = (gint) (slider_val * (info->status_tokens[SAMPLE_END] - info->status_tokens[SAMPLE_END]));
+ val = slider_val * (info->status_tokens[SAMPLE_END] - info->status_tokens[SAMPLE_START]);
+ val += info->status_tokens[SAMPLE_START];
break;
default:
return;
}
- fprintf(stderr, "Set frame %d\n", val );
multi_vims( VIMS_VIDEO_SET_FRAME, "%d", val );
}
}
diff --git a/veejay-current/gveejay-reloaded/vj-api.c b/veejay-current/gveejay-reloaded/vj-api.c
index f96c691c..0960facf 100644
--- a/veejay-current/gveejay-reloaded/vj-api.c
+++ b/veejay-current/gveejay-reloaded/vj-api.c
@@ -224,25 +224,6 @@ typedef struct
int height;
} veejay_el_t;
-// test renew
-// modified because this is handled now by the options-dialog-routine
-static struct
-{
- int pm;
- const char *name;
-} notepad_widgets[] =
-{
- // {MODE_SAMPLE, "frame_sampleproperties"},
- // {MODE_SAMPLE, "frame_samplerecord"},
- {MODE_SAMPLE, "tree_history"},
- {MODE_SAMPLE, "button_historymove"},
- {MODE_SAMPLE, "button_historyrec"},
- //{MODE_STREAM, "frame_streamproperties"},
- //{MODE_STREAM, "frame_streamrecord"},
- {-1 , "vbox_fxtree" },
- { 0, NULL },
-};
-
enum
{
RUN_STATE_LOCAL = 1,
@@ -349,6 +330,7 @@ typedef struct
sample_gui_slot_t *selected_gui_slot;
int image_dimensions[2];
guchar *rawdata;
+ int prev_mode;
} vj_gui_t;
enum
@@ -491,6 +473,73 @@ static struct
{ "v4l_color" },
{ "v4l_white" }
};
+static struct
+{
+ const char *name;
+} gwidgets[] = {
+ {"button_sendvims"},
+ {"button_087"},
+ {"button_086"},
+ {"button_081"},
+ {"button_082"},
+ {"button_080"},
+ {"button_085"},
+// {"button_036"},
+ {"button_084"},
+ {"button_083"},
+ {"button_084"},
+ {"button_088"},
+ {"videobar"},
+ {"button_samplestart"},
+ {"button_sampleend"},
+ {"button_fadeout"},
+ {"button_fadein"},
+ {"button_5_4"},
+ {"button_200"},
+ {"button_001"},
+ {"button_252"},
+ {"button_251"},
+ {"button_054"},
+ {"speedslider"},
+ {"new_colorstream"},
+ {"audiovolume"},
+ {"manualopacity"},
+ {"button_fadedur"},
+ {"vimsmessage"},
+ {NULL}
+};
+static struct
+{
+ const char *name;
+} videowidgets[] = {
+ {"button_sendvims"},
+ {"button_087"},
+ {"button_086"},
+ {"button_081"},
+ {"button_082"},
+ {"button_080"},
+ {"button_085"},
+ {"button_084"},
+ {"button_083"},
+ {"button_084"},
+ {"button_088"},
+ {"videobar"},
+ {"button_samplestart"},
+ {"button_sampleend"},
+ {"speedslider"},
+ {NULL}
+};
+
+static struct
+{
+ const char *name;
+} plainwidgets[] =
+{
+ {"manualopacity"},
+ {"loglinear"},
+ {"vbox_fxtree"},
+ {NULL}
+};
enum
{
@@ -1823,7 +1872,7 @@ static void update_slider_value(const char *name, gint value, gint scale)
if(scale)
{
GtkAdjustment *adj = GTK_ADJUSTMENT(GTK_RANGE(w)->adjustment );
- gvalue = (gdouble) value / (adj->upper);
+ gvalue = (gdouble) value / (gdouble) scale;
}
else
gvalue = (gdouble) value;
@@ -2052,34 +2101,12 @@ chain_update_row(GtkTreeModel * model, GtkTreePath * path, GtkTreeIter * iter,
static void update_status_accessibility(int pm)
{
- int *history = info->history_tokens[pm];
-
int i;
- if(info->status_tokens[PLAY_MODE] != history[PLAY_MODE] )
- {
- if( pm != MODE_SAMPLE )
- {
- disable_widget( "samplerand" );
- disable_widget( "freestyle" );
- }
- else
- {
- enable_widget( "samplerand" );
- enable_widget( "freestyle" );
- }
- if( pm == MODE_PLAIN )
- {
- for(i =0; notepad_widgets[i].name != NULL; i ++ )
- disable_widget( notepad_widgets[i].name );
- enable_widget ("speedslider");
- }
- }
-
- if(selected_is_playing())
+ if( pm != info->prev_mode )
{
/* If mode changed, enable/disable widgets etc first */
- if( history[PLAY_MODE] != pm )
+ if( info->status_tokens[PLAY_MODE] != info->prev_mode )
{
if( pm == MODE_STREAM )
{
@@ -2090,8 +2117,16 @@ static void update_status_accessibility(int pm)
disable_widget("button_historymove");
disable_widget("frame_samplerecord");
disable_widget("frame_sampleproperties");
- disable_widget("speedslider");
+ for(i=0; videowidgets[i].name != NULL; i++)
+ disable_widget( videowidgets[i].name);
+
}
+ else
+ {
+ for(i=0; videowidgets[i].name != NULL; i++)
+ enable_widget( videowidgets[i].name);
+ }
+
if( pm == MODE_SAMPLE )
{
enable_widget("frame_samplerecord");
@@ -2101,9 +2136,21 @@ static void update_status_accessibility(int pm)
enable_widget("button_historymove");
disable_widget("frame_streamproperties");
disable_widget("frame_streamrecord");
- enable_widget("speedslider");
+ enable_widget( "samplerand" );
+ enable_widget( "freestyle" );
}
-
+ else
+ {
+ disable_widget( "samplerand" );
+ disable_widget( "freestyle" );
+ }
+
+ if( pm == MODE_PLAIN)
+ for( i = 0; plainwidgets[i].name != NULL ;i++ )
+ disable_widget( plainwidgets[i].name );
+ else
+ for( i = 0; plainwidgets[i].name != NULL ; i ++ )
+ enable_widget( plainwidgets[i].name );
}
}
}
@@ -2124,7 +2171,7 @@ static void update_current_slot(int pm)
/* Mode changed or ID changed,
Reload FX Chain, Reload current entry and disable widgets based on stream type */
- if( pm != history[PLAY_MODE] || info->status_tokens[CURRENT_ID] != history[CURRENT_ID] )
+ if( pm != info->prev_mode || info->status_tokens[CURRENT_ID] != history[CURRENT_ID] )
{
int k;
info->uc.reload_hint[HINT_ENTRY] = 1;
@@ -2326,13 +2373,12 @@ static void update_globalinfo()
info->uc.playmode = pm;
+ update_status_accessibility(pm);
if( info->status_tokens[CURRENT_ID] != history[CURRENT_ID] ||
- info->status_tokens[PLAY_MODE] != history[PLAY_MODE] )
+ info->status_tokens[PLAY_MODE] != info->prev_mode )
{
- if( pm == MODE_PLAIN )
- disable_widget("vbox_fxtree");
if( pm == MODE_SAMPLE || MODE_STREAM )
- { enable_widget("vbox_fxtree");
+ {
info->uc.reload_hint[HINT_ENTRY] = 1;
info->uc.reload_hint[HINT_CHAIN] = 1;
}
@@ -2344,8 +2390,6 @@ static void update_globalinfo()
info->uc.reload_hint[HINT_SLIST] = 1;
}
- update_status_accessibility(pm);
-
if( history[TOTAL_FRAMES] != info->status_tokens[TOTAL_FRAMES])
{
gint tf = info->status_tokens[TOTAL_FRAMES];
@@ -2381,14 +2425,14 @@ static void update_globalinfo()
}
if(pm == MODE_PLAIN )
{
- update_slider_value( "videobar", info->status_tokens[FRAME_NUM], 1 );
+ update_slider_value( "videobar", info->status_tokens[FRAME_NUM],
+ info->status_tokens[TOTAL_FRAMES] );
}
if(pm == MODE_SAMPLE)
{
gint f = info->status_tokens[FRAME_NUM] - info->status_tokens[SAMPLE_START];
gint m = info->status_tokens[SAMPLE_END] - info->status_tokens[SAMPLE_START];
- gdouble v = (f / (gdouble)m) * 100.0;
- update_slider_gvalue( "videobar",v);
+ update_slider_value( "videobar",f,m);
}
}
@@ -4732,6 +4776,7 @@ static void update_gui()
{
int pm = info->status_tokens[PLAY_MODE];
+
if( pm == MODE_SAMPLE && info->uc.randplayer )
{
info->uc.randplayer = 0;
@@ -4772,6 +4817,7 @@ static void update_gui()
entry_history[i] = entry_tokens[i];
}
+ info->prev_mode = pm;
}
@@ -5380,39 +5426,6 @@ gboolean is_alive(gpointer data)
return TRUE;
}
-static struct
-{
- const char *name;
-} gwidgets[] = {
- {"button_sendvims"},
- {"button_087"},
- {"button_086"},
- {"button_081"},
- {"button_082"},
- {"button_080"},
- {"button_085"},
-// {"button_036"},
- {"button_084"},
- {"button_083"},
- {"button_084"},
- {"button_samplestart"},
- {"button_sampleend"},
- {"button_fadeout"},
- {"button_fadein"},
- {"button_5_4"},
- {"button_200"},
- {"button_001"},
- {"button_252"},
- {"button_251"},
- {"button_054"},
- {"speedslider"},
- {"new_colorstream"},
- {"audiovolume"},
- {"manualopacity"},
- {"button_fadedur"},
- {"vimsmessage"},
- {NULL}
-};
void vj_gui_disconnect()
{
@@ -5858,16 +5871,9 @@ image_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer data)
}
-/* this function creates a new GUI slot. At initialization, all possible slots are initialized
- * so we add to the table of GUI slots directly.
- * FIXME: return new malloced gui_slot_slot_t
- */
-
+// TODO:
static void open_sample_edit_dialog( GtkWidget *widget, gpointer data )
{
- multi_vims( VIMS_SET_MODE_AND_GO, "%d %d", info->selected_slot->sample_id,
- info->selected_slot->sample_type );
-
if(!GTK_WIDGET_VISIBLE(glade_xml_get_widget(info->main_window, "sample_options")))
{GtkWidget *w = glade_xml_get_widget_( info->main_window, "sample_options" );
gtk_widget_show(w); }
@@ -5952,6 +5958,9 @@ static void create_slot(gint bank_nr, gint slot_nr, gint w, gint h)
// gtk_box_pack_start( GTK_BOX(gui_slot->upper_hbox), GTK_WIDGET(label), TRUE, TRUE, 0 );
// gtk_widget_show(label);
/* the edit button */
+
+ /* Todo: add pointer to sample slot to callback function.
+ edit mode needs ID and type */
gui_slot->edit_button = GTK_BUTTON( gtk_button_new_with_label("edit"));
gtk_box_pack_start( GTK_BOX(gui_slot->upper_hbox), GTK_WIDGET(gui_slot->edit_button), FALSE, FALSE, 0 );
g_signal_connect( gui_slot->edit_button, "clicked",
diff --git a/veejay-current/share/gveejay.reloaded.glade b/veejay-current/share/gveejay.reloaded.glade
index 53998389..b129ac62 100644
--- a/veejay-current/share/gveejay.reloaded.glade
+++ b/veejay-current/share/gveejay.reloaded.glade
@@ -4386,7 +4386,7 @@
4
GTK_UPDATE_CONTINUOUS
False
- 0 0 100 0.0010000000475 0.00999999977648 0
+ 0.00999999977648 0 1 0.0010000000475 0.00999999977648 0