summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristophe Fergeau <cfergeau@redhat.com>2012-08-12 18:13:48 +0200
committerChristophe Fergeau <cfergeau@redhat.com>2012-09-01 19:01:50 +0200
commit42118ab6f7ec5abf336a3eda8a1640a651bc7658 (patch)
tree2f879b8b42360e2608c6dc95b9ffd0fdd66ff642
parentfbf43e5bf00c1067ea9ff7e1f5640241c9b9c3c1 (diff)
Add "{Un,}Select All" button
The Unselect all/Select all menu entries have been removed as part of the addition of the app menu an were only accessible through a keyboard shortcut. After a discussion with the design team, readd a button to provide this functionality. https://bugzilla.gnome.org/show_bug.cgi?id=675245
-rw-r--r--data/sound-juicer.ui15
-rw-r--r--src/sj-main.c33
2 files changed, 47 insertions, 1 deletions
diff --git a/data/sound-juicer.ui b/data/sound-juicer.ui
index 1ff2dff..a074931 100644
--- a/data/sound-juicer.ui
+++ b/data/sound-juicer.ui
@@ -366,6 +366,21 @@ audio-volume-medium</property>
<property name="position">2</property>
</packing>
</child>
+ <child>
+ <object class="GtkButton" id="select_button">
+ <property name="label">placeholder</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="pack_type">end</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
</object>
<packing>
<property name="expand">False</property>
diff --git a/src/sj-main.c b/src/sj-main.c
index b4625e9..8532dca 100644
--- a/src/sj-main.c
+++ b/src/sj-main.c
@@ -75,7 +75,7 @@ GConfClient *gconf_client;
GtkWidget *main_window;
static GtkWidget *message_area_eventbox;
static GtkWidget *title_entry, *artist_entry, *duration_label, *genre_entry, *year_entry, *disc_number_entry;
-static GtkWidget *track_listview, *extract_button, *play_button;
+static GtkWidget *track_listview, *extract_button, *play_button, *select_button;
static GtkWidget *status_bar;
GtkListStore *track_store;
GtkCellRenderer *toggle_renderer, *title_renderer, *artist_renderer;
@@ -266,6 +266,9 @@ static void on_select_all_activate (GSimpleAction *action, GVariant *parameter,
set_action_enabled ("select-all", FALSE);
set_action_enabled ("deselect-all", TRUE);
+ gtk_actionable_set_action_name(GTK_ACTIONABLE(select_button), "win.deselect-all");
+ gtk_button_set_label(GTK_BUTTON(select_button), _("Select None"));
+
no_of_tracks_selected = total_no_of_tracks;
}
@@ -277,6 +280,9 @@ static void on_deselect_all_activate (GSimpleAction *action, GVariant *parameter
set_action_enabled ("deselect-all", FALSE);
set_action_enabled ("select-all", TRUE);
+ gtk_actionable_set_action_name(GTK_ACTIONABLE(select_button), "win.select-all");
+ gtk_button_set_label(GTK_BUTTON(select_button), _("Select All"));
+
no_of_tracks_selected = 0;
}
@@ -1718,11 +1724,14 @@ startup_cb (GApplication *app, gpointer user_data)
track_listview = GET_WIDGET ("track_listview");
extract_button = GET_WIDGET ("extract_button");
play_button = GET_WIDGET ("play_button");
+ select_button = GET_WIDGET ("select_button");
status_bar = GET_WIDGET ("status_bar");
g_action_map_add_action_entries (G_ACTION_MAP (main_window),
win_entries, G_N_ELEMENTS (win_entries),
NULL);
+ gtk_button_set_label(GTK_BUTTON(select_button), _("Select None"));
+ gtk_actionable_set_action_name(GTK_ACTIONABLE(select_button), "win.deselect-all");
gtk_actionable_set_action_name(GTK_ACTIONABLE(play_button), "win.play");
/* window actions are only available via shortcuts */
@@ -1759,6 +1768,28 @@ startup_cb (GApplication *app, gpointer user_data)
g_object_unref (G_OBJECT (size_group));
}
+ { /* ensure that the select/unselect button's size is constant */
+ GtkWidget *fake_button1, *fake_button2;
+ GtkSizeGroup *size_group;
+
+ size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
+
+ fake_button1 = gtk_button_new_with_label (_("Select All"));
+ gtk_size_group_add_widget (size_group, fake_button1);
+ g_signal_connect_swapped (select_button, "destroy",
+ G_CALLBACK (gtk_widget_destroy),
+ fake_button1);
+
+ fake_button2 = gtk_button_new_with_label (_("Select None"));
+ gtk_size_group_add_widget (size_group, fake_button2);
+ g_signal_connect_swapped (select_button, "destroy",
+ G_CALLBACK (gtk_widget_destroy),
+ fake_button2);
+
+ gtk_size_group_add_widget (size_group, select_button);
+ g_object_unref (G_OBJECT (size_group));
+ }
+
setup_genre_entry (genre_entry);
track_store = gtk_list_store_new (COLUMN_TOTAL, G_TYPE_INT, G_TYPE_BOOLEAN, G_TYPE_INT, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INT, G_TYPE_POINTER);