[totem] main: Set button arrow icons according to locale's text direction



commit b75bcc3d9d012182e33703c179051cba140147dc
Author: Yosef Or Boczko <yoseforb gmail com>
Date:   Mon Jul 1 17:18:10 2013 +0300

    main: Set button arrow icons according to locale's text direction
    
    go-previous-symbolic in LTR,
    go-previous-rtl-symbolic in RTL.
    
    media-playback-start-symbolic in LTR,
    media-playback-start-rtl-symbolic in RTL.
    
    media-seek-forward-symbolic in LTR,
    media-seek-forward-rtl-symbolic in RTL.
    
    media-seek-backward-symbolic in LTR,
    media-seek-backward-rtl-symbolic in RTL.
    
    media-skip-forward-symbolic in LTR,
    media-skip-forward-rtl-symbolic in RTL.
    
    media-skip-backward-symbolic in LTR,
    media-skip-backward-rtl-symbolic in RTL.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=702631

 data/totem.ui        |    2 -
 src/totem-dnd-menu.c |    7 ++++-
 src/totem-object.c   |   77 +++++++++++++++++++++++++++++++++++++++----------
 src/totem-playlist.c |    5 ++-
 src/totem.c          |   16 ++++++++++
 5 files changed, 87 insertions(+), 20 deletions(-)
---
diff --git a/data/totem.ui b/data/totem.ui
index 29d1619..e337dcc 100644
--- a/data/totem.ui
+++ b/data/totem.ui
@@ -205,7 +205,6 @@
          <child>
             <object class="GtkAction" id="next-chapter">
                <property name="label" translatable="yes">_Next Chapter/Movie</property>
-               <property name="icon-name">media-skip-forward-symbolic</property>
                <property name="tooltip" translatable="yes">Next chapter or movie</property>
                <signal name="activate" handler="next_chapter_action_callback"/>
             </object>
@@ -214,7 +213,6 @@
          <child>
             <object class="GtkAction" id="previous-chapter">
                <property name="label" translatable="yes">_Previous Chapter/Movie</property>
-               <property name="icon-name">media-skip-backward-symbolic</property>
                <property name="tooltip" translatable="yes">Previous chapter or movie</property>
                <signal name="activate" handler="previous_chapter_action_callback"/>
             </object>
diff --git a/src/totem-dnd-menu.c b/src/totem-dnd-menu.c
index ffa6878..73246a3 100644
--- a/src/totem-dnd-menu.c
+++ b/src/totem-dnd-menu.c
@@ -86,12 +86,17 @@ totem_drag_ask (gboolean show_add_to)
        GtkWidget *menu;
        GtkWidget *menu_item;
        DragData dt;
+       gboolean rtl;
 
        dt.ch = 0;
 
        menu = gtk_menu_new ();
 
-       drag_append_drop_action_menu_item (menu, _("_Play Now"), "media-playback-start-symbolic", 
GDK_ACTION_MOVE, &dt);
+       rtl = gtk_widget_get_default_direction () == GTK_TEXT_DIR_RTL;
+
+       drag_append_drop_action_menu_item (menu, _("_Play Now"), 
+                                          rtl ? "media-playback-start-rtl-symbolic" : 
"media-playback-start-symbolic", 
+                                          GDK_ACTION_MOVE, &dt);
 
        if (show_add_to != FALSE)
                drag_append_drop_action_menu_item (menu, _("_Add to Playlist"), "gtk-add", GDK_ACTION_COPY, 
&dt);
diff --git a/src/totem-object.c b/src/totem-object.c
index edf9afa..2c1a64a 100644
--- a/src/totem-object.c
+++ b/src/totem-object.c
@@ -1207,10 +1207,16 @@ play_pause_set_label (TotemObject *totem, TotemStates state)
        GtkAction *action;
        const char *id, *tip;
        GSList *l, *proxies;
+       const char *icon_start;
 
        if (state == totem->state)
                return;
 
+       if (gtk_widget_get_default_direction () == GTK_TEXT_DIR_RTL)
+               icon_start = "media-playback-start-rtl-symbolic";
+       else
+               icon_start = "media-playback-start-symbolic";
+
        switch (state)
        {
        case STATE_PLAYING:
@@ -1219,7 +1225,7 @@ play_pause_set_label (TotemObject *totem, TotemStates state)
                totem_playlist_set_playing (totem->playlist, TOTEM_PLAYLIST_STATUS_PLAYING);
                break;
        case STATE_PAUSED:
-               id = "media-playback-start-symbolic";
+               id = icon_start;
                tip = N_("Play");
                totem_playlist_set_playing (totem->playlist, TOTEM_PLAYLIST_STATUS_PAUSED);
                break;
@@ -1228,7 +1234,7 @@ play_pause_set_label (TotemObject *totem, TotemStates state)
                                           0, 0);
                bacon_time_label_set_time (totem->time_rem_label,
                                           0, 0);
-               id = "media-playback-start-symbolic";
+               id = icon_start;
                totem_playlist_set_playing (totem->playlist, TOTEM_PLAYLIST_STATUS_NONE);
                tip = N_("Play");
                break;
@@ -2760,18 +2766,34 @@ totem_object_action_remote (TotemObject *totem, TotemRemoteCommand cmd, const ch
 {
        const char *icon_name;
        gboolean handled;
+       const char *icon_start, *icon_seek_forward, *icon_seek_backward, 
+               *icon_skip_forward, *icon_skip_backward;
 
        icon_name = NULL;
        handled = TRUE;
 
+       if (gtk_widget_get_default_direction () == GTK_TEXT_DIR_RTL) {
+               icon_start = "media-playback-start-rtl-symbolic";
+               icon_seek_forward = "media-seek-forward-rtl-symbolic";
+               icon_seek_backward = "media-seek-backward-rtl-symbolic";
+               icon_skip_forward = "media-skip-forward-rtl-symbolic";
+               icon_skip_backward = "media-skip-backward-rtl-symbolic";
+       } else {
+               icon_start = "media-playback-start-symbolic";
+               icon_seek_forward = "media-seek-forward-symbolic";
+               icon_seek_backward = "media-seek-backward-symbolic";
+               icon_skip_forward = "media-skip-forward-symbolic";
+               icon_skip_backward = "media-skip-backward-symbolic";
+       }
+
        switch (cmd) {
        case TOTEM_REMOTE_COMMAND_PLAY:
                totem_object_action_play (totem);
-               icon_name = "media-playback-start-symbolic";
+               icon_name = icon_start;
                break;
        case TOTEM_REMOTE_COMMAND_PLAYPAUSE:
                if (bacon_video_widget_is_playing (totem->bvw) == FALSE)
-                       icon_name = "media-playback-start-symbolic";
+                       icon_name = icon_start;
                else
                        icon_name = "media-playback-pause-symbolic";
                totem_object_action_play_pause (totem);
@@ -2806,7 +2828,7 @@ totem_object_action_remote (TotemObject *totem, TotemRemoteCommand cmd, const ch
                } else {
                        totem_object_action_seek_relative (totem, offset * 1000, FALSE);
                }
-               icon_name = "media-seek-forward-symbolic";
+               icon_name = icon_seek_forward;
                break;
        }
        case TOTEM_REMOTE_COMMAND_SEEK_BACKWARD: {
@@ -2818,7 +2840,7 @@ totem_object_action_remote (TotemObject *totem, TotemRemoteCommand cmd, const ch
                        totem_object_action_seek_relative (totem, SEEK_BACKWARD_OFFSET * 1000, FALSE);
                else
                        totem_object_action_seek_relative (totem,  - (offset * 1000), FALSE);
-               icon_name = "media-seek-backward-symbolic";
+               icon_name = icon_seek_backward;
                break;
        }
        case TOTEM_REMOTE_COMMAND_VOLUME_UP:
@@ -2829,11 +2851,11 @@ totem_object_action_remote (TotemObject *totem, TotemRemoteCommand cmd, const ch
                break;
        case TOTEM_REMOTE_COMMAND_NEXT:
                totem_object_action_next (totem);
-               icon_name = "media-skip-forward-symbolic";
+               icon_name = icon_skip_forward;
                break;
        case TOTEM_REMOTE_COMMAND_PREVIOUS:
                totem_object_action_previous (totem);
-               icon_name = "media-skip-backward-symbolic";
+               icon_name = icon_skip_backward;
                break;
        case TOTEM_REMOTE_COMMAND_FULLSCREEN:
                totem_object_action_fullscreen_toggle (totem);
@@ -3158,6 +3180,10 @@ static gboolean
 on_video_button_press_event (BaconVideoWidget *bvw, GdkEventButton *event,
                TotemObject *totem)
 {
+       gboolean rtl;
+
+       rtl = gtk_widget_get_default_direction () == GTK_TEXT_DIR_RTL;
+       
        if (event->type == GDK_BUTTON_PRESS && event->button == 1) {
                gtk_widget_grab_focus (GTK_WIDGET (bvw));
                return TRUE;
@@ -3169,7 +3195,7 @@ on_video_button_press_event (BaconVideoWidget *bvw, GdkEventButton *event,
        } else if (event->type == GDK_BUTTON_PRESS && event->button == 2) {
                const char *icon_name;
                if (bacon_video_widget_is_playing (totem->bvw) == FALSE)
-                       icon_name = "media-playback-start-symbolic";
+                       icon_name = rtl ? "media-playback-start-rtl-symbolic" : 
"media-playback-start-symbolic";
                else
                        icon_name = "media-playback-pause-symbolic";
                //totem_fullscreen_show_popups_or_osd (totem->fs, icon_name, FALSE);
@@ -3246,10 +3272,26 @@ totem_action_handle_key_press (TotemObject *totem, GdkEventKey *event)
 {
        gboolean retval;
        const char *icon_name;
+       const char *icon_start, *icon_seek_forward, *icon_seek_backward, 
+               *icon_skip_forward, *icon_skip_backward;
 
        retval = TRUE;
        icon_name = NULL;
 
+       if (gtk_widget_get_default_direction () == GTK_TEXT_DIR_RTL) {
+               icon_start = "media-playback-start-rtl-symbolic";
+               icon_seek_forward = "media-seek-forward-rtl-symbolic";
+               icon_seek_backward = "media-seek-backward-rtl-symbolic";
+               icon_skip_forward = "media-skip-forward-rtl-symbolic";
+               icon_skip_backward = "media-skip-backward-rtl-symbolic";
+       } else {
+               icon_start = "media-playback-start-symbolic";
+               icon_seek_forward = "media-seek-forward-symbolic";
+               icon_seek_backward = "media-seek-backward-symbolic";
+               icon_skip_forward = "media-skip-forward-symbolic";
+               icon_skip_backward = "media-skip-backward-symbolic";
+       }
+
        switch (event->keyval) {
        case GDK_KEY_A:
        case GDK_KEY_a:
@@ -3263,7 +3305,7 @@ totem_action_handle_key_press (TotemObject *totem, GdkEventKey *event)
        case GDK_KEY_B:
        case GDK_KEY_b:
                totem_object_action_previous (totem);
-               icon_name = "media-skip-backward-symbolic";
+               icon_name = icon_skip_backward;
                break;
        case GDK_KEY_C:
        case GDK_KEY_c:
@@ -3290,7 +3332,7 @@ totem_action_handle_key_press (TotemObject *totem, GdkEventKey *event)
        case GDK_KEY_n:
        case GDK_KEY_End:
                totem_object_action_next (totem);
-               icon_name = "media-skip-forward-symbolic";
+               icon_name = icon_skip_forward;
                break;
        case GDK_KEY_OpenURL:
                totem_action_fullscreen (totem, FALSE);
@@ -3309,7 +3351,7 @@ totem_action_handle_key_press (TotemObject *totem, GdkEventKey *event)
                        totem_action_show_properties (totem);
                } else {
                        if (bacon_video_widget_is_playing (totem->bvw) == FALSE)
-                               icon_name = "media-playback-start-symbolic";
+                               icon_name = icon_start;
                        else
                                icon_name = "media-playback-pause-symbolic";
                        totem_object_action_play_pause (totem);
@@ -3366,7 +3408,7 @@ totem_action_handle_key_press (TotemObject *totem, GdkEventKey *event)
                            focus == GTK_WIDGET (totem->bvw) || focus == totem->seek) {
                                if (event->keyval == GDK_KEY_space) {
                                        if (bacon_video_widget_is_playing (totem->bvw) == FALSE)
-                                               icon_name = "media-playback-start-symbolic";
+                                               icon_name = icon_start;
                                        else
                                                icon_name = "media-playback-pause-symbolic";
                                        totem_object_action_play_pause (totem);
@@ -3386,7 +3428,7 @@ totem_action_handle_key_press (TotemObject *totem, GdkEventKey *event)
                        /* Switch direction in RTL environment */
                        if (gtk_widget_get_direction (totem->win) == GTK_TEXT_DIR_RTL)
                                is_forward = !is_forward;
-                       icon_name = is_forward ? "media-seek-forward-symbolic" : 
"media-seek-backward-symbolic";
+                       icon_name = is_forward ? icon_seek_forward : icon_seek_backward;
 
                        totem_action_handle_seek (totem, event, is_forward);
                } else {
@@ -3398,7 +3440,7 @@ totem_action_handle_key_press (TotemObject *totem, GdkEventKey *event)
                break;
        case GDK_KEY_Home:
                totem_action_seek (totem, 0);
-               icon_name = "media-seek-backward-symbolic";
+               icon_name = icon_seek_backward;
                break;
        case GDK_KEY_Up:
                if (bacon_video_widget_has_menus (totem->bvw) != FALSE)
@@ -3826,6 +3868,9 @@ totem_callback_connect (TotemObject *totem)
        GAction *gaction;
        AtkObject *accessible;
        GMenuModel *menu;
+       gboolean rtl;
+
+       rtl = gtk_widget_get_default_direction () == GTK_TEXT_DIR_RTL;
 
        /* Menu items */
        gaction = g_action_map_lookup_action (G_ACTION_MAP (totem), "repeat");
@@ -3911,7 +3956,7 @@ totem_callback_connect (TotemObject *totem)
        /* Add a back button */
        item = gd_header_simple_button_new ();
        gd_header_button_set_symbolic_icon_name (GD_HEADER_BUTTON (item),
-                                                "go-previous-symbolic");
+                                                rtl ? "go-previous-rtl-symbolic" : "go-previous-symbolic");
        accessible = gtk_widget_get_accessible (item);
        atk_object_set_name (accessible, _("Back"));
        gtk_header_bar_pack_start (GTK_HEADER_BAR (totem->header), item);
diff --git a/src/totem-playlist.c b/src/totem-playlist.c
index d2e6610..e73169f 100644
--- a/src/totem-playlist.c
+++ b/src/totem-playlist.c
@@ -1272,12 +1272,15 @@ set_playing_icon (GtkTreeViewColumn *column, GtkCellRenderer *renderer,
 {
        TotemPlaylistStatus playing;
        const char *icon_name;
+       gboolean rtl;
+
+       rtl = gtk_widget_get_default_direction () == GTK_TEXT_DIR_RTL;
 
        gtk_tree_model_get (model, iter, PLAYING_COL, &playing, -1);
 
        switch (playing) {
                case TOTEM_PLAYLIST_STATUS_PLAYING:
-                       icon_name = "media-playback-start-symbolic";
+                       icon_name = rtl ? "media-playback-start-rtl-symbolic" : 
"media-playback-start-symbolic";
                        break;
                case TOTEM_PLAYLIST_STATUS_PAUSED:
                        icon_name = "media-playback-pause-symbolic";
diff --git a/src/totem.c b/src/totem.c
index 2c0ae53..b4b40e9 100644
--- a/src/totem.c
+++ b/src/totem.c
@@ -75,6 +75,8 @@ app_init (Totem *totem, char **argv)
 {
        GtkSettings *gtk_settings;
        char *sidebar_pageid;
+       const char *icon_skip_forward, *icon_skip_backward;
+       GtkAction *next_chapter, *previous_chapter;
 
        if (gtk_clutter_init (NULL, NULL) != CLUTTER_INIT_SUCCESS)
                g_warning ("gtk-clutter failed to initialise, expect problems from here on.");
@@ -90,6 +92,20 @@ app_init (Totem *totem, char **argv)
        if (totem->xml == NULL)
                totem_object_action_exit (NULL);
 
+       if (gtk_widget_get_default_direction () == GTK_TEXT_DIR_RTL) {
+               icon_skip_forward = "media-skip-forward-rtl-symbolic";
+               icon_skip_backward = "media-skip-backward-rtl-symbolic";
+       } else {
+               icon_skip_forward = "media-skip-forward-symbolic";
+               icon_skip_backward = "media-skip-backward-symbolic";
+       }
+
+       next_chapter = GTK_ACTION (gtk_builder_get_object (totem->xml, "next-chapter"));
+       previous_chapter = GTK_ACTION (gtk_builder_get_object (totem->xml, "previous-chapter"));
+
+       g_object_set (next_chapter, "icon-name", icon_skip_forward, NULL);
+       g_object_set (previous_chapter, "icon-name", icon_skip_backward, NULL);
+
        totem->win = GTK_WIDGET (gtk_builder_get_object (totem->xml, "totem_main_window"));
        gtk_window_set_hide_titlebar_when_maximized (GTK_WINDOW (totem->win), TRUE);
        g_object_bind_property (G_OBJECT (totem), "fullscreen",


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]