X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fgtkmathview-bonobo%2Fsrc%2Fcontrol-factory.c;h=847d9f4f6106358b2fa0848aba85fa3cef10f208;hb=2a9857d047063f36dfd15b0e07902bde1dd3d466;hp=3f6b65e3ee74d07e4126ecc8023f32b125e072f6;hpb=a7201afb196a65767622051aca79b84f59c6db38;p=helm.git diff --git a/helm/gtkmathview-bonobo/src/control-factory.c b/helm/gtkmathview-bonobo/src/control-factory.c index 3f6b65e3e..847d9f4f6 100644 --- a/helm/gtkmathview-bonobo/src/control-factory.c +++ b/helm/gtkmathview-bonobo/src/control-factory.c @@ -1,207 +1,146 @@ +/* This file is part of GtkMathView-Bonobo, a Bonobo wrapper for GtkMathView. + * Copyright (C) 2003 Luca Padovani + * Pouria Masoudi + * + * 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 + */ + +#include #include #include #include + #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 { - MATH_VIEW_WIDTH, - MATH_VIEW_HEIGHT, - 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_args; - - -static GtkMathViewControlData* -gtk_math_view_control_data_new(GtkMathView *math_view) -{ - GtkMathViewControlData *cd = g_new(GtkMathViewControlData,1); - cd->math_view = math_view; - cd->semantic_selection = FALSE; - cd->doc_name = NULL; - cd->first_selected = NULL; - cd->root_selected = NULL; - return cd; -} - -static void -gtk_math_view_control_data_destroy(GtkMathViewControlData* cd) -{ - //gtk_object_unref(cd->math_view); - cd->math_view = NULL; - - g_free(cd); -} +enum + { + MATH_VIEW_WIDTH, + MATH_VIEW_HEIGHT, + MATH_VIEW_TOP_X, + MATH_VIEW_TOP_Y, + MATH_VIEW_FONT_SIZE, + MATH_VIEW_VERBOSITY, + MATH_VIEW_ID_NS_URI, + MATH_VIEW_ID_NAME + } math_args; static void -get_prop(BonoboPropertyBag *bag, - BonoboArg *arg, - guint arg_id, +get_prop(BonoboPropertyBag* bag, + BonoboArg* arg, + guint arg_id, CORBA_Environment *ev, - gpointer user_data) + gpointer user_data) { - GtkMathView *math_view; - - g_return_if_fail(GTK_IS_MATH_VIEW(user_data)); + GtkMathViewControlData* control_data = user_data; + g_assert(control_data != NULL); - math_view = GTK_MATH_VIEW(user_data); - - switch(arg_id) + 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; } } static void -set_prop(BonoboPropertyBag *bag, - const BonoboArg *arg, - guint arg_id, - CORBA_Environment *ev, - gpointer user_data) +set_prop(BonoboPropertyBag* bag, + const BonoboArg* arg, + guint arg_id, + CORBA_Environment* ev, + gpointer user_data) { - GtkMathView *math_view; + GtkMathViewControlData *control_data = user_data; + g_assert(control_data != NULL); - g_return_if_fail(GTK_IS_MATH_VIEW(user_data)); - - math_view = GTK_MATH_VIEW(user_data); - - switch(arg_id) + 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); @@ -210,13 +149,13 @@ set_prop(BonoboPropertyBag *bag, } static void -control_destroy(BonoboObject *object,GtkMathViewControlData *cd) +control_destroy(BonoboObject *object, GtkMathViewControlData *cd) { - gtk_math_view_control_data_destroy(cd); + gtk_math_view_control_data_destroy(cd); } static void -gtk_math_view_control_init(BonoboControl *control,GtkWidget *scrolled_window) +gtk_math_view_control_init(BonoboControl *control, GtkWidget *scrolled_window) { GtkMathViewControlData *control_data; GtkWidget *math_view; @@ -237,7 +176,7 @@ gtk_math_view_control_init(BonoboControl *control,GtkWidget *scrolled_window) gtk_container_add(GTK_CONTAINER (scrolled_window), GTK_WIDGET (control_data->math_view)); - view = view_new(); + view = view_new(control_data); bonobo_object_add_interface(BONOBO_OBJECT(control), BONOBO_OBJECT(view)); persist_file = gtk_math_view_persist_file_new(GTK_MATH_VIEW(math_view)); @@ -246,59 +185,82 @@ 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",MATH_VIEW_WIDTH,BONOBO_ARG_INT, - NULL,"width",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",MATH_VIEW_TOP_X,BONOBO_ARG_INT, - NULL,"top_x",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",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); - 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); + bonobo_property_bag_add(prop_bag, "width", + MATH_VIEW_WIDTH, BONOBO_ARG_INT, + NULL, + "Width of the view", 0); + bonobo_property_bag_add(prop_bag, "height", + MATH_VIEW_HEIGHT, BONOBO_ARG_INT, + NULL, + "Height of the view", 0); + bonobo_property_bag_add(prop_bag, "top-x", + MATH_VIEW_TOP_X, BONOBO_ARG_INT, + 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, + "Y coordinate of the top-left corner", 0); + bonobo_property_bag_add(prop_bag, "font-size", + MATH_VIEW_FONT_SIZE, BONOBO_ARG_INT, + NULL, + "Default font size", 0); + bonobo_property_bag_add(prop_bag,"verbosity", + MATH_VIEW_VERBOSITY, BONOBO_ARG_INT, + 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)); - g_signal_connect(control,"set_frame",G_CALLBACK(set_frame),control_data); - g_signal_connect(control_data->math_view, "click", G_CALLBACK (click_cb),control_data); - g_signal_connect(control_data->math_view, "select_begin",G_CALLBACK(select_begin_cb),control_data); - g_signal_connect(control_data->math_view, "select_over",G_CALLBACK(select_over_cb),control_data); - g_signal_connect(control_data->math_view, "select_end",G_CALLBACK(select_end_cb),control_data); - g_signal_connect(control_data->math_view, "select_abort",G_CALLBACK(select_abort_cb),control_data); + g_signal_connect(control,"set_frame", G_CALLBACK(set_frame), control_data); + g_signal_connect(control_data->math_view, "click", G_CALLBACK (click_cb), + control_data); + g_signal_connect(control_data->math_view, "select_begin", G_CALLBACK(select_begin_cb), + control_data); + g_signal_connect(control_data->math_view, "select_over", G_CALLBACK(select_over_cb), + control_data); + g_signal_connect(control_data->math_view, "select_end", G_CALLBACK(select_end_cb), + control_data); + g_signal_connect(control_data->math_view, "select_abort", G_CALLBACK(select_abort_cb), + control_data); } static BonoboObject* -gtk_math_view_control_factory(BonoboGenericFactory* factory, const gchar* component_id, gpointer closure) +gtk_math_view_control_factory(BonoboGenericFactory* factory, const gchar* component_id, + gpointer closure) { BonoboControl *control; GtkWidget *scrolled_window; scrolled_window = gtk_scrolled_window_new (NULL, NULL); - gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window), GTK_SHADOW_IN); - gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window), + GTK_SHADOW_IN); + gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW (scrolled_window), + GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_widget_show_all (scrolled_window); control = bonobo_control_new(scrolled_window); if(control) - { - gtk_math_view_control_init(control,scrolled_window); - return BONOBO_OBJECT(control); - } + { + gtk_math_view_control_init(control,scrolled_window); + return BONOBO_OBJECT(control); + } else - return NULL; + return NULL; } -BONOBO_ACTIVATION_SHLIB_FACTORY (CONTROL_FACTORY_ID, "GtkMathView Factory", gtk_math_view_control_factory, NULL); +BONOBO_ACTIVATION_SHLIB_FACTORY (CONTROL_FACTORY_ID, "GtkMathView Factory", + gtk_math_view_control_factory, NULL);