+
#include <bonobo.h>
#include <bonobo/bonobo-shlib-factory.h>
#include <gtkmathview.h>
#include "control-factory.h"
+#include "handlers.h"
+#include "control-data.h"
+#include "view.h"
-enum {
- MATH_VIEW_WIDTH,
- MATH_VIEW_HEIGHT,
- MATH_VIEW_TOP_X,
- MATH_VIEW_TOP_Y,
- MATH_VIEW_FONT_SIZE,
- MATH_VIEW_ANTI_ALIASING,
- MATH_VIEW_TRANSPARENCY,
- MATH_VIEW_VERBOSITY,
- MATH_VIEW_FONT_MANAGER
-} math_args;
-
-
-/*static char *
-make_reg_id(const char *iid)
-{
- char *id;
- id = bonobo_activation_make_registration_id(iid,Display_String(gdk_display));
- return id;
-}*/
+enum
+ {
+ MATH_VIEW_WIDTH,
+ MATH_VIEW_HEIGHT,
+ MATH_VIEW_TOP_X,
+ MATH_VIEW_TOP_Y,
+ MATH_VIEW_FONT_SIZE,
+ MATH_VIEW_ANTI_ALIASING,
+ MATH_VIEW_TRANSPARENCY,
+ MATH_VIEW_VERBOSITY,
+ MATH_VIEW_FONT_MANAGER
+ } math_args;
static void
-get_prop(BonoboPropertyBag *bag,
- BonoboArg *arg,
- guint arg_id,
+get_prop(BonoboPropertyBag* bag,
+ BonoboArg* arg,
+ guint arg_id,
CORBA_Environment *ev,
- gpointer user_data)
+ gpointer user_data)
{
GtkMathView *math_view;
math_view = GTK_MATH_VIEW(user_data);
- switch(arg_id)
+ switch (arg_id)
{
case MATH_VIEW_WIDTH:
{
case MATH_VIEW_HEIGHT:
{
guint i = gtk_math_view_get_height(math_view);
-
g_assert(arg->_type == BONOBO_ARG_INT);
BONOBO_ARG_SET_INT(arg,i);
}
case MATH_VIEW_TOP_X:
{
guint new_top_y,new_top_x;
-
g_assert(arg->_type == BONOBO_ARG_INT);
gtk_math_view_get_top(math_view,&new_top_x, &new_top_y);
BONOBO_ARG_SET_INT(arg,new_top_x);
case MATH_VIEW_TOP_Y:
{
guint new_top_y,new_top_x;
-
g_assert(arg->_type == BONOBO_ARG_INT);
gtk_math_view_get_top(math_view,&new_top_x,&new_top_y);
BONOBO_ARG_SET_INT(arg,new_top_y);
{
guint i = gtk_math_view_get_font_size(math_view);
g_assert(arg->_type == BONOBO_ARG_INT);
-
BONOBO_ARG_SET_INT(arg,i);
}
break;
{
gboolean i = gtk_math_view_get_anti_aliasing(math_view);
g_assert(arg->_type == BONOBO_ARG_BOOLEAN);
-
BONOBO_ARG_SET_BOOLEAN(arg,i);
}
break;
{
gboolean i = gtk_math_view_get_transparency(math_view);
g_assert(arg->_type == BONOBO_ARG_BOOLEAN);
-
BONOBO_ARG_SET_BOOLEAN(arg,i);
}
break;
{
gint i = gtk_math_view_get_log_verbosity(math_view);
g_assert(arg->_type == BONOBO_ARG_INT);
-
BONOBO_ARG_SET_INT(arg,i);
}
break;
case MATH_VIEW_FONT_MANAGER:
{
- gint i = (gint) gtk_math_view_get_font_manager_type(math_view);
- BONOBO_ARG_SET_INT(arg,i);
+ gint i = (gint) gtk_math_view_get_font_manager_type(math_view);
+ BONOBO_ARG_SET_INT(arg,i);
}
break;
default:
}
static void
-set_prop(BonoboPropertyBag *bag,
- const BonoboArg *arg,
- guint arg_id,
- CORBA_Environment *ev,
- gpointer user_data)
+set_prop(BonoboPropertyBag* bag,
+ const BonoboArg* arg,
+ guint arg_id,
+ CORBA_Environment* ev,
+ gpointer user_data)
{
GtkMathView *math_view;
math_view = GTK_MATH_VIEW(user_data);
- switch(arg_id)
+ switch (arg_id)
{
- /*case MATH_VIEW_WIDTH:
- g_assert(arg->_type == BONOBO_ARG_INT);
-
- guint i = gtk_math_view_set_width(math_view);
- BONOBO_ARG_SET_INT(arg,i);
- break;
- case MATH_VIEW_HEIGHT:
- g_assert(arg->_type == BONOBO_ARG_INT);
-
- guint i = gtk_math_view_get_height(math_view);
- BONOBO_ARG_SET_INT(arg,i);
- break;*/
case MATH_VIEW_TOP_X:
{
guint old_top_y;
g_assert(arg->_type == BONOBO_ARG_INT);
-
gtk_math_view_get_top(math_view, NULL, &old_top_y);
gtk_math_view_set_top(math_view, BONOBO_ARG_GET_INT(arg), old_top_y);
}
{
guint old_top_x;
g_assert(arg->_type == BONOBO_ARG_INT);
-
gtk_math_view_get_top(math_view, &old_top_x, NULL);
gtk_math_view_set_top(math_view, BONOBO_ARG_GET_INT(arg), old_top_x);
}
{
guint i = gtk_math_view_get_font_size(math_view);
g_assert(arg->_type == BONOBO_ARG_INT);
-
BONOBO_ARG_SET_INT(arg,i);
}
break;
{
gboolean i = gtk_math_view_get_anti_aliasing(math_view);
g_assert(arg->_type == BONOBO_ARG_BOOLEAN);
-
BONOBO_ARG_SET_BOOLEAN(arg,i);
}
break;
{
gboolean i = gtk_math_view_get_transparency(math_view);
g_assert(arg->_type == BONOBO_ARG_BOOLEAN);
-
BONOBO_ARG_SET_BOOLEAN(arg,i);
}
break;
{
gint i = gtk_math_view_get_log_verbosity(math_view);
g_assert(arg->_type == BONOBO_ARG_INT);
-
BONOBO_ARG_SET_INT(arg,i);
}
break;
}
}
-static BonoboObject*
-gtk_math_view_control_factory(BonoboGenericFactory* factory, const gchar* component_id, gpointer closure)
+static void
+control_destroy(BonoboObject *object, GtkMathViewControlData *cd)
{
- BonoboControl *control;
- BonoboPropertyBag *prop_bag;
+ gtk_math_view_control_data_destroy(cd);
+}
+
+static void
+gtk_math_view_control_init(BonoboControl *control, GtkWidget *scrolled_window)
+{
+ GtkMathViewControlData *control_data;
GtkWidget *math_view;
+ Bonobo_UIContainer remote_ui_container;
+ BonoboUIComponent *ui_component;
+
+ BonoboPropertyBag *prop_bag;
BonoboObject *persist_file;
BonoboObject *persist_stream;
-
+ View* view;
+
math_view = gtk_math_view_new(NULL,NULL);
gtk_widget_show(math_view);
+
+ control_data = gtk_math_view_control_data_new((GtkMathView*)math_view);
+
+ g_signal_connect (control, "destroy", G_CALLBACK (control_destroy), control_data);
+
+ gtk_container_add(GTK_CONTAINER (scrolled_window), GTK_WIDGET (control_data->math_view));
- control = bonobo_control_new(math_view);
+ view = view_new(control_data);
+ bonobo_object_add_interface(BONOBO_OBJECT(control), BONOBO_OBJECT(view));
persist_file = gtk_math_view_persist_file_new(GTK_MATH_VIEW(math_view));
bonobo_object_add_interface(BONOBO_OBJECT(control), persist_file);
prop_bag = bonobo_property_bag_new(get_prop, set_prop, math_view);
bonobo_control_set_properties(control, BONOBO_OBJREF(prop_bag), NULL);
- bonobo_property_bag_add(prop_bag,"width",MATH_VIEW_WIDTH,BONOBO_ARG_INT,
+ bonobo_property_bag_add(prop_bag,"width",
+ MATH_VIEW_WIDTH, BONOBO_ARG_INT,
NULL,"width",0);
- bonobo_property_bag_add(prop_bag,"height",MATH_VIEW_HEIGHT,BONOBO_ARG_INT,
+ bonobo_property_bag_add(prop_bag,"height",
+ MATH_VIEW_HEIGHT, BONOBO_ARG_INT,
NULL,"height",0);
- bonobo_property_bag_add(prop_bag,"top_x",MATH_VIEW_TOP_X,BONOBO_ARG_INT,
+ bonobo_property_bag_add(prop_bag,"top_x",
+ MATH_VIEW_TOP_X, BONOBO_ARG_INT,
NULL,"top_x",0);
- bonobo_property_bag_add(prop_bag,"top_y",MATH_VIEW_TOP_Y,BONOBO_ARG_INT,
+ bonobo_property_bag_add(prop_bag,"top_y",
+ MATH_VIEW_TOP_Y, BONOBO_ARG_INT,
NULL,"top_y",0);
- bonobo_property_bag_add(prop_bag,"font_size",MATH_VIEW_FONT_SIZE,BONOBO_ARG_INT,
+ bonobo_property_bag_add(prop_bag,"font_size",
+ MATH_VIEW_FONT_SIZE, BONOBO_ARG_INT,
NULL,"font_size",0);
- bonobo_property_bag_add(prop_bag,"anti_aliasing",MATH_VIEW_ANTI_ALIASING,BONOBO_ARG_BOOLEAN,
+ bonobo_property_bag_add(prop_bag,"anti_aliasing",
+ MATH_VIEW_ANTI_ALIASING, BONOBO_ARG_BOOLEAN,
NULL,"anti_aliasing",0);
- bonobo_property_bag_add(prop_bag,"transparency",MATH_VIEW_TRANSPARENCY,BONOBO_ARG_BOOLEAN,
+ bonobo_property_bag_add(prop_bag,"transparency",
+ MATH_VIEW_TRANSPARENCY, BONOBO_ARG_BOOLEAN,
NULL,"transparency",0);
- bonobo_property_bag_add(prop_bag,"verbosity",MATH_VIEW_VERBOSITY,BONOBO_ARG_INT,
+ bonobo_property_bag_add(prop_bag,"verbosity",
+ MATH_VIEW_VERBOSITY, BONOBO_ARG_INT,
NULL,"verbosity",0);
- bonobo_property_bag_add(prop_bag,"font_manager",MATH_VIEW_FONT_MANAGER,BONOBO_ARG_INT,
+ bonobo_property_bag_add(prop_bag,"font_manager",
+ MATH_VIEW_FONT_MANAGER, BONOBO_ARG_INT,
NULL,"font_manager",0);
bonobo_object_unref(BONOBO_OBJECT(prop_bag));
- //bonobo_object_unref(BONOBO_OBJECT(persist_file));
- //bonobo_object_unref(BONOBO_OBJECT(persist_stream));
+
+ g_signal_connect(control,"set_frame", G_CALLBACK(set_frame), control_data);
+ g_signal_connect(control_data->math_view, "click", G_CALLBACK (click_cb),
+ control_data);
+ g_signal_connect(control_data->math_view, "select_begin", G_CALLBACK(select_begin_cb),
+ control_data);
+ g_signal_connect(control_data->math_view, "select_over", G_CALLBACK(select_over_cb),
+ control_data);
+ g_signal_connect(control_data->math_view, "select_end", G_CALLBACK(select_end_cb),
+ control_data);
+ g_signal_connect(control_data->math_view, "select_abort", G_CALLBACK(select_abort_cb),
+ control_data);
+}
- return BONOBO_OBJECT(control);
+static BonoboObject*
+gtk_math_view_control_factory(BonoboGenericFactory* factory, const gchar* component_id,
+ gpointer closure)
+{
+ BonoboControl *control;
+ GtkWidget *scrolled_window;
+
+ scrolled_window = gtk_scrolled_window_new (NULL, NULL);
+ gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window),
+ GTK_SHADOW_IN);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW (scrolled_window),
+ GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
+ gtk_widget_show_all (scrolled_window);
+
+ control = bonobo_control_new(scrolled_window);
+
+ if(control)
+ {
+ gtk_math_view_control_init(control,scrolled_window);
+ return BONOBO_OBJECT(control);
+ }
+ else
+ return NULL;
}
-BONOBO_ACTIVATION_SHLIB_FACTORY (CONTROL_FACTORY_ID, "GtkMathView Factory", gtk_math_view_control_factory, NULL);
+BONOBO_ACTIVATION_SHLIB_FACTORY (CONTROL_FACTORY_ID, "GtkMathView Factory",
+ gtk_math_view_control_factory, NULL);