+static void clear_task_panel()
+{
+ GtkTextBuffer *buf;
+
+ gtk_widget_set_sensitive(w_tasksave_btn, 0);
+ gtk_widget_set_sensitive(w_taskdone_btn, 0);
+
+ buf = gtk_text_view_get_buffer(w_note);
+ gtk_text_buffer_set_text(buf, "", 0);
+ gtk_widget_set_sensitive(GTK_WIDGET(w_note), 0);
+
+ gtk_entry_set_text(w_description, "");
+ gtk_widget_set_sensitive(GTK_WIDGET(w_description), 0);
+
+ gtk_entry_set_text(w_project, "");
+ gtk_widget_set_sensitive(GTK_WIDGET(w_project), 0);
+
+ gtk_combo_box_set_active(w_priority, 0);
+ gtk_widget_set_sensitive(GTK_WIDGET(w_priority), 0);
+}
+
+static void refresh()
+{
+ GtkWidget *dialog;
+ GtkTreeModel *model;
+ struct task **tasks_cur;
+ struct task *task;
+ int i;
+ GtkTreeIter iter;
+ int status;
+ const char *project;
+
+ log_debug("refresh");
+ clear_task_panel();
+
+ status = gtk_combo_box_get_active(w_status);
+ log_debug("status: %d", status);
+
+ if (tasks)
+ tw_task_list_free(tasks);
+
+ switch (status) {
+ case 0:
+ tasks = tw_get_all_tasks("pending");
+ break;
+ case 1:
+ tasks = tw_get_all_tasks("completed");
+ break;
+ default:
+ tasks = tw_get_all_tasks("pending");
+ }
+
+ model = gtk_tree_view_get_model(GTK_TREE_VIEW(w_treeview));
+ gtk_list_store_clear(GTK_LIST_STORE(model));
+
+ if (tasks) {
+ for (tasks_cur = tasks, i = 0; *tasks_cur; tasks_cur++, i++) {
+ task = (*tasks_cur);
+
+ gtk_list_store_append(GTK_LIST_STORE(model), &iter);
+
+ if (task->project)
+ project = task->project;
+ else
+ project = "";
+
+ gtk_list_store_set(GTK_LIST_STORE(model),
+ &iter,
+ COL_ID, (*tasks_cur)->id,
+ COL_DESCRIPTION,
+ (*tasks_cur)->description,
+ COL_PROJECT, project,
+ COL_UUID, (*tasks_cur)->uuid,
+ COL_PRIORITY, (*tasks_cur)->priority,
+ -1);
+ }
+ } else {
+ dialog = gtk_message_dialog_new(NULL,
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_ERROR,
+ GTK_BUTTONS_CLOSE,
+ _("Error loading tasks, verify "
+ "that a supported version of "
+ "taskwarrior is installed "));
+ gtk_dialog_run(GTK_DIALOG(dialog));
+ gtk_widget_destroy(dialog);
+ }
+ log_debug("refresh done");