3 #include <bonobo/bonobo-shlib-factory.h>
4 #include <gtkmathview.h>
5 #include "control-factory.h"
7 #include "control-data.h"
17 MATH_VIEW_ANTI_ALIASING,
18 MATH_VIEW_TRANSPARENCY,
20 MATH_VIEW_FONT_MANAGER
24 get_prop(BonoboPropertyBag* bag,
27 CORBA_Environment *ev,
30 GtkMathView *math_view;
32 g_return_if_fail(GTK_IS_MATH_VIEW(user_data));
34 math_view = GTK_MATH_VIEW(user_data);
40 gint i = gtk_math_view_get_width(math_view);
41 g_assert(arg->_type == BONOBO_ARG_INT);
42 BONOBO_ARG_SET_INT(arg,i);
45 case MATH_VIEW_HEIGHT:
47 guint i = gtk_math_view_get_height(math_view);
48 g_assert(arg->_type == BONOBO_ARG_INT);
49 BONOBO_ARG_SET_INT(arg,i);
54 guint new_top_y,new_top_x;
55 g_assert(arg->_type == BONOBO_ARG_INT);
56 gtk_math_view_get_top(math_view,&new_top_x, &new_top_y);
57 BONOBO_ARG_SET_INT(arg,new_top_x);
62 guint new_top_y,new_top_x;
63 g_assert(arg->_type == BONOBO_ARG_INT);
64 gtk_math_view_get_top(math_view,&new_top_x,&new_top_y);
65 BONOBO_ARG_SET_INT(arg,new_top_y);
68 case MATH_VIEW_FONT_SIZE:
70 guint i = gtk_math_view_get_font_size(math_view);
71 g_assert(arg->_type == BONOBO_ARG_INT);
72 BONOBO_ARG_SET_INT(arg,i);
75 case MATH_VIEW_ANTI_ALIASING:
77 gboolean i = gtk_math_view_get_anti_aliasing(math_view);
78 g_assert(arg->_type == BONOBO_ARG_BOOLEAN);
79 BONOBO_ARG_SET_BOOLEAN(arg,i);
82 case MATH_VIEW_TRANSPARENCY:
84 gboolean i = gtk_math_view_get_transparency(math_view);
85 g_assert(arg->_type == BONOBO_ARG_BOOLEAN);
86 BONOBO_ARG_SET_BOOLEAN(arg,i);
89 case MATH_VIEW_VERBOSITY:
91 gint i = gtk_math_view_get_log_verbosity(math_view);
92 g_assert(arg->_type == BONOBO_ARG_INT);
93 BONOBO_ARG_SET_INT(arg,i);
96 case MATH_VIEW_FONT_MANAGER:
98 gint i = (gint) gtk_math_view_get_font_manager_type(math_view);
99 BONOBO_ARG_SET_INT(arg,i);
108 set_prop(BonoboPropertyBag* bag,
109 const BonoboArg* arg,
111 CORBA_Environment* ev,
114 GtkMathView *math_view;
116 g_return_if_fail(GTK_IS_MATH_VIEW(user_data));
118 math_view = GTK_MATH_VIEW(user_data);
122 case MATH_VIEW_TOP_X:
125 g_assert(arg->_type == BONOBO_ARG_INT);
126 gtk_math_view_get_top(math_view, NULL, &old_top_y);
127 gtk_math_view_set_top(math_view, BONOBO_ARG_GET_INT(arg), old_top_y);
130 case MATH_VIEW_TOP_Y:
133 g_assert(arg->_type == BONOBO_ARG_INT);
134 gtk_math_view_get_top(math_view, &old_top_x, NULL);
135 gtk_math_view_set_top(math_view, BONOBO_ARG_GET_INT(arg), old_top_x);
138 case MATH_VIEW_FONT_SIZE:
140 guint i = gtk_math_view_get_font_size(math_view);
141 g_assert(arg->_type == BONOBO_ARG_INT);
142 BONOBO_ARG_SET_INT(arg,i);
145 case MATH_VIEW_ANTI_ALIASING:
147 gboolean i = gtk_math_view_get_anti_aliasing(math_view);
148 g_assert(arg->_type == BONOBO_ARG_BOOLEAN);
149 BONOBO_ARG_SET_BOOLEAN(arg,i);
152 case MATH_VIEW_TRANSPARENCY:
154 gboolean i = gtk_math_view_get_transparency(math_view);
155 g_assert(arg->_type == BONOBO_ARG_BOOLEAN);
156 BONOBO_ARG_SET_BOOLEAN(arg,i);
159 case MATH_VIEW_VERBOSITY:
161 gint i = gtk_math_view_get_log_verbosity(math_view);
162 g_assert(arg->_type == BONOBO_ARG_INT);
163 BONOBO_ARG_SET_INT(arg,i);
166 case MATH_VIEW_FONT_MANAGER:
168 gint i = (gint) gtk_math_view_get_font_manager_type(math_view);
169 BONOBO_ARG_SET_INT(arg,i);
173 bonobo_exception_set (ev, ex_Bonobo_PropertyBag_NotFound);
179 control_destroy(BonoboObject *object, GtkMathViewControlData *cd)
181 gtk_math_view_control_data_destroy(cd);
185 gtk_math_view_control_init(BonoboControl *control, GtkWidget *scrolled_window)
187 GtkMathViewControlData *control_data;
188 GtkWidget *math_view;
189 Bonobo_UIContainer remote_ui_container;
190 BonoboUIComponent *ui_component;
192 BonoboPropertyBag *prop_bag;
193 BonoboObject *persist_file;
194 BonoboObject *persist_stream;
197 math_view = gtk_math_view_new(NULL,NULL);
198 gtk_widget_show(math_view);
200 control_data = gtk_math_view_control_data_new((GtkMathView*)math_view);
202 g_signal_connect (control, "destroy", G_CALLBACK (control_destroy), control_data);
204 gtk_container_add(GTK_CONTAINER (scrolled_window), GTK_WIDGET (control_data->math_view));
207 bonobo_object_add_interface(BONOBO_OBJECT(control), BONOBO_OBJECT(view));
209 persist_file = gtk_math_view_persist_file_new(GTK_MATH_VIEW(math_view));
210 bonobo_object_add_interface(BONOBO_OBJECT(control), persist_file);
212 persist_stream = gtk_math_view_persist_stream_new(GTK_MATH_VIEW(math_view));
213 bonobo_object_add_interface(BONOBO_OBJECT(control), persist_stream);
215 prop_bag = bonobo_property_bag_new(get_prop, set_prop, math_view);
216 bonobo_control_set_properties(control, BONOBO_OBJREF(prop_bag), NULL);
218 bonobo_property_bag_add(prop_bag,"width",
219 MATH_VIEW_WIDTH, BONOBO_ARG_INT,
221 bonobo_property_bag_add(prop_bag,"height",
222 MATH_VIEW_HEIGHT, BONOBO_ARG_INT,
224 bonobo_property_bag_add(prop_bag,"top_x",
225 MATH_VIEW_TOP_X, BONOBO_ARG_INT,
227 bonobo_property_bag_add(prop_bag,"top_y",
228 MATH_VIEW_TOP_Y, BONOBO_ARG_INT,
230 bonobo_property_bag_add(prop_bag,"font_size",
231 MATH_VIEW_FONT_SIZE, BONOBO_ARG_INT,
233 bonobo_property_bag_add(prop_bag,"anti_aliasing",
234 MATH_VIEW_ANTI_ALIASING, BONOBO_ARG_BOOLEAN,
235 NULL,"anti_aliasing",0);
236 bonobo_property_bag_add(prop_bag,"transparency",
237 MATH_VIEW_TRANSPARENCY, BONOBO_ARG_BOOLEAN,
238 NULL,"transparency",0);
239 bonobo_property_bag_add(prop_bag,"verbosity",
240 MATH_VIEW_VERBOSITY, BONOBO_ARG_INT,
242 bonobo_property_bag_add(prop_bag,"font_manager",
243 MATH_VIEW_FONT_MANAGER, BONOBO_ARG_INT,
244 NULL,"font_manager",0);
246 bonobo_object_unref(BONOBO_OBJECT(prop_bag));
248 g_signal_connect(control,"set_frame", G_CALLBACK(set_frame), control_data);
249 g_signal_connect(control_data->math_view, "click", G_CALLBACK (click_cb),
251 g_signal_connect(control_data->math_view, "select_begin", G_CALLBACK(select_begin_cb),
253 g_signal_connect(control_data->math_view, "select_over", G_CALLBACK(select_over_cb),
255 g_signal_connect(control_data->math_view, "select_end", G_CALLBACK(select_end_cb),
257 g_signal_connect(control_data->math_view, "select_abort", G_CALLBACK(select_abort_cb),
262 gtk_math_view_control_factory(BonoboGenericFactory* factory, const gchar* component_id,
265 BonoboControl *control;
266 GtkWidget *scrolled_window;
268 scrolled_window = gtk_scrolled_window_new (NULL, NULL);
269 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window),
271 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW (scrolled_window),
272 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
273 gtk_widget_show_all (scrolled_window);
275 control = bonobo_control_new(scrolled_window);
279 gtk_math_view_control_init(control,scrolled_window);
280 return BONOBO_OBJECT(control);
286 BONOBO_ACTIVATION_SHLIB_FACTORY (CONTROL_FACTORY_ID, "GtkMathView Factory",
287 gtk_math_view_control_factory, NULL);