Reloaded : Filter effect list by keyword + fix add disabled fx

* add text entry control right to fx types select box.
* add filtered and sorted models to effect trees
* on user input the filter effect trees is interactivly filtred (no case sensitive)

* fix fx disabled: add test over GDK_KEY_KEY
This commit is contained in:
Jerome Blanchi aka d.j.a.y
2017-06-02 14:03:42 +02:00
parent 2eda802611
commit 723faea7f4
3 changed files with 71 additions and 72 deletions

View File

@@ -3402,23 +3402,30 @@ void on_filter_effects_activate(GtkWidget *widget, gpointer user_data)
{
}
void on_filter_effects_changed( GtkWidget *w, EffectListData *user_data)
void on_filter_effects_changed( GtkWidget *w, effectlist_data *user_data)
{
gchar* fx_txt = get_text("filter_effects");
int filterlen = strlen(fx_txt);
if(user_data != NULL) {
gchar* fx_txt = get_text("filter_effects");
int filterlen = strlen(fx_txt);
if(filterlen) {
vj_msg(VEEJAY_MSG_INFO, "filtering effects '%s'", fx_txt);
user_data->filter_string = vj_calloc(sizeof(gchar)*filterlen); // FIXME mem LEAK
strcpy(user_data->filter_string, fx_txt);
gtk_tree_model_filter_refilter (user_data->effect_list_stores[0].effect_list_filtered);
gtk_tree_model_filter_refilter (user_data->effect_list_stores[1].effect_list_filtered);
gtk_tree_model_filter_refilter (user_data->effect_list_stores[2].effect_list_filtered);
free(user_data->filter_string);
user_data->filter_string = NULL;
} else {
vj_msg(VEEJAY_MSG_INFO, "");
if(filterlen) {
vj_msg(VEEJAY_MSG_INFO, "filtering effects '%s'", fx_txt);
user_data->filter_string = g_new0(gchar, filterlen+1);
if(user_data->filter_string != NULL) {
strcpy(user_data->filter_string, fx_txt);
gtk_tree_model_filter_refilter (user_data->stores[0].filtered);
gtk_tree_model_filter_refilter (user_data->stores[1].filtered);
gtk_tree_model_filter_refilter (user_data->stores[2].filtered);
g_free(user_data->filter_string);
}
user_data->filter_string = NULL;
} else {
vj_msg(VEEJAY_MSG_DEBUG, ""); // FIXME why debug ? check vj-msg.h and "void vj_msg( " from vj-api.c:2340
// filter with "user_data->filter_string = NULL" to remove the filter
gtk_tree_model_filter_refilter (user_data->stores[0].filtered);
gtk_tree_model_filter_refilter (user_data->stores[1].filtered);
gtk_tree_model_filter_refilter (user_data->stores[2].filtered);
}
}
}