#include "BonoboStream.h"
#define PDF_DEBUG 0
+#define UNTESTED 0
GBool printCommands = gFalse;
N_("Last"), N_("View the last page"), -1,
GNOME_UI_HANDLER_PIXMAP_NONE, NULL, 0,
(GdkModifierType)0, page_last_cb, (gpointer)view_data);
-
+#if UNTESTED > 0
+ gnome_ui_handler_toolbar_new_item (uih, "/First", GNOME_UI_HANDLER_MENU_ITEM,
+ N_("First"), N_("View the first page"), -1,
+ GNOME_UI_HANDLER_PIXMAP_STOCK, GNOME_STOCK_PIXMAP_FIRST,
+ 0, (GdkModifierType)0, page_first_cb, (gpointer)view_data);
+#endif
}
{
view_data_t *view_data = (view_data_t *) data;
+ g_return_if_fail (view_data != NULL);
+
*desired_width = view_data->w;
*desired_height = view_data->h;
}
+ static void
+ view_zoom_query (GnomeView *view, gdouble new_zoom, gpointer data)
+ {
+ view_data_t *view_data = (view_data_t *) data;
+
+ g_return_if_fail (view_data != NULL);
+
+ view_data->zoom = new_zoom;
+
+ redraw_view_all (view_data);
+ }
+
static void
realize_drawing_areas (bed_t *bed)
{
gtk_signal_connect (GTK_OBJECT (view), "size_query",
GTK_SIGNAL_FUNC (view_size_query), view_data);
+ gtk_signal_connect (GTK_OBJECT (view), "set_zoom_factor",
+ GTK_SIGNAL_FUNC (view_zoom_query), view_data);
+
bed->views = g_list_prepend (bed->views, view_data);
/* Verb handling */
#include "Error.h"
#include "config.h"
+#define UNTESTED 0
+
poptContext ctx;
gint gpdf_debug=0;
{ NULL, '\0', 0, NULL, 0 }
};
+typedef struct _Component Component;
+typedef struct _Container Container;
/* NB. there is a 1 to 1 Container -> Component mapping, this
is due to how much MDI sucks; unutterably */
-typedef struct {
- GnomeContainer *container;
- GnomeUIHandler *uih;
-
- GnomeViewFrame *active_view_frame;
-
- GtkWidget *app;
- GtkWidget *view_widget;
-} Container;
+struct _Container {
+ GnomeContainer *container;
+ GnomeUIHandler *uih;
+
+ GnomeViewFrame *active_view_frame;
+
+ GtkWidget *app;
+ GtkWidget *view_widget;
+ Component *component;
+ gdouble zoom;
+};
-typedef struct {
+struct _Component {
Container *container;
GnomeClientSite *client_site;
GnomeViewFrame *view_frame;
GnomeObjectClient *server;
-} Component;
+};
GList *containers = NULL;
/*
static void container_close_cmd (GtkWidget *widget, Container *container);
static void container_exit_cmd (void);
static Component *container_activate_component (Container *container, char *component_goad_id);
+ static void zoom_in_cmd (GtkWidget *widget, Container *container);
+ static void zoom_out_cmd (GtkWidget *widget, Container *container);
+ static void zoom_set (Container *container);
}
/*
GNOMEUIINFO_END
};
+static GnomeUIInfo container_menu_zoom [] = {
+ { GNOME_APP_UI_ITEM, N_("_Zoom in"),
+ N_("Increase the size of objects in the PDF"),
+ NULL, zoom_in_cmd },
+ { GNOME_APP_UI_ITEM, N_("_Zoom out"),
+ N_("Decrease the size of objects in the PDF"),
+ zoom_out_cmd },
+ GNOMEUIINFO_END
+};
+
static GnomeUIInfo container_main_menu [] = {
GNOMEUIINFO_MENU_FILE_TREE (container_file_menu),
+ { GNOME_APP_UI_SUBTREE, N_("_Zoom"), NULL, container_menu_zoom },
+ GNOMEUIINFO_END
+};
+
+static GnomeUIInfo container_toolbar [] = {
+ GNOMEUIINFO_ITEM_STOCK (
+ N_("Open"), N_("Opens an existing workbook"),
+ container_open_cmd, GNOME_STOCK_PIXMAP_OPEN),
+
+ GNOMEUIINFO_SEPARATOR,
GNOMEUIINFO_END
};
GNOME_PersistStream_load (persist,
(GNOME_Stream) gnome_object_corba_objref (GNOME_OBJECT (stream)), &ev);
+
+
GNOME_Unknown_unref (persist, &ev);
CORBA_Object_release (persist, &ev);
container_destroy ((Container *)containers->data);
}
+ /*
+ * Enforces the containers zoom factor.
+ */
+ static void
+ zoom_set (Container *container)
+ {
+ g_return_if_fail (container != NULL);
+ g_return_if_fail (container->component != NULL);
+
+ gnome_view_frame_set_zoom_factor (container->component->view_frame,
+ container->zoom);
+ }
+
+ static void
+ zoom_in_cmd (GtkWidget *widget, Container *container)
+ {
+ g_return_if_fail (container != NULL);
+ container->zoom *= 1.4;
+ zoom_set (container);
+ }
+
+ static void
+ zoom_out_cmd (GtkWidget *widget, Container *container)
+ {
+ g_return_if_fail (container != NULL);
+ container->zoom /= 1.4;
+ zoom_set (container);
+ }
+
static void
component_user_activate_request_cb (GnomeViewFrame *view_frame, gpointer data)
{
*/
view_widget = gnome_view_frame_get_wrapper (view_frame);
container->view_widget = view_widget;
+ container->component = component;
/* gtk_box_pack_start (GTK_BOX (container->app), view_widget,
FALSE, FALSE, 5);*/
gnome_app_set_contents (GNOME_APP (container->app), view_widget);
gnome_ui_handler_menu_free_list (menu_list);
}
+static void
+container_create_toolbar (Container *container)
+{
+ GnomeUIHandlerMenuItem *toolbar;
+
+#if UNTESTED > 0
+ gnome_ui_handler_create_menubar (container->uih);
+
+ /*
+ * Create the basic menus out of UIInfo structures.
+ */
+ toolbar = gnome_ui_handler_toolbar_parse_uiinfo_list_with_data (container_toolbar, container);
+ gnome_ui_handler_toolbar_add_list (container->uih, "/", menu_list);
+ gnome_ui_handler_toolbar_free_list (menu_list);
+#endif
+}
+
static Container *
container_new (const char *fname)
{
container = g_new0 (Container, 1);
- container->app = gnome_app_new ("pdf-viewer",
- "GNOME PDF viewer");
+ container->app = gnome_app_new ("pdf-viewer",
+ "GNOME PDF viewer");
+ container->zoom = 43.0;
gtk_window_set_default_size (GTK_WINDOW (container->app), 400, 400);
gtk_window_set_policy (GTK_WINDOW (container->app), TRUE, TRUE, FALSE);
container->uih = gnome_ui_handler_new ();
gnome_ui_handler_set_app (container->uih, GNOME_APP (container->app));
- /*
- * Create the menus.
- */
- container_create_menus (container);
+ container_create_menus (container);
+ container_create_toolbar (container);
gtk_widget_show_all (container->app);