1 /* This file is part of GtkMathView-Bonobo, a Bonobo wrapper for GtkMathView.
2 * Copyright (C) 2003 Luca Padovani <lpadovan@cs.unibo.it>
3 * Pouria Masoudi <pmasoudi@cs.unibo.it>
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2.1 of the License, or (at your option) any later version.
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 * For more information, please visit the project's home page
20 * http://helm.cs.unibo.it/gtkmathview-bonobo
21 * or send an email to <lpadovan@cs.unibo.it>
27 #include <bonobo/bonobo-shlib-factory.h>
28 #include <gtkmathview.h>
30 #include "control-factory.h"
31 #include "control-data.h"
32 #include "persist-file.h"
33 #include "persist-stream.h"
50 get_prop(BonoboPropertyBag* bag,
53 CORBA_Environment *ev,
56 GtkMathViewControlData* control_data = user_data;
57 g_assert(control_data != NULL);
62 BONOBO_ARG_SET_INT(arg, gtk_math_view_get_width(control_data->math_view));
64 case MATH_VIEW_HEIGHT:
65 BONOBO_ARG_SET_INT(arg, gtk_math_view_get_height(control_data->math_view));
70 gtk_math_view_get_top(control_data->math_view, &top_x, NULL);
71 BONOBO_ARG_SET_INT(arg, top_x);
77 gtk_math_view_get_top(control_data->math_view, NULL, &top_y);
78 BONOBO_ARG_SET_INT(arg, top_y);
81 case MATH_VIEW_FONT_SIZE:
82 BONOBO_ARG_SET_INT(arg, gtk_math_view_get_font_size(control_data->math_view));
84 case MATH_VIEW_VERBOSITY:
85 BONOBO_ARG_SET_INT(arg, gtk_math_view_get_log_verbosity(control_data->math_view));
87 case MATH_VIEW_ID_NS_URI:
89 gchar* id_ns_uri = gtk_math_view_control_data_get_id_ns_uri(control_data);
90 BONOBO_ARG_SET_STRING(arg, id_ns_uri);
94 case MATH_VIEW_ID_NAME:
96 gchar* id_name = gtk_math_view_control_data_get_id_name(control_data);
97 BONOBO_ARG_SET_STRING(arg, id_name);
102 bonobo_exception_set (ev, ex_Bonobo_PropertyBag_NotFound);
108 set_prop(BonoboPropertyBag* bag,
109 const BonoboArg* arg,
111 CORBA_Environment* ev,
114 GtkMathViewControlData *control_data = user_data;
115 g_assert(control_data != NULL);
119 case MATH_VIEW_TOP_X:
122 gtk_math_view_get_top(control_data->math_view, NULL, &old_top_y);
123 gtk_math_view_set_top(control_data->math_view, BONOBO_ARG_GET_INT(arg), old_top_y);
126 case MATH_VIEW_TOP_Y:
129 gtk_math_view_get_top(control_data->math_view, &old_top_x, NULL);
130 gtk_math_view_set_top(control_data->math_view, BONOBO_ARG_GET_INT(arg), old_top_x);
133 case MATH_VIEW_FONT_SIZE:
134 gtk_math_view_set_font_size(control_data->math_view, BONOBO_ARG_GET_INT(arg));
136 case MATH_VIEW_VERBOSITY:
137 gtk_math_view_set_log_verbosity(control_data->math_view, BONOBO_ARG_GET_INT(arg));
139 case MATH_VIEW_ID_NS_URI:
140 gtk_math_view_control_data_set_id_ns_uri(control_data, BONOBO_ARG_GET_STRING(arg));
142 case MATH_VIEW_ID_NAME:
143 gtk_math_view_control_data_set_id_name(control_data, BONOBO_ARG_GET_STRING(arg));
146 bonobo_exception_set (ev, ex_Bonobo_PropertyBag_NotFound);
152 control_destroy(BonoboObject *object, GtkMathViewControlData *cd)
154 gtk_math_view_control_data_destroy(cd);
158 gtk_math_view_control_init(BonoboControl *control, GtkWidget *scrolled_window)
160 GtkMathViewControlData *control_data;
161 GtkWidget *math_view;
162 Bonobo_UIContainer remote_ui_container;
163 BonoboUIComponent *ui_component;
165 BonoboPropertyBag *prop_bag;
166 BonoboObject *persist_file;
167 BonoboObject *persist_stream;
170 math_view = gtk_math_view_new(NULL,NULL);
171 gtk_widget_show(math_view);
173 control_data = gtk_math_view_control_data_new((GtkMathView*)math_view);
175 g_signal_connect (control, "destroy", G_CALLBACK (control_destroy), control_data);
177 gtk_container_add(GTK_CONTAINER (scrolled_window), GTK_WIDGET (control_data->math_view));
179 view = view_new(control_data);
180 bonobo_object_add_interface(BONOBO_OBJECT(control), BONOBO_OBJECT(view));
182 persist_file = gtk_math_view_persist_file_new(GTK_MATH_VIEW(math_view));
183 bonobo_object_add_interface(BONOBO_OBJECT(control), persist_file);
185 persist_stream = gtk_math_view_persist_stream_new(GTK_MATH_VIEW(math_view));
186 bonobo_object_add_interface(BONOBO_OBJECT(control), persist_stream);
188 prop_bag = bonobo_property_bag_new(get_prop, set_prop, control_data);
189 bonobo_control_set_properties(control, BONOBO_OBJREF(prop_bag), NULL);
191 bonobo_property_bag_add(prop_bag, "width",
192 MATH_VIEW_WIDTH, BONOBO_ARG_INT,
194 "Width of the view", 0);
195 bonobo_property_bag_add(prop_bag, "height",
196 MATH_VIEW_HEIGHT, BONOBO_ARG_INT,
198 "Height of the view", 0);
199 bonobo_property_bag_add(prop_bag, "top-x",
200 MATH_VIEW_TOP_X, BONOBO_ARG_INT,
202 "X coordinate of the top-left corner", 0);
203 bonobo_property_bag_add(prop_bag, "top-y",
204 MATH_VIEW_TOP_Y, BONOBO_ARG_INT,
206 "Y coordinate of the top-left corner", 0);
207 bonobo_property_bag_add(prop_bag, "font-size",
208 MATH_VIEW_FONT_SIZE, BONOBO_ARG_INT,
210 "Default font size", 0);
211 bonobo_property_bag_add(prop_bag,"verbosity",
212 MATH_VIEW_VERBOSITY, BONOBO_ARG_INT,
214 "Verbosity level", 0);
215 bonobo_property_bag_add(prop_bag, "id-ns-uri",
216 MATH_VIEW_ID_NS_URI, BONOBO_ARG_STRING,
218 "Namespace URI of ID attribute", 0);
219 bonobo_property_bag_add(prop_bag, "id-name",
220 MATH_VIEW_ID_NAME, BONOBO_ARG_STRING,
222 "Name of ID attribute", 0);
224 bonobo_object_unref(BONOBO_OBJECT(prop_bag));
226 g_signal_connect(control,"set_frame", G_CALLBACK(set_frame), control_data);
227 g_signal_connect(control_data->math_view, "click", G_CALLBACK (click_cb),
229 g_signal_connect(control_data->math_view, "select_begin", G_CALLBACK(select_begin_cb),
231 g_signal_connect(control_data->math_view, "select_over", G_CALLBACK(select_over_cb),
233 g_signal_connect(control_data->math_view, "select_end", G_CALLBACK(select_end_cb),
235 g_signal_connect(control_data->math_view, "select_abort", G_CALLBACK(select_abort_cb),
240 gtk_math_view_control_factory(BonoboGenericFactory* factory, const gchar* component_id,
243 BonoboControl *control;
244 GtkWidget *scrolled_window;
246 scrolled_window = gtk_scrolled_window_new (NULL, NULL);
247 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window),
249 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW (scrolled_window),
250 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
251 gtk_widget_show_all (scrolled_window);
253 control = bonobo_control_new(scrolled_window);
257 gtk_math_view_control_init(control,scrolled_window);
258 return BONOBO_OBJECT(control);
264 BONOBO_ACTIVATION_SHLIB_FACTORY (CONTROL_FACTORY_ID, "GtkMathView Factory",
265 gtk_math_view_control_factory, NULL);