3 #include <bonobo/bonobo-shlib-factory.h>
4 #include <gtkmathview.h>
5 #include "control-factory.h"
7 #include "control-data.h"
16 MATH_VIEW_ANTI_ALIASING,
17 MATH_VIEW_TRANSPARENCY,
19 MATH_VIEW_FONT_MANAGER
23 static GtkMathViewControlData*
24 gtk_math_view_control_data_new(GtkMathView *math_view)
26 GtkMathViewControlData *cd = g_new(GtkMathViewControlData,1);
27 cd->math_view = math_view;
28 cd->semantic_selection = FALSE;
30 cd->first_selected = NULL;
31 cd->root_selected = NULL;
36 gtk_math_view_control_data_destroy(GtkMathViewControlData* cd)
38 //gtk_object_unref(cd->math_view);
45 get_prop(BonoboPropertyBag *bag,
48 CORBA_Environment *ev,
51 GtkMathView *math_view;
53 g_return_if_fail(GTK_IS_MATH_VIEW(user_data));
55 math_view = GTK_MATH_VIEW(user_data);
61 gint i = gtk_math_view_get_width(math_view);
62 g_assert(arg->_type == BONOBO_ARG_INT);
63 BONOBO_ARG_SET_INT(arg,i);
66 case MATH_VIEW_HEIGHT:
68 guint i = gtk_math_view_get_height(math_view);
70 g_assert(arg->_type == BONOBO_ARG_INT);
71 BONOBO_ARG_SET_INT(arg,i);
76 guint new_top_y,new_top_x;
78 g_assert(arg->_type == BONOBO_ARG_INT);
79 gtk_math_view_get_top(math_view,&new_top_x, &new_top_y);
80 BONOBO_ARG_SET_INT(arg,new_top_x);
85 guint new_top_y,new_top_x;
87 g_assert(arg->_type == BONOBO_ARG_INT);
88 gtk_math_view_get_top(math_view,&new_top_x,&new_top_y);
89 BONOBO_ARG_SET_INT(arg,new_top_y);
92 case MATH_VIEW_FONT_SIZE:
94 guint i = gtk_math_view_get_font_size(math_view);
95 g_assert(arg->_type == BONOBO_ARG_INT);
97 BONOBO_ARG_SET_INT(arg,i);
100 case MATH_VIEW_ANTI_ALIASING:
102 gboolean i = gtk_math_view_get_anti_aliasing(math_view);
103 g_assert(arg->_type == BONOBO_ARG_BOOLEAN);
105 BONOBO_ARG_SET_BOOLEAN(arg,i);
108 case MATH_VIEW_TRANSPARENCY:
110 gboolean i = gtk_math_view_get_transparency(math_view);
111 g_assert(arg->_type == BONOBO_ARG_BOOLEAN);
113 BONOBO_ARG_SET_BOOLEAN(arg,i);
116 case MATH_VIEW_VERBOSITY:
118 gint i = gtk_math_view_get_log_verbosity(math_view);
119 g_assert(arg->_type == BONOBO_ARG_INT);
121 BONOBO_ARG_SET_INT(arg,i);
124 case MATH_VIEW_FONT_MANAGER:
126 gint i = (gint) gtk_math_view_get_font_manager_type(math_view);
127 BONOBO_ARG_SET_INT(arg,i);
136 set_prop(BonoboPropertyBag *bag,
137 const BonoboArg *arg,
139 CORBA_Environment *ev,
142 GtkMathView *math_view;
144 g_return_if_fail(GTK_IS_MATH_VIEW(user_data));
146 math_view = GTK_MATH_VIEW(user_data);
150 case MATH_VIEW_TOP_X:
153 g_assert(arg->_type == BONOBO_ARG_INT);
155 gtk_math_view_get_top(math_view, NULL, &old_top_y);
156 gtk_math_view_set_top(math_view, BONOBO_ARG_GET_INT(arg), old_top_y);
159 case MATH_VIEW_TOP_Y:
162 g_assert(arg->_type == BONOBO_ARG_INT);
164 gtk_math_view_get_top(math_view, &old_top_x, NULL);
165 gtk_math_view_set_top(math_view, BONOBO_ARG_GET_INT(arg), old_top_x);
168 case MATH_VIEW_FONT_SIZE:
170 guint i = gtk_math_view_get_font_size(math_view);
171 g_assert(arg->_type == BONOBO_ARG_INT);
173 BONOBO_ARG_SET_INT(arg,i);
176 case MATH_VIEW_ANTI_ALIASING:
178 gboolean i = gtk_math_view_get_anti_aliasing(math_view);
179 g_assert(arg->_type == BONOBO_ARG_BOOLEAN);
181 BONOBO_ARG_SET_BOOLEAN(arg,i);
184 case MATH_VIEW_TRANSPARENCY:
186 gboolean i = gtk_math_view_get_transparency(math_view);
187 g_assert(arg->_type == BONOBO_ARG_BOOLEAN);
189 BONOBO_ARG_SET_BOOLEAN(arg,i);
192 case MATH_VIEW_VERBOSITY:
194 gint i = gtk_math_view_get_log_verbosity(math_view);
195 g_assert(arg->_type == BONOBO_ARG_INT);
197 BONOBO_ARG_SET_INT(arg,i);
200 case MATH_VIEW_FONT_MANAGER:
202 gint i = (gint) gtk_math_view_get_font_manager_type(math_view);
203 BONOBO_ARG_SET_INT(arg,i);
207 bonobo_exception_set (ev, ex_Bonobo_PropertyBag_NotFound);
213 control_destroy(BonoboObject *object,GtkMathViewControlData *cd)
215 gtk_math_view_control_data_destroy(cd);
219 gtk_math_view_control_init(BonoboControl *control,GtkWidget *scrolled_window)
221 GtkMathViewControlData *control_data;
222 GtkWidget *math_view;
223 Bonobo_UIContainer remote_ui_container;
224 BonoboUIComponent *ui_component;
226 BonoboPropertyBag *prop_bag;
227 BonoboObject *persist_file;
228 BonoboObject *persist_stream;
231 math_view = gtk_math_view_new(NULL,NULL);
232 gtk_widget_show(math_view);
234 control_data = gtk_math_view_control_data_new((GtkMathView*)math_view);
236 g_signal_connect (control, "destroy", G_CALLBACK (control_destroy), control_data);
238 gtk_container_add(GTK_CONTAINER (scrolled_window), GTK_WIDGET (control_data->math_view));
241 bonobo_object_add_interface(BONOBO_OBJECT(control), BONOBO_OBJECT(view));
243 persist_file = gtk_math_view_persist_file_new(GTK_MATH_VIEW(math_view));
244 bonobo_object_add_interface(BONOBO_OBJECT(control), persist_file);
246 persist_stream = gtk_math_view_persist_stream_new(GTK_MATH_VIEW(math_view));
247 bonobo_object_add_interface(BONOBO_OBJECT(control), persist_stream);
249 prop_bag = bonobo_property_bag_new(get_prop, set_prop, math_view);
250 bonobo_control_set_properties(control, BONOBO_OBJREF(prop_bag), NULL);
252 bonobo_property_bag_add(prop_bag,"width",MATH_VIEW_WIDTH,BONOBO_ARG_INT,
254 bonobo_property_bag_add(prop_bag,"height",MATH_VIEW_HEIGHT,BONOBO_ARG_INT,
256 bonobo_property_bag_add(prop_bag,"top_x",MATH_VIEW_TOP_X,BONOBO_ARG_INT,
258 bonobo_property_bag_add(prop_bag,"top_y",MATH_VIEW_TOP_Y,BONOBO_ARG_INT,
260 bonobo_property_bag_add(prop_bag,"font_size",MATH_VIEW_FONT_SIZE,BONOBO_ARG_INT,
262 bonobo_property_bag_add(prop_bag,"anti_aliasing",MATH_VIEW_ANTI_ALIASING,BONOBO_ARG_BOOLEAN,
263 NULL,"anti_aliasing",0);
264 bonobo_property_bag_add(prop_bag,"transparency",MATH_VIEW_TRANSPARENCY,BONOBO_ARG_BOOLEAN,
265 NULL,"transparency",0);
266 bonobo_property_bag_add(prop_bag,"verbosity",MATH_VIEW_VERBOSITY,BONOBO_ARG_INT,
268 bonobo_property_bag_add(prop_bag,"font_manager",MATH_VIEW_FONT_MANAGER,BONOBO_ARG_INT,
269 NULL,"font_manager",0);
271 bonobo_object_unref(BONOBO_OBJECT(prop_bag));
273 g_signal_connect(control,"set_frame",G_CALLBACK(set_frame),control_data);
274 g_signal_connect(control_data->math_view, "click", G_CALLBACK (click_cb),control_data);
275 g_signal_connect(control_data->math_view, "select_begin",G_CALLBACK(select_begin_cb),control_data);
276 g_signal_connect(control_data->math_view, "select_over",G_CALLBACK(select_over_cb),control_data);
277 g_signal_connect(control_data->math_view, "select_end",G_CALLBACK(select_end_cb),control_data);
278 g_signal_connect(control_data->math_view, "select_abort",G_CALLBACK(select_abort_cb),control_data);
282 gtk_math_view_control_factory(BonoboGenericFactory* factory, const gchar* component_id, gpointer closure)
284 BonoboControl *control;
285 GtkWidget *scrolled_window;
287 scrolled_window = gtk_scrolled_window_new (NULL, NULL);
288 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window), GTK_SHADOW_IN);
289 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
290 gtk_widget_show_all (scrolled_window);
292 control = bonobo_control_new(scrolled_window);
296 gtk_math_view_control_init(control,scrolled_window);
297 return BONOBO_OBJECT(control);
303 BONOBO_ACTIVATION_SHLIB_FACTORY (CONTROL_FACTORY_ID, "GtkMathView Factory", gtk_math_view_control_factory, NULL);