aboutsummaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rw-r--r--tools/indicator-loader.c96
1 files changed, 49 insertions, 47 deletions
diff --git a/tools/indicator-loader.c b/tools/indicator-loader.c
index a9e63a9..f04132e 100644
--- a/tools/indicator-loader.c
+++ b/tools/indicator-loader.c
@@ -26,7 +26,7 @@
#include <gtk/gtk.h>
#include <libido/libido.h>
#include <libindicator/indicator-object.h>
-#if GTK_MAJOR_VERSION == 3
+#if GTK_CHECK_VERSION (3,0,0)
#include <libindicator/indicator-ng.h>
#endif
@@ -71,9 +71,9 @@ create_menu_item (IndicatorObjectEntry * entry)
#endif
if ((w = entry->image))
- gtk_box_pack_start(GTK_BOX (hbox), GTK_WIDGET(w), FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET(w), FALSE, FALSE, 0);
if ((w = entry->label))
- gtk_box_pack_start(GTK_BOX (hbox), GTK_WIDGET(w), FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET(w), FALSE, FALSE, 0);
gtk_container_add (GTK_CONTAINER(menu_item), hbox);
gtk_widget_show (hbox);
@@ -93,10 +93,7 @@ entry_added (IndicatorObject * io,
g_debug ("Signal: Entry Added");
- if (entry->parent_object == NULL)
- {
- g_warning("Entry '%p' does not have a parent object", entry);
- }
+ g_warn_if_fail (entry->parent_object != NULL);
menu_item = g_hash_table_lookup (entry_to_menu_item, entry);
@@ -120,11 +117,12 @@ entry_removed (IndicatorObject * io,
IndicatorObjectEntry * entry,
gpointer user_data)
{
+ GtkWidget * w;
+
g_debug ("Signal: Entry Removed");
- GtkWidget * menuitem = g_hash_table_lookup (entry_to_menu_item, entry);
- if (menuitem != NULL)
- gtk_widget_hide (menuitem);
+ if ((w = g_hash_table_lookup (entry_to_menu_item, entry)))
+ gtk_widget_hide (w);
}
static void
@@ -170,7 +168,7 @@ load_profile (const char * file_name, const char * profile)
{
IndicatorObject * io = NULL;
-#if GTK_MAJOR_VERSION == 3
+#if GTK_CHECK_VERSION (3,0,0)
GError * error = NULL;
@@ -239,8 +237,8 @@ add_menu_to_grid (GtkGrid * grid,
NULL);
g_object_set (menu, "halign", GTK_ALIGN_START,
- "hexpand", TRUE,
- NULL);
+ "hexpand", TRUE,
+ NULL);
}
/***
@@ -250,17 +248,11 @@ add_menu_to_grid (GtkGrid * grid,
int
main (int argc, char ** argv)
{
+ int menu_count = 0;
const gchar * file_name;
gchar * base_name;
- GtkWidget * window;
GtkWidget * grid;
- /* make sure we don't proxy to ourselves */
- g_unsetenv ("UBUNTU_MENUPROXY");
-
- gtk_init (&argc, &argv);
- ido_init ();
-
if (argc != 2)
{
base_name = g_path_get_basename (argv[0]);
@@ -269,20 +261,20 @@ main (int argc, char ** argv)
return 0;
}
+ /* make sure we don't proxy to ourselves */
+ g_unsetenv ("UBUNTU_MENUPROXY");
+
+ gtk_init (&argc, &argv);
+ ido_init ();
+
entry_to_menu_item = g_hash_table_new (g_direct_hash, g_direct_equal);
file_name = argv[1];
- window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
- base_name = g_path_get_basename (file_name);
- gtk_window_set_title (GTK_WINDOW(window), base_name);
- g_free (base_name);
- g_signal_connect (window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
grid = g_object_new (GTK_TYPE_GRID, "margin", 4,
"column-spacing", 6,
"row-spacing", 12,
NULL);
- gtk_container_add (GTK_CONTAINER(window), grid);
/* if it's an old-style indicator... */
if (g_str_has_suffix (file_name, G_MODULE_SUFFIX))
@@ -291,16 +283,13 @@ main (int argc, char ** argv)
GtkWidget * menu = gtk_menu_bar_new ();
add_indicator_to_menu (GTK_MENU_SHELL(menu), io);
base_name = g_path_get_basename (file_name);
- add_menu_to_grid (GTK_GRID(grid), 0, base_name, menu);
+ add_menu_to_grid (GTK_GRID(grid), menu_count++, base_name, menu);
g_free (base_name);
}
else /* treat it as a GMenu indicator's keyfile */
{
GError * error;
GKeyFile * key_file;
- gchar ** groups;
- int i;
- int menu_count = 0;
key_file = g_key_file_new ();
error = NULL;
@@ -309,33 +298,46 @@ main (int argc, char ** argv)
{
g_warning ("loading '%s' failed: %s", file_name, error->message);
g_error_free (error);
- return 1;
}
-
- groups = g_key_file_get_groups (key_file, NULL);
- for (i=0; groups && groups[i]; i++)
+ else
{
- const gchar * const profile = groups[i];
- IndicatorObject * io;
+ gchar ** groups;
+ int i;
- if (!g_strcmp0 (profile, "Indicator Service"))
- continue;
-
- io = load_profile (file_name, profile);
- if (io != NULL)
+ groups = g_key_file_get_groups (key_file, NULL);
+ for (i=0; groups && groups[i]; i++)
{
- GtkWidget * menu = gtk_menu_bar_new ();
- add_indicator_to_menu (GTK_MENU_SHELL(menu), io);
- add_menu_to_grid (GTK_GRID(grid), menu_count++, profile, menu);
+ const gchar * const profile = groups[i];
+ IndicatorObject * io;
+
+ if (!g_strcmp0 (profile, "Indicator Service"))
+ continue;
+
+ if ((io = load_profile (file_name, profile)))
+ {
+ GtkWidget * menu = gtk_menu_bar_new ();
+ add_indicator_to_menu (GTK_MENU_SHELL(menu), io);
+ add_menu_to_grid (GTK_GRID(grid), menu_count++, profile, menu);
+ }
}
+
+ g_strfreev (groups);
}
- g_strfreev (groups);
g_key_file_free (key_file);
}
- gtk_widget_show_all (window);
- gtk_main ();
+ if (menu_count > 0)
+ {
+ GtkWidget * window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+ base_name = g_path_get_basename (file_name);
+ gtk_window_set_title (GTK_WINDOW(window), base_name);
+ g_free (base_name);
+ g_signal_connect (window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
+ gtk_container_add (GTK_CONTAINER(window), grid);
+ gtk_widget_show_all (window);
+ gtk_main ();
+ }
/* cleanup */
g_hash_table_destroy (entry_to_menu_item);