X-Git-Url: http://git.wpitchoune.net/gitweb/?a=blobdiff_plain;f=src%2Fui_projecttree.c;h=d249b29e9f282ce54cb72d511f6d90a31dd4ae30;hb=71d1d4d6f67700c58fb51513ec0ae17924431073;hp=32e8a3b6ce43ce71fce68d5e462251603bb713eb;hpb=8a8ea8604707b51f52e9791a7d601ac3f563f07b;p=ptask.git diff --git a/src/ui_projecttree.c b/src/ui_projecttree.c index 32e8a3b..d249b29 100644 --- a/src/ui_projecttree.c +++ b/src/ui_projecttree.c @@ -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() @@ -43,7 +63,7 @@ const char *ui_projecttree_get_project() GtkTreeModel *model; GValue value = {0,}; const char *prj; - + log_fct_enter(); gtk_tree_view_get_cursor(w_treeview, &path, &cols); @@ -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);