+/* 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(PortableServer_Servant servant,const CORBA_char *path,CORBA_Environment *ev)
+load_implementation(PortableServer_Servant servant,const gchar *path,CORBA_Environment *ev)
{
- GtkMathViewPersistFile *file = GTK_MATH_VIEW_
-}
-
-Dom::Document *
-gtk_math_view_bonobo_data_construct(Dom::Document *data_file)
-{
- BonoboObject *retval;
- BonoboPersistFile *file;
-
- file = bonobo_persist_file_new(gtk_math_view_load_from_file,
- gtk_math_view_save_to_file,
- "OAFIID:GNOME_MATH_VIEW_FILE_Control",
- data_file);
-
- if(file == NULL)
- {
- bonobo_object_unref(BONOBO_OBJECT (data_file));
- return NULL;
- }
-
- bonobo_object_add_interface(BONOBO_OBJECT(data_file),
- BONOBO_OBJECT(file));
- return data_file;
-}
-
-
-}
+ 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);
-static gint
-gtk_math_view_bonobo_load_from_file(BonoboPresistFile *pf,
- const CORBA_char *filename,
- CORBA_Environment *ev,
- void *closure)
-{
- Bonobo_PersistStream ps = closure;
- BonoboStream *stream;
-
- g_return_val_if_fail (data != NULL, -1);
- //FIXME: controllo del tipo di dato in input
-
- stram = bonobo_stream_open(
- BONOBO_IO_DRIVER_FS,
- filename,Bonobo_STORAGE_READ,
- 0);
- if(!stream)
- return 0;
-
- //FIXME:I have to extract content type from file
-
-
- Bonobo_PersistStream_load(ps, type, ev);
-
- return 1; //return 1 on success
+ bonobo_object_unref(BONOBO_OBJECT(file));
}
-static gint
-gtk_math_view_bonobo_save_to_file(BonoboPresistFile *pf,
- const CORBA_char *filename,
- CORBA_Environment *ev,
- void *closure)
+static void
+save_implementation(PortableServer_Servant servant,
+ const gchar *path,
+ CORBA_Environment *ev)
{
- return 1; //return 1 on success
+ bonobo_exception_set(ev,"save_exception");
+ bonobo_exception_add_handler_str("save_exception",
+ "Save option is not valid");
}
-
-