[evince] Use EvPageActionWidget directly in the toolbar instead of EvPageAction
- From: Carlos Garcia Campos <carlosgc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evince] Use EvPageActionWidget directly in the toolbar instead of EvPageAction
- Date: Sun, 22 Jun 2014 10:23:16 +0000 (UTC)
commit 1e803dcde60be73bd853dce5852ceed566c8899c
Author: Carlos Garcia Campos <carlosgc gnome org>
Date: Sun Jun 22 11:08:11 2014 +0200
Use EvPageActionWidget directly in the toolbar instead of EvPageAction
We will get rid of current EvPageAction when the previewer doesn't use
GtkUIManager for the toolbar.
libmisc/ev-page-action-widget.c | 3 ++
shell/ev-toolbar.c | 20 ++++++++---
shell/ev-toolbar.h | 1 +
shell/ev-window.c | 77 ++++++---------------------------------
shell/ev-window.h | 1 -
5 files changed, 31 insertions(+), 71 deletions(-)
---
diff --git a/libmisc/ev-page-action-widget.c b/libmisc/ev-page-action-widget.c
index c5a14e0..a5410e5 100644
--- a/libmisc/ev-page-action-widget.c
+++ b/libmisc/ev-page-action-widget.c
@@ -245,6 +245,7 @@ ev_page_action_widget_init (EvPageActionWidget *action_widget)
gtk_container_add (GTK_CONTAINER (action_widget), hbox);
gtk_widget_show (hbox);
+ gtk_widget_set_sensitive (GTK_WIDGET (action_widget), FALSE);
gtk_widget_show (GTK_WIDGET (action_widget));
}
@@ -260,6 +261,8 @@ ev_page_action_widget_document_changed_cb (EvDocumentModel *model,
g_object_unref (action_widget->document);
action_widget->document = document;
+ gtk_widget_set_sensitive (GTK_WIDGET (action_widget), ev_document_get_n_pages (document) > 0);
+
if (action_widget->signal_id > 0) {
g_signal_handler_disconnect (action_widget->doc_model,
action_widget->signal_id);
diff --git a/shell/ev-toolbar.c b/shell/ev-toolbar.c
index 6b68dee..31e4089 100644
--- a/shell/ev-toolbar.c
+++ b/shell/ev-toolbar.c
@@ -31,6 +31,7 @@
#include "ev-history-action.h"
#include "ev-application.h"
#include "ev-recent-menu-model.h"
+#include "ev-page-action-widget.h"
#include <math.h>
enum
@@ -46,6 +47,7 @@ struct _EvToolbarPrivate {
GtkWidget *action_menu_button;
GtkWidget *history_action;
GtkWidget *zoom_action;
+ GtkWidget *page_selector;
GMenu *bookmarks_section;
};
@@ -194,10 +196,8 @@ ev_toolbar_constructed (GObject *object)
{
EvToolbar *ev_toolbar = EV_TOOLBAR (object);
GtkBuilder *builder;
- GtkActionGroup *action_group;
GtkWidget *tool_item;
GtkWidget *hbox, *vbox;
- GtkAction *action;
GtkWidget *button;
gboolean rtl;
GMenuModel *menu;
@@ -214,7 +214,6 @@ ev_toolbar_constructed (GObject *object)
gtk_style_context_add_class (gtk_widget_get_style_context (GTK_WIDGET (ev_toolbar)),
GTK_STYLE_CLASS_MENUBAR);
- action_group = ev_window_get_main_action_group (ev_toolbar->priv->window);
builder = gtk_builder_new_from_resource ("/org/gnome/evince/shell/ui/menus.ui");
/* Navigation */
@@ -242,8 +241,11 @@ ev_toolbar_constructed (GObject *object)
gtk_widget_show (tool_item);
/* Page selector */
- action = gtk_action_group_get_action (action_group, "PageSelector");
- tool_item = gtk_action_create_tool_item (action);
+ /* Use EvPageActionWidget for now, since the page selector action is also used by the previewer */
+ tool_item = GTK_WIDGET (g_object_new (EV_TYPE_PAGE_ACTION_WIDGET, NULL));
+ ev_toolbar->priv->page_selector = tool_item;
+ ev_page_action_widget_set_model (EV_PAGE_ACTION_WIDGET (tool_item),
+ ev_window_get_document_model (ev_toolbar->priv->window));
if (rtl)
gtk_widget_set_margin_left (tool_item, 12);
else
@@ -422,3 +424,11 @@ ev_toolbar_action_menu_popup (EvToolbar *ev_toolbar)
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ev_toolbar->priv->action_menu_button),
TRUE);
}
+
+GtkWidget *
+ev_toolbar_get_page_selector (EvToolbar *ev_toolbar)
+{
+ g_return_val_if_fail (EV_IS_TOOLBAR (ev_toolbar), NULL);
+
+ return ev_toolbar->priv->page_selector;
+}
diff --git a/shell/ev-toolbar.h b/shell/ev-toolbar.h
index 0c54932..0220b22 100644
--- a/shell/ev-toolbar.h
+++ b/shell/ev-toolbar.h
@@ -51,6 +51,7 @@ GType ev_toolbar_get_type (void);
GtkWidget *ev_toolbar_new (EvWindow *window);
gboolean ev_toolbar_has_visible_popups (EvToolbar *ev_toolbar);
void ev_toolbar_action_menu_popup (EvToolbar *ev_toolbar);
+GtkWidget *ev_toolbar_get_page_selector (EvToolbar *ev_toolbar);
G_END_DECLS
diff --git a/shell/ev-window.c b/shell/ev-window.c
index 9355e61..accb918 100644
--- a/shell/ev-window.c
+++ b/shell/ev-window.c
@@ -63,7 +63,7 @@
#include "ev-loading-message.h"
#include "ev-message-area.h"
#include "ev-metadata.h"
-#include "ev-page-action.h"
+#include "ev-page-action-widget.h"
#include "ev-password-view.h"
#include "ev-properties-dialog.h"
#include "ev-sidebar-annotations.h"
@@ -239,8 +239,6 @@ struct _EvWindowPrivate {
#define EV_WINDOW_IS_PRESENTATION(w) (w->priv->presentation_view != NULL)
-#define PAGE_SELECTOR_ACTION "PageSelector"
-
#define GS_LOCKDOWN_SCHEMA_NAME "org.gnome.desktop.lockdown"
#define GS_LOCKDOWN_SAVE "disable-save-to-disk"
#define GS_LOCKDOWN_PRINT "disable-printing"
@@ -388,17 +386,6 @@ ev_window_set_action_enabled (EvWindow *ev_window,
}
static void
-ev_window_set_action_sensitive (EvWindow *ev_window,
- const char *name,
- gboolean sensitive)
-{
- GtkAction *action = gtk_action_group_get_action (ev_window->priv->action_group,
- name);
- gtk_action_set_sensitive (action, sensitive);
-}
-
-
-static void
ev_window_setup_action_sensitivity (EvWindow *ev_window)
{
EvDocument *document = ev_window->priv->document;
@@ -482,9 +469,6 @@ ev_window_setup_action_sensitivity (EvWindow *ev_window)
ev_window_set_action_enabled (ev_window, "add-bookmark",
has_pages && ev_window->priv->bookmarks);
- /* Toolbar-specific actions: */
- ev_window_set_action_sensitive (ev_window, PAGE_SELECTOR_ACTION, has_pages);
-
ev_window_update_actions_sensitivity (ev_window);
}
@@ -3652,14 +3636,13 @@ ev_window_cmd_focus_page_selector (GSimpleAction *action,
gpointer user_data)
{
EvWindow *window = user_data;
- GtkAction *page_action;
+ GtkWidget *page_selector;
update_chrome_flag (window, EV_CHROME_RAISE_TOOLBAR, TRUE);
update_chrome_visibility (window);
- page_action = gtk_action_group_get_action (window->priv->action_group,
- PAGE_SELECTOR_ACTION);
- ev_page_action_grab_focus (EV_PAGE_ACTION (page_action));
+ page_selector = ev_toolbar_get_page_selector (EV_TOOLBAR (window->priv->toolbar));
+ ev_page_action_widget_grab_focus (EV_PAGE_ACTION_WIDGET (page_selector));
}
static void
@@ -5453,11 +5436,6 @@ ev_window_dispose (GObject *object)
priv->ui_manager = NULL;
}
- if (priv->action_group) {
- g_object_unref (priv->action_group);
- priv->action_group = NULL;
- }
-
if (priv->view_popup_action_group) {
g_object_unref (priv->view_popup_action_group);
priv->view_popup_action_group = NULL;
@@ -5800,39 +5778,19 @@ sidebar_annots_annot_add_cancelled (EvSidebarAnnotations *sidebar_annots,
}
static void
-register_custom_actions (EvWindow *window, GtkActionGroup *group)
-{
- GtkAction *action;
-
- action = g_object_new (EV_TYPE_PAGE_ACTION,
- "name", PAGE_SELECTOR_ACTION,
- "label", _("Page"),
- "tooltip", _("Select Page"),
- "icon_name", "text-x-generic",
- "visible_overflown", FALSE,
- NULL);
- ev_page_action_set_model (EV_PAGE_ACTION (action),
- window->priv->model);
- g_signal_connect (action, "activate_link",
- G_CALLBACK (activate_link_cb), window);
- gtk_action_group_add_action (group, action);
- g_object_unref (action);
-}
-
-static void
sidebar_widget_model_set (EvSidebarLinks *ev_sidebar_links,
GParamSpec *pspec,
EvWindow *ev_window)
{
GtkTreeModel *model;
- GtkAction *action;
+ GtkWidget *page_selector;
g_object_get (G_OBJECT (ev_sidebar_links),
"model", &model,
NULL);
- action = gtk_action_group_get_action (ev_window->priv->action_group, PAGE_SELECTOR_ACTION);
- ev_page_action_set_links_model (EV_PAGE_ACTION (action), model);
+ page_selector = ev_toolbar_get_page_selector (EV_TOOLBAR (ev_window->priv->toolbar));
+ ev_page_action_widget_update_links_model (EV_PAGE_ACTION_WIDGET (page_selector), model);
g_object_unref (model);
}
@@ -6766,15 +6724,7 @@ ev_window_init (EvWindow *ev_window)
actions, G_N_ELEMENTS (actions),
ev_window);
- action_group = gtk_action_group_new ("MenuActions");
- ev_window->priv->action_group = action_group;
- gtk_action_group_set_translation_domain (action_group, NULL);
- register_custom_actions (ev_window, action_group);
-
ev_window->priv->ui_manager = gtk_ui_manager_new ();
- gtk_ui_manager_insert_action_group (ev_window->priv->ui_manager,
- action_group, 0);
-
accel_group =
gtk_ui_manager_get_accel_group (ev_window->priv->ui_manager);
gtk_window_add_accel_group (GTK_WINDOW (ev_window), accel_group);
@@ -6823,6 +6773,11 @@ ev_window_init (EvWindow *ev_window)
FALSE, TRUE, 0);
gtk_widget_show (ev_window->priv->toolbar);
+ g_signal_connect (ev_toolbar_get_page_selector (EV_TOOLBAR (ev_window->priv->toolbar)),
+ "activate-link",
+ G_CALLBACK (activate_link_cb),
+ ev_window);
+
/* Find Bar */
ev_window->priv->find_bar = egg_find_bar_new ();
gtk_style_context_add_class (gtk_widget_get_style_context (ev_window->priv->find_bar),
@@ -7164,14 +7119,6 @@ ev_window_get_ui_manager (EvWindow *ev_window)
return ev_window->priv->ui_manager;
}
-GtkActionGroup *
-ev_window_get_main_action_group (EvWindow *ev_window)
-{
- g_return_val_if_fail (EV_WINDOW (ev_window), NULL);
-
- return ev_window->priv->action_group;
-}
-
GMenuModel *
ev_window_get_bookmarks_menu (EvWindow *ev_window)
{
diff --git a/shell/ev-window.h b/shell/ev-window.h
index cabd9c9..1d16a67 100644
--- a/shell/ev-window.h
+++ b/shell/ev-window.h
@@ -89,7 +89,6 @@ void ev_window_print_range (EvWindow *ev_window,
int last_page);
const gchar *ev_window_get_dbus_object_path (EvWindow *ev_window);
GtkUIManager *ev_window_get_ui_manager (EvWindow *ev_window);
-GtkActionGroup *ev_window_get_main_action_group (EvWindow *ev_window);
GMenuModel *ev_window_get_bookmarks_menu (EvWindow *ev_window);
EvHistory *ev_window_get_history (EvWindow *ev_window);
EvDocumentModel *ev_window_get_document_model (EvWindow *ev_window);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]