Skip to content

Commit

Permalink
Reloaded3 - fx chain : add ctrl+click to toggle fx anim
Browse files Browse the repository at this point in the history
* added fx anim status has integer to the FXChain Model
* new function "curve_toggleentry_activate"
  • Loading branch information
d-j-a-y committed Jun 15, 2019
1 parent ad26f77 commit 4ae9460
Show file tree
Hide file tree
Showing 2 changed files with 88 additions and 58 deletions.
128 changes: 76 additions & 52 deletions veejay-current/veejay-client/src/callback.c
Original file line number Diff line number Diff line change
Expand Up @@ -2959,42 +2959,47 @@ void on_curve_toggleentry_param_toggled( GtkWidget *widget, gpointer user_data)
vj_msg(VEEJAY_MSG_INFO, "%s FX parameter %d", (k==0 ? "Disabled" : "Enabled"), i );
}

void curve_toggleentry_activate( int selected_chain_entry, int active)
{
int curve_type = 0;
if( is_button_toggled("curve_typespline")) {
curve_type = 1;
} else if ( is_button_toggled("curve_typefreehand")) {
curve_type = 2;
} else if (is_button_toggled("curve_typelinear")) {
curve_type = 0;
}

multi_vims( VIMS_SAMPLE_KF_STATUS, "%d %d %d",
selected_chain_entry, active, curve_type );

//update anim mode
GtkTreeView *view = GTK_TREE_VIEW(glade_xml_get_widget_(info->main_window, "tree_chain"));
GtkTreeModel *model = gtk_tree_view_get_model( view );
GtkTreeIter iter;

GtkTreePath *path = gtk_tree_path_new_from_indices(selected_chain_entry, -1);
if(gtk_tree_model_get_iter(model, &iter, path))
{
GdkPixbuf *kf_toggle = update_pixmap_entry( active );
gtk_list_store_set (GTK_LIST_STORE( model ), &iter, FXC_KF, kf_toggle, FXC_KF_STATUS, active, -1);
}
gtk_tree_path_free(path);
}

void curve_toggleentry_toggled( GtkWidget *widget, gpointer user_data)
{
if(info->status_lock)
return;

int selected_chain_entry = info->uc.selected_chain_entry;
int selected_chain_entry = info->uc.selected_chain_entry;
if( selected_chain_entry == -1 ) {
vj_msg(VEEJAY_MSG_INFO,"No parameter selected for animation");
return;
}

int active = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(widget) );
int curve_type = 0;
if( is_button_toggled("curve_typespline")) {
curve_type = 1;
} else if ( is_button_toggled("curve_typefreehand")) {
curve_type = 2;
} else if (is_button_toggled("curve_typelinear")) {
curve_type = 0;
}

multi_vims( VIMS_SAMPLE_KF_STATUS, "%d %d %d",
selected_chain_entry, active, curve_type );

//update anim mode
GtkTreeView *view = GTK_TREE_VIEW(glade_xml_get_widget_(info->main_window, "tree_chain"));
GtkTreeModel *model = gtk_tree_view_get_model( view );
GtkTreeIter iter;

GtkTreePath *path = gtk_tree_path_new_from_indices(selected_chain_entry, -1);
if(gtk_tree_model_get_iter(model, &iter, path))
{
GdkPixbuf *kf_toggle = update_pixmap_entry( active );
gtk_list_store_set (GTK_LIST_STORE( model ), &iter, FXC_KF, kf_toggle, -1);
}
gtk_tree_path_free(path);
curve_toggleentry_activate(selected_chain_entry, active);
}

void curve_panel_toggleentry_toggled( GtkWidget *widget, gpointer user_data)
Expand Down Expand Up @@ -3505,42 +3510,61 @@ void on_add_file1_activate(GtkWidget *w, gpointer user_data)
*
* Signal handler over the effect chain.
*
* Catch button press event on shift+click to toogle chain state.
* Catch button press event on shift+click to toogle fx state.
* Catch button press event on ctrl+click to toogle fx anim state.
* NOTA : works over the FULL row
*
******************************************************/
gboolean on_effectchain_button_pressed (GtkWidget *tree, GdkEventButton *event, gpointer userdata)
{
/* shift key + single click with the left mouse button? */
if (event->state & GDK_SHIFT_MASK)
//filter events over ctrl and shift
int state_modifier = event->state & (GDK_SHIFT_MASK | GDK_CONTROL_MASK);

if (state_modifier && (event->type == GDK_BUTTON_PRESS) && (event->button == 1))
{
if (event->type == GDK_BUTTON_PRESS && event->button == 1)
GtkTreePath *path;
GtkTreeViewColumn *column;
gint cell_x, cell_y;

if(gtk_tree_view_get_path_at_pos( GTK_TREE_VIEW( tree ),
(gint) event->x,
(gint) event->y,
&path, &column, &cell_x, &cell_y ))

{
GtkTreePath *path;
GtkTreeViewColumn *column;
gint cell_x, cell_y;

if(gtk_tree_view_get_path_at_pos( GTK_TREE_VIEW( tree ),
(gint) event->x,
(gint) event->y,
&path, &column, &cell_x, &cell_y ))

{
/* compare iter from tree selection and clicked path */
GtkTreeIter iter;
gint fxcid = 0;
GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW( tree ));

gtk_tree_model_get_iter(model, &iter, path);
gtk_tree_model_get(model,&iter, FXC_ID, &fxcid, -1 );

/* user can click on all row, uncomment and fix accordingly the test to check particular column */
//guint column_num = get_treeview_col_number_from_column ( column );
//if(column_num != -1)
/* get iter from clicked path */
GtkTreeIter iter;
gint fxcid = 0;
GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW( tree ));

gtk_tree_model_get_iter(model, &iter, path);
gtk_tree_model_get(model,&iter, FXC_ID, &fxcid, -1 );

switch (state_modifier){
case GDK_SHIFT_MASK:
{
/* user can click on all row, uncomment and fix accordingly the test to check particular column */
//guint column_num = get_treeview_col_number_from_column ( column );
//if(column_num != -1)
{
multi_vims(VIMS_CHAIN_ENTRY_SET_STATE, "%d %d",0, fxcid);
info->uc.reload_hint[HINT_HISTORY] = 1;
}
}
break;

case GDK_CONTROL_MASK:
{
multi_vims(VIMS_CHAIN_ENTRY_SET_STATE, "%d %d",0, fxcid);
info->uc.reload_hint[HINT_HISTORY] = 1;
/* user can click on all row, uncomment and fix accordingly the test to check particular column */
//guint column_num = get_treeview_col_number_from_column ( column );
//if(column_num != -1)
{
int active;
gtk_tree_model_get ( model, &iter, FXC_KF_STATUS, &active, -1);
curve_toggleentry_activate(fxcid, !active);
}
}
break;
}
}
}
Expand Down
18 changes: 12 additions & 6 deletions veejay-current/veejay-client/src/vj-api.c
Original file line number Diff line number Diff line change
Expand Up @@ -719,7 +719,7 @@ static struct
{"Select a SRT sequence to edit"},
{"Double click: add effect to current entry in chain list,\n [+] Shift L: add disabled,\n [+] Ctrl L: add to selected sample"},
{"Filter the effects list by any string"},
{"Shift + Mouse left : Toogle selected fx chain"},
{"Shift + Mouse left : Toogle selected fx,\nControl + Mouse left : Toogle selected fx anim"},
{NULL},
};

Expand Down Expand Up @@ -1146,7 +1146,8 @@ enum
FXC_KF = 3,
FXC_MIXING = 4,
FXC_SUBRENDER = 5,
FXC_N_COLS = 6,
FXC_KF_STATUS = 6,
FXC_N_COLS = 7,
};

enum {
Expand Down Expand Up @@ -3824,8 +3825,9 @@ static gboolean chain_update_row(GtkTreeModel * model,
}

gchar *mixing = _utf8str(tmp);
int kf_status = gui->uc.entry_tokens[ENTRY_KF_STATUS];
GdkPixbuf *toggle = update_pixmap_entry( gui->uc.entry_tokens[ENTRY_VIDEO_ENABLED] );
GdkPixbuf *kf_toggle = update_pixmap_entry( gui->uc.entry_tokens[ENTRY_KF_STATUS] );
GdkPixbuf *kf_toggle = update_pixmap_entry( kf_status );
GdkPixbuf *subrender_toggle = update_pixmap_entry( gui->uc.entry_tokens[ENTRY_SUBRENDER_ENTRY]);
gtk_list_store_set( GTK_LIST_STORE(model),iter,
FXC_ID, entry,
Expand All @@ -3834,6 +3836,7 @@ static gboolean chain_update_row(GtkTreeModel * model,
FXC_KF, kf_toggle,
FXC_MIXING, mixing,
FXC_SUBRENDER, subrender_toggle,
FXC_KF_STATUS, kf_status,
-1 );
g_free(descr);
g_free(mixing);
Expand Down Expand Up @@ -4829,7 +4832,7 @@ static void load_generator_info()
static void setup_effectchain_info( void )
{
GtkWidget *tree = glade_xml_get_widget_( info->main_window, "tree_chain");
GtkListStore *store = gtk_list_store_new( FXC_N_COLS, G_TYPE_INT, G_TYPE_STRING, GDK_TYPE_PIXBUF,GDK_TYPE_PIXBUF,G_TYPE_STRING, GDK_TYPE_PIXBUF );
GtkListStore *store = gtk_list_store_new( FXC_N_COLS, G_TYPE_INT, G_TYPE_STRING, GDK_TYPE_PIXBUF,GDK_TYPE_PIXBUF,G_TYPE_STRING, GDK_TYPE_PIXBUF, G_TYPE_INT);
gtk_tree_view_set_model( GTK_TREE_VIEW(tree), GTK_TREE_MODEL(store));
g_object_unref( G_OBJECT( store ));

Expand Down Expand Up @@ -4953,16 +4956,19 @@ static void load_effectchain_info()
gchar *mixing = _utf8str(tmp);

gtk_list_store_append( store, &iter );
int kf_status = arr[7];
GdkPixbuf *toggle = update_pixmap_entry( arr[3] );
GdkPixbuf *kf_togglepf = update_pixmap_entry( arr[7] );
GdkPixbuf *kf_togglepf = update_pixmap_entry( kf_status );
GdkPixbuf *subrender_toggle = update_pixmap_entry(arr[8]);
gtk_list_store_set( store, &iter,
FXC_ID, arr[0],
FXC_FXID, utf8_name,
FXC_FXSTATUS, toggle,
FXC_KF, kf_togglepf,
FXC_MIXING,mixing,
FXC_SUBRENDER, subrender_toggle, -1 );
FXC_SUBRENDER, subrender_toggle,
FXC_KF_STATUS, kf_status,
-1 );
last_index ++;
g_free(utf8_name);
g_free(mixing);
Expand Down

0 comments on commit 4ae9460

Please sign in to comment.