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=bfed0d5b82db85598c33990dfd1f4a433a9a08cd;hpb=914b0da7aa23c8d11db1e415c56594ac52972b58;p=helm.git diff --git a/helm/gtkmathview-bonobo/src/control-factory.c b/helm/gtkmathview-bonobo/src/control-factory.c index bfed0d5b8..c5fe90150 100644 --- a/helm/gtkmathview-bonobo/src/control-factory.c +++ b/helm/gtkmathview-bonobo/src/control-factory.c @@ -1,49 +1,31 @@ + #include #include #include #include "control-factory.h" +#include "handlers.h" +#include "control-data.h" +#include "view.h" -typedef struct _GtkMathViewControlData -{ - GtkMathView *math_view; -} GtkMathViewControlData; - -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; - 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_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; @@ -51,7 +33,7 @@ get_prop(BonoboPropertyBag *bag, math_view = GTK_MATH_VIEW(user_data); - switch(arg_id) + switch (arg_id) { case MATH_VIEW_WIDTH: { @@ -63,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); } @@ -71,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); @@ -80,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); @@ -90,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; @@ -98,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; @@ -106,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; @@ -114,14 +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: @@ -130,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; @@ -142,13 +117,12 @@ set_prop(BonoboPropertyBag *bag, 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); } @@ -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; @@ -207,25 +176,13 @@ set_prop(BonoboPropertyBag *bag, } static void -control_destroy(BonoboObject *object,GtkMathViewControlData *cd) -{ - gtk_math_view_control_data_destroy(cd); -} - -static void -set_frame(BonoboControl *control,gpointer data) +control_destroy(BonoboObject *object, GtkMathViewControlData *cd) { - Bonobo_UIContainer remote_ui_container; - BonoboUIComponent *ui_component; - GtkMathViewControlData *control_data; - GtkWidget *scrolled_window; - Bonobo_ControlFrame frame; - - control_data = (GtkMathViewControlData *) data; + 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; @@ -235,15 +192,20 @@ gtk_math_view_control_init(BonoboControl *control,GtkWidget *scrolled_window) 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)); + 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); @@ -253,51 +215,74 @@ gtk_math_view_control_init(BonoboControl *control,GtkWidget *scrolled_window) 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_INT, + 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,"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);