]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/gtkmathview-bonobo/src/persist-file.c
ocaml 3.09 transition
[helm.git] / helm / gtkmathview-bonobo / src / persist-file.c
index f1505b50cbaf7451401c20e521c5d06f829e6887..1d3fd36c672b9b34fed7cf0482bfac4d09a4581d 100644 (file)
+/* This file is part of GtkMathView-Bonobo, a Bonobo wrapper for GtkMathView.
+ * Copyright (C) 2003 Luca Padovani <lpadovan@cs.unibo.it>
+ *                    Pouria Masoudi <pmasoudi@cs.unibo.it>
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, please visit the project's home page
+ * http://helm.cs.unibo.it/gtkmathview-bonobo
+ * or send an email to <lpadovan@cs.unibo.it>
+ */
+
+#include <config.h>
+
 #include <bonobo.h>
-#include <gtk_math_view.h>
+#include <gtkmathview.h>
 #include <glib.h>
 
+#include "persist-file.h"
+#include "control-factory.h"
 
 static BonoboObjectClass *gtk_math_view_persist_file_parent_class;
 
-static void load_implementation(PortableServer_Servant servant,const CORBA_char *path,Corba_Environment *ev); 
+static void load_implementation(PortableServer_Servant servant,const gchar *path,
+                               CORBA_Environment *ev); 
+
+static void save_implementation(PortableServer_Servant servant,const gchar *path,
+                               CORBA_Environment *ev);
 
 static void finalize(GObject *object)
 {
-       GtkMathViewPersistFile *file = GTK_MATH_VIEW_PERSIST_FILE(object);
+  GtkMathViewPersistFile *file = GTK_MATH_VIEW_PERSIST_FILE(object);
 
-       if(file->math_view){
-               g_object_unref(file->html);
-               file->math_view = NULL;
-       }
+  if (file->math_view)
+    {
+      g_object_unref(file->math_view);
+      file->math_view = NULL;
+    }
 
-       G_OBJECT_CLASS(gtk_math_view_persist_file_parent_class)->finalize (object);
+  G_OBJECT_CLASS(gtk_math_view_persist_file_parent_class)->finalize (object);
 }
 
 static Bonobo_Persist_ContentTypeList *
 get_content_types(BonoboPersist *persist,CORBA_Environment *ev)
 {
-       return bonobo_persist_generate_content_types();
+  return bonobo_persist_generate_content_types(3, "application/mathml+xml", "text/mathml", "text/plain");
 }
 
 static void 
-gtk_math_view_persist_file_class_init(GtkMathViewFileClass *klass)
+gtk_math_view_persist_file_class_init(GtkMathViewPersistFileClass *klass)
 {
-       GObjectClass *object_class = G_OBJECT_CLASS(klass);
-       BonoboPersistClass *persist_class = BONOBO_PERSIST_CLASS(klass);
-       POA_Bonobo_PersistFile__epv *epv = &klass->epv;
+  GObjectClass *object_class = G_OBJECT_CLASS(klass);
+  BonoboPersistClass *persist_class = BONOBO_PERSIST_CLASS(klass);
+  POA_Bonobo_PersistFile__epv *epv = &klass->epv;
 
-       gtk_math_view_persist_file_parent_class = g_type_class_peek_parent(klass);
+  gtk_math_view_persist_file_parent_class = g_type_class_peek_parent(klass);
 
-       epv->load = load_implementation;
-       epv->save = save_implementation;
+  epv->load = load_implementation;
+  epv->save = save_implementation;
 
-       object_class->finalize = finalize;
-       persist_class->get_content_types = get_content_types;
+  object_class->finalize = finalize;
+  persist_class->get_content_types = get_content_types;
 }
 
 GType 
 gtk_math_view_persist_file_get_type(void)
 {
-       static GType type = 0;
-       if(!type){
-               GTypeInfo info = {
-                       sizeof(GtkMathViewPresistFileClass),
-                       (GBaseInitFunc) NULL,
-                       (GBaseFinalizeFunc) NULL,
-                       (GClassInitFunc) gtk_math_view_persist_file_class_init,
-                       NULL,  /* class finalize */
-                       NULL,  /* class_data */
-                       sizeof(GtkMathViewPresistFile),
-                       0,   /* n_preallocs */
-                       (GInstanceInitFunc) NULL
-               };
-
-               type = bonobo_type_unique(
-                               BONOBO_TYPE_PERSIST,
+  static GType type = 0;
+
+  if (!type)
+    {
+      GTypeInfo info =
+       {
+         sizeof(GtkMathViewPersistFileClass),
+         (GBaseInitFunc) NULL,
+         (GBaseFinalizeFunc) NULL,
+         (GClassInitFunc) gtk_math_view_persist_file_class_init,
+         NULL,  /* class finalize */
+         NULL,  /* class_data */
+         sizeof(GtkMathViewPersistFile),
+         0,   /* n_preallocs */
+         (GInstanceInitFunc) NULL
+       };
+
+      type = bonobo_type_unique(BONOBO_TYPE_PERSIST,
                                POA_Bonobo_PersistFile__init,POA_Bonobo_PersistFile__fini,
-                               G_STRUCT_OFFSET(GtkMathViewPresistFileClass, epv),
+                               G_STRUCT_OFFSET(GtkMathViewPersistFileClass, epv),
                                &info,"GtkMathViewPresistFile");
-       }
-       return type;
+    }
+
+  return type;
 }
 
 BonoboObject *
 gtk_math_view_persist_file_new(GtkMathView *math_view)
 {
-       BonoboObject *file;
+  BonoboObject *file;
 
-       file = g_object_new(gtk_math_view_persist_file_get_type(),NULL);
-       bonobo_persist_construct(BONOBO_PRESIST(file), CONTROL_FACTORY_ID);
+  file = g_object_new(gtk_math_view_persist_file_get_type(),NULL);
+  bonobo_persist_construct(BONOBO_PERSIST(file),CONTROL_FACTORY_ID);
 
-       g_object_ref(math_view);
-       GTK_MATH_VIEW_PRESIST_FILE (file) = math_view;
+  g_object_ref(math_view);
+  GTK_MATH_VIEW_PERSIST_FILE(file)->math_view = math_view;
 
-       return file;
+  return file;
 }
 
 static void
-load_implementation(const gchar *path,CORBA_Environment *ev)
+load_implementation(PortableServer_Servant servant,const gchar *path,CORBA_Environment *ev)
 {
-       gboolean result;
-       g_assert(GTK_IS_MATH_VIEW(ev));
-       result = gtk_math_view_load_uri((GtkMathView *) ev);
-       if(!result){
-               CORBA_exception_set(ev,CORBA_USER_EXCEPTION,ex_Bonobo_Persist_WrongDataType,NULL);
-               return;
-       }
-       return ;
+  gboolean result;
+  GtkMathViewPersistFile* file = GTK_MATH_VIEW_PERSIST_FILE(bonobo_object_from_servant(servant));
+  //fd = open(path, O_RDONLY);
+
+  result = gtk_math_view_load_uri(file->math_view,path);
+  if(!result)
+    CORBA_exception_set(ev,CORBA_USER_EXCEPTION,ex_Bonobo_Persist_WrongDataType,NULL);
+
+  bonobo_object_unref(BONOBO_OBJECT(file));
 }
 
 static void
-save_implementation(const gchar *path,CORBA_Environment *ev)
+save_implementation(PortableServer_Servant servant,
+                    const gchar *path,
+                    CORBA_Environment *ev)
 {
-       bonobo_exception_set(ev,"save_exception");
-       bonobo_exception_add_handler_str("save_exception",
-                                         "Save option is not valid");
-       return;
+  bonobo_exception_set(ev,"save_exception");
+  bonobo_exception_add_handler_str("save_exception",
+                                  "Save option is not valid");
 }