Imported Upstream version 0.0.7
[ptask-pkg-ubuntu.git] / src / ui_taskpanel.c
index 5edaa54..9787415 100644 (file)
@@ -32,6 +32,7 @@ static GtkButton *w_tasksave_btn;
 static GtkButton *w_taskremove_btn;
 static GtkButton *w_taskdone_btn;
 static GtkButton *w_taskcancel_btn;
 static GtkButton *w_taskremove_btn;
 static GtkButton *w_taskdone_btn;
 static GtkButton *w_taskcancel_btn;
+static GtkLabel *w_tasktags;
 
 static struct task *current_task;
 
 
 static struct task *current_task;
 
@@ -41,7 +42,19 @@ static void enable(int enable)
 
        gtk_widget_set_sensitive(GTK_WIDGET(w_tasksave_btn), enable);
        gtk_widget_set_sensitive(GTK_WIDGET(w_taskdone_btn), enable);
 
        gtk_widget_set_sensitive(GTK_WIDGET(w_tasksave_btn), enable);
        gtk_widget_set_sensitive(GTK_WIDGET(w_taskdone_btn), enable);
-       gtk_widget_set_sensitive(GTK_WIDGET(w_taskremove_btn), enable);
+
+       if (current_task && current_task->recur) {
+               gtk_widget_set_sensitive(GTK_WIDGET(w_taskremove_btn), FALSE);
+               gtk_widget_set_tooltip_text
+                       (GTK_WIDGET(w_taskremove_btn),
+                        "The removal of recurrent tasks is not supported due "
+                        "to the taskwarrior bug TW-638");
+               gtk_widget_set_has_tooltip(GTK_WIDGET(w_taskremove_btn), TRUE);
+       } else {
+               gtk_widget_set_sensitive(GTK_WIDGET(w_taskremove_btn), enable);
+               gtk_widget_set_has_tooltip(GTK_WIDGET(w_taskremove_btn), FALSE);
+       }
+
        gtk_widget_set_sensitive(GTK_WIDGET(w_taskcancel_btn), enable);
 
        buf = gtk_text_view_get_buffer(w_note);
        gtk_widget_set_sensitive(GTK_WIDGET(w_taskcancel_btn), enable);
 
        buf = gtk_text_view_get_buffer(w_note);
@@ -58,6 +71,9 @@ static void enable(int enable)
        gtk_widget_set_sensitive(GTK_WIDGET(w_project), enable);
 
        if (!enable)
        gtk_widget_set_sensitive(GTK_WIDGET(w_project), enable);
 
        if (!enable)
+               gtk_label_set_label(w_tasktags, "");
+
+       if (!enable)
                gtk_combo_box_set_active(w_priority, 0);
        gtk_widget_set_sensitive(GTK_WIDGET(w_priority), enable);
 }
                gtk_combo_box_set_active(w_priority, 0);
        gtk_widget_set_sensitive(GTK_WIDGET(w_priority), enable);
 }
@@ -126,7 +142,7 @@ void ui_taskpanel_init(GtkBuilder *builder)
        log_fct("ENTER");
 
        w_note = GTK_TEXT_VIEW(gtk_builder_get_object(builder, "tasknote"));
        log_fct("ENTER");
 
        w_note = GTK_TEXT_VIEW(gtk_builder_get_object(builder, "tasknote"));
-
+       w_tasktags = GTK_LABEL(gtk_builder_get_object(builder, "tasktags"));
        w_description = GTK_ENTRY(gtk_builder_get_object(builder,
                                                         "taskdescription"));
        w_project = GTK_ENTRY(gtk_builder_get_object(builder, "taskproject"));
        w_description = GTK_ENTRY(gtk_builder_get_object(builder,
                                                         "taskdescription"));
        w_project = GTK_ENTRY(gtk_builder_get_object(builder, "taskproject"));
@@ -171,6 +187,8 @@ void ui_taskpanel_update(struct task *task)
 {
        GtkTextBuffer *buf;
        int priority;
 {
        GtkTextBuffer *buf;
        int priority;
+       char **tags;
+       gchar *tmp, *gtags;
 
        if (task) {
                current_task = task;
 
        if (task) {
                current_task = task;
@@ -193,6 +211,27 @@ void ui_taskpanel_update(struct task *task)
                priority = priority_to_int(task->priority);
                gtk_combo_box_set_active(w_priority, priority);
 
                priority = priority_to_int(task->priority);
                gtk_combo_box_set_active(w_priority, priority);
 
+               tags = task->tags;
+               gtags = NULL;
+               if (tags) {
+                       while (*tags) {
+                               if (gtags) {
+                                       tmp = g_strconcat(gtags,
+                                                         " ",
+                                                         *tags,
+                                                         NULL);
+                                       g_free(gtags);
+                                       gtags = tmp;
+                               } else {
+                                       gtags = g_strdup(*tags);
+                               }
+                               tags++;
+                       }
+                       gtk_label_set_label(w_tasktags, gtags);
+               } else {
+                       gtk_label_set_label(w_tasktags, "");
+               }
+
                enable(1);
        } else {
                current_task = NULL;
                enable(1);
        } else {
                current_task = NULL;