X-Git-Url: https://git.wpitchoune.net/gitweb/?a=blobdiff_plain;f=src%2Fui_projecttree.c;h=1bade0d532779b39e750cde4be0ae654fcccb01b;hb=64d52e239f715717646357783d01ff8650dbdb2d;hp=c8e30ae1e867daa4854aab5569ca60eb67f21d04;hpb=64a9321768ac92a2b03c503f2c34d0cbfeea0fa7;p=ptask.git diff --git a/src/ui_projecttree.c b/src/ui_projecttree.c index c8e30ae..1bade0d 100644 --- a/src/ui_projecttree.c +++ b/src/ui_projecttree.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012-2013 jeanfi@gmail.com + * Copyright (C) 2012-2016 jeanfi@gmail.com * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as @@ -17,10 +17,12 @@ * 02110-1301 USA */ #include +#include #include #include #include +#include enum { COL_NAME, @@ -29,10 +31,28 @@ enum { static GtkTreeView *w_treeview; +static int cursor_changed_cbk(GtkTreeView *treeview, gpointer data) +{ + const char *prj; + + log_fct_enter(); + + prj = ui_projecttree_get_project(); + + ui_tasktree_update_filter(prj); + + log_fct_exit(); + + return FALSE; +} + void ui_projecttree_init(GtkBuilder *builder) { w_treeview = GTK_TREE_VIEW(gtk_builder_get_object(builder, "projecttree")); + g_signal_connect(w_treeview, + "cursor-changed", (GCallback)cursor_changed_cbk, + NULL); } const char *ui_projecttree_get_project() @@ -54,6 +74,9 @@ const char *ui_projecttree_get_project() gtk_tree_model_get_value(model, &iter, COL_NAME, &value); prj = g_value_get_string(&value); + + if (!strcmp(prj, "ALL")) + prj = NULL; } else { prj = NULL; } @@ -69,10 +92,15 @@ void ui_projecttree_update(struct task **ts) struct project **prjs, **cur; GtkTreeModel *model; GtkTreeIter iter; + GtkTreePath *p; + const char *current_prj; log_fct_enter(); model = gtk_tree_view_get_model(GTK_TREE_VIEW(w_treeview)); + + current_prj = ui_projecttree_get_project(); + gtk_list_store_clear(GTK_LIST_STORE(model)); prjs = tw_get_projects(ts); @@ -84,6 +112,18 @@ void ui_projecttree_update(struct task **ts) COL_NAME, (*cur)->name, COL_COUNT, (*cur)->count, -1); + + if (current_prj) { + if (!strcmp((*cur)->name, current_prj)) { + p = gtk_tree_model_get_path(model, &iter); + if (p) { + gtk_tree_view_set_cursor(w_treeview, + p, + NULL, + FALSE); + } + } + } } tw_project_list_free(prjs);