diff --git a/src/process-window.c b/src/process-window.c
index b68527e..2971395 100644
--- a/src/process-window.c
+++ b/src/process-window.c
@@ -385,6 +385,42 @@ xtm_process_window_init (XtmProcessWindow *window)
g_signal_connect (G_OBJECT(window->filter_entry), "changed", G_CALLBACK(filter_entry_keyrelease_handler), window->treeview);
gtk_widget_set_tooltip_text (window->filter_entry, _("Filter on process name"));
gtk_widget_grab_focus (window->filter_entry);
+
+ {
+ const gchar *const captions[] = { _("Starting task"), _("Changing task"), _("Terminating task") };
+ const gchar *styles =
+ ".a,.b,.c{border-radius:50%}"
+ ".a{background-color:" XTM_LEGEND_COLOR_STARTING "}"
+ ".b{background-color:" XTM_LEGEND_COLOR_CHANGING "}"
+ ".c{background-color:" XTM_LEGEND_COLOR_TERMINATING "}";
+ const gchar *const classes[] = { "a", "b", "c" };
+ GtkWidget *hbox_legend = GTK_WIDGET (gtk_builder_get_object (window->builder, "legend"));
+ GtkCssProvider *provider = gtk_css_provider_new ();
+
+ gtk_style_context_add_provider_for_screen (gdk_screen_get_default (),
+ GTK_STYLE_PROVIDER (provider),
+ GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
+ gtk_css_provider_load_from_data (provider, styles, -1, NULL);
+ g_object_unref (provider);
+
+ for (guint i = 0; i < G_N_ELEMENTS (captions); ++i)
+ {
+ GtkWidget *hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 4);
+
+ GtkWidget *label = gtk_label_new (NULL);
+ gtk_widget_set_size_request (label, 16, 16);
+ gtk_style_context_add_class (gtk_widget_get_style_context (label), classes[i]);
+ gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
+
+ label = gtk_label_new (captions[i]);
+ gtk_label_set_xalign (GTK_LABEL (label), 0.0);
+ gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
+
+ gtk_box_pack_start (GTK_BOX (hbox_legend), hbox, FALSE, FALSE, 0);
+ }
+
+ gtk_widget_show_all (hbox_legend);
+ }
}
static void
diff --git a/src/process-window.ui b/src/process-window.ui
index 38f54b6..801c3d9 100644
--- a/src/process-window.ui
+++ b/src/process-window.ui
@@ -242,45 +242,6 @@
6
6
18
-
-
-
- False
- True
- 0
-
-
-
-
-
- False
- True
- 1
-
-
-
-
-
- False
- True
- 2
-
-
False
diff --git a/src/task-manager.c b/src/task-manager.c
index 0e91602..b6bdbcd 100644
--- a/src/task-manager.c
+++ b/src/task-manager.c
@@ -220,8 +220,8 @@ model_mark_tree_iter_as_removed (GtkTreeModel *model, GtkTreeIter *iter, glong t
gtk_list_store_set (GTK_LIST_STORE (model), iter,
XTM_PTV_COLUMN_CPU, 0.0,
XTM_PTV_COLUMN_CPU_STR, "-",
- XTM_PTV_COLUMN_BACKGROUND, "#e57373",
- XTM_PTV_COLUMN_FOREGROUND, "#000000",
+ XTM_PTV_COLUMN_BACKGROUND, XTM_LEGEND_COLOR_TERMINATING,
+ XTM_PTV_COLUMN_FOREGROUND, XTM_LEGEND_COLOR_NONE,
XTM_PTV_COLUMN_TIMESTAMP, timestamp,
-1);
}
@@ -287,16 +287,16 @@ model_update_tree_iter (XtmTaskManager *manager, GtkTreeIter *iter, glong timest
/* Set yellow color for changing state */
g_free (background);
g_free (foreground);
- background = g_strdup ("#fff176");
- foreground = g_strdup ("#000000");
+ background = g_strdup (XTM_LEGEND_COLOR_CHANGING);
+ foreground = g_strdup (XTM_LEGEND_COLOR_NONE);
old_timestamp = timestamp - TIMESTAMP_DELTA + 3;
}
if (timestamp != 0 && (timestamp - old_timestamp) <= TIMESTAMP_DELTA)
{
/* Set green color for started task */
- background = (background == NULL) ? g_strdup ("#aed581") : background;
- foreground = (foreground == NULL) ? g_strdup ("#000000") : foreground;
+ background = (background == NULL) ? g_strdup (XTM_LEGEND_COLOR_STARTING) : background;
+ foreground = (foreground == NULL) ? g_strdup (XTM_LEGEND_COLOR_NONE) : foreground;
}
else
{
diff --git a/src/task-manager.h b/src/task-manager.h
index 7b8e9f4..5f4d92b 100644
--- a/src/task-manager.h
+++ b/src/task-manager.h
@@ -17,6 +17,14 @@
#include
#include
+/**
+ * Legend colors
+ */
+#define XTM_LEGEND_COLOR_NONE "#000000"
+#define XTM_LEGEND_COLOR_STARTING "#aed581"
+#define XTM_LEGEND_COLOR_CHANGING "#fff176"
+#define XTM_LEGEND_COLOR_TERMINATING "#e57373"
+
/**
* Task struct used as elements of a task list GArray.
*/