summaryrefslogtreecommitdiff
path: root/src/trg-menu-bar.c
diff options
context:
space:
mode:
authorGravatar Alan Fitton <ajf@eth0.org.uk>2012-08-25 12:39:00 +0100
committerGravatar Alan Fitton <ajf@eth0.org.uk>2012-08-25 12:39:00 +0100
commit75535446541c62fab468c0f8ed6c94018f0cc070 (patch)
treec3474db6d36c334af03aae92112929d8f445a127 /src/trg-menu-bar.c
parentfb1dcb88fcc1a027da2f8e0ab1020afa1754ff3a (diff)
fix gtk2 support for new cell renderer and fix error reporting
Diffstat (limited to 'src/trg-menu-bar.c')
-rw-r--r--src/trg-menu-bar.c73
1 files changed, 70 insertions, 3 deletions
diff --git a/src/trg-menu-bar.c b/src/trg-menu-bar.c
index aa8b797..fd5756c 100644
--- a/src/trg-menu-bar.c
+++ b/src/trg-menu-bar.c
@@ -106,6 +106,9 @@ struct _TrgMenuBarPrivate {
GtkWidget *mb_top_queue;
GtkWidget *mb_start_now;
GtkWidget *mb_queues_seperator;
+ GtkWidget *mb_view_classic;
+ GtkWidget *mb_view_transmission;
+ GtkWidget *mb_view_transmission_compact;
GtkAccelGroup *accel_group;
TrgPrefs *prefs;
TrgMainWindow *main_window;
@@ -326,6 +329,19 @@ trg_menu_bar_accel_add(TrgMenuBar * menu, GtkWidget * item,
}
+static void view_menu_radio_item_toggled_cb(GtkCheckMenuItem * w, gpointer data)
+{
+ TrgPrefs *p = TRG_PREFS(data);
+ const gchar *key =
+ (gchar *) g_object_get_data(G_OBJECT(w), G_DATAKEY_CONF_KEY);
+
+ if (gtk_check_menu_item_get_active(w)) {
+ gint index = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(w), "pref-index"));
+ g_message("active index = %d", index);
+ trg_prefs_set_int(p, key, index, TRG_PREFS_GLOBAL);
+ }
+}
+
static void view_menu_item_toggled_cb(GtkCheckMenuItem * w, gpointer data)
{
TrgPrefs *p = TRG_PREFS(data);
@@ -344,7 +360,7 @@ view_menu_bar_toggled_dependency_cb(GtkCheckMenuItem * w, gpointer data)
}
static void
-trg_menu_bar_view_item_update(TrgPrefs * p, gchar * updatedKey,
+trg_menu_bar_view_item_update(TrgPrefs * p, const gchar * updatedKey,
gpointer data)
{
gchar *key =
@@ -355,8 +371,46 @@ trg_menu_bar_view_item_update(TrgPrefs * p, gchar * updatedKey,
TRG_PREFS_GLOBAL));
}
-static GtkWidget *trg_menu_bar_view_item_new(TrgPrefs * prefs, gchar * key,
- gchar * label,
+static void
+trg_menu_bar_view_radio_item_update(TrgPrefs * p, const gchar * updatedKey,
+ gpointer data)
+{
+ const gchar *key =
+ (gchar *) g_object_get_data(G_OBJECT(data), G_DATAKEY_CONF_KEY);
+ gint myIndex = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(data), "pref-index"));
+
+ if (!g_strcmp0(updatedKey, key)) {
+ gboolean shouldBeActive = trg_prefs_get_int(p, key, TRG_PREFS_GLOBAL) == myIndex;
+ if (shouldBeActive != gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(data)))
+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(data), shouldBeActive);
+ }
+}
+
+static GtkWidget *trg_menu_bar_view_radio_item_new(TrgPrefs * prefs,
+ GSList *group,
+ const gchar * key,
+ gint index,
+ const gchar * label)
+{
+ GtkWidget *w = gtk_radio_menu_item_new_with_label(group, label);
+ g_object_set_data_full(G_OBJECT(w), G_DATAKEY_CONF_KEY, g_strdup(key),
+ g_free);
+ g_object_set_data(G_OBJECT(w), "pref-index", GINT_TO_POINTER(index));
+
+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(w),
+ trg_prefs_get_int(prefs, key,
+ TRG_PREFS_GLOBAL) == (gint64)index);
+
+ g_signal_connect(w, "toggled",
+ G_CALLBACK(view_menu_radio_item_toggled_cb), prefs);
+ g_signal_connect(prefs, "pref-changed",
+ G_CALLBACK(trg_menu_bar_view_radio_item_update), w);
+
+ return w;
+}
+
+static GtkWidget *trg_menu_bar_view_item_new(TrgPrefs * prefs, const gchar * key,
+ const gchar * label,
GtkWidget * dependency)
{
GtkWidget *w = gtk_check_menu_item_new_with_label(label);
@@ -390,8 +444,21 @@ static GtkWidget *trg_menu_bar_view_menu_new(TrgMenuBar * mb)
GtkWidget *view = gtk_menu_item_new_with_mnemonic(_("_View"));
GtkWidget *viewMenu = gtk_menu_new();
+ GSList *group;
+
gtk_menu_item_set_submenu(GTK_MENU_ITEM(view), viewMenu);
+ priv->mb_view_classic = trg_menu_bar_view_radio_item_new(priv->prefs, NULL, "style", 0, _("Classic"));
+ gtk_menu_shell_append(GTK_MENU_SHELL(viewMenu), priv->mb_view_classic);
+ group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (priv->mb_view_classic));
+ priv->mb_view_transmission = trg_menu_bar_view_radio_item_new(priv->prefs, group, "style", 1, _("Transmission"));
+ gtk_menu_shell_append(GTK_MENU_SHELL(viewMenu), priv->mb_view_transmission);
+ group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (priv->mb_view_transmission));
+ priv->mb_view_transmission_compact = trg_menu_bar_view_radio_item_new(priv->prefs, group, "style", 2, _("Transmission Compact"));
+ gtk_menu_shell_append(GTK_MENU_SHELL(viewMenu), priv->mb_view_transmission_compact);
+
+ priv->mb_view_classic =
+
priv->mb_view_states =
trg_menu_bar_view_item_new(priv->prefs,
TRG_PREFS_KEY_SHOW_STATE_SELECTOR,