[Xfce4-commits] <parole:master> Use GtkAction for Repeat/Shuffle
Sean Davis
noreply at xfce.org
Fri Oct 11 11:51:59 CEST 2013
Updating branch refs/heads/master
to ed4fe2eca1abc79fc568cd8623e735a1a12af7af (commit)
from 5e2fffef8e7aba5889f8906a4a458f6bc546a7ca (commit)
commit ed4fe2eca1abc79fc568cd8623e735a1a12af7af
Author: Sean Davis <smd.seandavis at gmail.com>
Date: Mon Sep 9 23:44:25 2013 -0400
Use GtkAction for Repeat/Shuffle
data/interfaces/parole.ui | 44 +++++++++--------
data/interfaces/playlist.ui | 24 ----------
src/parole-medialist.c | 110 ++++---------------------------------------
src/parole-medialist.h | 22 ++++-----
src/parole-player.c | 91 ++++++++++++-----------------------
5 files changed, 68 insertions(+), 223 deletions(-)
diff --git a/data/interfaces/parole.ui b/data/interfaces/parole.ui
index 56bc136..a9b4d8c 100644
--- a/data/interfaces/parole.ui
+++ b/data/interfaces/parole.ui
@@ -6,6 +6,20 @@
<property name="step_increment">1</property>
<property name="page_increment">10</property>
</object>
+ <object class="GtkImage" id="image_disc">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="pixel_size">16</property>
+ <property name="icon_name">media-optical-symbolic</property>
+ <property name="use_fallback">True</property>
+ </object>
+ <object class="GtkImage" id="image_help_reportbug">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="pixel_size">16</property>
+ <property name="icon_name">face-sick-symbolic</property>
+ <property name="use_fallback">True</property>
+ </object>
<object class="GtkImage" id="image_media_fullscreen">
<property name="visible">True</property>
<property name="can_focus">False</property>
@@ -34,27 +48,6 @@
<property name="icon_name">media-skip-backward-symbolic</property>
<property name="use_fallback">True</property>
</object>
- <object class="GtkImage" id="image_about">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="pixel_size">16</property>
- <property name="icon_name">gtk-about-symbolic</property>
- <property name="use_fallback">True</property>
- </object>
- <object class="GtkImage" id="image_disc">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="pixel_size">16</property>
- <property name="icon_name">media-optical-symbolic</property>
- <property name="use_fallback">True</property>
- </object>
- <object class="GtkImage" id="image_help_reportbug">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="pixel_size">16</property>
- <property name="icon_name">face-sick-symbolic</property>
- <property name="use_fallback">True</property>
- </object>
<object class="GtkImage" id="image_menu_fullscreen">
<property name="visible">True</property>
<property name="can_focus">False</property>
@@ -133,6 +126,13 @@
<property name="icon_name">audio-volume-high-symbolic</property>
<property name="use_fallback">True</property>
</object>
+ <object class="GtkImage" id="image_about">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="pixel_size">16</property>
+ <property name="icon_name">gtk-about-symbolic</property>
+ <property name="use_fallback">True</property>
+ </object>
<object class="GtkWindow" id="main-window">
<property name="can_focus">False</property>
<property name="title" translatable="yes">Parole Media Player</property>
@@ -263,7 +263,6 @@
<property name="can_focus">False</property>
<property name="label" translatable="yes">_Repeat</property>
<property name="use_underline">True</property>
- <signal name="toggled" handler="parole_player_repeat_toggled_cb" swapped="no"/>
</object>
</child>
<child>
@@ -272,7 +271,6 @@
<property name="can_focus">False</property>
<property name="label" translatable="yes">_Shuffle</property>
<property name="use_underline">True</property>
- <signal name="toggled" handler="parole_player_shuffle_toggled_cb" swapped="no"/>
</object>
</child>
<child>
diff --git a/data/interfaces/playlist.ui b/data/interfaces/playlist.ui
index 2158a69..18c0716 100644
--- a/data/interfaces/playlist.ui
+++ b/data/interfaces/playlist.ui
@@ -149,7 +149,6 @@
<property name="label" translatable="yes">Repeat</property>
<property name="use_underline">True</property>
<property name="icon_name">media-playlist-repeat-symbolic</property>
- <signal name="toggled" handler="parole_media_list_repeat_toggled_cb" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
@@ -164,7 +163,6 @@
<property name="label" translatable="yes">Shuffle</property>
<property name="use_underline">True</property>
<property name="icon_name">media-playlist-shuffle-symbolic</property>
- <signal name="toggled" handler="parole_media_list_shuffle_toggled_cb" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
@@ -213,28 +211,6 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
- <object class="GtkCheckMenuItem" id="menu-repeat">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Repeat</property>
- <property name="use_underline">True</property>
- </object>
- </child>
- <child>
- <object class="GtkCheckMenuItem" id="menu-shuffle">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Shuffle</property>
- <property name="use_underline">True</property>
- </object>
- </child>
- <child>
- <object class="GtkSeparatorMenuItem" id="menuitem1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- </child>
- <child>
<object class="GtkCheckMenuItem" id="menu-replace">
<property name="visible">True</property>
<property name="can_focus">False</property>
diff --git a/src/parole-medialist.c b/src/parole-medialist.c
index 2acc4bc..9b08729 100644
--- a/src/parole-medialist.c
+++ b/src/parole-medialist.c
@@ -109,12 +109,6 @@ void parole_media_list_remove_clicked_cb (GtkButton *button,
void parole_media_list_clear_clicked_cb (GtkButton *button,
ParoleMediaList *list);
-
-void parole_media_list_repeat_toggled_cb (GtkToggleToolButton *button,
- ParoleMediaList *list);
-
-void parole_media_list_shuffle_toggled_cb (GtkToggleToolButton *button,
- ParoleMediaList *list);
void parole_media_list_move_up_clicked_cb (GtkButton *button,
ParoleMediaList *list);
@@ -189,6 +183,7 @@ struct ParoleMediaListPrivate
GtkWidget *remove_button;
GtkWidget *clear_button;
+
GtkWidget *repeat_button;
GtkWidget *shuffle_button;
@@ -200,8 +195,6 @@ enum
MEDIA_ACTIVATED,
MEDIA_CURSOR_CHANGED,
URI_OPENED,
- SHUFFLE_TOGGLED,
- REPEAT_TOGGLED,
SHOW_PLAYLIST,
ISO_OPENED,
LAST_SIGNAL
@@ -555,28 +548,6 @@ parole_media_list_clear_clicked_cb (GtkButton *button, ParoleMediaList *list)
parole_media_list_clear_list (list);
}
-/* Callback for the repeat togglebutton */
-void
-parole_media_list_repeat_toggled_cb (GtkToggleToolButton *button, ParoleMediaList *list)
-{
- gboolean toggled;
-
- toggled = gtk_toggle_tool_button_get_active (button);
-
- g_signal_emit (G_OBJECT (list), signals [REPEAT_TOGGLED], 0, toggled);
-}
-
-/* Callback for the shuffle togglebutton */
-void
-parole_media_list_shuffle_toggled_cb (GtkToggleToolButton *button, ParoleMediaList *list)
-{
- gboolean toggled;
-
- toggled = gtk_toggle_tool_button_get_active (button);
-
- g_signal_emit (G_OBJECT (list), signals [SHUFFLE_TOGGLED], 0, toggled);
-}
-
/**
* parole_media_list_get_first_selected_row:
* @list: a #ParoleMediaList
@@ -1280,20 +1251,6 @@ remember_playlist_activated_cb (GtkWidget *mi, ParoleConf *conf)
}
}
-static void
-repeat_activated_cb (GtkWidget *mi, ParoleMediaList *list)
-{
- gboolean active = gtk_check_menu_item_get_active( GTK_CHECK_MENU_ITEM( mi ) );
- gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON( list->priv->repeat_button ), active);
-}
-
-static void
-shuffle_activated_cb (GtkWidget *mi, ParoleMediaList *list)
-{
- gboolean active = gtk_check_menu_item_get_active( GTK_CHECK_MENU_ITEM( mi ) );
- gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON( list->priv->shuffle_button ), active);
-}
-
void
parole_media_list_menu_pos (GtkMenu *menu, gint *px, gint *py, gboolean *push_in, gpointer data)
{
@@ -1343,35 +1300,18 @@ parole_media_list_show_menu (ParoleMediaList *list, GdkEventButton *ev)
GtkMenu *menu;
GtkMenuItem *clear;
- GtkCheckMenuItem *repeat_menu, *shuffle_menu, *replace, *play_opened;
+ GtkCheckMenuItem *replace, *play_opened;
GtkCheckMenuItem *remember;
builder = parole_builder_new_from_string (playlist_ui, playlist_ui_length);
menu = GTK_MENU (gtk_builder_get_object (builder, "playlist-menu"));
- repeat_menu = GTK_CHECK_MENU_ITEM (gtk_builder_get_object (builder, "menu-repeat"));
- shuffle_menu = GTK_CHECK_MENU_ITEM (gtk_builder_get_object (builder, "menu-shuffle"));
replace = GTK_CHECK_MENU_ITEM (gtk_builder_get_object (builder, "menu-replace"));
play_opened = GTK_CHECK_MENU_ITEM (gtk_builder_get_object (builder, "menu-play-opened"));
remember = GTK_CHECK_MENU_ITEM (gtk_builder_get_object (builder, "menu-remember"));
clear = GTK_MENU_ITEM (gtk_builder_get_object (builder, "menu-clear"));
parole_media_list_add_open_containing_folder (list, GTK_WIDGET(menu), (gint)ev->x, (gint)ev->y);
-
- g_object_get (G_OBJECT (list->priv->conf),
- "repeat", &val,
- NULL);
- gtk_check_menu_item_set_active (repeat_menu, val);
- g_signal_connect (repeat_menu, "activate",
- G_CALLBACK (repeat_activated_cb), list);
-
- g_object_get (G_OBJECT (list->priv->conf),
- "shuffle", &val,
- NULL);
-
- gtk_check_menu_item_set_active (shuffle_menu, val);
- g_signal_connect (shuffle_menu, "activate",
- G_CALLBACK (shuffle_activated_cb), list);
g_object_get (G_OBJECT (list->priv->conf),
"replace-playlist", &val,
@@ -1497,24 +1437,6 @@ parole_media_list_class_init (ParoleMediaListClass *klass)
g_cclosure_marshal_VOID__STRING,
G_TYPE_NONE, 1, G_TYPE_STRING);
- signals[SHUFFLE_TOGGLED] =
- g_signal_new ("shuffle-toggled",
- PAROLE_TYPE_MEDIA_LIST,
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (ParoleMediaListClass, shuffle_toggled),
- NULL, NULL,
- g_cclosure_marshal_VOID__BOOLEAN,
- G_TYPE_NONE, 1, G_TYPE_BOOLEAN);
-
- signals[REPEAT_TOGGLED] =
- g_signal_new ("repeat-toggled",
- PAROLE_TYPE_MEDIA_LIST,
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (ParoleMediaListClass, repeat_toggled),
- NULL, NULL,
- g_cclosure_marshal_VOID__BOOLEAN,
- G_TYPE_NONE, 1, G_TYPE_BOOLEAN);
-
signals[SHOW_PLAYLIST] =
g_signal_new ("show-playlist",
PAROLE_TYPE_MEDIA_LIST,
@@ -2183,30 +2105,14 @@ void parole_media_list_grab_focus (ParoleMediaList *list)
gtk_widget_grab_focus (list->priv->view);
}
-void
-parole_media_list_set_repeat_toggled (ParoleMediaList *list,
- gboolean repeat_toggled)
+void parole_media_list_connect_repeat_action (ParoleMediaList *list, GtkAction *action)
{
- gboolean toggled;
-
- toggled = gtk_toggle_tool_button_get_active (GTK_TOGGLE_TOOL_BUTTON (list->priv->repeat_button));
-
- if (toggled != repeat_toggled)
- {
- gtk_toggle_tool_button_set_active( GTK_TOGGLE_TOOL_BUTTON (list->priv->repeat_button), repeat_toggled );
- }
+ gtk_activatable_set_use_action_appearance(GTK_ACTIVATABLE(list->priv->repeat_button), TRUE);
+ gtk_activatable_set_related_action(GTK_ACTIVATABLE(list->priv->repeat_button), action);
}
-void
-parole_media_list_set_shuffle_toggled (ParoleMediaList *list,
- gboolean shuffle_toggled)
+void parole_media_list_connect_shuffle_action (ParoleMediaList *list, GtkAction *action)
{
- gboolean toggled;
-
- toggled = gtk_toggle_tool_button_get_active (GTK_TOGGLE_TOOL_BUTTON (list->priv->shuffle_button));
-
- if (toggled != shuffle_toggled)
- {
- gtk_toggle_tool_button_set_active( GTK_TOGGLE_TOOL_BUTTON (list->priv->shuffle_button), shuffle_toggled );
- }
+ gtk_activatable_set_use_action_appearance(GTK_ACTIVATABLE(list->priv->shuffle_button), TRUE);
+ gtk_activatable_set_related_action(GTK_ACTIVATABLE(list->priv->shuffle_button), action);
}
diff --git a/src/parole-medialist.h b/src/parole-medialist.h
index c5e700a..7d7fa1b 100644
--- a/src/parole-medialist.h
+++ b/src/parole-medialist.h
@@ -70,12 +70,6 @@ typedef struct
void (*uri_opened) (ParoleMediaList *list,
const gchar *uri);
- void (*shuffle_toggled) (ParoleMediaList *list,
- gboolean shuffle_toggled);
-
- void (*repeat_toggled) (ParoleMediaList *list,
- gboolean repeat_toggled);
-
void (*show_playlist) (ParoleMediaList *list,
gboolean show_playlist);
@@ -181,14 +175,14 @@ void parole_media_list_save_cb (GtkWidget *widget,
ParoleMediaList *list);
void parole_media_list_grab_focus (ParoleMediaList *list);
-
-void
-parole_media_list_set_repeat_toggled (ParoleMediaList *list,
- gboolean repeat_toggled);
-
-void
-parole_media_list_set_shuffle_toggled (ParoleMediaList *list,
- gboolean shuffle_toggled);
+
+void
+parole_media_list_connect_repeat_action (ParoleMediaList *list,
+ GtkAction *action);
+
+void
+parole_media_list_connect_shuffle_action (ParoleMediaList *list,
+ GtkAction *action);
void parole_media_list_add_dvd (ParoleMediaList *list, gchar *dvd_name);
diff --git a/src/parole-player.c b/src/parole-player.c
index 34b4ce1..51a5c4f 100644
--- a/src/parole-player.c
+++ b/src/parole-player.c
@@ -212,10 +212,10 @@ gboolean parole_player_volume_scroll_event_cb (GtkWidget *widget,
GdkEventScroll *ev,
ParolePlayer *player);
-void parole_player_shuffle_toggled_cb (GtkWidget *widget,
+void parole_player_toggle_shuffle_action_cb (GtkToggleAction *action,
ParolePlayer *player);
-void parole_player_repeat_toggled_cb (GtkWidget *widget,
+void parole_player_toggle_repeat_action_cb (GtkToggleAction *action,
ParolePlayer *player);
static void parole_player_clear_subtitles (ParolePlayer *player);
@@ -329,8 +329,6 @@ struct ParolePlayerPrivate
GtkWidget *window;
GtkWidget *recent_menu;
GtkWidget *playlist_nt;
- GtkWidget *shuffle_menu_item;
- GtkWidget *repeat_menu_item;
GtkWidget *range;
GtkWidget *progressbar_buffering;
@@ -400,6 +398,8 @@ struct ParolePlayerPrivate
GtkAction *media_previous_action;
GtkAction *media_fullscreen_action;
GtkToggleAction *toggle_playlist_action;
+ GtkToggleAction *toggle_repeat_action;
+ GtkToggleAction *toggle_shuffle_action;
};
@@ -1218,32 +1218,6 @@ parole_player_media_cursor_changed_cb (ParoleMediaList *list, gboolean media_sel
}
static void
-parole_player_media_list_shuffle_toggled_cb (ParoleMediaList *list, gboolean shuffle_toggled, ParolePlayer *player)
-{
- gboolean toggled;
-
- toggled = gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM(player->priv->shuffle_menu_item));
-
- if (toggled != shuffle_toggled)
- {
- gtk_check_menu_item_set_active ( GTK_CHECK_MENU_ITEM(player->priv->shuffle_menu_item), shuffle_toggled);
- }
-}
-
-static void
-parole_player_media_list_repeat_toggled_cb (ParoleMediaList *list, gboolean repeat_toggled, ParolePlayer *player)
-{
- gboolean toggled;
-
- toggled = gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM(player->priv->repeat_menu_item));
-
- if (toggled != repeat_toggled)
- {
- gtk_check_menu_item_set_active ( GTK_CHECK_MENU_ITEM(player->priv->repeat_menu_item), repeat_toggled);
- }
-}
-
-static void
parole_player_media_list_show_playlist_cb (ParoleMediaList *list, gboolean show_playlist, ParolePlayer *player)
{
parole_media_list_set_playlist_view(player->priv->list,
@@ -2148,30 +2122,18 @@ parole_player_menu_exit_cb (GtkWidget *widget, ParolePlayer *player)
}
-void parole_player_shuffle_toggled_cb (GtkWidget *widget, ParolePlayer *player)
+void parole_player_toggle_shuffle_action_cb (GtkToggleAction *action, ParolePlayer *player)
{
- gboolean toggled;
-
- toggled = gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (widget));
-
g_object_set (G_OBJECT (player->priv->conf),
- "shuffle", toggled,
+ "shuffle", gtk_toggle_action_get_active (action),
NULL);
-
- parole_media_list_set_shuffle_toggled(player->priv->list, toggled);
}
-void parole_player_repeat_toggled_cb (GtkWidget *widget, ParolePlayer *player)
+void parole_player_toggle_repeat_action_cb (GtkToggleAction *action, ParolePlayer *player)
{
- gboolean toggled;
-
- toggled = gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (widget));
-
g_object_set (G_OBJECT (player->priv->conf),
- "repeat", toggled,
+ "repeat", gtk_toggle_action_get_active (action),
NULL);
-
- parole_media_list_set_repeat_toggled(player->priv->list, toggled);
}
static void
@@ -2972,6 +2934,18 @@ parole_player_init (ParolePlayer *player)
g_signal_connect(G_OBJECT(player->priv->toggle_playlist_action), "activate", G_CALLBACK(parole_player_toggle_playlist_action_cb), player);
gtk_action_set_sensitive(GTK_ACTION(player->priv->toggle_playlist_action), TRUE);
+ /* Toggle Repeat */
+ player->priv->toggle_repeat_action = gtk_toggle_action_new("toggle_repeat_action", _("Repeat"), _("Repeat"), NULL);
+ gtk_action_set_icon_name(GTK_ACTION(player->priv->toggle_repeat_action), "media-playlist-repeat-symbolic");
+ g_signal_connect(G_OBJECT(player->priv->toggle_repeat_action), "activate", G_CALLBACK(parole_player_toggle_repeat_action_cb), player);
+ gtk_action_set_sensitive(GTK_ACTION(player->priv->toggle_repeat_action), TRUE);
+
+ /* Toggle Shuffle */
+ player->priv->toggle_shuffle_action = gtk_toggle_action_new("toggle_shuffle_action", _("Shuffle"), _("Shuffle"), NULL);
+ gtk_action_set_icon_name(GTK_ACTION(player->priv->toggle_shuffle_action), "media-playlist-shuffle-symbolic");
+ g_signal_connect(G_OBJECT(player->priv->toggle_shuffle_action), "activate", G_CALLBACK(parole_player_toggle_shuffle_action_cb), player);
+ gtk_action_set_sensitive(GTK_ACTION(player->priv->toggle_shuffle_action), TRUE);
+
/*
* GTK Widgets
@@ -3078,8 +3052,15 @@ parole_player_init (ParolePlayer *player)
gtk_activatable_set_use_action_appearance(GTK_ACTIVATABLE(action_widget), TRUE);
gtk_activatable_set_related_action(GTK_ACTIVATABLE(action_widget), GTK_ACTION(player->priv->toggle_playlist_action));
- player->priv->shuffle_menu_item = GTK_WIDGET (gtk_builder_get_object (builder, "shuffle"));
- player->priv->repeat_menu_item = GTK_WIDGET (gtk_builder_get_object (builder, "repeat"));
+ action_widget = GTK_WIDGET (gtk_builder_get_object (builder, "shuffle"));
+ gtk_activatable_set_use_action_appearance(GTK_ACTIVATABLE(action_widget), TRUE);
+ gtk_activatable_set_related_action(GTK_ACTIVATABLE(action_widget), GTK_ACTION(player->priv->toggle_shuffle_action));
+ parole_media_list_connect_shuffle_action(player->priv->list, GTK_ACTION(player->priv->toggle_shuffle_action));
+
+ action_widget = GTK_WIDGET (gtk_builder_get_object (builder, "repeat"));
+ gtk_activatable_set_use_action_appearance(GTK_ACTIVATABLE(action_widget), TRUE);
+ gtk_activatable_set_related_action(GTK_ACTIVATABLE(action_widget), GTK_ACTION(player->priv->toggle_repeat_action));
+ parole_media_list_connect_repeat_action(player->priv->list, GTK_ACTION(player->priv->toggle_repeat_action));
bug_report = GTK_WIDGET (gtk_builder_get_object (builder, "bug-report"));
g_signal_connect (bug_report, "activate", G_CALLBACK(on_bug_report_clicked), player);
@@ -3299,12 +3280,6 @@ parole_player_init (ParolePlayer *player)
g_signal_connect (player->priv->list, "uri-opened",
G_CALLBACK (parole_player_uri_opened_cb), player);
- g_signal_connect (player->priv->list, "repeat-toggled",
- G_CALLBACK (parole_player_media_list_repeat_toggled_cb), player);
-
- g_signal_connect (player->priv->list, "shuffle-toggled",
- G_CALLBACK (parole_player_media_list_shuffle_toggled_cb), player);
-
g_signal_connect (player->priv->list, "show-playlist",
G_CALLBACK (parole_player_media_list_show_playlist_cb), player);
@@ -3321,13 +3296,9 @@ parole_player_init (ParolePlayer *player)
"shuffle", &shuffle,
NULL);
- gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (gtk_builder_get_object (builder, "repeat")), repeat);
-
- parole_media_list_set_repeat_toggled(player->priv->list, repeat);
+ gtk_toggle_action_set_active (player->priv->toggle_repeat_action, repeat);
- gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (gtk_builder_get_object (builder, "shuffle")), shuffle);
-
- parole_media_list_set_shuffle_toggled(player->priv->list, shuffle);
+ gtk_toggle_action_set_active (player->priv->toggle_shuffle_action, shuffle);
parole_gst_set_default_aspect_ratio (player, builder);
More information about the Xfce4-commits
mailing list