3 #include <bonobo/bonobo-shlib-factory.h>
4 #include <gtkmathview.h>
5 #include "control-factory.h"
8 typedef struct _GtkMathViewControlData
10 GtkMathView *math_view;
11 } GtkMathViewControlData;
19 MATH_VIEW_ANTI_ALIASING,
20 MATH_VIEW_TRANSPARENCY,
22 MATH_VIEW_FONT_MANAGER
26 static GtkMathViewControlData*
27 gtk_math_view_control_data_new(GtkMathView *math_view)
29 GtkMathViewControlData *cd = g_new(GtkMathViewControlData,1);
30 cd->math_view = math_view;
35 gtk_math_view_control_data_destroy(GtkMathViewControlData* cd)
37 //gtk_object_unref(cd->math_view);
44 get_prop(BonoboPropertyBag *bag,
47 CORBA_Environment *ev,
50 GtkMathView *math_view;
52 g_return_if_fail(GTK_IS_MATH_VIEW(user_data));
54 math_view = GTK_MATH_VIEW(user_data);
60 gint i = gtk_math_view_get_width(math_view);
61 g_assert(arg->_type == BONOBO_ARG_INT);
62 BONOBO_ARG_SET_INT(arg,i);
65 case MATH_VIEW_HEIGHT:
67 guint i = gtk_math_view_get_height(math_view);
69 g_assert(arg->_type == BONOBO_ARG_INT);
70 BONOBO_ARG_SET_INT(arg,i);
75 guint new_top_y,new_top_x;
77 g_assert(arg->_type == BONOBO_ARG_INT);
78 gtk_math_view_get_top(math_view,&new_top_x, &new_top_y);
79 BONOBO_ARG_SET_INT(arg,new_top_x);
84 guint new_top_y,new_top_x;
86 g_assert(arg->_type == BONOBO_ARG_INT);
87 gtk_math_view_get_top(math_view,&new_top_x,&new_top_y);
88 BONOBO_ARG_SET_INT(arg,new_top_y);
91 case MATH_VIEW_FONT_SIZE:
93 guint i = gtk_math_view_get_font_size(math_view);
94 g_assert(arg->_type == BONOBO_ARG_INT);
96 BONOBO_ARG_SET_INT(arg,i);
99 case MATH_VIEW_ANTI_ALIASING:
101 gboolean i = gtk_math_view_get_anti_aliasing(math_view);
102 g_assert(arg->_type == BONOBO_ARG_BOOLEAN);
104 BONOBO_ARG_SET_BOOLEAN(arg,i);
107 case MATH_VIEW_TRANSPARENCY:
109 gboolean i = gtk_math_view_get_transparency(math_view);
110 g_assert(arg->_type == BONOBO_ARG_BOOLEAN);
112 BONOBO_ARG_SET_BOOLEAN(arg,i);
115 case MATH_VIEW_VERBOSITY:
117 gint i = gtk_math_view_get_log_verbosity(math_view);
118 g_assert(arg->_type == BONOBO_ARG_INT);
120 BONOBO_ARG_SET_INT(arg,i);
123 case MATH_VIEW_FONT_MANAGER:
125 gint i = (gint) gtk_math_view_get_font_manager_type(math_view);
126 BONOBO_ARG_SET_INT(arg,i);
135 set_prop(BonoboPropertyBag *bag,
136 const BonoboArg *arg,
138 CORBA_Environment *ev,
141 GtkMathView *math_view;
143 g_return_if_fail(GTK_IS_MATH_VIEW(user_data));
145 math_view = GTK_MATH_VIEW(user_data);
149 case MATH_VIEW_TOP_X:
152 g_assert(arg->_type == BONOBO_ARG_INT);
154 gtk_math_view_get_top(math_view, NULL, &old_top_y);
155 gtk_math_view_set_top(math_view, BONOBO_ARG_GET_INT(arg), old_top_y);
158 case MATH_VIEW_TOP_Y:
161 g_assert(arg->_type == BONOBO_ARG_INT);
163 gtk_math_view_get_top(math_view, &old_top_x, NULL);
164 gtk_math_view_set_top(math_view, BONOBO_ARG_GET_INT(arg), old_top_x);
167 case MATH_VIEW_FONT_SIZE:
169 guint i = gtk_math_view_get_font_size(math_view);
170 g_assert(arg->_type == BONOBO_ARG_INT);
172 BONOBO_ARG_SET_INT(arg,i);
175 case MATH_VIEW_ANTI_ALIASING:
177 gboolean i = gtk_math_view_get_anti_aliasing(math_view);
178 g_assert(arg->_type == BONOBO_ARG_BOOLEAN);
180 BONOBO_ARG_SET_BOOLEAN(arg,i);
183 case MATH_VIEW_TRANSPARENCY:
185 gboolean i = gtk_math_view_get_transparency(math_view);
186 g_assert(arg->_type == BONOBO_ARG_BOOLEAN);
188 BONOBO_ARG_SET_BOOLEAN(arg,i);
191 case MATH_VIEW_VERBOSITY:
193 gint i = gtk_math_view_get_log_verbosity(math_view);
194 g_assert(arg->_type == BONOBO_ARG_INT);
196 BONOBO_ARG_SET_INT(arg,i);
199 case MATH_VIEW_FONT_MANAGER:
201 gint i = (gint) gtk_math_view_get_font_manager_type(math_view);
202 BONOBO_ARG_SET_INT(arg,i);
206 bonobo_exception_set (ev, ex_Bonobo_PropertyBag_NotFound);
212 control_destroy(BonoboObject *object,GtkMathViewControlData *cd)
214 gtk_math_view_control_data_destroy(cd);
218 set_frame(BonoboControl *control,gpointer data)
220 Bonobo_UIContainer remote_ui_container;
221 BonoboUIComponent *ui_component;
222 GtkMathViewControlData *control_data;
223 GtkWidget *scrolled_window;
224 Bonobo_ControlFrame frame;
226 control_data = (GtkMathViewControlData *) data;
230 gtk_math_view_control_init(BonoboControl *control,GtkWidget *scrolled_window)
232 GtkMathViewControlData *control_data;
233 GtkWidget *math_view;
234 Bonobo_UIContainer remote_ui_container;
235 BonoboUIComponent *ui_component;
237 BonoboPropertyBag *prop_bag;
238 BonoboObject *persist_file;
239 BonoboObject *persist_stream;
242 math_view = gtk_math_view_new(NULL,NULL);
243 gtk_widget_show(math_view);
245 control_data = gtk_math_view_control_data_new((GtkMathView*)math_view);
246 g_signal_connect (control, "destroy", G_CALLBACK (control_destroy), control_data);
248 gtk_container_add(GTK_CONTAINER (scrolled_window), GTK_WIDGET (control_data->math_view));
251 bonobo_object_add_interface(BONOBO_OBJECT(control), BONOBO_OBJECT(view));
253 persist_file = gtk_math_view_persist_file_new(GTK_MATH_VIEW(math_view));
254 bonobo_object_add_interface(BONOBO_OBJECT(control), persist_file);
256 persist_stream = gtk_math_view_persist_stream_new(GTK_MATH_VIEW(math_view));
257 bonobo_object_add_interface(BONOBO_OBJECT(control), persist_stream);
259 prop_bag = bonobo_property_bag_new(get_prop, set_prop, math_view);
260 bonobo_control_set_properties(control, BONOBO_OBJREF(prop_bag), NULL);
262 bonobo_property_bag_add(prop_bag,"width",MATH_VIEW_WIDTH,BONOBO_ARG_INT,
264 bonobo_property_bag_add(prop_bag,"height",MATH_VIEW_HEIGHT,BONOBO_ARG_INT,
266 bonobo_property_bag_add(prop_bag,"top_x",MATH_VIEW_TOP_X,BONOBO_ARG_INT,
268 bonobo_property_bag_add(prop_bag,"top_y",MATH_VIEW_TOP_Y,BONOBO_ARG_INT,
270 bonobo_property_bag_add(prop_bag,"font_size",MATH_VIEW_FONT_SIZE,BONOBO_ARG_INT,
272 bonobo_property_bag_add(prop_bag,"anti_aliasing",MATH_VIEW_ANTI_ALIASING,BONOBO_ARG_BOOLEAN,
273 NULL,"anti_aliasing",0);
274 bonobo_property_bag_add(prop_bag,"transparency",MATH_VIEW_TRANSPARENCY,BONOBO_ARG_BOOLEAN,
275 NULL,"transparency",0);
276 bonobo_property_bag_add(prop_bag,"verbosity",MATH_VIEW_VERBOSITY,BONOBO_ARG_INT,
278 bonobo_property_bag_add(prop_bag,"font_manager",MATH_VIEW_FONT_MANAGER,BONOBO_ARG_INT,
279 NULL,"font_manager",0);
281 bonobo_object_unref(BONOBO_OBJECT(prop_bag));
283 g_signal_connect(control,"set_frame",G_CALLBACK(set_frame),control_data);
287 gtk_math_view_control_factory(BonoboGenericFactory* factory, const gchar* component_id, gpointer closure)
289 BonoboControl *control;
290 GtkWidget *scrolled_window;
292 scrolled_window = gtk_scrolled_window_new (NULL, NULL);
293 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window), GTK_SHADOW_IN);
294 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
295 gtk_widget_show_all (scrolled_window);
297 control = bonobo_control_new(scrolled_window);
301 gtk_math_view_control_init(control,scrolled_window);
302 return BONOBO_OBJECT(control);
308 BONOBO_ACTIVATION_SHLIB_FACTORY (CONTROL_FACTORY_ID, "GtkMathView Factory", gtk_math_view_control_factory, NULL);