Also sort entries through a GtkTreeModelFilter
This commit is contained in:
parent
7a6eddf514
commit
c7be179f68
|
@ -71,6 +71,8 @@ typedef enum _SettingsColumn
|
||||||
static int _settings(void);
|
static int _settings(void);
|
||||||
|
|
||||||
/* accessors */
|
/* accessors */
|
||||||
|
static gboolean _settings_get_iter(Settings * settings, GtkTreeIter * iter,
|
||||||
|
GtkTreePath * path);
|
||||||
static GtkTreeModel * _settings_get_model(Settings * settings);
|
static GtkTreeModel * _settings_get_model(Settings * settings);
|
||||||
|
|
||||||
/* useful */
|
/* useful */
|
||||||
|
@ -118,6 +120,7 @@ static int _settings(void)
|
||||||
model = gtk_tree_model_filter_new(GTK_TREE_MODEL(store), NULL);
|
model = gtk_tree_model_filter_new(GTK_TREE_MODEL(store), NULL);
|
||||||
gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(model),
|
gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(model),
|
||||||
_settings_on_filter_view, &settings, NULL);
|
_settings_on_filter_view, &settings, NULL);
|
||||||
|
model = gtk_tree_model_sort_new_with_model(model);
|
||||||
settings.view = gtk_icon_view_new_with_model(model);
|
settings.view = gtk_icon_view_new_with_model(model);
|
||||||
gtk_icon_view_set_item_width(GTK_ICON_VIEW(settings.view), 96);
|
gtk_icon_view_set_item_width(GTK_ICON_VIEW(settings.view), 96);
|
||||||
gtk_icon_view_set_pixbuf_column(GTK_ICON_VIEW(settings.view), SC_ICON);
|
gtk_icon_view_set_pixbuf_column(GTK_ICON_VIEW(settings.view), SC_ICON);
|
||||||
|
@ -174,9 +177,9 @@ static void _settings_on_item_activated(GtkWidget * widget, GtkTreePath * path,
|
||||||
GError * error = NULL;
|
GError * error = NULL;
|
||||||
char * argv[] = { "/bin/sh", "sh", "-c", NULL, NULL };
|
char * argv[] = { "/bin/sh", "sh", "-c", NULL, NULL };
|
||||||
|
|
||||||
model = gtk_icon_view_get_model(GTK_ICON_VIEW(widget));
|
if(_settings_get_iter(settings, &iter, path) == FALSE)
|
||||||
if(gtk_tree_model_get_iter(GTK_TREE_MODEL(model), &iter, path) == FALSE)
|
|
||||||
return;
|
return;
|
||||||
|
model = _settings_get_model(settings);
|
||||||
gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, SC_EXEC, &exec, -1);
|
gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, SC_EXEC, &exec, -1);
|
||||||
# ifdef DEBUG
|
# ifdef DEBUG
|
||||||
fprintf(stderr, "DEBUG: %s() \"%s\"\n", __func__, exec);
|
fprintf(stderr, "DEBUG: %s() \"%s\"\n", __func__, exec);
|
||||||
|
@ -191,12 +194,32 @@ static void _settings_on_item_activated(GtkWidget * widget, GtkTreePath * path,
|
||||||
|
|
||||||
|
|
||||||
/* accessors */
|
/* accessors */
|
||||||
|
/* settings_get_iter */
|
||||||
|
static gboolean _settings_get_iter(Settings * settings, GtkTreeIter * iter,
|
||||||
|
GtkTreePath * path)
|
||||||
|
{
|
||||||
|
GtkTreeModel * model;
|
||||||
|
GtkTreeIter p;
|
||||||
|
|
||||||
|
model = gtk_icon_view_get_model(GTK_ICON_VIEW(settings->view));
|
||||||
|
if(gtk_tree_model_get_iter(model, iter, path) == FALSE)
|
||||||
|
return FALSE;
|
||||||
|
gtk_tree_model_sort_convert_iter_to_child_iter(GTK_TREE_MODEL_SORT(
|
||||||
|
model), &p, iter);
|
||||||
|
model = gtk_tree_model_sort_get_model(GTK_TREE_MODEL_SORT(model));
|
||||||
|
gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(
|
||||||
|
model), iter, &p);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* settings_get_model */
|
/* settings_get_model */
|
||||||
static GtkTreeModel * _settings_get_model(Settings * settings)
|
static GtkTreeModel * _settings_get_model(Settings * settings)
|
||||||
{
|
{
|
||||||
GtkTreeModel * model;
|
GtkTreeModel * model;
|
||||||
|
|
||||||
model = gtk_icon_view_get_model(GTK_ICON_VIEW(settings->view));
|
model = gtk_icon_view_get_model(GTK_ICON_VIEW(settings->view));
|
||||||
|
model = gtk_tree_model_sort_get_model(GTK_TREE_MODEL_SORT(model));
|
||||||
return gtk_tree_model_filter_get_model(GTK_TREE_MODEL_FILTER(model));
|
return gtk_tree_model_filter_get_model(GTK_TREE_MODEL_FILTER(model));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user