diff --git a/veejay-current/veejay-client/share/gveejay.reloaded.glade b/veejay-current/veejay-client/share/gveejay.reloaded.glade
index 0887735e..cbd3f3c1 100644
--- a/veejay-current/veejay-client/share/gveejay.reloaded.glade
+++ b/veejay-current/veejay-client/share/gveejay.reloaded.glade
@@ -3424,6 +3424,23 @@
1
+
+
+ Alpha
+ True
+ True
+ False
+ True
+ True
+ mixing_effects
+
+
+
+ False
+ False
+ 2
+
+
False
@@ -3492,6 +3509,36 @@
tab
+
+
+ True
+ True
+ automatic
+ automatic
+
+
+ True
+ True
+
+
+
+
+ 2
+
+
+
+
+ True
+ False
+ alpha effects
+ 270
+
+
+ 2
+ False
+ tab
+
+
True
@@ -11552,7 +11599,7 @@ YUV (current)
True
False
Save Samplelist
-
+
True
@@ -12624,6 +12671,24 @@ YUV (current)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
True
diff --git a/veejay-current/veejay-client/src/callback.c b/veejay-current/veejay-client/src/callback.c
index 934daf4b..f5f60d7a 100644
--- a/veejay-current/veejay-client/src/callback.c
+++ b/veejay-current/veejay-client/src/callback.c
@@ -2900,22 +2900,28 @@ void on_spin_framedelay_value_changed(GtkWidget *w, gpointer user_data)
vj_midi_learning_vims_spin( info->midi, "spin_framedelay", VIMS_VIDEO_SET_SLOW );
}
+void on_alpha_effects_toggled(GtkWidget *w, gpointer user_data)
+{
+ GtkWidget *n = glade_xml_get_widget_( info->main_window, "effectspanel" );
+ gint page = gtk_notebook_get_current_page( GTK_NOTEBOOK(n) );
+ if(page != 2)
+ gtk_notebook_set_page(GTK_NOTEBOOK(n), 2);
+}
+
void on_mixing_effects_toggled(GtkWidget *w, gpointer user_data)
{
GtkWidget *n = glade_xml_get_widget_( info->main_window, "effectspanel" );
gint page = gtk_notebook_get_current_page( GTK_NOTEBOOK(n) );
- if(page == 1)
- gtk_notebook_prev_page( GTK_NOTEBOOK(n) );
-
+ if(page != 0 )
+ gtk_notebook_set_page(GTK_NOTEBOOK(n), 0 );
}
void on_image_effects_toggled(GtkWidget *w, gpointer user_data)
{
GtkWidget *n = glade_xml_get_widget_( info->main_window, "effectspanel" );
gint page = gtk_notebook_get_current_page( GTK_NOTEBOOK(n) );
- if(page == 0)
- gtk_notebook_next_page( GTK_NOTEBOOK(n) );
-
+ if(page != 1)
+ gtk_notebook_set_page(GTK_NOTEBOOK(n),1);
}
void on_console1_activate(GtkWidget *w, gpointer user_data)
diff --git a/veejay-current/veejay-client/src/vj-api.c b/veejay-current/veejay-client/src/vj-api.c
index 02ff0da6..f60f2cd2 100644
--- a/veejay-current/veejay-client/src/vj-api.c
+++ b/veejay-current/veejay-client/src/vj-api.c
@@ -3823,34 +3823,7 @@ gboolean
return TRUE; /* allow selection state to change */
}
-void
-on_effectmixlist_row_activated(GtkTreeView *treeview,
- GtkTreePath *path,
- GtkTreeViewColumn *col,
- gpointer user_data)
-{
- GtkTreeModel *model;
- GtkTreeIter iter;
- model = gtk_tree_view_get_model(treeview);
- if(gtk_tree_model_get_iter(model,&iter,path))
- {
- gint gid =0;
- gchar *name = NULL;
- gtk_tree_model_get(model,&iter, FX_STRING, &name, -1); // FX_ID
- if(vevo_property_get( fx_list_, name, 0,&gid ) == 0 )
- {
- multi_vims(VIMS_CHAIN_ENTRY_SET_EFFECT, "%d %d %d",
- 0, info->uc.selected_chain_entry,gid );
- info->uc.reload_hint[HINT_ENTRY] = 1;
-
- char trip[100];
- snprintf(trip,sizeof(trip), "%03d:%d %d %d;", VIMS_CHAIN_ENTRY_SET_EFFECT,0,info->uc.selected_chain_entry, gid );
- vj_midi_learning_vims( info->midi, NULL, trip, 0 );
- }
- g_free(name);
- }
-}
void
on_effectlist_row_activated(GtkTreeView *treeview,
GtkTreePath *path,
@@ -3950,18 +3923,19 @@ sort_vims_func( GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b,
void setup_effectlist_info()
{
int i;
- GtkWidget *trees[2];
+ GtkWidget *trees[3];
trees[0] = glade_xml_get_widget_( info->main_window, "tree_effectlist");
trees[1] = glade_xml_get_widget_( info->main_window, "tree_effectmixlist");
- GtkListStore *stores[2];
- stores[0] = gtk_list_store_new( 1, G_TYPE_STRING );
- stores[1] = gtk_list_store_new( 1, G_TYPE_STRING );
+ trees[2] = glade_xml_get_widget_( info->main_window, "tree_alphalist" );
+ GtkListStore *stores[3];
fx_list_ = (vevo_port_t*) vpn( 200 );
- for(i = 0; i < 2; i ++ )
+ for(i = 0; i < 3; i ++ )
{
+ stores[i] = gtk_list_store_new( 1, G_TYPE_STRING );
+
GtkTreeSortable *sortable = GTK_TREE_SORTABLE(stores[i]);
gtk_tree_sortable_set_sort_func(
sortable, FX_STRING, sort_iter_compare_func,
@@ -3981,20 +3955,15 @@ void setup_effectlist_info()
setup_tree_text_column( "tree_effectmixlist", FX_STRING, "Effect",0 );
- g_signal_connect( trees[0], "row-activated",
- (GCallback) on_effectlist_row_activated, NULL );
+ setup_tree_text_column( "tree_alphalist", FX_STRING, "Alpha",0);
- g_signal_connect( trees[1] ,"row-activated",
- (GCallback) on_effectmixlist_row_activated, NULL );
-
- GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(trees[0]));
+ for(i = 0; i < 3; i ++ )
+ {
+ g_signal_connect( trees[i],"row-activated", (GCallback) on_effectlist_row_activated, NULL );
+ GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(trees[i]));
gtk_tree_selection_set_select_function(selection, view_fx_selection_func, NULL, NULL);
gtk_tree_selection_set_mode(selection, GTK_SELECTION_SINGLE);
-
- selection = gtk_tree_view_get_selection( GTK_TREE_VIEW(trees[1] ));
- gtk_tree_selection_set_select_function( selection, view_fx_selection_func, NULL,NULL );
- gtk_tree_selection_set_mode( selection, GTK_SELECTION_SINGLE );
-
+ }
}
@@ -4229,23 +4198,31 @@ void load_effectlist_info()
{
GtkWidget *tree = glade_xml_get_widget_( info->main_window, "tree_effectlist");
GtkWidget *tree2 = glade_xml_get_widget_( info->main_window, "tree_effectmixlist");
- GtkListStore *store,*store2;
+ GtkWidget *tree3 = glade_xml_get_widget_( info->main_window, "tree_alphalist");
+ GtkListStore *store,*store2,*store3;
char line[4096];
GtkTreeIter iter;
gint i,offset=0;
-
-
gint fxlen = 0;
single_vims( VIMS_EFFECT_LIST );
gchar *fxtext = recv_vims(6,&fxlen);
+
_effect_reset();
- reset_tree( "tree_effectlist");
+
+ reset_tree( "tree_effectlist");
+ reset_tree( "tree_effectmixlist" );
+ reset_tree( "tree_alphalist" );
+
GtkTreeModel *model = gtk_tree_view_get_model( GTK_TREE_VIEW(tree ));
store = GTK_LIST_STORE(model);
GtkTreeModel *model2 = gtk_tree_view_get_model( GTK_TREE_VIEW(tree2));
store2 = GTK_LIST_STORE(model2);
+
+ GtkTreeModel *model3 = gtk_tree_view_get_model( GTK_TREE_VIEW(tree3));
+ store3 = GTK_LIST_STORE(model3);
+
while( offset < fxlen )
{
char tmp_len[4];
@@ -4272,19 +4249,30 @@ void load_effectlist_info()
gchar *name = _utf8str( _effect_get_description( ec->id ) );
if( name != NULL)
{
- if( _effect_get_mix(ec->id) > 0 )
- {
- gtk_list_store_append( store2, &iter );
- gtk_list_store_set( store2, &iter, FX_STRING, name, -1 );
- vevo_property_set( fx_list_, name, LIVIDO_ATOM_TYPE_INT, 1, &(ec->id));
+ if( strncasecmp( "alpha:" , ec->description, 6 ) == 0 ) {
+ gtk_list_store_append( store3, &iter );
+ int len = strlen( ec->description );
+ char *newName = vj_calloc( len );
+ veejay_memcpy(newName,ec->description+6, len-6 );
+ gtk_list_store_set( store3,&iter, FX_STRING, newName, -1 );
+ vevo_property_set( fx_list_, newName, LIVIDO_ATOM_TYPE_INT,1,&(ec->id));
+ free(newName);
}
- else
+ else
{
- gtk_list_store_append( store, &iter );
- gtk_list_store_set( store, &iter, FX_STRING, name, -1 );
- vevo_property_set( fx_list_, name, LIVIDO_ATOM_TYPE_INT, 1, &(ec->id));
+ if( _effect_get_mix(ec->id) > 0 )
+ {
+ gtk_list_store_append( store2, &iter );
+ gtk_list_store_set( store2, &iter, FX_STRING, name, -1 );
+ vevo_property_set( fx_list_, name, LIVIDO_ATOM_TYPE_INT, 1, &(ec->id));
+ }
+ else
+ {
+ gtk_list_store_append( store, &iter );
+ gtk_list_store_set( store, &iter, FX_STRING, name, -1 );
+ vevo_property_set( fx_list_, name, LIVIDO_ATOM_TYPE_INT, 1, &(ec->id));
+ }
}
-
}
g_free(name);
}
@@ -4292,6 +4280,7 @@ void load_effectlist_info()
gtk_tree_view_set_model( GTK_TREE_VIEW(tree), GTK_TREE_MODEL(store));
gtk_tree_view_set_model( GTK_TREE_VIEW(tree2), GTK_TREE_MODEL(store2));
+ gtk_tree_view_set_model( GTK_TREE_VIEW(tree3), GTK_TREE_MODEL(store3));
free(fxtext);
}