#include <bonobo.h>
-
-#if 1
+#include <bonobo/bonobo-shlib-factory.h>
#include <gtkmathview.h>
-#endif
+#include "control-factory.h"
+#include "view.h"
+
+typedef struct _GtkMathViewControlData
+{
+ GtkMathView *math_view;
+} GtkMathViewControlData;
enum {
MATH_VIEW_WIDTH,
MATH_VIEW_HEIGHT,
MATH_VIEW_TOP_X,
MATH_VIEW_TOP_Y,
- MATH_VIEW_TOP,
MATH_VIEW_FONT_SIZE,
MATH_VIEW_ANTI_ALIASING,
MATH_VIEW_TRANSPARENCY,
} math_args;
-/*static char *
-make_reg_id(const char *iid)
+static GtkMathViewControlData*
+gtk_math_view_control_data_new(GtkMathView *math_view)
{
- char *id;
- id = bonobo_activation_make_registration_id(iid,Display_String(gdk_display));
- return id;
-}*/
+ GtkMathViewControlData *cd = g_new(GtkMathViewControlData,1);
+ cd->math_view = math_view;
+ return cd;
+}
+
+static void
+gtk_math_view_control_data_destroy(GtkMathViewControlData* cd)
+{
+ //gtk_object_unref(cd->math_view);
+ cd->math_view = NULL;
+
+ g_free(cd);
+}
static void
get_prop(BonoboPropertyBag *bag,
}
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:
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;
}
break;
default:
- g_assert(FALSE);
+ bonobo_exception_set (ev, ex_Bonobo_PropertyBag_NotFound);
+ break;
}
}
-static BonoboControl*
-instantiate_func(void)
+static void
+control_destroy(BonoboObject *object,GtkMathViewControlData *cd)
{
- BonoboControl *control;
+ gtk_math_view_control_data_destroy(cd);
+}
+
+static void
+set_frame(BonoboControl *control,gpointer data)
+{
+ Bonobo_UIContainer remote_ui_container;
+ BonoboUIComponent *ui_component;
+ GtkMathViewControlData *control_data;
+ GtkWidget *scrolled_window;
+ Bonobo_ControlFrame frame;
+
+ control_data = (GtkMathViewControlData *) data;
+}
+
+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;
-
- math_view = gtk_math_view_new(NULL,NULL);
+ 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();
+ bonobo_object_add_interface(BONOBO_OBJECT(control), BONOBO_OBJECT(view));
- prop_bag = bonobo_property_bag_new(get_prop, set_prop, math_view);
+ persist_file = gtk_math_view_persist_file_new(GTK_MATH_VIEW(math_view));
+ bonobo_object_add_interface(BONOBO_OBJECT(control), persist_file);
- bonobo_control_set_properties(control,BONOBO_OBJREF(prop_bag), NULL);
+ persist_stream = gtk_math_view_persist_stream_new(GTK_MATH_VIEW(math_view));
+ bonobo_object_add_interface(BONOBO_OBJECT(control), persist_stream);
+
+ 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,
NULL,"width",0);
-
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,
NULL,"top_x",0);
-
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,
NULL,"font_size",0);
-
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,
NULL,"transparency",0);
-
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_NULL,
+ bonobo_property_bag_add(prop_bag,"font_manager",MATH_VIEW_FONT_MANAGER,BONOBO_ARG_INT,
NULL,"font_manager",0);
- return control;
-}
-
-static void
-notify_property_bag(GtkMathView *math_view,gpointer data)
-{
- BonoboPropertyBag *prop_bag;
- BonoboArg *arg;
-
- g_return_if_fail(BONOBO_IS_PROPERTY_BAG(data));
- prop_bag = BONOBO_PROPERTY_BAG(data);
- //we use arg to notify the container that somthing has changed
-
- arg = bonobo_arg_new(BONOBO_ARG_INT);
- BONOBO_ARG_SET_INT(arg,0);
-
- //bonobo_property_bag_notify_listeners(prop_bag,);
-}
-
-/*
-GtkMathViewPresistFile *
-gtk_math_view_bonobo_data_construct(gchar *data_file)
-{
- BonoboObject *retval;
- BonoboPersistFile *file;
-
- file = bonobo_persist_file_new(gtk_math_view_load_from_file,
- gtk_math_view_save_to_file,
- "OAFIID:GNOME_MATH_VIEW_FILE_Control",
- data_file);
-
- if(file == NULL)
- {
- bonobo_object_unref(BONOBO_OBJECT (data_file));
- g_warning("gtk_math_view_bonobo_data_construct:unable to create a new file");
- return NULL;
- }
-
- bonobo_object_add_interface(BONOBO_OBJECT(data_file),
- BONOBO_OBJECT(file));
- return data_file;
+ bonobo_object_unref(BONOBO_OBJECT(prop_bag));
+
+ g_signal_connect(control,"set_frame",G_CALLBACK(set_frame),control_data);
}
-static gint
-gtk_math_view_bonobo_load_from_file(BonoboPresistFile *pf,
- const CORBA_char *filename,
- CORBA_Environment *ev,
- void *closure)
+static BonoboObject*
+gtk_math_view_control_factory(BonoboGenericFactory* factory, const gchar* component_id, gpointer closure)
{
- Bonobo_PersistStream ps = closure;
- BonoboStream *stream;
-
- g_return_val_if_fail (data != NULL, -1);
- //FIXME: controllo del tipo di dato in input
-
- stram = bonobo_stream_open(
- BONOBO_IO_DRIVER_FS,
- filename,Bonobo_STORAGE_READ,
- 0);
- if(!stream)
- return 0;
-
- //FIXME:I have to extract content type from file
-
-
- Bonobo_PersistStream_load(ps, type, ev);
-
- return 1; //return 1 on success
+ 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;
}
-static gint
-gtk_math_view_bonobo_save_to_file(BonoboPresistFile *pf,
- const CORBA_char *filename,
- CORBA_Environment *ev,
- void *closure)
-{
- return 1; //return 1 on success
-}*/
-
+BONOBO_ACTIVATION_SHLIB_FACTORY (CONTROL_FACTORY_ID, "GtkMathView Factory", gtk_math_view_control_factory, NULL);