From: jstebbins Date: Wed, 17 Jun 2009 22:19:26 +0000 (+0000) Subject: LinGui: make the status icon in the system tray a bit more useful X-Git-Tag: 0.9.4~397 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2bbee7dc6b7236d75057c194dc12f9aafcd48334;p=handbrake LinGui: make the status icon in the system tray a bit more useful Succumbing to the pleading of users... - Use HB icon for status - Add tooltip to status icon that shows progress - Add preference option to skip the taskbar. So clikcing on the status icon un-minimizes. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@2565 b64f7644-9d1e-0410-96f1-a4d463321fa5 --- diff --git a/gtk/src/callbacks.c b/gtk/src/callbacks.c index aa44aef28..a727e5975 100644 --- a/gtk/src/callbacks.c +++ b/gtk/src/callbacks.c @@ -2230,6 +2230,32 @@ ghb_backend_events(signal_user_data_t *ud) } } +G_MODULE_EXPORT gboolean +status_icon_query_tooltip_cb( + GtkStatusIcon *si, + gint x, + gint y, + gboolean kbd_mode, + GtkTooltip *tt, + signal_user_data_t *ud) +{ + ghb_status_t status; + gchar *status_str; + + ghb_get_status(&status); + if (status.queue.state & GHB_STATE_WORKING) + status_str = working_status_string(ud, &status.queue); + else if (status.queue.state & GHB_STATE_WORKDONE) + status_str = g_strdup("Encode Complete"); + else + status_str = g_strdup("HandBrake"); + + gtk_tooltip_set_text(tt, status_str); + gtk_tooltip_set_icon_from_icon_name(tt, "hb-icon", GTK_ICON_SIZE_BUTTON); + g_free(status_str); + return TRUE; +} + G_MODULE_EXPORT gboolean ghb_timer_cb(gpointer data) { @@ -2791,6 +2817,21 @@ pref_changed_cb(GtkWidget *widget, signal_user_data_t *ud) ghb_pref_save(ud->settings, name); } +G_MODULE_EXPORT void +skip_taskbar_cb(GtkWidget *widget, signal_user_data_t *ud) +{ + g_debug("pref_changed_cb"); + ghb_widget_to_setting (ud->settings, widget); + ghb_check_dependency(ud, widget); + const gchar *name = gtk_widget_get_name(widget); + ghb_pref_save(ud->settings, name); + + GtkWindow *window; + window = GTK_WINDOW(GHB_WIDGET (ud->builder, "hb_window")); + gtk_window_set_skip_taskbar_hint(window, + ghb_settings_get_boolean(ud->settings, "skip_taskbar")); +} + G_MODULE_EXPORT void vqual_granularity_changed_cb(GtkWidget *widget, signal_user_data_t *ud) { @@ -3686,7 +3727,6 @@ ghb_notify_done(signal_user_data_t *ud) GtkStatusIcon *si; si = GTK_STATUS_ICON(GHB_OBJECT(ud->builder, "hb_status")); - gtk_status_icon_set_from_icon_name(si, "hb-status-empty"); #if !defined(_WIN32) NotifyNotification *notification; diff --git a/gtk/src/ghb.ui b/gtk/src/ghb.ui index 5e64ed54b..4f0736015 100644 --- a/gtk/src/ghb.ui +++ b/gtk/src/ghb.ui @@ -3772,7 +3772,20 @@ location as the movie. 8 - + + + True + True + Do not put HandBrake in the system TaskBar when minimized. + Minimize to System Tray + True + + + + False + 9 + + True @@ -3782,7 +3795,7 @@ location as the movie. False - 9 + 10 @@ -3794,7 +3807,7 @@ location as the movie. False - 10 + 11 @@ -5743,7 +5756,8 @@ libx264 authors: - hb-status + hb-icon + diff --git a/gtk/src/internal_defaults.xml b/gtk/src/internal_defaults.xml index 9bb7651a6..c68874dc2 100644 --- a/gtk/src/internal_defaults.xml +++ b/gtk/src/internal_defaults.xml @@ -103,6 +103,8 @@ EncodeLogLocation + skip_taskbar + allow_tweaks title_no_in_destination diff --git a/gtk/src/main.c b/gtk/src/main.c index 0b3eb09a5..4a684848c 100644 --- a/gtk/src/main.c +++ b/gtk/src/main.c @@ -790,6 +790,15 @@ main (int argc, char *argv[]) // Add dvd devices to File menu g_idle_add((GSourceFunc)ghb_file_menu_add_dvd, ud); + GtkStatusIcon *si; + si = GTK_STATUS_ICON(GHB_OBJECT(ud->builder, "hb_status")); + gtk_status_icon_set_has_tooltip(si, TRUE); + + GtkWindow *window; + window = GTK_WINDOW(GHB_WIDGET (ud->builder, "hb_window")); + gtk_window_set_skip_taskbar_hint(window, + ghb_settings_get_boolean(ud->settings, "skip_taskbar")); + // Everything should be go-to-go. Lets rock! gtk_main (); diff --git a/gtk/src/queuehandler.c b/gtk/src/queuehandler.c index d4bb5cece..4dc683df3 100644 --- a/gtk/src/queuehandler.c +++ b/gtk/src/queuehandler.c @@ -658,11 +658,6 @@ queue_add(signal_user_data_t *ud) return FALSE; } - GtkStatusIcon *si; - - si = GTK_STATUS_ICON(GHB_OBJECT(ud->builder, "hb_status")); - gtk_status_icon_set_from_icon_name(si, "hb-status"); - if (ud->queue == NULL) ud->queue = ghb_array_value_new(32); // Make a copy of current settings to be used for the new job