[evince/hildon-2-28] Hildonise EvWindow



commit 7a5a10e5bf7f96cf89a5b5dd3994faabf17bc3ff
Author: Christian Persch <chpe gnome org>
Date:   Fri Jun 5 00:34:30 2009 +0200

    Hildonise EvWindow
    
    Basic hildonisation: change parent type, add app menu instead of
    menubar, and use hildon filechoosers.

 data/Makefile.am          |    7 +++-
 data/evince-hildon-ui.xml |  103 +++++++++++++++++++++++++++++++++++++++++++++
 shell/ev-window.c         |   59 +++++++++++++++++++++++---
 shell/ev-window.h         |   12 +++++
 4 files changed, 173 insertions(+), 8 deletions(-)
---
diff --git a/data/Makefile.am b/data/Makefile.am
index 883a3aa..106b72e 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -16,10 +16,15 @@ man_MANS=evince.1
 
 uidir = $(pkgdatadir)
 ui_DATA =				\
-	evince-ui.xml			\
 	evince-toolbar.xml		\
 	hand-open.png
 
+if !PLATFORM_HILDON
+ui_DATA += evince-ui.xml
+else
+ui_DATA += evince-hildon-ui.xml
+endif
+
 if ENABLE_PREVIEWER
 ui_DATA += evince-previewer-ui.xml
 endif
diff --git a/data/evince-hildon-ui.xml b/data/evince-hildon-ui.xml
new file mode 100644
index 0000000..6b32bd0
--- /dev/null
+++ b/data/evince-hildon-ui.xml
@@ -0,0 +1,103 @@
+<ui>
+  <popup name="MainMenu">
+    <menu name="FileMenu" action="File">
+      <menuitem name="FileOpenMenu" action="FileOpen"/>
+      <menuitem name="FileSaveAsMenu" action="FileSaveAs"/>
+      <separator/>
+      <menuitem name="FilePropertiesMenu" action="FileProperties"/>
+      <separator/>
+      <placeholder name="RecentFilesMenu"/>
+    </menu>
+
+    <menu name="EditMenu" action="Edit">
+      <menuitem name="EditCopyMenu" action="EditCopy"/>
+      <separator/>
+      <menuitem name="EditSelectAllMenu" action="EditSelectAll"/>
+      <separator/>
+      <menuitem name="EditFindMenu" action="EditFind"/>
+      <menuitem name="EditFindNextMenu" action="EditFindNext"/>
+      <separator/>
+      <menuitem name="EditRotateLeftMenu" action="EditRotateLeft"/>
+      <menuitem name="EditRotateRigtMenu" action="EditRotateRight"/>
+    </menu>
+
+    <menu name="ViewMenu" action="View">
+      <menuitem name="ViewToolbarMenu" action="ViewToolbar"/>
+      <menuitem name="ViewSidebarMenu" action="ViewSidebar"/>
+      <separator/>
+      <menuitem name="ViewFullscreenMenu" action="ViewFullscreen"/>
+      <menuitem name="ViewPresentationMenu" action="ViewPresentation"/>
+      <separator/>
+      <menuitem name="ViewContinuousMenu" action="ViewContinuous"/>
+      <menuitem name="ViewDualMenu" action="ViewDual"/>
+      <menuitem name="ViewZoomInMenu" action="ViewZoomIn"/>
+      <menuitem name="ViewZoomInMenu" action="ViewZoomIn"/>
+      <menuitem name="ViewZoomOutMenu" action="ViewZoomOut"/>
+      <menuitem name="ViewBestFitMenu" action="ViewBestFit"/>
+      <menuitem name="ViewPageWidthMenu" action="ViewPageWidth"/>
+      <separator/>
+      <menuitem name="ViewReload" action="ViewReload"/>
+    </menu>
+
+    <menu name="GoMenu" action="Go">
+      <menuitem name="GoPreviousPageMenu" action="GoPreviousPage"/>
+      <menuitem name="GoNextPageMenu" action="GoNextPage"/>
+      <separator/>
+      <menuitem name="GoFirstPageMenu" action="GoFirstPage"/>
+      <menuitem name="GoLastPageMenu" action="GoLastPage"/>
+    </menu>
+
+    <menu name="HelpMenu" action="Help">
+      <menuitem name="HelpAboutMenu" action="HelpAbout"/>
+    </menu>
+    <menuitem name="FileCloseWindowMenu" action="FileCloseWindow"/>
+  </popup>
+
+  <popup name="DocumentPopup" action="PopupAction">
+    <menuitem name="OpenLink" action="OpenLink"/>
+    <menuitem name="CopyLinkAddress" action="CopyLinkAddress"/>
+    <menuitem name="GoLink" action="GoLink"/>
+    <separator/>
+    <menuitem name="GoPreviousPage" action="GoPreviousPage"/>
+    <menuitem name="GoNextPage" action="GoNextPage"/>
+    <menuitem name="ViewReload" action="ViewReload"/>
+    <separator/>
+    <menuitem name="EditCopy" action="EditCopy"/>
+    <menuitem name="EditSelectAllPopup" action="EditSelectAll"/>
+  </popup>
+
+  <toolbar name="DefaultToolBar">
+    <toolitem action="FileOpen"/>
+    <separator/>
+    <toolitem action="GoFirstPage"/>
+    <toolitem action="GoPreviousPage"/>
+    <toolitem action="PageSelector"/>
+    <toolitem action="GoNextPage"/>
+    <toolitem action="GoLastPage"/>
+    <separator/>
+    <toolitem action="ViewZoom"/>
+  </toolbar>
+
+  <accelerator name="PageDownAccel" action="PageDown"/>
+  <accelerator name="PageUpAccel" action="PageUp"/>
+  <accelerator name="GoBackwardFastAccel" action="GoBackwardFast"/>
+  <accelerator name="GoForwardFastAccel" action="GoForwardFast"/>
+  <accelerator name="EscapeAccel" action="Escape"/>
+  <accelerator name="SlashAccel" action="Slash"/>
+  <accelerator name="SpaceAccel" action="Space"/>
+  <accelerator name="ReturnAccel" action="Return"/>
+  <accelerator name="BackSpaceAccel" action="BackSpace"/>
+  <accelerator name="ShiftSpaceAccel" action="ShiftSpace"/>
+  <accelerator name="ShiftBackSpaceAccel" action="ShiftBackSpace"/>
+  <accelerator name="ShiftReturnAccel" action="ShiftReturn"/>
+  <accelerator name="FocusPageSelectorAccel" action="FocusPageSelector"/>
+  <accelerator name="PlusAccel" action="Plus"/>
+  <accelerator name="MinusAccel" action="Minus"/>
+  <accelerator name="Equal" action="Equal"/>
+  <accelerator name="CtrlEqualAccel" action="CtrlEqual"/>
+  <accelerator name="KpPlusAccel" action="KpPlus"/>
+  <accelerator name="KpMinusAccel" action="KpMinus"/>
+  <accelerator name="CtrlKpPlusAccel" action="CtrlKpPlus"/>
+  <accelerator name="CtrlKpMinusAccel" action="CtrlKpMinus"/>
+  
+</ui>
diff --git a/shell/ev-window.c b/shell/ev-window.c
index 9e24e05..32ddc9a 100644
--- a/shell/ev-window.c
+++ b/shell/ev-window.c
@@ -98,6 +98,10 @@
 #include <poppler.h>
 #endif
 
+#ifdef PLATFORM_HILDON
+#include <hildon/hildon-file-chooser-dialog.h>
+#endif
+
 typedef enum {
 	PAGE_MODE_DOCUMENT,
 	PAGE_MODE_PASSWORD
@@ -306,7 +310,11 @@ static void     ev_window_media_player_key_pressed      (EvWindow         *windo
 							 gpointer          user_data);
 static void     ev_window_save_print_page_setup         (EvWindow         *window);
 
+#ifndef PLATFORM_HILDON
 G_DEFINE_TYPE (EvWindow, ev_window, GTK_TYPE_WINDOW)
+#else
+G_DEFINE_TYPE (EvWindow, ev_window, HILDON_TYPE_WINDOW)
+#endif
 
 static void
 ev_window_set_action_sensitive (EvWindow   *ev_window,
@@ -514,6 +522,9 @@ ev_window_set_view_accels_sensitivity (EvWindow *window, gboolean sensitive)
 static void
 set_widget_visibility (GtkWidget *widget, gboolean visible)
 {
+        if (!widget)
+                return;
+
 	g_assert (GTK_IS_WIDGET (widget));
 	
 	if (visible)
@@ -2077,6 +2088,7 @@ ev_window_cmd_file_open (GtkAction *action, EvWindow *window)
 	const gchar *default_uri;
 	gchar       *parent_uri = NULL;
 
+#ifndef PLATFORM_HILDON
 	chooser = gtk_file_chooser_dialog_new (_("Open Document"),
 					       GTK_WINDOW (window),
 					       GTK_FILE_CHOOSER_ACTION_OPEN,
@@ -2085,8 +2097,22 @@ ev_window_cmd_file_open (GtkAction *action, EvWindow *window)
 					       GTK_STOCK_OPEN, GTK_RESPONSE_OK,
 					       NULL);
 
-	ev_document_factory_add_filters (chooser, NULL);
 	gtk_file_chooser_set_select_multiple (GTK_FILE_CHOOSER (chooser), TRUE);
+
+	gtk_dialog_set_default_response (GTK_DIALOG (chooser), GTK_RESPONSE_OK);
+        gtk_dialog_set_alternative_button_order (GTK_DIALOG (chooser),
+                                                 GTK_RESPONSE_OK,
+                                                 GTK_RESPONSE_CANCEL,
+                                                 -1);
+            
+#else
+
+        chooser = hildon_file_chooser_dialog_new (GTK_WINDOW (window),
+                                                  GTK_FILE_CHOOSER_ACTION_OPEN);
+	gtk_file_chooser_set_select_multiple (GTK_FILE_CHOOSER (chooser), FALSE);
+#endif /* !PLATFORM_HILDON */
+
+	ev_document_factory_add_filters (chooser, NULL);
 	gtk_file_chooser_set_local_only (GTK_FILE_CHOOSER (chooser), FALSE);
 
 	default_uri = ev_application_get_filechooser_uri (EV_APP, GTK_FILE_CHOOSER_ACTION_OPEN);
@@ -2629,19 +2655,25 @@ ev_window_cmd_save_as (GtkAction *action, EvWindow *ev_window)
 	GFile *file;
 	const gchar *default_uri;
 
+#ifndef PLATFORM_HILDON
 	fc = gtk_file_chooser_dialog_new (
 		_("Save a Copy"),
 		GTK_WINDOW (ev_window), GTK_FILE_CHOOSER_ACTION_SAVE,
 		GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
 		GTK_STOCK_SAVE, GTK_RESPONSE_OK,
 		NULL);
-
-	ev_document_factory_add_filters (fc, ev_window->priv->document);
 	gtk_dialog_set_default_response (GTK_DIALOG (fc), GTK_RESPONSE_OK);
         gtk_dialog_set_alternative_button_order (GTK_DIALOG (fc),
                                                 GTK_RESPONSE_OK,
                                                 GTK_RESPONSE_CANCEL,
                                                 -1);
+#else
+
+        fc = hildon_file_chooser_dialog_new (GTK_WINDOW (ev_window),
+                                             GTK_FILE_CHOOSER_ACTION_OPEN);
+#endif /* !PLATFORM_HILDON */
+
+	ev_document_factory_add_filters (fc, ev_window->priv->document);
 
 	gtk_file_chooser_set_local_only (GTK_FILE_CHOOSER (fc), FALSE);
 	gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (fc), TRUE);
@@ -5924,6 +5956,7 @@ ev_window_media_player_key_pressed (EvWindow    *window,
 static void
 ev_window_init (EvWindow *ev_window)
 {
+        EvWindowPrivate *priv;
 	GtkActionGroup *action_group;
 	GtkAccelGroup *accel_group;
 	GError *error = NULL;
@@ -5936,7 +5969,7 @@ ev_window_init (EvWindow *ev_window)
 	g_signal_connect (ev_window, "window_state_event",
 			  G_CALLBACK (window_state_event_cb), NULL);
 
-	ev_window->priv = EV_WINDOW_GET_PRIVATE (ev_window);
+	priv = ev_window->priv = EV_WINDOW_GET_PRIVATE (ev_window);
 
 	ev_window->priv->page_mode = PAGE_MODE_DOCUMENT;
 	ev_window->priv->title = ev_window_title_new (ev_window);
@@ -5985,9 +6018,13 @@ ev_window_init (EvWindow *ev_window)
 					    action_group, 0);
 
 	ui_path = g_build_filename (ev_application_get_data_dir (EV_APP),
-				    "evince-ui.xml", NULL);
-	if (!gtk_ui_manager_add_ui_from_file (
-		ev_window->priv->ui_manager, ui_path, &error))
+#ifndef PLATFORM_HILDON
+                                    "evince-ui.xml",
+#else
+                                    "evince-hildon-ui.xml",
+#endif
+                                    NULL);
+	if (!gtk_ui_manager_add_ui_from_file (priv->ui_manager, ui_path, &error))
 	{
 		g_warning ("building menus failed: %s", error->message);
 		g_error_free (error);
@@ -6002,6 +6039,7 @@ ev_window_init (EvWindow *ev_window)
 				  G_CALLBACK (ev_window_setup_recent),
 				  ev_window);
 
+#ifndef PLATFORM_HILDON
 	ev_window->priv->menubar =
 		 gtk_ui_manager_get_widget (ev_window->priv->ui_manager,
 					    "/MainMenu");
@@ -6023,6 +6061,13 @@ ev_window_init (EvWindow *ev_window)
 			    FALSE, FALSE, 0);
 	gtk_widget_show (ev_window->priv->toolbar);
 
+#else /* PLATFORM_HILDON */
+        hildon_window_set_menu (HILDON_WINDOW (ev_window),
+                                GTK_MENU (gtk_ui_manager_get_widget (priv->ui_manager, "/MainMenu")));
+        priv->toolbar = gtk_ui_manager_get_widget (priv->ui_manager, "/DefaultToolBar");
+        hildon_window_add_toolbar (HILDON_WINDOW (ev_window), GTK_TOOLBAR (priv->toolbar));
+#endif
+        
 	/* Add the main area */
 	ev_window->priv->hpaned = gtk_hpaned_new ();
 	g_signal_connect (ev_window->priv->hpaned,
diff --git a/shell/ev-window.h b/shell/ev-window.h
index 1df15ec..1dd0a05 100644
--- a/shell/ev-window.h
+++ b/shell/ev-window.h
@@ -26,6 +26,10 @@
 #include <glib.h>
 #include <gtk/gtk.h>
 
+#ifdef PLATFORM_HILDON
+#include <hildon/hildon-window.h>
+#endif
+
 #include "ev-link.h"
 #include "ev-page-cache.h"
 
@@ -61,12 +65,20 @@ typedef struct _EvWindowPrivate EvWindowPrivate;
 
 
 struct _EvWindow {
+#ifndef PLATFORM_HILDON
 	GtkWindow		base_instance;
+#else
+	HildonWindow		base_instance;
+#endif
 	EvWindowPrivate		*priv;
 };
 
 struct _EvWindowClass {
+#ifndef PLATFORM_HILDON
 	GtkWindowClass		base_class;
+#else
+	HildonWindowClass	base_class;
+#endif
 };
 
 GType		ev_window_get_type	  (void);



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