]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/gtkmathview-bonobo/src/control-factory.c
* some code cleanup
[helm.git] / helm / gtkmathview-bonobo / src / control-factory.c
index c5fe901501cea4b6250a43ad55c98dabbfdc2a76..847d9f4f6106358b2fa0848aba85fa3cef10f208 100644 (file)
@@ -1,10 +1,37 @@
+/* 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 <bonobo/bonobo-shlib-factory.h>
 #include <gtkmathview.h>
+
 #include "control-factory.h"
-#include "handlers.h"
 #include "control-data.h"
+#include "persist-file.h"
+#include "persist-stream.h"
+#include "handlers.h"
 #include "view.h"
 
 enum
@@ -14,10 +41,9 @@ enum
     MATH_VIEW_TOP_X,
     MATH_VIEW_TOP_Y,
     MATH_VIEW_FONT_SIZE,
-    MATH_VIEW_ANTI_ALIASING,
-    MATH_VIEW_TRANSPARENCY,
     MATH_VIEW_VERBOSITY,
-    MATH_VIEW_FONT_MANAGER
+    MATH_VIEW_ID_NS_URI,
+    MATH_VIEW_ID_NAME
   } math_args;
 
 static void
@@ -27,80 +53,54 @@ get_prop(BonoboPropertyBag* bag,
         CORBA_Environment *ev,
         gpointer user_data)
 {
-  GtkMathView *math_view;
-
-  g_return_if_fail(GTK_IS_MATH_VIEW(user_data));
-
-  math_view = GTK_MATH_VIEW(user_data);
+  GtkMathViewControlData* control_data = user_data;
+  g_assert(control_data != NULL);
 
   switch (arg_id)
     {
     case MATH_VIEW_WIDTH:
-      {
-       gint i = gtk_math_view_get_width(math_view);
-       g_assert(arg->_type == BONOBO_ARG_INT);
-       BONOBO_ARG_SET_INT(arg,i);
-      }
+      BONOBO_ARG_SET_INT(arg, gtk_math_view_get_width(control_data->math_view));
       break;
     case MATH_VIEW_HEIGHT:
-      {
-       guint i = gtk_math_view_get_height(math_view);
-       g_assert(arg->_type == BONOBO_ARG_INT);
-       BONOBO_ARG_SET_INT(arg,i);      
-      }
+      BONOBO_ARG_SET_INT(arg, gtk_math_view_get_height(control_data->math_view));
       break;
     case MATH_VIEW_TOP_X:
       {
-       guint new_top_y,new_top_x;
-       g_assert(arg->_type == BONOBO_ARG_INT);
-       gtk_math_view_get_top(math_view,&new_top_x, &new_top_y);
-       BONOBO_ARG_SET_INT(arg,new_top_x);
+       guint top_x;
+       gtk_math_view_get_top(control_data->math_view, &top_x, NULL);
+       BONOBO_ARG_SET_INT(arg, top_x);
       }
       break;
     case MATH_VIEW_TOP_Y:
       {
-       guint new_top_y,new_top_x;
-       g_assert(arg->_type == BONOBO_ARG_INT);
-       gtk_math_view_get_top(math_view,&new_top_x,&new_top_y);
-       BONOBO_ARG_SET_INT(arg,new_top_y);
+       guint top_y;
+       gtk_math_view_get_top(control_data->math_view, NULL, &top_y);
+       BONOBO_ARG_SET_INT(arg, top_y);
       }                
       break;
     case MATH_VIEW_FONT_SIZE:
-      {
-       guint i = gtk_math_view_get_font_size(math_view);
-       g_assert(arg->_type == BONOBO_ARG_INT);
-       BONOBO_ARG_SET_INT(arg,i);
-      }
-      break;
-    case MATH_VIEW_ANTI_ALIASING:
-      {
-       gboolean i = gtk_math_view_get_anti_aliasing(math_view);
-       g_assert(arg->_type == BONOBO_ARG_BOOLEAN);
-       BONOBO_ARG_SET_BOOLEAN(arg,i);
-      }
-      break;
-    case MATH_VIEW_TRANSPARENCY:
-      {
-       gboolean i = gtk_math_view_get_transparency(math_view);
-       g_assert(arg->_type == BONOBO_ARG_BOOLEAN);
-       BONOBO_ARG_SET_BOOLEAN(arg,i);
-      }
+      BONOBO_ARG_SET_INT(arg, gtk_math_view_get_font_size(control_data->math_view));
       break;
     case MATH_VIEW_VERBOSITY:
+      BONOBO_ARG_SET_INT(arg, gtk_math_view_get_log_verbosity(control_data->math_view));
+      break;
+    case MATH_VIEW_ID_NS_URI:
       {
-       gint i = gtk_math_view_get_log_verbosity(math_view);
-       g_assert(arg->_type == BONOBO_ARG_INT);
-       BONOBO_ARG_SET_INT(arg,i);
+       gchar* id_ns_uri = gtk_math_view_control_data_get_id_ns_uri(control_data);
+       BONOBO_ARG_SET_STRING(arg, id_ns_uri);
+       g_free(id_ns_uri);
       }
       break;
-    case MATH_VIEW_FONT_MANAGER:
+    case MATH_VIEW_ID_NAME:
       {
-       gint i = (gint) gtk_math_view_get_font_manager_type(math_view);
-       BONOBO_ARG_SET_INT(arg,i);
+       gchar* id_name = gtk_math_view_control_data_get_id_name(control_data);
+       BONOBO_ARG_SET_STRING(arg, id_name);
+       g_free(id_name);
       }
       break;
     default:
-      g_assert(FALSE);
+      bonobo_exception_set (ev, ex_Bonobo_PropertyBag_NotFound);
+      break;
     }
 }
 
@@ -111,63 +111,36 @@ set_prop(BonoboPropertyBag* bag,
         CORBA_Environment* ev,
         gpointer user_data)
 {
-  GtkMathView *math_view;
-
-  g_return_if_fail(GTK_IS_MATH_VIEW(user_data));
-
-  math_view = GTK_MATH_VIEW(user_data);
+  GtkMathViewControlData *control_data = user_data;
+  g_assert(control_data != NULL);
 
   switch (arg_id)
     {
     case MATH_VIEW_TOP_X:
       {
        guint old_top_y;
-       g_assert(arg->_type == BONOBO_ARG_INT);
-       gtk_math_view_get_top(math_view, NULL, &old_top_y);
-       gtk_math_view_set_top(math_view, BONOBO_ARG_GET_INT(arg), old_top_y);
+       gtk_math_view_get_top(control_data->math_view, NULL, &old_top_y);
+       gtk_math_view_set_top(control_data->math_view, BONOBO_ARG_GET_INT(arg), old_top_y);
       }
       break;
     case MATH_VIEW_TOP_Y:
       {
        guint old_top_x;
-       g_assert(arg->_type == BONOBO_ARG_INT);
-       gtk_math_view_get_top(math_view, &old_top_x, NULL);
-       gtk_math_view_set_top(math_view, BONOBO_ARG_GET_INT(arg), old_top_x);
+       gtk_math_view_get_top(control_data->math_view, &old_top_x, NULL);
+       gtk_math_view_set_top(control_data->math_view, BONOBO_ARG_GET_INT(arg), old_top_x);
       }
       break;
     case MATH_VIEW_FONT_SIZE:
-      {
-       guint i = gtk_math_view_get_font_size(math_view);
-       g_assert(arg->_type == BONOBO_ARG_INT);
-       BONOBO_ARG_SET_INT(arg,i);
-      }
-      break;
-    case MATH_VIEW_ANTI_ALIASING:
-      {
-       gboolean i = gtk_math_view_get_anti_aliasing(math_view);
-       g_assert(arg->_type == BONOBO_ARG_BOOLEAN);
-       BONOBO_ARG_SET_BOOLEAN(arg,i);
-      }
-      break;
-    case MATH_VIEW_TRANSPARENCY:
-      {
-       gboolean i = gtk_math_view_get_transparency(math_view);
-       g_assert(arg->_type == BONOBO_ARG_BOOLEAN);
-       BONOBO_ARG_SET_BOOLEAN(arg,i);
-      }
+      gtk_math_view_set_font_size(control_data->math_view, BONOBO_ARG_GET_INT(arg));
       break;
     case MATH_VIEW_VERBOSITY:
-      {
-       gint i = gtk_math_view_get_log_verbosity(math_view);
-       g_assert(arg->_type == BONOBO_ARG_INT);
-       BONOBO_ARG_SET_INT(arg,i);
-      }
+      gtk_math_view_set_log_verbosity(control_data->math_view, BONOBO_ARG_GET_INT(arg));
       break;
-    case MATH_VIEW_FONT_MANAGER:
-      {
-       gint i = (gint) gtk_math_view_get_font_manager_type(math_view);
-       BONOBO_ARG_SET_INT(arg,i);
-      }
+    case MATH_VIEW_ID_NS_URI:
+      gtk_math_view_control_data_set_id_ns_uri(control_data, BONOBO_ARG_GET_STRING(arg));
+      break;
+    case MATH_VIEW_ID_NAME:
+      gtk_math_view_control_data_set_id_name(control_data, BONOBO_ARG_GET_STRING(arg));
       break;
     default:
       bonobo_exception_set (ev, ex_Bonobo_PropertyBag_NotFound);
@@ -212,36 +185,41 @@ gtk_math_view_control_init(BonoboControl *control, GtkWidget *scrolled_window)
   persist_stream = gtk_math_view_persist_stream_new(GTK_MATH_VIEW(math_view));
   bonobo_object_add_interface(BONOBO_OBJECT(control), persist_stream);
 
-  prop_bag = bonobo_property_bag_new(get_prop, set_prop, math_view);
+  prop_bag = bonobo_property_bag_new(get_prop, set_prop, control_data);
   bonobo_control_set_properties(control, BONOBO_OBJREF(prop_bag), NULL);
        
-  bonobo_property_bag_add(prop_bag,"width",
+  bonobo_property_bag_add(prop_bag, "width",
                          MATH_VIEW_WIDTH, BONOBO_ARG_INT,
-                         NULL,"width",0);
-  bonobo_property_bag_add(prop_bag,"height",
+                         NULL,
+                         "Width of the view", 0);
+  bonobo_property_bag_add(prop_bag, "height",
                          MATH_VIEW_HEIGHT, BONOBO_ARG_INT,
-                         NULL,"height",0);
-  bonobo_property_bag_add(prop_bag,"top_x",
+                         NULL,
+                         "Height of the view", 0);
+  bonobo_property_bag_add(prop_bag, "top-x",
                          MATH_VIEW_TOP_X, BONOBO_ARG_INT,
-                         NULL,"top_x",0);
-  bonobo_property_bag_add(prop_bag,"top_y",
+                         NULL,
+                         "X coordinate of the top-left corner", 0);
+  bonobo_property_bag_add(prop_bag, "top-y",
                          MATH_VIEW_TOP_Y, BONOBO_ARG_INT,
-                         NULL,"top_y",0);
-  bonobo_property_bag_add(prop_bag,"font_size",
+                         NULL, 
+                         "Y coordinate of the top-left corner", 0);
+  bonobo_property_bag_add(prop_bag, "font-size",
                          MATH_VIEW_FONT_SIZE, BONOBO_ARG_INT,
-                         NULL,"font_size",0);
-  bonobo_property_bag_add(prop_bag,"anti_aliasing",
-                         MATH_VIEW_ANTI_ALIASING, BONOBO_ARG_BOOLEAN,
-                         NULL,"anti_aliasing",0);
-  bonobo_property_bag_add(prop_bag,"transparency",
-                         MATH_VIEW_TRANSPARENCY, BONOBO_ARG_BOOLEAN,
-                         NULL,"transparency",0);
+                         NULL,
+                         "Default font size", 0);
   bonobo_property_bag_add(prop_bag,"verbosity",
                          MATH_VIEW_VERBOSITY, BONOBO_ARG_INT,
-                         NULL,"verbosity",0);
-  bonobo_property_bag_add(prop_bag,"font_manager",
-                         MATH_VIEW_FONT_MANAGER, BONOBO_ARG_INT,
-                         NULL,"font_manager",0);
+                         NULL,
+                         "Verbosity level", 0);
+  bonobo_property_bag_add(prop_bag, "id-ns-uri",
+                         MATH_VIEW_ID_NS_URI, BONOBO_ARG_STRING,
+                         NULL,
+                         "Namespace URI of ID attribute", 0);
+  bonobo_property_bag_add(prop_bag, "id-name",
+                         MATH_VIEW_ID_NAME, BONOBO_ARG_STRING,
+                         NULL,
+                         "Name of ID attribute", 0);
 
   bonobo_object_unref(BONOBO_OBJECT(prop_bag));