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 - - - True - False - <span foreground='#000000' background='#aed581'> </span> Starting task - True - - - False - True - 0 - - - - - True - False - <span foreground='#000000' background='#fff176'> </span> Changing task - True - - - False - True - 1 - - - - - True - False - <span foreground='#000000' background='#e57373'> </span> Terminating task - True - - - 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. */