X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fgtkmathview-bonobo%2Fsrc%2Fcontrol-factory.c;h=c5fe901501cea4b6250a43ad55c98dabbfdc2a76;hb=e446d5f0746b4f3edc1b9742888410af310d815e;hp=5039e34ac2a374c8e8c671b2ba948b5d74d59dd8;hpb=775e2dbe1ee2f56bb3947e1ff85401a7c6c13b4d;p=helm.git diff --git a/helm/gtkmathview-bonobo/src/control-factory.c b/helm/gtkmathview-bonobo/src/control-factory.c index 5039e34ac..c5fe90150 100644 --- a/helm/gtkmathview-bonobo/src/control-factory.c +++ b/helm/gtkmathview-bonobo/src/control-factory.c @@ -1,38 +1,31 @@ #include #include - #include - #include "control-factory.h" +#include "handlers.h" +#include "control-data.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 char * -make_reg_id(const char *iid) -{ - char *id; - id = bonobo_activation_make_registration_id(iid,Display_String(gdk_display)); - return id; -}*/ +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 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; @@ -40,7 +33,7 @@ get_prop(BonoboPropertyBag *bag, math_view = GTK_MATH_VIEW(user_data); - switch(arg_id) + switch (arg_id) { case MATH_VIEW_WIDTH: { @@ -52,7 +45,6 @@ get_prop(BonoboPropertyBag *bag, 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); } @@ -60,7 +52,6 @@ get_prop(BonoboPropertyBag *bag, 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); @@ -69,7 +60,6 @@ get_prop(BonoboPropertyBag *bag, 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); @@ -79,7 +69,6 @@ get_prop(BonoboPropertyBag *bag, { guint i = gtk_math_view_get_font_size(math_view); g_assert(arg->_type == BONOBO_ARG_INT); - BONOBO_ARG_SET_INT(arg,i); } break; @@ -87,7 +76,6 @@ get_prop(BonoboPropertyBag *bag, { gboolean i = gtk_math_view_get_anti_aliasing(math_view); g_assert(arg->_type == BONOBO_ARG_BOOLEAN); - BONOBO_ARG_SET_BOOLEAN(arg,i); } break; @@ -95,7 +83,6 @@ get_prop(BonoboPropertyBag *bag, { gboolean i = gtk_math_view_get_transparency(math_view); g_assert(arg->_type == BONOBO_ARG_BOOLEAN); - BONOBO_ARG_SET_BOOLEAN(arg,i); } break; @@ -103,13 +90,13 @@ get_prop(BonoboPropertyBag *bag, { gint i = gtk_math_view_get_log_verbosity(math_view); g_assert(arg->_type == BONOBO_ARG_INT); - BONOBO_ARG_SET_INT(arg,i); } break; case MATH_VIEW_FONT_MANAGER: - {gint i = (gint) gtk_math_view_get_font_manager_type(math_view); - BONOBO_ARG_SET_INT(arg,i); + { + gint i = (gint) gtk_math_view_get_font_manager_type(math_view); + BONOBO_ARG_SET_INT(arg,i); } break; default: @@ -118,11 +105,11 @@ get_prop(BonoboPropertyBag *bag, } 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; @@ -130,25 +117,12 @@ set_prop(BonoboPropertyBag *bag, math_view = GTK_MATH_VIEW(user_data); - switch(arg_id) + switch (arg_id) { - /*case MATH_VIEW_WIDTH: - g_assert(arg->_type == BONOBO_ARG_INT); - - guint i = gtk_math_view_set_width(math_view); - BONOBO_ARG_SET_INT(arg,i); - break; - case MATH_VIEW_HEIGHT: - g_assert(arg->_type == BONOBO_ARG_INT); - - guint i = gtk_math_view_get_height(math_view); - BONOBO_ARG_SET_INT(arg,i); - break;*/ 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); } @@ -157,7 +131,6 @@ set_prop(BonoboPropertyBag *bag, { 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); } @@ -166,7 +139,6 @@ set_prop(BonoboPropertyBag *bag, { guint i = gtk_math_view_get_font_size(math_view); g_assert(arg->_type == BONOBO_ARG_INT); - BONOBO_ARG_SET_INT(arg,i); } break; @@ -174,7 +146,6 @@ set_prop(BonoboPropertyBag *bag, { gboolean i = gtk_math_view_get_anti_aliasing(math_view); g_assert(arg->_type == BONOBO_ARG_BOOLEAN); - BONOBO_ARG_SET_BOOLEAN(arg,i); } break; @@ -182,7 +153,6 @@ set_prop(BonoboPropertyBag *bag, { gboolean i = gtk_math_view_get_transparency(math_view); g_assert(arg->_type == BONOBO_ARG_BOOLEAN); - BONOBO_ARG_SET_BOOLEAN(arg,i); } break; @@ -190,7 +160,6 @@ set_prop(BonoboPropertyBag *bag, { gint i = gtk_math_view_get_log_verbosity(math_view); g_assert(arg->_type == BONOBO_ARG_INT); - BONOBO_ARG_SET_INT(arg,i); } break; @@ -201,52 +170,119 @@ set_prop(BonoboPropertyBag *bag, } break; default: - g_assert(FALSE); + bonobo_exception_set (ev, ex_Bonobo_PropertyBag_NotFound); + break; } } -static BonoboObject* -gtk_math_view_control_factory(BonoboGenericFactory* factory, const gchar* component_id, gpointer closure) +static void +control_destroy(BonoboObject *object, GtkMathViewControlData *cd) { - BonoboControl *control; - BonoboPropertyBag *prop_bag; + gtk_math_view_control_data_destroy(cd); +} + +static void +gtk_math_view_control_init(BonoboControl *control, GtkWidget *scrolled_window) +{ + GtkMathViewControlData *control_data; GtkWidget *math_view; + Bonobo_UIContainer remote_ui_container; + BonoboUIComponent *ui_component; + + BonoboPropertyBag *prop_bag; BonoboObject *persist_file; - + BonoboObject *persist_stream; + View* view; + math_view = gtk_math_view_new(NULL,NULL); gtk_widget_show(math_view); + + control_data = gtk_math_view_control_data_new((GtkMathView*)math_view); + + g_signal_connect (control, "destroy", G_CALLBACK (control_destroy), control_data); + + gtk_container_add(GTK_CONTAINER (scrolled_window), GTK_WIDGET (control_data->math_view)); - control = bonobo_control_new(math_view); + 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)); bonobo_object_add_interface(BONOBO_OBJECT(control), persist_file); + 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); bonobo_control_set_properties(control, BONOBO_OBJREF(prop_bag), NULL); - bonobo_property_bag_add(prop_bag,"width",MATH_VIEW_WIDTH,BONOBO_ARG_INT, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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_NULL, + bonobo_property_bag_add(prop_bag,"font_manager", + MATH_VIEW_FONT_MANAGER, BONOBO_ARG_INT, NULL,"font_manager",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); +} + +static BonoboObject* +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_widget_show_all (scrolled_window); + + control = bonobo_control_new(scrolled_window); - return BONOBO_OBJECT(control); + if(control) + { + gtk_math_view_control_init(control,scrolled_window); + return BONOBO_OBJECT(control); + } + else + 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);