]> www.fi.muni.cz Git - evince.git/blobdiff - pdf/xpdf/gpdf.cc
Fixed spelling of componet in IID.
[evince.git] / pdf / xpdf / gpdf.cc
index 332beeb52443c61af1f9a2f473d931b151365b2e..a06d604717461c1a67026f8cb3651ff62bb5ad02 100644 (file)
 extern "C" {
 #define GString G_String
 #include <gnome.h>
+
+#if USING_OAF
+#include <liboaf/liboaf.h>
+#else
 #include <libgnorba/gnorba.h>
+#endif
+
 #include <gdk/gdkprivate.h>
 #include <gdk/gdkx.h>
-#include <bonobo/gnome-bonobo.h>
+#include <bonobo.h>
 #undef  GString 
 }
 #include "config.h"
@@ -35,11 +41,11 @@ typedef struct _Container Container;
 /* NB. there is a 1 to 1 Container -> Component mapping, this
    is due to how much MDI sucks; unutterably */
 struct _Container {
-  GnomeContainer    *container;
-  GnomeUIHandler    *uih;
+  BonoboContainer    *container;
+  BonoboUIHandler    *uih;
   
   GtkWidget        *app;
-  GtkScrolledWindow *scroll;
+  GtkWidget        *slot;
   GtkWidget        *view_widget;
   Component         *component;
 };
@@ -47,9 +53,9 @@ struct _Container {
 struct  _Component {
        Container         *container;
 
-       GnomeClientSite   *client_site;
-       GnomeViewFrame    *view_frame;
-       GnomeObjectClient *server;
+       BonoboClientSite   *client_site;
+       BonoboViewFrame   *view_frame;
+       BonoboObjectClient *server;
 };
 
 GList *containers = NULL;
@@ -102,33 +108,38 @@ extern "C" {
   static gboolean
   open_pdf (Container *container, const char *name)
   {
-    GnomeObjectClient *object;
-    GnomeStream *stream;
-    GNOME_PersistStream persist;
+    BonoboObjectClient *object;
+    BonoboStream *stream;
+    Bonobo_PersistStream persist;
     Component *comp;
     CORBA_Environment ev;
 
     g_return_val_if_fail (container != NULL, FALSE);
     g_return_val_if_fail (container->view_widget == NULL, FALSE);
 
+#if USING_OAF
+    comp = container_activate_component (container, "OAFIID:gpdf_component:892f2727-e2ec-423c-91ad-6f7b75fec6c8");
+
+#else
     comp = container_activate_component (container, "bonobo-object:application-x-pdf");
+#endif
     if (!comp || !(object = comp->server)) {
       gnome_error_dialog (_("Could not launch bonobo object."));
       return FALSE;
     }
     
     CORBA_exception_init (&ev);
-    persist = GNOME_Unknown_query_interface (
-      gnome_object_corba_objref (GNOME_OBJECT (object)),
-      "IDL:GNOME/PersistStream:1.0", &ev);
+    persist = Bonobo_Unknown_query_interface (
+      bonobo_object_corba_objref (BONOBO_OBJECT (object)),
+      "IDL:Bonobo/PersistStream:1.0", &ev);
     
     if (ev._major != CORBA_NO_EXCEPTION ||
        persist == CORBA_OBJECT_NIL) {
-      gnome_error_dialog ("Panic: component is well broken.");
+      gnome_error_dialog ("Panic: component doesn't implement PersistStream.");
       return FALSE;
     }
     
-    stream = gnome_stream_fs_open (name, GNOME_Storage_READ);
+    stream = bonobo_stream_fs_open (name, Bonobo_Storage_READ);
     
     if (stream == NULL) {
       char *err = g_strconcat (_("Could not open "), name, NULL);
@@ -137,14 +148,16 @@ extern "C" {
       return FALSE;
     }
     
-    GNOME_PersistStream_load (persist,
-                             (GNOME_Stream) gnome_object_corba_objref (GNOME_OBJECT (stream)), &ev);
+    Bonobo_PersistStream_load (persist,
+                             (Bonobo_Stream) bonobo_object_corba_objref (BONOBO_OBJECT (stream)),
+                              "application/pdf",
+                              &ev);
 
-    GNOME_Unknown_unref (persist, &ev);
+    Bonobo_Unknown_unref (persist, &ev);
     CORBA_Object_release (persist, &ev);
     CORBA_exception_free (&ev);
 
-/*    gnome_view_frame_view_do_verb (comp->view_frame, "ZoomFit"); */
+/*    bonobo_view_frame_view_do_verb (comp->view_frame, "ZoomFit"); */
     return TRUE;
   }
   
@@ -228,15 +241,15 @@ extern "C" {
     CORBA_exception_init (&ev);
 
     /* Kill merged menus et al. */
-    gnome_view_frame_view_deactivate (component->view_frame);
+    bonobo_view_frame_view_deactivate (component->view_frame);
 
     container = component->container;
     gtk_widget_destroy (container->view_widget);
     container->view_widget = NULL;
 
     if (component->server)
-      GNOME_Unknown_unref (
-       gnome_object_corba_objref (GNOME_OBJECT (component->server)), &ev);
+      Bonobo_Unknown_unref (
+       bonobo_object_corba_objref (BONOBO_OBJECT (component->server)), &ev);
     component->server = NULL;
 
     CORBA_exception_free (&ev);
@@ -301,7 +314,6 @@ static void
 container_about_cmd (GtkWidget *widget, Container *container)
 {
   GtkWidget *about;
-  int i;
 
   const gchar *authors[] = {
     N_("Derek B. Noonburg, main author"),
@@ -312,11 +324,13 @@ container_about_cmd (GtkWidget *widget, Container *container)
   };
   
 #ifdef ENABLE_NLS
+  int i;
+
   for (i = 0; authors[i] != NULL; i++)
     authors [i] = _(authors [i]);
 #endif
   
-  about = gnome_about_new (_("GPDF"), VERSION,
+  about = gnome_about_new (_("GPDF"), xpdfVersion,
                           _("(C) 1996-1999 Derek B. Noonburg."),
                           authors, NULL, NULL);
   
@@ -329,78 +343,68 @@ container_about_cmd (GtkWidget *widget, Container *container)
 static void
 container_set_view (Container *container, Component *component)
 {
-       GnomeViewFrame *view_frame;
+       BonoboViewFrame *view_frame;
        GtkWidget *view_widget;
 
        /*
         * Create the remote view and the local ViewFrame.
         */
-       view_frame = gnome_client_site_new_view (component->client_site);
+       view_frame = bonobo_client_site_new_view (component->client_site,
+                                                 bonobo_object_corba_objref (BONOBO_OBJECT (
+                                                         container->uih)));
        component->view_frame = view_frame;
 
-       /*
-        * Set the GnomeUIHandler for this ViewFrame.  That way, the
-        * embedded component can get access to our UIHandler server
-        * so that it can merge menu and toolbar items when it gets
-        * activated.
-        */
-       gnome_view_frame_set_ui_handler (view_frame, container->uih);
-
        /*
         * Embed the view frame into the application.
         */
-       view_widget = gnome_view_frame_get_wrapper (view_frame);
-       gnome_wrapper_set_visibility (GNOME_WRAPPER (view_widget), FALSE);
+       view_widget = bonobo_view_frame_get_wrapper (view_frame);
+       bonobo_wrapper_set_visibility (BONOBO_WRAPPER (view_widget), FALSE);
        container->view_widget = view_widget;
        container->component   = component;
 
-       /*
-        * Show the component.
-        */
-       gtk_scrolled_window_add_with_viewport (container->scroll, view_widget);
+       gtk_container_add (GTK_CONTAINER (container->slot), view_widget);
 
        /*
         * Activate it ( get it to merge menus etc. )
         */
-       gnome_view_frame_view_activate (view_frame);
-       gnome_view_frame_set_covered   (view_frame, FALSE);
+       bonobo_view_frame_view_activate (view_frame);
+       bonobo_view_frame_set_covered   (view_frame, FALSE);
 
-       gtk_widget_show_all (GTK_WIDGET (container->scroll));
+       gtk_widget_show_all (GTK_WIDGET (container->slot));
 }
 
-static GnomeObjectClient *
-container_launch_component (GnomeClientSite *client_site,
-                           GnomeContainer *container,
+static BonoboObjectClient *
+container_launch_component (BonoboClientSite *client_site,
+                           BonoboContainer *container,
                            char *component_goad_id)
 {
-       GnomeObjectClient *object_server;
+       BonoboObjectClient *object_server;
 
        /*
         * Launch the component.
         */
-       object_server = gnome_object_activate_with_goad_id (
-               NULL, component_goad_id, GOAD_ACTIVATE_SHLIB, NULL);
+       object_server = bonobo_object_activate (component_goad_id, 0);
 
        if (object_server == NULL)
                return NULL;
 
        /*
         * Bind it to the local ClientSite.  Every embedded component
-        * has a local GnomeClientSite object which serves as a
+        * has a local BonoboClientSite object which serves as a
         * container-side point of contact for the embeddable.  The
         * container talks to the embeddable through its ClientSite
         */
-       if (!gnome_client_site_bind_embeddable (client_site, object_server)) {
-               gnome_object_unref (GNOME_OBJECT (object_server));
+       if (!bonobo_client_site_bind_embeddable (client_site, object_server)) {
+               bonobo_object_unref (BONOBO_OBJECT (object_server));
                return NULL;
        }
 
        /*
-        * The GnomeContainer object maintains a list of the
+        * The BonoboContainer object maintains a list of the
         * ClientSites which it manages.  Here we add the new
         * ClientSite to that list.
         */
-       gnome_container_add (container, GNOME_OBJECT (client_site));
+       bonobo_container_add (container, BONOBO_OBJECT (client_site));
 
        return object_server;
 }
@@ -410,18 +414,18 @@ extern "C" {
   container_activate_component (Container *container, char *component_goad_id)
   {
     Component *component;
-    GnomeClientSite *client_site;
-    GnomeObjectClient *server;
+    BonoboClientSite *client_site;
+    BonoboObjectClient *server;
     
     /*
      * The ClientSite is the container-side point of contact for
      * the Embeddable.  So there is a one-to-one correspondence
-     * between GnomeClientSites and GnomeEmbeddables.  */
-    client_site = gnome_client_site_new (container->container);
+     * between BonoboClientSites and BonoboEmbeddables.  */
+    client_site = bonobo_client_site_new (container->container);
     
     /*
-     * A GnomeObjectClient is a simple wrapper for a remote
-     * GnomeObject (a server supporting GNOME::Unknown).
+     * A BonoboObjectClient is a simple wrapper for a remote
+     * BonoboObject (a server supporting Bonobo::Unknown).
      */
     server = container_launch_component (client_site, container->container,
                                         component_goad_id);
@@ -478,133 +482,33 @@ extern "C" {
       tmp_list = g_list_next (tmp_list);
     }
   }
-  
-  /*
-   * GtkWidget key_press method override
-   *
-   * Scrolls the window on keypress
-   */
-  static gint
-  key_press_event_cb (GtkWidget *widget, GdkEventKey *event)
-  {
-    Container *container = (Container *) gtk_object_get_data (GTK_OBJECT (widget), "container_data");
-    Component *component;
-    GtkScrolledWindow *win;
-    float              delta;
 
-    g_return_val_if_fail (container != NULL, FALSE);
-
-    win       = container->scroll;
-    component = container->component;
-    if (component == NULL || win == NULL)
-      return FALSE;
-
-    /*
-     * Scrolling the view.
-     */
-    if (event->keyval == GDK_Up) {
-      GtkAdjustment *adj = gtk_scrolled_window_get_vadjustment (win);
-
-      if (event->state & GDK_CONTROL_MASK)
-       delta = adj->step_increment * 3;
-      else
-       delta = adj->step_increment;
-
-      adj->value = CLAMP (adj->value - delta,
-                         adj->lower, adj->upper - adj->page_size);
-
-      gtk_adjustment_value_changed (adj);
-      return TRUE;
-    } else if (event->keyval == GDK_Down) {
-      GtkAdjustment *adj = gtk_scrolled_window_get_vadjustment (win);
-
-      if (event->state & GDK_CONTROL_MASK)
-       delta = adj->step_increment * 3;
-      else
-       delta = adj->step_increment;
-
-      adj->value = CLAMP (adj->value + delta,
-                         adj->lower, adj->upper - adj->page_size);
-      gtk_adjustment_value_changed (adj);
-      return TRUE;
-    } else if (event->keyval == GDK_Left) {
-      GtkAdjustment *adj = gtk_scrolled_window_get_hadjustment (win);
-
-      if (event->state & GDK_CONTROL_MASK)
-       delta = adj->step_increment * 3;
-      else
-       delta = adj->step_increment;
-
-      adj->value = CLAMP (adj->value - delta,
-                         adj->lower, adj->upper - adj->page_size);
-      gtk_adjustment_value_changed (adj);
-      return TRUE;
-    } else if (event->keyval == GDK_Right) {
-      GtkAdjustment *adj = gtk_scrolled_window_get_hadjustment (win);
-
-      if (event->state & GDK_CONTROL_MASK)
-       delta = adj->step_increment * 3;
-      else
-       delta = adj->step_increment;
-
-      adj->value = CLAMP (adj->value + delta,
-                         adj->lower, adj->upper - adj->page_size);
-      gtk_adjustment_value_changed (adj);
-      return TRUE;
-
-      /*
-       * Various shortcuts mapped to verbs.
-       */
-
-    } else if (event->keyval == GDK_Home) {
-      gnome_view_frame_view_do_verb (component->view_frame, VERB_FIRST);
-      return TRUE;
-    } else if (event->keyval == GDK_End) {
-      gnome_view_frame_view_do_verb (component->view_frame, VERB_LAST);
-      return TRUE;
-    } else if (event->keyval == GDK_Page_Down ||
-              event->keyval == GDK_Next) {
-      gnome_view_frame_view_do_verb (component->view_frame, VERB_NEXT);
-      return TRUE;
-    } else if (event->keyval == GDK_Page_Up ||
-              event->keyval == GDK_Prior) {
-      gnome_view_frame_view_do_verb (component->view_frame, VERB_PREV);
-      return TRUE;
-    } else if (event->keyval == GDK_plus ||
-              event->keyval == GDK_equal) {
-      gnome_view_frame_view_do_verb (component->view_frame, VERB_Z_IN);
-    } else if (event->keyval == GDK_underscore ||
-              event->keyval == GDK_minus) {
-      gnome_view_frame_view_do_verb (component->view_frame, VERB_Z_OUT);
-    }    
-    return FALSE;
-  }
-}
+}  
 
 static void
 container_create_menus (Container *container)
 {
-       GnomeUIHandlerMenuItem *menu_list;
+       BonoboUIHandlerMenuItem *menu_list;
 
-       gnome_ui_handler_create_menubar (container->uih);
+       bonobo_ui_handler_create_menubar (container->uih);
 
        /*
         * Create the basic menus out of UIInfo structures.
         */
-       menu_list = gnome_ui_handler_menu_parse_uiinfo_list_with_data (container_main_menu, container);
-       gnome_ui_handler_menu_add_list (container->uih, "/", menu_list);
-       gnome_ui_handler_menu_free_list (menu_list);
+       menu_list = bonobo_ui_handler_menu_parse_uiinfo_list_with_data (container_main_menu, container);
+       bonobo_ui_handler_menu_add_list (container->uih, "/", menu_list);
+       bonobo_ui_handler_menu_free_list (menu_list);
 }
 
 static void
 container_create_toolbar (Container *container)
 {
-       GnomeUIHandlerToolbarItem *toolbar;
+       BonoboUIHandlerToolbarItem *toolbar;
 
-       gnome_ui_handler_create_toolbar (container->uih, "pdf");
-       toolbar = gnome_ui_handler_toolbar_parse_uiinfo_list_with_data (container_toolbar, container);
-       gnome_ui_handler_toolbar_add_list (container->uih, "/pdf/", toolbar);
-       gnome_ui_handler_toolbar_free_list (toolbar);
+       bonobo_ui_handler_create_toolbar (container->uih, "pdf");
+       toolbar = bonobo_ui_handler_toolbar_parse_uiinfo_list_with_data (container_toolbar, container);
+       bonobo_ui_handler_toolbar_add_list (container->uih, "/pdf/", toolbar);
+       bonobo_ui_handler_toolbar_free_list (toolbar);
 }
 
 static Container *
@@ -620,7 +524,7 @@ container_new (const char *fname)
        container = g_new0 (Container, 1);
 
        container->app = gnome_app_new ("pdf-viewer",
-                                        "GNOME PDF viewer");
+                                       "GNOME PDF viewer");
 
        gtk_drag_dest_set (container->app,
                           GTK_DEST_DEFAULT_ALL,
@@ -635,27 +539,25 @@ container_new (const char *fname)
        gtk_window_set_default_size (GTK_WINDOW (container->app), 600, 600);
        gtk_window_set_policy (GTK_WINDOW (container->app), TRUE, TRUE, FALSE);
 
-       container->container   = gnome_container_new ();
+       container->container   = bonobo_container_new ();
        container->view_widget = NULL;
-       container->scroll = GTK_SCROLLED_WINDOW (gtk_scrolled_window_new (NULL, NULL));
-       gtk_scrolled_window_set_policy (container->scroll, GTK_POLICY_ALWAYS,
-                                       GTK_POLICY_ALWAYS);
-       gnome_app_set_contents (GNOME_APP (container->app), GTK_WIDGET (container->scroll));
+       container->slot = gtk_event_box_new ();
+       gtk_widget_show (container->slot);
+
+       gnome_app_set_contents (GNOME_APP (container->app), GTK_WIDGET (container->slot));
 
        gtk_object_set_data (GTK_OBJECT (container->app), "container_data", container);
-       gtk_signal_connect  (GTK_OBJECT (container->app), "key_press_event",
-                            GTK_SIGNAL_FUNC (key_press_event_cb), NULL);
        gtk_signal_connect  (GTK_OBJECT (container->app), "delete_event",
                             GTK_SIGNAL_FUNC (container_destroy_cb), container);
 
        /*
-        * Create the GnomeUIHandler object which will be used to
+        * Create the BonoboUIHandler object which will be used to
         * create the container's menus and toolbars.  The UIHandler
         * also creates a CORBA server which embedded components use
         * to do menu/toolbar merging.
         */
-       container->uih = gnome_ui_handler_new ();
-       gnome_ui_handler_set_app (container->uih, GNOME_APP (container->app));
+       container->uih = bonobo_ui_handler_new ();
+       bonobo_ui_handler_set_app (container->uih, GNOME_APP (container->app));
 
        container_create_menus   (container);
        container_create_toolbar (container);
@@ -686,14 +588,23 @@ main (int argc, char **argv)
   
   CORBA_exception_init (&ev);
   
+
+#if USING_OAF
+  gnomelib_register_popt_table (oaf_popt_options, "OAF");
+  gnome_init_with_popt_table("PDFViewer", "0.0.1",
+                            argc, argv,
+                            gpdf_popt_options, 0, &ctx); 
+  orb = oaf_init (argc, argv);
+#else
   gnome_CORBA_init_with_popt_table ("PDFViewer", "0.0.1",
                                    &argc, argv,
                                    gpdf_popt_options, 0, &ctx,
                                    GNORBA_INIT_SERVER_FUNC, &ev);
 
-  CORBA_exception_free (&ev);
-
   orb = gnome_CORBA_ORB ();
+#endif
+
+  CORBA_exception_free (&ev);
 
   if (bonobo_init (orb, NULL, NULL) == FALSE)
     g_error (_("Could not initialize Bonobo!\n"));