[gnome-software] Show a category key color on the overview page



commit 61a889797ce59ad6426cd1b739e01169cf7eb1a6
Author: Richard Hughes <richard hughsie com>
Date:   Tue May 31 13:55:25 2016 +0100

    Show a category key color on the overview page

 src/gs-app-tile.c                            |    4 +-
 src/gs-category-tile.c                       |   17 ++
 src/gs-category.c                            |   35 +++
 src/gs-category.h                            |    4 +
 src/gs-common.c                              |   73 ++++--
 src/gs-common.h                              |    4 +-
 src/gs-feature-tile.c                        |    4 +-
 src/gs-popular-tile.c                        |    4 +-
 src/gs-upgrade-banner.c                      |    4 +-
 src/plugins/gs-plugin-menu-spec-categories.c |   10 +-
 src/plugins/gs-plugin-menu-spec-refine.c     |    6 +-
 src/plugins/menu-spec-common.c               |  354 +++++++++++++-------------
 src/plugins/menu-spec-common.h               |    3 +-
 13 files changed, 305 insertions(+), 217 deletions(-)
---
diff --git a/src/gs-app-tile.c b/src/gs-app-tile.c
index 091e643..4841c22 100644
--- a/src/gs-app-tile.c
+++ b/src/gs-app-tile.c
@@ -154,8 +154,8 @@ gs_app_tile_set_app (GsAppTile *tile, GsApp *app)
        gtk_label_set_label (GTK_LABEL (tile->name), gs_app_get_name (app));
 
        /* perhaps set custom css */
-       gs_utils_widget_set_custom_css (app, GTK_WIDGET (tile),
-                                       "GnomeSoftware::AppTile-css");
+       gs_utils_widget_set_css_app (app, GTK_WIDGET (tile),
+                                    "GnomeSoftware::AppTile-css");
 
        /* some kinds have boring summaries */
        switch (gs_app_get_kind (app)) {
diff --git a/src/gs-category-tile.c b/src/gs-category-tile.c
index 9a916e2..85ff8fd 100644
--- a/src/gs-category-tile.c
+++ b/src/gs-category-tile.c
@@ -25,6 +25,7 @@
 #include <gtk/gtk.h>
 
 #include "gs-category-tile.h"
+#include "gs-common.h"
 
 struct _GsCategoryTile
 {
@@ -48,6 +49,8 @@ gs_category_tile_get_category (GsCategoryTile *tile)
 void
 gs_category_tile_set_category (GsCategoryTile *tile, GsCategory *cat)
 {
+       GPtrArray *key_colors;
+
        g_return_if_fail (GS_IS_CATEGORY_TILE (tile));
        g_return_if_fail (GS_IS_CATEGORY (cat));
 
@@ -58,6 +61,20 @@ gs_category_tile_set_category (GsCategoryTile *tile, GsCategory *cat)
        gtk_image_set_from_icon_name (GTK_IMAGE (tile->image),
                                      gs_category_get_icon (cat),
                                      GTK_ICON_SIZE_MENU);
+
+       /* set custom CSS */
+       key_colors = gs_category_get_key_colors (cat);
+       if (key_colors->len > 0) {
+               GdkRGBA *tmp = g_ptr_array_index (key_colors, 0);
+               g_autofree gchar *css = NULL;
+               css = g_strdup_printf ("border-bottom: 3px solid "
+                                      "rgba(%.0f,%.0f,%.0f,%.2f);",
+                                      tmp->red * 255,
+                                      tmp->green * 255,
+                                      tmp->blue * 255,
+                                      tmp->alpha);
+               gs_utils_widget_set_css_simple (GTK_WIDGET (tile), css);
+       }
 }
 
 static void
diff --git a/src/gs-category.c b/src/gs-category.c
index 800101f..e1069fd 100644
--- a/src/gs-category.c
+++ b/src/gs-category.c
@@ -41,6 +41,7 @@ struct _GsCategory
        gchar           *id;
        gchar           *name;
        gchar           *icon;
+       GPtrArray       *key_colors;
        GsCategory      *parent;
        guint            size;
        GPtrArray       *children;
@@ -204,6 +205,38 @@ gs_category_set_icon (GsCategory *category, const gchar *icon)
 }
 
 /**
+ * gs_category_get_key_colors:
+ * @category: a #GsCategory
+ *
+ * Gets the list of key colors for the category.
+ *
+ * Returns: (element-type GdkRGBA) (transfer none): An array
+ **/
+GPtrArray *
+gs_category_get_key_colors (GsCategory *category)
+{
+       g_return_val_if_fail (GS_IS_CATEGORY (category), NULL);
+       return category->key_colors;
+}
+
+/**
+ * gs_category_add_key_color:
+ * @category: a #GsCategory
+ * @key_color: a #GdkRGBA
+ *
+ * Adds a key color to the category icon.
+ *
+ * Returns: the string, or %NULL
+ **/
+void
+gs_category_add_key_color (GsCategory *category, const GdkRGBA *key_color)
+{
+       g_return_if_fail (GS_IS_CATEGORY (category));
+       g_return_if_fail (key_color != NULL);
+       g_ptr_array_add (category->key_colors, gdk_rgba_copy (key_color));
+}
+
+/**
  * gs_category_find_child:
  * @category: a #GsCategory
  * @id: a category ID, e.g. "other"
@@ -332,6 +365,7 @@ gs_category_finalize (GObject *object)
                g_object_remove_weak_pointer (G_OBJECT (category->parent),
                                              (gpointer *) &category->parent);
        g_ptr_array_unref (category->children);
+       g_ptr_array_unref (category->key_colors);
        g_free (category->id);
        g_free (category->name);
        g_free (category->icon);
@@ -350,6 +384,7 @@ static void
 gs_category_init (GsCategory *category)
 {
        category->children = g_ptr_array_new_with_free_func ((GDestroyNotify) g_object_unref);
+       category->key_colors = g_ptr_array_new_with_free_func ((GDestroyNotify) gdk_rgba_free);
 }
 
 /**
diff --git a/src/gs-category.h b/src/gs-category.h
index 455bd13..2a1ea23 100644
--- a/src/gs-category.h
+++ b/src/gs-category.h
@@ -24,6 +24,7 @@
 #define __GS_CATEGORY_H
 
 #include <glib-object.h>
+#include <gdk/gdk.h>
 
 G_BEGIN_DECLS
 
@@ -41,6 +42,9 @@ void           gs_category_set_name           (GsCategory     *category,
 const gchar    *gs_category_get_icon           (GsCategory     *category);
 void            gs_category_set_icon           (GsCategory     *category,
                                                 const gchar    *icon);
+GPtrArray      *gs_category_get_key_colors     (GsCategory     *category);
+void            gs_category_add_key_color      (GsCategory     *category,
+                                                const GdkRGBA  *key_color);
 
 GsCategory     *gs_category_find_child         (GsCategory     *category,
                                                 const gchar    *id);
diff --git a/src/gs-common.c b/src/gs-common.c
index 29a6673..c64aa68 100644
--- a/src/gs-common.c
+++ b/src/gs-common.c
@@ -644,20 +644,65 @@ gs_utils_widget_css_parsing_error_cb (GtkCssProvider *provider,
                   error->message);
 }
 
+static void
+gs_utils_widget_set_css_internal (GtkWidget *widget,
+                                 const gchar *class_name,
+                                 const gchar *css)
+{
+       GtkStyleContext *context;
+       g_autoptr(GtkCssProvider) provider = NULL;
+
+       g_debug ("using custom CSS %s", css);
+
+       /* set the custom CSS class */
+       context = gtk_widget_get_style_context (widget);
+       gtk_style_context_add_class (context, class_name);
+
+       /* set up custom provider and store on the widget */
+       provider = gtk_css_provider_new ();
+       g_signal_connect (provider, "parsing-error",
+                         G_CALLBACK (gs_utils_widget_css_parsing_error_cb), NULL);
+       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, css, -1, NULL);
+       g_object_set_data_full (G_OBJECT (widget),
+                               "GnomeSoftware::provider",
+                               g_object_ref (provider),
+                               g_object_unref);
+}
+
 /**
- * gs_utils_widget_set_custom_css:
+ * gs_utils_widget_set_css_simple:
  **/
 void
-gs_utils_widget_set_custom_css (GsApp *app, GtkWidget *widget, const gchar *metadata_css)
+gs_utils_widget_set_css_simple (GtkWidget *widget, const gchar *css)
+{
+       g_autofree gchar *class_name = NULL;
+       GString *str = g_string_sized_new (1024);
+
+       class_name = g_strdup_printf ("themed-widget_%p", widget);
+       g_string_append_printf (str, ".%s {\n", class_name);
+       g_string_append_printf (str, "%s\n", css);
+       g_string_append (str, "}");
+
+       gs_utils_widget_set_css_internal (widget, class_name, str->str);
+}
+
+/**
+ * gs_utils_widget_set_css_app:
+ **/
+void
+gs_utils_widget_set_css_app (GsApp *app,
+                            GtkWidget *widget,
+                            const gchar *metadata_css)
 {
        GPtrArray *key_colors;
        GString *str = g_string_sized_new (1024);
-       GtkStyleContext *context;
        const gchar *css;
        guint i;
        g_autofree gchar *class_name = NULL;
        g_autoptr(GString) css_str = NULL;
-       g_autoptr(GtkCssProvider) provider = NULL;
 
        g_return_if_fail (GS_IS_APP (app));
 
@@ -690,25 +735,7 @@ gs_utils_widget_set_custom_css (GsApp *app, GtkWidget *widget, const gchar *meta
        g_string_append_printf (str, ".%s:hover {\n", class_name);
        g_string_append (str, "  opacity: 0.9;\n");
        g_string_append (str, "}\n");
-
-       g_debug ("using custom CSS %s", str->str);
-
-       /* set the custom CSS class */
-       context = gtk_widget_get_style_context (widget);
-       gtk_style_context_add_class (context, class_name);
-
-       /* set up custom provider and store on the widget */
-       provider = gtk_css_provider_new ();
-       g_signal_connect (provider, "parsing-error",
-                         G_CALLBACK (gs_utils_widget_css_parsing_error_cb), NULL);
-       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, str->str, -1, NULL);
-       g_object_set_data_full (G_OBJECT (widget),
-                               "GnomeSoftware::provider",
-                               g_object_ref (provider),
-                               g_object_unref);
+       gs_utils_widget_set_css_internal (widget, class_name, str->str);
 }
 
 const gchar *
diff --git a/src/gs-common.h b/src/gs-common.h
index 448c919..43dff11 100644
--- a/src/gs-common.h
+++ b/src/gs-common.h
@@ -56,9 +56,11 @@ const gchar  *gs_utils_get_content_rating    (void);
 
 const gchar    *gs_user_agent                  (void);
 gboolean        gs_utils_is_current_desktop    (const gchar    *name);
-void            gs_utils_widget_set_custom_css (GsApp          *app,
+void            gs_utils_widget_set_css_app    (GsApp          *app,
                                                 GtkWidget      *widget,
                                                 const gchar    *metadata_css);
+void            gs_utils_widget_set_css_simple (GtkWidget      *widget,
+                                                const gchar    *css);
 gboolean        gs_utils_strv_fnmatch          (gchar          **strv,
                                                 const gchar    *str);
 void            gs_utils_show_error_dialog     (GtkWindow      *parent,
diff --git a/src/gs-feature-tile.c b/src/gs-feature-tile.c
index cba49e4..80a490d 100644
--- a/src/gs-feature-tile.c
+++ b/src/gs-feature-tile.c
@@ -113,8 +113,8 @@ gs_feature_tile_set_app (GsFeatureTile *tile, GsApp *app)
        gtk_label_set_label (GTK_LABEL (tile->subtitle), gs_app_get_summary (app));
 
        /* perhaps set custom css */
-       gs_utils_widget_set_custom_css (app, GTK_WIDGET (tile),
-                                       "GnomeSoftware::FeatureTile-css");
+       gs_utils_widget_set_css_app (app, GTK_WIDGET (tile),
+                                    "GnomeSoftware::FeatureTile-css");
 }
 
 static void
diff --git a/src/gs-popular-tile.c b/src/gs-popular-tile.c
index cec0bc9..5a5e893 100644
--- a/src/gs-popular-tile.c
+++ b/src/gs-popular-tile.c
@@ -127,8 +127,8 @@ gs_popular_tile_set_app (GsPopularTile *tile, GsApp *app)
        app_state_changed (tile->app, NULL, tile);
 
        /* perhaps set custom css */
-       gs_utils_widget_set_custom_css (app, GTK_WIDGET (tile),
-                                       "GnomeSoftware::PopularTile-css");
+       gs_utils_widget_set_css_app (app, GTK_WIDGET (tile),
+                                    "GnomeSoftware::PopularTile-css");
 
        gs_image_set_from_pixbuf (GTK_IMAGE (tile->image), gs_app_get_pixbuf (tile->app));
 
diff --git a/src/gs-upgrade-banner.c b/src/gs-upgrade-banner.c
index 699c6a9..41572f2 100644
--- a/src/gs-upgrade-banner.c
+++ b/src/gs-upgrade-banner.c
@@ -227,8 +227,8 @@ gs_upgrade_banner_set_app (GsUpgradeBanner *self, GsApp *app)
                          G_CALLBACK (app_progress_changed), self);
 
        /* perhaps set custom css */
-       gs_utils_widget_set_custom_css (app, priv->box_upgrades,
-                                       "GnomeSoftware::UpgradeBanner-css");
+       gs_utils_widget_set_css_app (app, priv->box_upgrades,
+                                    "GnomeSoftware::UpgradeBanner-css");
 
        gs_upgrade_banner_refresh (self);
 }
diff --git a/src/plugins/gs-plugin-menu-spec-categories.c b/src/plugins/gs-plugin-menu-spec-categories.c
index 133eaf8..0e2bd06 100644
--- a/src/plugins/gs-plugin-menu-spec-categories.c
+++ b/src/plugins/gs-plugin-menu-spec-categories.c
@@ -48,19 +48,21 @@ gs_plugin_add_categories (GsPlugin *plugin,
        for (i = 0; msdata[i].path != NULL; i++) {
                tmp = g_strstr_len (msdata[i].path, -1, "::");
                if (tmp == NULL) {
+                       GdkRGBA key_color;
                        category = gs_category_new (msdata[i].path);
                        gs_category_set_icon (category, msdata[i].icon);
-                       gs_category_set_name (category, gettext (msdata[i].text));
+                       gs_category_set_name (category, gettext (msdata[i].name));
+                       if (gdk_rgba_parse (&key_color, msdata[i].key_colors))
+                               gs_category_add_key_color (category, &key_color);
                        g_ptr_array_add (list, category);
-                       g_snprintf (msgctxt, 100, "Menu subcategory of %s", msdata[i].text);
+                       g_snprintf (msgctxt, 100, "Menu subcategory of %s", msdata[i].name);
                } else {
                        g_autoptr(GsCategory) sub = gs_category_new (tmp + 2);
                        gs_category_set_name (sub, g_dpgettext2 (GETTEXT_PACKAGE,
                                                                 msgctxt,
-                                                                msdata[i].text));
+                                                                msdata[i].name));
                        gs_category_add_child (category, sub);
                }
        }
-
        return TRUE;
 }
diff --git a/src/plugins/gs-plugin-menu-spec-refine.c b/src/plugins/gs-plugin-menu-spec-refine.c
index 6db6c6f..d120f43 100644
--- a/src/plugins/gs-plugin-menu-spec-refine.c
+++ b/src/plugins/gs-plugin-menu-spec-refine.c
@@ -62,14 +62,14 @@ gs_plugin_refine_app_category (GsPlugin *plugin,
                ret = gs_app_has_category (app, tmp + 2);
                if (ret) {
                        g_autofree gchar *msgctxt = NULL;
-                       msgctxt = g_strdup_printf ("Menu subcategory of %s", cat->text);
-                       menu_path[1] = g_dpgettext2 (GETTEXT_PACKAGE, msgctxt, msdata[i].text);
+                       msgctxt = g_strdup_printf ("Menu subcategory of %s", cat->name);
+                       menu_path[1] = g_dpgettext2 (GETTEXT_PACKAGE, msgctxt, msdata[i].name);
                        break;
                }
        }
 
        /* the top-level category always exists */
-       menu_path[0] = gettext (cat->text);
+       menu_path[0] = gettext (cat->name);
        gs_app_set_menu_path (app, (gchar **) menu_path);
 }
 
diff --git a/src/plugins/menu-spec-common.c b/src/plugins/menu-spec-common.c
index 1010f0c..3b3f774 100644
--- a/src/plugins/menu-spec-common.c
+++ b/src/plugins/menu-spec-common.c
@@ -27,194 +27,194 @@
 
 static const MenuSpecData msdata[] = {
        /* TRANSLATORS: this is the menu spec main category for Audio */
-       { "Audio",                              "folder-music-symbolic", N_("Audio") },
-       { "Audio::AudioVideoEditing",           NULL, NC_("Menu subcategory of Audio", "Editing") },
-       { "Audio::Database",                    NULL, NC_("Menu subcategory of Audio", "Databases") },
-       { "Audio::DiscBurning",                 NULL, NC_("Menu subcategory of Audio", "Disc Burning") },
-       { "Audio::HamRadio",                    NULL, NC_("Menu subcategory of Audio", "Ham Radio") },
-       { "Audio::Midi",                        NULL, NC_("Menu subcategory of Audio", "MIDI") },
-       { "Audio::Mixer",                       NULL, NC_("Menu subcategory of Audio", "Mixer") },
-       { "Audio::Music",                       NULL, NC_("Menu subcategory of Audio", "Music") },
-       { "Audio::Player",                      NULL, NC_("Menu subcategory of Audio", "Players") },
-       { "Audio::Recorder",                    NULL, NC_("Menu subcategory of Audio", "Recorders") },
-       { "Audio::Sequencer",                   NULL, NC_("Menu subcategory of Audio", "Sequencers") },
-       { "Audio::Tuner",                       NULL, NC_("Menu subcategory of Audio", "Tuners") },
+       { "Audio",                              N_("Audio"), "folder-music-symbolic", "#cc29ae" },
+       { "Audio::AudioVideoEditing",           NC_("Menu subcategory of Audio", "Editing") },
+       { "Audio::Database",                    NC_("Menu subcategory of Audio", "Databases") },
+       { "Audio::DiscBurning",                 NC_("Menu subcategory of Audio", "Disc Burning") },
+       { "Audio::HamRadio",                    NC_("Menu subcategory of Audio", "Ham Radio") },
+       { "Audio::Midi",                        NC_("Menu subcategory of Audio", "MIDI") },
+       { "Audio::Mixer",                       NC_("Menu subcategory of Audio", "Mixer") },
+       { "Audio::Music",                       NC_("Menu subcategory of Audio", "Music") },
+       { "Audio::Player",                      NC_("Menu subcategory of Audio", "Players") },
+       { "Audio::Recorder",                    NC_("Menu subcategory of Audio", "Recorders") },
+       { "Audio::Sequencer",                   NC_("Menu subcategory of Audio", "Sequencers") },
+       { "Audio::Tuner",                       NC_("Menu subcategory of Audio", "Tuners") },
        /* TRANSLATORS: this is the menu spec main category for Development */
-       { "Development",                        "applications-engineering-symbolic", N_("Development Tools") 
},
-       { "Development::Building",              NULL, NC_("Menu subcategory of Development Tools", 
"Building") },
-       { "Development::Database",              NULL, NC_("Menu subcategory of Development Tools", 
"Databases") },
-       { "Development::Debugger",              NULL, NC_("Menu subcategory of Development Tools", 
"Debuggers") },
-       { "Development::GUIDesigner",           NULL, NC_("Menu subcategory of Development Tools", "GUI 
Designers") },
-       { "Development::IDE",                   NULL, NC_("Menu subcategory of Development Tools", "IDE") },
-       { "Development::Profiling",             NULL, NC_("Menu subcategory of Development Tools", 
"Profiling") },
-       { "Development::ProjectManagement",     NULL, NC_("Menu subcategory of Development Tools", "Project 
Management") },
-       { "Development::RevisionControl",       NULL, NC_("Menu subcategory of Development Tools", "Revision 
Control") },
-       { "Development::Translation",           NULL, NC_("Menu subcategory of Development Tools", 
"Translation") },
-       { "Development::WebDevelopment",        NULL, NC_("Menu subcategory of Development Tools", "Web 
Development") },
+       { "Development",                        N_("Development Tools"), "applications-engineering-symbolic", 
"#297bcc" },
+       { "Development::Building",              NC_("Menu subcategory of Development Tools", "Building") },
+       { "Development::Database",              NC_("Menu subcategory of Development Tools", "Databases") },
+       { "Development::Debugger",              NC_("Menu subcategory of Development Tools", "Debuggers") },
+       { "Development::GUIDesigner",           NC_("Menu subcategory of Development Tools", "GUI Designers") 
},
+       { "Development::IDE",                   NC_("Menu subcategory of Development Tools", "IDE") },
+       { "Development::Profiling",             NC_("Menu subcategory of Development Tools", "Profiling") },
+       { "Development::ProjectManagement",     NC_("Menu subcategory of Development Tools", "Project 
Management") },
+       { "Development::RevisionControl",       NC_("Menu subcategory of Development Tools", "Revision 
Control") },
+       { "Development::Translation",           NC_("Menu subcategory of Development Tools", "Translation") },
+       { "Development::WebDevelopment",        NC_("Menu subcategory of Development Tools", "Web 
Development") },
        /* TRANSLATORS: this is the menu spec main category for Education */
-       { "Education",                          "system-help-symbolic", N_("Education") },
-       { "Education::Art",                     NULL, NC_("Menu subcategory of Education", "Art") },
-       { "Education::ArtificialIntelligence",  NULL, NC_("Menu subcategory of Education", "Artificial 
Intelligence") },
-       { "Education::Astronomy",               NULL, NC_("Menu subcategory of Education", "Astronomy") },
-       { "Education::Biology",                 NULL, NC_("Menu subcategory of Education", "Biology") },
-       { "Education::Chemistry",               NULL, NC_("Menu subcategory of Education", "Chemistry") },
-       { "Education::ComputerScience",         NULL, NC_("Menu subcategory of Education", "Computer 
Science") },
-       { "Education::Construction",            NULL, NC_("Menu subcategory of Education", "Construction") },
-       { "Education::DataVisualization",       NULL, NC_("Menu subcategory of Education", "Data 
Visualization") },
-       { "Education::Economy",                 NULL, NC_("Menu subcategory of Education", "Economy") },
-       { "Education::Electricity",             NULL, NC_("Menu subcategory of Education", "Electricity") },
-       { "Education::Electronics",             NULL, NC_("Menu subcategory of Education", "Electronics") },
-       { "Education::Engineering",             NULL, NC_("Menu subcategory of Education", "Engineering") },
-       { "Education::Geography",               NULL, NC_("Menu subcategory of Education", "Geography") },
-       { "Education::Geology",                 NULL, NC_("Menu subcategory of Education", "Geology") },
-       { "Education::Geoscience",              NULL, NC_("Menu subcategory of Education", "Geoscience") },
-       { "Education::History",                 NULL, NC_("Menu subcategory of Education", "History") },
-       { "Education::Humanities",              NULL, NC_("Menu subcategory of Education", "Humanities") },
-       { "Education::ImageProcessing",         NULL, NC_("Menu subcategory of Education", "Image 
Processing") },
-       { "Education::Languages",               NULL, NC_("Menu subcategory of Education", "Languages") },
-       { "Education::Literature",              NULL, NC_("Menu subcategory of Education", "Literature") },
-       { "Education::Maps",                    NULL, NC_("Menu subcategory of Education", "Maps") },
-       { "Education::Math",                    NULL, NC_("Menu subcategory of Education", "Math") },
-       { "Education::MedicalSoftware",         NULL, NC_("Menu subcategory of Education", "Medical") },
-       { "Education::Music",                   NULL, NC_("Menu subcategory of Education", "Music") },
-       { "Education::NumericalAnalysis",       NULL, NC_("Menu subcategory of Education", "Numerical 
Analysis") },
-       { "Education::ParallelComputing",       NULL, NC_("Menu subcategory of Education", "Parallel 
Computing") },
-       { "Education::Physics",                 NULL, NC_("Menu subcategory of Education", "Physics") },
-       { "Education::Robotics",                NULL, NC_("Menu subcategory of Education", "Robotics") },
-       { "Education::Spirituality",            NULL, NC_("Menu subcategory of Education", "Spirituality") },
-       { "Education::Sports",                  NULL, NC_("Menu subcategory of Education", "Sports") },
+       { "Education",                          N_("Education"), "system-help-symbolic", "#29cc5d" },
+       { "Education::Art",                     NC_("Menu subcategory of Education", "Art") },
+       { "Education::ArtificialIntelligence",  NC_("Menu subcategory of Education", "Artificial 
Intelligence") },
+       { "Education::Astronomy",               NC_("Menu subcategory of Education", "Astronomy") },
+       { "Education::Biology",                 NC_("Menu subcategory of Education", "Biology") },
+       { "Education::Chemistry",               NC_("Menu subcategory of Education", "Chemistry") },
+       { "Education::ComputerScience",         NC_("Menu subcategory of Education", "Computer Science") },
+       { "Education::Construction",            NC_("Menu subcategory of Education", "Construction") },
+       { "Education::DataVisualization",       NC_("Menu subcategory of Education", "Data Visualization") },
+       { "Education::Economy",                 NC_("Menu subcategory of Education", "Economy") },
+       { "Education::Electricity",             NC_("Menu subcategory of Education", "Electricity") },
+       { "Education::Electronics",             NC_("Menu subcategory of Education", "Electronics") },
+       { "Education::Engineering",             NC_("Menu subcategory of Education", "Engineering") },
+       { "Education::Geography",               NC_("Menu subcategory of Education", "Geography") },
+       { "Education::Geology",                 NC_("Menu subcategory of Education", "Geology") },
+       { "Education::Geoscience",              NC_("Menu subcategory of Education", "Geoscience") },
+       { "Education::History",                 NC_("Menu subcategory of Education", "History") },
+       { "Education::Humanities",              NC_("Menu subcategory of Education", "Humanities") },
+       { "Education::ImageProcessing",         NC_("Menu subcategory of Education", "Image Processing") },
+       { "Education::Languages",               NC_("Menu subcategory of Education", "Languages") },
+       { "Education::Literature",              NC_("Menu subcategory of Education", "Literature") },
+       { "Education::Maps",                    NC_("Menu subcategory of Education", "Maps") },
+       { "Education::Math",                    NC_("Menu subcategory of Education", "Math") },
+       { "Education::MedicalSoftware",         NC_("Menu subcategory of Education", "Medical") },
+       { "Education::Music",                   NC_("Menu subcategory of Education", "Music") },
+       { "Education::NumericalAnalysis",       NC_("Menu subcategory of Education", "Numerical Analysis") },
+       { "Education::ParallelComputing",       NC_("Menu subcategory of Education", "Parallel Computing") },
+       { "Education::Physics",                 NC_("Menu subcategory of Education", "Physics") },
+       { "Education::Robotics",                NC_("Menu subcategory of Education", "Robotics") },
+       { "Education::Spirituality",            NC_("Menu subcategory of Education", "Spirituality") },
+       { "Education::Sports",                  NC_("Menu subcategory of Education", "Sports") },
        /* TRANSLATORS: this is the menu spec main category for Games */
-       { "Game",                               "applications-games-symbolic", N_("Games") },
-       { "Game::ActionGame",                   NULL, NC_("Menu subcategory of Games", "Action") },
-       { "Game::AdventureGame",                NULL, NC_("Menu subcategory of Games", "Adventure") },
-       { "Game::ArcadeGame",                   NULL, NC_("Menu subcategory of Games", "Arcade") },
-       { "Game::BlocksGame",                   NULL, NC_("Menu subcategory of Games", "Blocks") },
-       { "Game::BoardGame",                    NULL, NC_("Menu subcategory of Games", "Board") },
-       { "Game::CardGame",                     NULL, NC_("Menu subcategory of Games", "Card") },
-       { "Game::Emulator",                     NULL, NC_("Menu subcategory of Games", "Emulators") },
-       { "Game::KidsGame",                     NULL, NC_("Menu subcategory of Games", "Kids") },
-       { "Game::LogicGame",                    NULL, NC_("Menu subcategory of Games", "Logic") },
-       { "Game::RolePlaying",                  NULL, NC_("Menu subcategory of Games", "Role Playing") },
-       { "Game::Shooter",                      NULL, NC_("Menu subcategory of Games", "Shooter") },
-       { "Game::Simulation",                   NULL, NC_("Menu subcategory of Games", "Simulation") },
-       { "Game::SportsGame",                   NULL, NC_("Menu subcategory of Games", "Sports") },
-       { "Game::StrategyGame",                 NULL, NC_("Menu subcategory of Games", "Strategy") },
+       { "Game",                               N_("Games"), "applications-games-symbolic", "#cc8529" },
+       { "Game::ActionGame",                   NC_("Menu subcategory of Games", "Action") },
+       { "Game::AdventureGame",                NC_("Menu subcategory of Games", "Adventure") },
+       { "Game::ArcadeGame",                   NC_("Menu subcategory of Games", "Arcade") },
+       { "Game::BlocksGame",                   NC_("Menu subcategory of Games", "Blocks") },
+       { "Game::BoardGame",                    NC_("Menu subcategory of Games", "Board") },
+       { "Game::CardGame",                     NC_("Menu subcategory of Games", "Card") },
+       { "Game::Emulator",                     NC_("Menu subcategory of Games", "Emulators") },
+       { "Game::KidsGame",                     NC_("Menu subcategory of Games", "Kids") },
+       { "Game::LogicGame",                    NC_("Menu subcategory of Games", "Logic") },
+       { "Game::RolePlaying",                  NC_("Menu subcategory of Games", "Role Playing") },
+       { "Game::Shooter",                      NC_("Menu subcategory of Games", "Shooter") },
+       { "Game::Simulation",                   NC_("Menu subcategory of Games", "Simulation") },
+       { "Game::SportsGame",                   NC_("Menu subcategory of Games", "Sports") },
+       { "Game::StrategyGame",                 NC_("Menu subcategory of Games", "Strategy") },
        /* TRANSLATORS: this is the menu spec main category for Graphics */
-       { "Graphics",                           "applications-graphics-symbolic", N_("Graphics") },
-       { "Graphics::2DGraphics",               NULL, NC_("Menu subcategory of Graphics", "2D Graphics") },
-       { "Graphics::3DGraphics",               NULL, NC_("Menu subcategory of Graphics", "3D Graphics") },
-       { "Graphics::OCR",                      NULL, NC_("Menu subcategory of Graphics", "OCR") },
-       { "Graphics::Photography",              NULL, NC_("Menu subcategory of Graphics", "Photography") },
-       { "Graphics::Publishing",               NULL, NC_("Menu subcategory of Graphics", "Publishing") },
-       { "Graphics::RasterGraphics",           NULL, NC_("Menu subcategory of Graphics", "Raster Graphics") 
},
-       { "Graphics::Scanning",                 NULL, NC_("Menu subcategory of Graphics", "Scanning") },
-       { "Graphics::VectorGraphics",           NULL, NC_("Menu subcategory of Graphics", "Vector Graphics") 
},
-       { "Graphics::Viewer",                   NULL, NC_("Menu subcategory of Graphics", "Viewer") },
+       { "Graphics",                           N_("Graphics"), "applications-graphics-symbolic", "#ccbe29" },
+       { "Graphics::2DGraphics",               NC_("Menu subcategory of Graphics", "2D Graphics") },
+       { "Graphics::3DGraphics",               NC_("Menu subcategory of Graphics", "3D Graphics") },
+       { "Graphics::OCR",                      NC_("Menu subcategory of Graphics", "OCR") },
+       { "Graphics::Photography",              NC_("Menu subcategory of Graphics", "Photography") },
+       { "Graphics::Publishing",               NC_("Menu subcategory of Graphics", "Publishing") },
+       { "Graphics::RasterGraphics",           NC_("Menu subcategory of Graphics", "Raster Graphics") },
+       { "Graphics::Scanning",                 NC_("Menu subcategory of Graphics", "Scanning") },
+       { "Graphics::VectorGraphics",           NC_("Menu subcategory of Graphics", "Vector Graphics") },
+       { "Graphics::Viewer",                   NC_("Menu subcategory of Graphics", "Viewer") },
        /* TRANSLATORS: this is the menu spec main category for Network */
-       { "Network",                            "network-wireless-symbolic", N_("Internet") },
-       { "Network::Chat",                      NULL, NC_("Menu subcategory of Internet", "Chat") },
-       { "Network::Dialup",                    NULL, NC_("Menu subcategory of Internet", "Dialup") },
-       { "Network::Email",                     NULL, NC_("Menu subcategory of Internet", "Email") },
-       { "Network::Feed",                      NULL, NC_("Menu subcategory of Internet", "Feed") },
-       { "Network::FileTransfer",              NULL, NC_("Menu subcategory of Internet", "File Transfer") },
-       { "Network::HamRadio",                  NULL, NC_("Menu subcategory of Internet", "Ham Radio") },
-       { "Network::InstantMessaging",          NULL, NC_("Menu subcategory of Internet", "Instant 
Messaging") },
-       { "Network::IRCClient",                 NULL, NC_("Menu subcategory of Internet", "IRC Clients") },
-       { "Network::Monitor",                   NULL, NC_("Menu subcategory of Internet", "Monitor") },
-       { "Network::News",                      NULL, NC_("Menu subcategory of Internet", "News") },
-       { "Network::P2P",                       NULL, NC_("Menu subcategory of Internet", "P2P") },
-       { "Network::RemoteAccess",              NULL, NC_("Menu subcategory of Internet", "Remote Access") },
-       { "Network::Telephony",                 NULL, NC_("Menu subcategory of Internet", "Telephony") },
-       { "Network::VideoConference",           NULL, NC_("Menu subcategory of Internet", "Video Conference") 
},
-       { "Network::WebBrowser",                NULL, NC_("Menu subcategory of Internet", "Web Browser") },
-       { "Network::WebDevelopment",            NULL, NC_("Menu subcategory of Internet", "Web Development") 
},
+       { "Network",                            N_("Internet"), "network-wireless-symbolic", "#cc2929" },
+       { "Network::Chat",                      NC_("Menu subcategory of Internet", "Chat") },
+       { "Network::Dialup",                    NC_("Menu subcategory of Internet", "Dialup") },
+       { "Network::Email",                     NC_("Menu subcategory of Internet", "Email") },
+       { "Network::Feed",                      NC_("Menu subcategory of Internet", "Feed") },
+       { "Network::FileTransfer",              NC_("Menu subcategory of Internet", "File Transfer") },
+       { "Network::HamRadio",                  NC_("Menu subcategory of Internet", "Ham Radio") },
+       { "Network::InstantMessaging",          NC_("Menu subcategory of Internet", "Instant Messaging") },
+       { "Network::IRCClient",                 NC_("Menu subcategory of Internet", "IRC Clients") },
+       { "Network::Monitor",                   NC_("Menu subcategory of Internet", "Monitor") },
+       { "Network::News",                      NC_("Menu subcategory of Internet", "News") },
+       { "Network::P2P",                       NC_("Menu subcategory of Internet", "P2P") },
+       { "Network::RemoteAccess",              NC_("Menu subcategory of Internet", "Remote Access") },
+       { "Network::Telephony",                 NC_("Menu subcategory of Internet", "Telephony") },
+       { "Network::VideoConference",           NC_("Menu subcategory of Internet", "Video Conference") },
+       { "Network::WebBrowser",                NC_("Menu subcategory of Internet", "Web Browser") },
+       { "Network::WebDevelopment",            NC_("Menu subcategory of Internet", "Web Development") },
        /* TRANSLATORS: this is the menu spec main category for Office */
-       { "Office",                             "text-editor-symbolic", N_("Office") },
-       { "Office::Calendar",                   NULL, NC_("Menu subcategory of Office", "Calendar") },
-       { "Office::Chart",                      NULL, NC_("Menu subcategory of Office", "Chart") },
-       { "Office::ContactManagement",          NULL, NC_("Menu subcategory of Office", "Contact Management") 
},
-       { "Office::Database",                   NULL, NC_("Menu subcategory of Office", "Database") },
-       { "Office::Dictionary",                 NULL, NC_("Menu subcategory of Office", "Dictionary") },
-       { "Office::Email",                      NULL, NC_("Menu subcategory of Office", "Email") },
-       { "Office::Finance",                    NULL, NC_("Menu subcategory of Office", "Finance") },
-       { "Office::FlowChart",                  NULL, NC_("Menu subcategory of Office", "Flow Chart") },
-       { "Office::PDA",                        NULL, NC_("Menu subcategory of Office", "PDA") },
-       { "Office::Photography",                NULL, NC_("Menu subcategory of Office", "Photography") },
-       { "Office::Presentation",               NULL, NC_("Menu subcategory of Office", "Presentation") },
-       { "Office::ProjectManagement",          NULL, NC_("Menu subcategory of Office", "Project Management") 
},
-       { "Office::Publishing",                 NULL, NC_("Menu subcategory of Office", "Publishing") },
-       { "Office::Spreadsheet",                NULL, NC_("Menu subcategory of Office", "Spreadsheet") },
-       { "Office::Viewer",                     NULL, NC_("Menu subcategory of Office", "Viewer") },
-       { "Office::WordProcessor",              NULL, NC_("Menu subcategory of Office", "Word Processor") },
+       { "Office",                             N_("Office"), "text-editor-symbolic", "#5d29cc" },
+       { "Office::Calendar",                   NC_("Menu subcategory of Office", "Calendar") },
+       { "Office::Chart",                      NC_("Menu subcategory of Office", "Chart") },
+       { "Office::ContactManagement",          NC_("Menu subcategory of Office", "Contact Management") },
+       { "Office::Database",                   NC_("Menu subcategory of Office", "Database") },
+       { "Office::Dictionary",                 NC_("Menu subcategory of Office", "Dictionary") },
+       { "Office::Email",                      NC_("Menu subcategory of Office", "Email") },
+       { "Office::Finance",                    NC_("Menu subcategory of Office", "Finance") },
+       { "Office::FlowChart",                  NC_("Menu subcategory of Office", "Flow Chart") },
+       { "Office::PDA",                        NC_("Menu subcategory of Office", "PDA") },
+       { "Office::Photography",                NC_("Menu subcategory of Office", "Photography") },
+       { "Office::Presentation",               NC_("Menu subcategory of Office", "Presentation") },
+       { "Office::ProjectManagement",          NC_("Menu subcategory of Office", "Project Management") },
+       { "Office::Publishing",                 NC_("Menu subcategory of Office", "Publishing") },
+       { "Office::Spreadsheet",                NC_("Menu subcategory of Office", "Spreadsheet") },
+       { "Office::Viewer",                     NC_("Menu subcategory of Office", "Viewer") },
+       { "Office::WordProcessor",              NC_("Menu subcategory of Office", "Word Processor") },
        /* TRANSLATORS: this is the menu spec main category for Science */
-       { "Science",                            "applications-science-symbolic", N_("Science") },
-       { "Science::Art",                       NULL, NC_("Menu subcategory of Science", "Art") },
-       { "Science::ArtificialIntelligence",    NULL, NC_("Menu subcategory of Science", "Artificial 
Intelligence") },
-       { "Science::Astronomy",                 NULL, NC_("Menu subcategory of Science", "Astronomy") },
-       { "Science::Biology",                   NULL, NC_("Menu subcategory of Science", "Biology") },
-       { "Science::Chemistry",                 NULL, NC_("Menu subcategory of Science", "Chemistry") },
-       { "Science::ComputerScience",           NULL, NC_("Menu subcategory of Science", "Computer Science") 
},
-       { "Science::Construction",              NULL, NC_("Menu subcategory of Science", "Construction") },
-       { "Science::DataVisualization",         NULL, NC_("Menu subcategory of Science", "Data 
Visualization") },
-       { "Science::Economy",                   NULL, NC_("Menu subcategory of Science", "Economy") },
-       { "Science::Electricity",               NULL, NC_("Menu subcategory of Science", "Electricity") },
-       { "Science::Electronics",               NULL, NC_("Menu subcategory of Science", "Electronics") },
-       { "Science::Engineering",               NULL, NC_("Menu subcategory of Science", "Engineering") },
-       { "Science::Geography",                 NULL, NC_("Menu subcategory of Science", "Geography") },
-       { "Science::Geology",                   NULL, NC_("Menu subcategory of Science", "Geology") },
-       { "Science::Geoscience",                NULL, NC_("Menu subcategory of Science", "Geoscience") },
-       { "Science::History",                   NULL, NC_("Menu subcategory of Science", "History") },
-       { "Science::Humanities",                NULL, NC_("Menu subcategory of Science", "Humanities") },
-       { "Science::ImageProcessing",           NULL, NC_("Menu subcategory of Science", "Image Processing") 
},
-       { "Science::Languages",                 NULL, NC_("Menu subcategory of Science", "Languages") },
-       { "Science::Literature",                NULL, NC_("Menu subcategory of Science", "Literature") },
-       { "Science::Maps",                      NULL, NC_("Menu subcategory of Science", "Maps") },
-       { "Science::Math",                      NULL, NC_("Menu subcategory of Science", "Math") },
-       { "Science::MedicalSoftware",           NULL, NC_("Menu subcategory of Science", "Medical") },
-       { "Science::NumericalAnalysis",         NULL, NC_("Menu subcategory of Science", "Numerical 
Analysis") },
-       { "Science::ParallelComputing",         NULL, NC_("Menu subcategory of Science", "Parallel 
Computing") },
-       { "Science::Physics",                   NULL, NC_("Menu subcategory of Science", "Physics") },
-       { "Science::Robotics",                  NULL, NC_("Menu subcategory of Science", "Robotics") },
-       { "Science::Spirituality",              NULL, NC_("Menu subcategory of Science", "Spirituality") },
-       { "Science::Sports",                    NULL, NC_("Menu subcategory of Science", "Sports") },
+       { "Science",                            N_("Science"), "applications-science-symbolic", "#9c29ca" },
+       { "Science::Art",                       NC_("Menu subcategory of Science", "Art") },
+       { "Science::ArtificialIntelligence",    NC_("Menu subcategory of Science", "Artificial Intelligence") 
},
+       { "Science::Astronomy",                 NC_("Menu subcategory of Science", "Astronomy") },
+       { "Science::Biology",                   NC_("Menu subcategory of Science", "Biology") },
+       { "Science::Chemistry",                 NC_("Menu subcategory of Science", "Chemistry") },
+       { "Science::ComputerScience",           NC_("Menu subcategory of Science", "Computer Science") },
+       { "Science::Construction",              NC_("Menu subcategory of Science", "Construction") },
+       { "Science::DataVisualization",         NC_("Menu subcategory of Science", "Data Visualization") },
+       { "Science::Economy",                   NC_("Menu subcategory of Science", "Economy") },
+       { "Science::Electricity",               NC_("Menu subcategory of Science", "Electricity") },
+       { "Science::Electronics",               NC_("Menu subcategory of Science", "Electronics") },
+       { "Science::Engineering",               NC_("Menu subcategory of Science", "Engineering") },
+       { "Science::Geography",                 NC_("Menu subcategory of Science", "Geography") },
+       { "Science::Geology",                   NC_("Menu subcategory of Science", "Geology") },
+       { "Science::Geoscience",                NC_("Menu subcategory of Science", "Geoscience") },
+       { "Science::History",                   NC_("Menu subcategory of Science", "History") },
+       { "Science::Humanities",                NC_("Menu subcategory of Science", "Humanities") },
+       { "Science::ImageProcessing",           NC_("Menu subcategory of Science", "Image Processing") },
+       { "Science::Languages",                 NC_("Menu subcategory of Science", "Languages") },
+       { "Science::Literature",                NC_("Menu subcategory of Science", "Literature") },
+       { "Science::Maps",                      NC_("Menu subcategory of Science", "Maps") },
+       { "Science::Math",                      NC_("Menu subcategory of Science", "Math") },
+       { "Science::MedicalSoftware",           NC_("Menu subcategory of Science", "Medical") },
+       { "Science::NumericalAnalysis",         NC_("Menu subcategory of Science", "Numerical Analysis") },
+       { "Science::ParallelComputing",         NC_("Menu subcategory of Science", "Parallel Computing") },
+       { "Science::Physics",                   NC_("Menu subcategory of Science", "Physics") },
+       { "Science::Robotics",                  NC_("Menu subcategory of Science", "Robotics") },
+       { "Science::Spirituality",              NC_("Menu subcategory of Science", "Spirituality") },
+       { "Science::Sports",                    NC_("Menu subcategory of Science", "Sports") },
        /* TRANSLATORS: this is the menu spec main category for System */
-       { "System",                             "applications-system-symbolic", N_("System") },
-       { "System::Emulator",                   NULL, NC_("Menu subcategory of System", "Emulator") },
-       { "System::FileManager",                NULL, NC_("Menu subcategory of System", "File Manager") },
-       { "System::Filesystem",                 NULL, NC_("Menu subcategory of System", "File System") },
-       { "System::FileTools",                  NULL, NC_("Menu subcategory of System", "File Tools") },
-       { "System::Monitor",                    NULL, NC_("Menu subcategory of System", "Monitor") },
-       { "System::Security",                   NULL, NC_("Menu subcategory of System", "Security") },
-       { "System::TerminalEmulator",           NULL, NC_("Menu subcategory of System", "Terminal Emulator") 
},
+       { "System",                             N_("System"), "applications-system-symbolic", "#cc2929" },
+       { "System::Emulator",                   NC_("Menu subcategory of System", "Emulator") },
+       { "System::FileManager",                NC_("Menu subcategory of System", "File Manager") },
+       { "System::Filesystem",                 NC_("Menu subcategory of System", "File System") },
+       { "System::FileTools",                  NC_("Menu subcategory of System", "File Tools") },
+       { "System::Monitor",                    NC_("Menu subcategory of System", "Monitor") },
+       { "System::Security",                   NC_("Menu subcategory of System", "Security") },
+       { "System::TerminalEmulator",           NC_("Menu subcategory of System", "Terminal Emulator") },
        /* TRANSLATORS: this is the menu spec main category for Utility */
-       { "Utility",                            "applications-utilities-symbolic", N_("Utilities") },
-       { "Utility::Accessibility",             NULL, NC_("Menu subcategory of Utilities", "Accessibility") },
-       { "Utility::Archiving",                 NULL, NC_("Menu subcategory of Utilities", "Archiving") },
-       { "Utility::Calculator",                NULL, NC_("Menu subcategory of Utilities", "Calculator") },
-       { "Utility::Clock",                     NULL, NC_("Menu subcategory of Utilities", "Clock") },
-       { "Utility::Compression",               NULL, NC_("Menu subcategory of Utilities", "Compression") },
-       { "Utility::FileTools",                 NULL, NC_("Menu subcategory of Utilities", "File Tools") },
-       { "Utility::Maps",                      NULL, NC_("Menu subcategory of Utilities", "Maps") },
-       { "Utility::Spirituality",              NULL, NC_("Menu subcategory of Utilities", "Spirituality") },
-       { "Utility::TelephonyTools",            NULL, NC_("Menu subcategory of Utilities", "Telephony Tools") 
},
-       { "Utility::TextEditor",                NULL, NC_("Menu subcategory of Utilities", "Text Editor") },
+       { "Utility",                            N_("Utilities"), "applications-utilities-symbolic", "#2944cc" 
},
+       { "Utility::Accessibility",             NC_("Menu subcategory of Utilities", "Accessibility") },
+       { "Utility::Archiving",                 NC_("Menu subcategory of Utilities", "Archiving") },
+       { "Utility::Calculator",                NC_("Menu subcategory of Utilities", "Calculator") },
+       { "Utility::Clock",                     NC_("Menu subcategory of Utilities", "Clock") },
+       { "Utility::Compression",               NC_("Menu subcategory of Utilities", "Compression") },
+       { "Utility::FileTools",                 NC_("Menu subcategory of Utilities", "File Tools") },
+       { "Utility::Maps",                      NC_("Menu subcategory of Utilities", "Maps") },
+       { "Utility::Spirituality",              NC_("Menu subcategory of Utilities", "Spirituality") },
+       { "Utility::TelephonyTools",            NC_("Menu subcategory of Utilities", "Telephony Tools") },
+       { "Utility::TextEditor",                NC_("Menu subcategory of Utilities", "Text Editor") },
        /* TRANSLATORS: this is the menu spec main category for Video */
-       { "Video",                              "folder-videos-symbolic", N_("Video") },
-       { "Video::AudioVideoEditing",           NULL, NC_("Menu subcategory of Video", "Editing") },
-       { "Video::Database",                    NULL, NC_("Menu subcategory of Video", "Database") },
-       { "Video::DiscBurning",                 NULL, NC_("Menu subcategory of Video", "Disc Burning") },
-       { "Video::Player",                      NULL, NC_("Menu subcategory of Video", "Players") },
-       { "Video::Recorder",                    NULL, NC_("Menu subcategory of Video", "Recorders") },
-       { "Video::TV",                          NULL, NC_("Menu subcategory of Video", "TV") },
+       { "Video",                              N_("Video"), "folder-videos-symbolic", "#cc29ae" },
+       { "Video::AudioVideoEditing",           NC_("Menu subcategory of Video", "Editing") },
+       { "Video::Database",                    NC_("Menu subcategory of Video", "Database") },
+       { "Video::DiscBurning",                 NC_("Menu subcategory of Video", "Disc Burning") },
+       { "Video::Player",                      NC_("Menu subcategory of Video", "Players") },
+       { "Video::Recorder",                    NC_("Menu subcategory of Video", "Recorders") },
+       { "Video::TV",                          NC_("Menu subcategory of Video", "TV") },
        /* TRANSLATORS: this is the main category for Add-ons */
-       { "Addons",                             "list-add-symbolic", N_("Add-ons") },
-       { "Addons::Fonts",                      NULL, NC_("Menu subcategory of Add-ons", "Fonts") },
-       { "Addons::Codecs",                     NULL, NC_("Menu subcategory of Add-ons", "Codecs") },
-       { "Addons::InputSources",               NULL, NC_("Menu subcategory of Add-ons", "Input Sources") },
-       { "Addons::LanguagePacks",              NULL, NC_("Menu subcategory of Add-ons", "Language Packs") },
-       { "Addons::ShellExtensions",            NULL, NC_("Menu subcategory of Add-ons", "Shell Extensions") 
},
-       { "Addons::Localization",               NULL, NC_("Menu subcategory of Add-ons", "Localization") },
-       { NULL,                                 NULL, NULL }
+       { "Addons",                             N_("Add-ons"), "list-add-symbolic", "#cc5a29" },
+       { "Addons::Fonts",                      NC_("Menu subcategory of Add-ons", "Fonts") },
+       { "Addons::Codecs",                     NC_("Menu subcategory of Add-ons", "Codecs") },
+       { "Addons::InputSources",               NC_("Menu subcategory of Add-ons", "Input Sources") },
+       { "Addons::LanguagePacks",              NC_("Menu subcategory of Add-ons", "Language Packs") },
+       { "Addons::ShellExtensions",            NC_("Menu subcategory of Add-ons", "Shell Extensions") },
+       { "Addons::Localization",               NC_("Menu subcategory of Add-ons", "Localization") },
+       { NULL }
 };
 
 const MenuSpecData *
diff --git a/src/plugins/menu-spec-common.h b/src/plugins/menu-spec-common.h
index a05a127..b5477e4 100644
--- a/src/plugins/menu-spec-common.h
+++ b/src/plugins/menu-spec-common.h
@@ -29,8 +29,9 @@ G_BEGIN_DECLS
 
 typedef struct {
        const gchar *path;
+       const gchar *name;
        const gchar *icon;
-       const gchar *text;
+       const gchar *key_colors;
 } MenuSpecData;
 
 const MenuSpecData     *menu_spec_get_data             (void);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]