2 #include <bonobo/bonobo-shlib-factory.h>
3 #include <gtkmathview.h>
4 #include "control-factory.h"
6 typedef struct _GtkMathViewControlData
8 GtkMathView *math_view;
9 } GtkMathViewControlData;
17 MATH_VIEW_ANTI_ALIASING,
18 MATH_VIEW_TRANSPARENCY,
20 MATH_VIEW_FONT_MANAGER
24 static GtkMathViewControlData*
25 gtk_math_view_control_data_new(GtkMathView *math_view)
27 GtkMathViewControlData *cd = g_new(GtkMathViewControlData,1);
28 cd->math_view = math_view;
33 gtk_math_view_control_data_destroy(GtkMathViewControlData* cd)
35 //gtk_object_unref(cd->math_view);
42 get_prop(BonoboPropertyBag *bag,
45 CORBA_Environment *ev,
48 GtkMathView *math_view;
50 g_return_if_fail(GTK_IS_MATH_VIEW(user_data));
52 math_view = GTK_MATH_VIEW(user_data);
58 gint i = gtk_math_view_get_width(math_view);
59 g_assert(arg->_type == BONOBO_ARG_INT);
60 BONOBO_ARG_SET_INT(arg,i);
63 case MATH_VIEW_HEIGHT:
65 guint i = gtk_math_view_get_height(math_view);
67 g_assert(arg->_type == BONOBO_ARG_INT);
68 BONOBO_ARG_SET_INT(arg,i);
73 guint new_top_y,new_top_x;
75 g_assert(arg->_type == BONOBO_ARG_INT);
76 gtk_math_view_get_top(math_view,&new_top_x, &new_top_y);
77 BONOBO_ARG_SET_INT(arg,new_top_x);
82 guint new_top_y,new_top_x;
84 g_assert(arg->_type == BONOBO_ARG_INT);
85 gtk_math_view_get_top(math_view,&new_top_x,&new_top_y);
86 BONOBO_ARG_SET_INT(arg,new_top_y);
89 case MATH_VIEW_FONT_SIZE:
91 guint i = gtk_math_view_get_font_size(math_view);
92 g_assert(arg->_type == BONOBO_ARG_INT);
94 BONOBO_ARG_SET_INT(arg,i);
97 case MATH_VIEW_ANTI_ALIASING:
99 gboolean i = gtk_math_view_get_anti_aliasing(math_view);
100 g_assert(arg->_type == BONOBO_ARG_BOOLEAN);
102 BONOBO_ARG_SET_BOOLEAN(arg,i);
105 case MATH_VIEW_TRANSPARENCY:
107 gboolean i = gtk_math_view_get_transparency(math_view);
108 g_assert(arg->_type == BONOBO_ARG_BOOLEAN);
110 BONOBO_ARG_SET_BOOLEAN(arg,i);
113 case MATH_VIEW_VERBOSITY:
115 gint i = gtk_math_view_get_log_verbosity(math_view);
116 g_assert(arg->_type == BONOBO_ARG_INT);
118 BONOBO_ARG_SET_INT(arg,i);
121 case MATH_VIEW_FONT_MANAGER:
123 gint i = (gint) gtk_math_view_get_font_manager_type(math_view);
124 BONOBO_ARG_SET_INT(arg,i);
133 set_prop(BonoboPropertyBag *bag,
134 const BonoboArg *arg,
136 CORBA_Environment *ev,
139 GtkMathView *math_view;
141 g_return_if_fail(GTK_IS_MATH_VIEW(user_data));
143 math_view = GTK_MATH_VIEW(user_data);
147 case MATH_VIEW_TOP_X:
150 g_assert(arg->_type == BONOBO_ARG_INT);
152 gtk_math_view_get_top(math_view, NULL, &old_top_y);
153 gtk_math_view_set_top(math_view, BONOBO_ARG_GET_INT(arg), old_top_y);
156 case MATH_VIEW_TOP_Y:
159 g_assert(arg->_type == BONOBO_ARG_INT);
161 gtk_math_view_get_top(math_view, &old_top_x, NULL);
162 gtk_math_view_set_top(math_view, BONOBO_ARG_GET_INT(arg), old_top_x);
165 case MATH_VIEW_FONT_SIZE:
167 guint i = gtk_math_view_get_font_size(math_view);
168 g_assert(arg->_type == BONOBO_ARG_INT);
170 BONOBO_ARG_SET_INT(arg,i);
173 case MATH_VIEW_ANTI_ALIASING:
175 gboolean i = gtk_math_view_get_anti_aliasing(math_view);
176 g_assert(arg->_type == BONOBO_ARG_BOOLEAN);
178 BONOBO_ARG_SET_BOOLEAN(arg,i);
181 case MATH_VIEW_TRANSPARENCY:
183 gboolean i = gtk_math_view_get_transparency(math_view);
184 g_assert(arg->_type == BONOBO_ARG_BOOLEAN);
186 BONOBO_ARG_SET_BOOLEAN(arg,i);
189 case MATH_VIEW_VERBOSITY:
191 gint i = gtk_math_view_get_log_verbosity(math_view);
192 g_assert(arg->_type == BONOBO_ARG_INT);
194 BONOBO_ARG_SET_INT(arg,i);
197 case MATH_VIEW_FONT_MANAGER:
199 gint i = (gint) gtk_math_view_get_font_manager_type(math_view);
200 BONOBO_ARG_SET_INT(arg,i);
204 bonobo_exception_set (ev, ex_Bonobo_PropertyBag_NotFound);
210 control_destroy(BonoboObject *object,GtkMathViewControlData *cd)
212 gtk_math_view_control_data_destroy(cd);
216 set_frame(BonoboControl *control,gpointer data)
218 Bonobo_UIContainer remote_ui_container;
219 BonoboUIComponent *ui_component;
220 GtkMathViewControlData *control_data;
221 GtkWidget *scrolled_window;
222 Bonobo_ControlFrame frame;
224 control_data = (GtkMathViewControlData *) data;
228 gtk_math_view_control_init(BonoboControl *control,GtkWidget *scrolled_window)
230 GtkMathViewControlData *control_data;
231 GtkWidget *math_view;
232 Bonobo_UIContainer remote_ui_container;
233 BonoboUIComponent *ui_component;
235 BonoboPropertyBag *prop_bag;
236 BonoboObject *persist_file;
237 BonoboObject *persist_stream;
239 math_view = gtk_math_view_new(NULL,NULL);
240 gtk_widget_show(math_view);
242 control_data = gtk_math_view_control_data_new((GtkMathView*)math_view);
243 g_signal_connect (control, "destroy", G_CALLBACK (control_destroy), control_data);
245 gtk_container_add(GTK_CONTAINER (scrolled_window), GTK_WIDGET (control_data->math_view));
247 persist_file = gtk_math_view_persist_file_new(GTK_MATH_VIEW(math_view));
248 bonobo_object_add_interface(BONOBO_OBJECT(control), persist_file);
250 persist_stream = gtk_math_view_persist_stream_new(GTK_MATH_VIEW(math_view));
251 bonobo_object_add_interface(BONOBO_OBJECT(control), persist_stream);
253 prop_bag = bonobo_property_bag_new(get_prop, set_prop, math_view);
254 bonobo_control_set_properties(control, BONOBO_OBJREF(prop_bag), NULL);
256 bonobo_property_bag_add(prop_bag,"width",MATH_VIEW_WIDTH,BONOBO_ARG_INT,
258 bonobo_property_bag_add(prop_bag,"height",MATH_VIEW_HEIGHT,BONOBO_ARG_INT,
260 bonobo_property_bag_add(prop_bag,"top_x",MATH_VIEW_TOP_X,BONOBO_ARG_INT,
262 bonobo_property_bag_add(prop_bag,"top_y",MATH_VIEW_TOP_Y,BONOBO_ARG_INT,
264 bonobo_property_bag_add(prop_bag,"font_size",MATH_VIEW_FONT_SIZE,BONOBO_ARG_INT,
266 bonobo_property_bag_add(prop_bag,"anti_aliasing",MATH_VIEW_ANTI_ALIASING,BONOBO_ARG_BOOLEAN,
267 NULL,"anti_aliasing",0);
268 bonobo_property_bag_add(prop_bag,"transparency",MATH_VIEW_TRANSPARENCY,BONOBO_ARG_BOOLEAN,
269 NULL,"transparency",0);
270 bonobo_property_bag_add(prop_bag,"verbosity",MATH_VIEW_VERBOSITY,BONOBO_ARG_INT,
272 bonobo_property_bag_add(prop_bag,"font_manager",MATH_VIEW_FONT_MANAGER,BONOBO_ARG_INT,
273 NULL,"font_manager",0);
275 bonobo_object_unref(BONOBO_OBJECT(prop_bag));
277 g_signal_connect(control,"set_frame",G_CALLBACK(set_frame),control_data);
281 gtk_math_view_control_factory(BonoboGenericFactory* factory, const gchar* component_id, gpointer closure)
283 BonoboControl *control;
284 GtkWidget *scrolled_window;
286 scrolled_window = gtk_scrolled_window_new (NULL, NULL);
287 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window), GTK_SHADOW_IN);
288 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
289 gtk_widget_show_all (scrolled_window);
291 control = bonobo_control_new(scrolled_window);
295 gtk_math_view_control_init(control,scrolled_window);
296 return BONOBO_OBJECT(control);
302 BONOBO_ACTIVATION_SHLIB_FACTORY (CONTROL_FACTORY_ID, "GtkMathView Factory", gtk_math_view_control_factory, NULL);