diff options
author | gordi-o <gordi-o@users.sourceforge.net> | 2010-06-01 15:55:05 +0300 |
---|---|---|
committer | Alexey Yakovenko <wakeroid@gmail.com> | 2010-06-01 19:36:32 +0200 |
commit | 9d0a84dccedc492cabdd3733d605f289b3ed65a8 (patch) | |
tree | d6fcb6bb4d5a13447f6aab52cc208ad968b8c5a3 /plugins | |
parent | c5b6bdcb27d1c950aede4aabb0e5a090330a8d90 (diff) |
added custom tray icon and support for custom themes
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/gtkui/gtkui.c | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/plugins/gtkui/gtkui.c b/plugins/gtkui/gtkui.c index ffcdfec6..d03006c9 100644 --- a/plugins/gtkui/gtkui.c +++ b/plugins/gtkui/gtkui.c @@ -65,6 +65,8 @@ GtkWidget *traymenu; GtkWidget *theme_treeview; GtkWidget *theme_button; +#define TRAY_ICON "deadbeef-tray-icon" + // that must be called before gtk_init void gtkpl_init (void) { @@ -794,8 +796,21 @@ gtkui_thread (void *ctx) { // system tray icon traymenu = create_traymenu (); - GdkPixbuf *trayicon_pixbuf = create_pixbuf ("play_24.png"); - trayicon = gtk_status_icon_new_from_pixbuf (trayicon_pixbuf); + + const char *icon_name = deadbeef->conf_get_str ("gtkui.custom_tray_icon", TRAY_ICON); + GtkIconTheme *theme = gtk_icon_theme_get_default(); + + if (!gtk_icon_theme_has_icon(theme, icon_name)) + icon_name = "deadbeef"; + else { + GtkIconInfo *icon_info = gtk_icon_theme_lookup_icon(theme, icon_name, 48, GTK_ICON_LOOKUP_USE_BUILTIN); + const gboolean icon_is_builtin = gtk_icon_info_get_filename(icon_info) == NULL; + gtk_icon_info_free(icon_info); + icon_name = icon_is_builtin ? "deadbeef" : icon_name; + } + + trayicon = gtk_status_icon_new_from_icon_name(icon_name); + set_tray_tooltip ("DeaDBeeF"); //gtk_status_icon_set_title (GTK_STATUS_ICON (trayicon), "DeaDBeeF"); #if GTK_MINOR_VERSION <= 14 @@ -987,6 +1002,7 @@ gtkui_load (DB_functions_t *api) { static const char settings_dlg[] = "property \"Ask confirmation to delete files from disk\" checkbox gtkui.delete_files_ask 1;\n" "property \"Status icon volume control sensitivity\" entry gtkui.tray_volume_sensitivity 1;\n" + "property \"Custom status icon\" entry gtkui.custom_tray_icon \"" TRAY_ICON "\" ;\n" "property \"Run gtk_init with --sync (debug mode)\" checkbox gtkui.sync 0;\n" ; |