+++ /dev/null
-#include <config.h>
-#include <gnome.h>
-#include <bonobo.h>
-#include <glib.h>
-
-#include "control-factory.h"
-#include "GtkMathView.h"
-
-static GtkWidget *control;
-
-typedef enum{LOAD_STREAM,LOAD_FILE,NONE}FileSelectionOp;
-
-struct FileSelectionInfo {
- BonoboWidget* control;
- GtkWidget* widget;
-
- FileSelectionOp Operations;
-};
-
-
-static struct FileSelectionInfo file_selection_info = { NULL, NULL,NONE};
-
-static void
-file_selection_destroy_cb (GtkWidget *widget,gpointer data)
-{
- file_selection_info.widget = NULL;
-}
-
-
-static void
-load_through_persist_file (const gchar *filename,
- Bonobo_PersistFile pfile)
-{
- CORBA_Environment ev;
- CORBA_exception_init (&ev);
- Bonobo_PersistFile_load (pfile, filename, &ev);
- if (ev._major != CORBA_NO_EXCEPTION)
- g_warning ("Cannot load.");
- CORBA_exception_free (&ev);
-}
-
-static void
-load_through_persist_stream(const gchar *filename,
- Bonobo_PersistStream pstream)
-{
- BonoboObject *stream = NULL;
- CORBA_Environment ev;
- CORBA_exception_init (&ev);
-
-#if 0
- stream = bonobo_stream_open ("fs", filename,
- Bonobo_Storage_READ, 0);
-#endif
-
- /*if (stream == NULL)
- {
- g_warning ("Couldn't load `%s'\n", filename);
- } else*/ {
- Bonobo_Stream corba_stream;
- corba_stream = bonobo_object_corba_objref (stream);
- Bonobo_Stream_truncate (corba_stream, 0, &ev);
- Bonobo_PersistStream_load (pstream, corba_stream, "application/mathml+xml", &ev);
- }
- Bonobo_Unknown_unref (pstream, &ev);
- CORBA_Object_release (pstream, &ev);
- CORBA_exception_free (&ev);
-}
-
-static void
-file_selection_ok_cb (GtkWidget *widget,
- gpointer data)
-{
- CORBA_Object interface;
- const gchar *interface_name;
- CORBA_Environment ev;
-
- if (file_selection_info.Operations == LOAD_FILE)
- interface_name = "IDL:Bonobo/PersistFile:1.0";
- else if(file_selection_info.Operations == LOAD_STREAM)
- interface_name = "IDL:Bonobo/PersistStream:1.0";
- else printf("failed to get operation type\n");
-
- CORBA_exception_init (&ev);
- interface = Bonobo_Unknown_queryInterface (bonobo_widget_get_objref (file_selection_info.control),
- interface_name, &ev);
- CORBA_exception_free (&ev);
-
- if (interface == CORBA_OBJECT_NIL)
- {
- g_warning ("The Control does not seem to support `%s'.", interface_name);
- }
- else
- {
- const gchar *fname;
- fname = gtk_file_selection_get_filename (GTK_FILE_SELECTION (file_selection_info.widget));
- switch (file_selection_info.Operations) {
- case LOAD_STREAM:
- load_through_persist_stream (fname, interface);
- break;
- case LOAD_FILE:
- load_through_persist_file (fname, interface);
- break;
- }
- }
-
- gtk_widget_destroy (file_selection_info.widget);
-}
-
-static void
-open_dialog (BonoboWindow *app,
- FileSelectionOp operation)
-{
- GtkWidget *widget;
- BonoboWidget *control;
-
- control = BONOBO_WIDGET (bonobo_window_get_contents (app));
-
- if (file_selection_info.widget != NULL) {
- gdk_window_show (GTK_WIDGET (file_selection_info.widget)->window);
- return;
- }
-
- if(operation == LOAD_STREAM)
- widget = gtk_file_selection_new(_("Open Stream...."));
- if(operation == LOAD_FILE)
- widget = gtk_file_selection_new (_("Open file..."));
-
- gtk_window_set_transient_for (GTK_WINDOW (widget),
- GTK_WINDOW (app));
-
- file_selection_info.widget = widget;
- file_selection_info.control = control;
- file_selection_info.Operations = operation;
-
- g_signal_connect_object (GTK_FILE_SELECTION (widget)->cancel_button,
- "clicked", G_CALLBACK (gtk_widget_destroy), widget, G_CONNECT_AFTER);
-
- g_signal_connect (GTK_FILE_SELECTION (widget)->ok_button, "clicked", G_CALLBACK (file_selection_ok_cb), NULL);
-
- g_signal_connect (file_selection_info.widget, "destroy", G_CALLBACK (file_selection_destroy_cb), NULL);
-
- gtk_widget_show (file_selection_info.widget);
-}
-
-/* "Open through persist file" dialog. */
-static void
-open_through_persist_file_cb (GtkWidget *widget,
- gpointer data)
-{
- open_dialog (BONOBO_WINDOW (data), LOAD_FILE);
-}
-
-static void
-open_through_persist_stream_cb(GtkWidget *widget,
- gpointer data)
-{
- open_dialog(BONOBO_WINDOW(data), LOAD_STREAM);
-}
-
-static void
-test_view(GtkWidget* widget, gpointer data)
-{
- CORBA_Object interface;
- CORBA_Environment ev;
-
- CORBA_exception_init (&ev);
- interface = Bonobo_Unknown_queryInterface (bonobo_widget_get_objref (BONOBO_WIDGET (bonobo_window_get_contents (BONOBO_WINDOW(data)))),
- "IDL:GNOME/GtkMathView/View:1.0", &ev);
- CORBA_exception_free (&ev);
-
- if (interface == CORBA_OBJECT_NIL)
- {
- g_warning ("The Control does not seem to support `View'.");
- }
-
- CORBA_exception_init (&ev);
- GNOME_GtkMathView_View_freeze(interface, &ev);
- CORBA_exception_free (&ev);
-
- CORBA_exception_init (&ev);
- GNOME_GtkMathView_View_thaw(interface, &ev);
- CORBA_exception_free (&ev);
-
- CORBA_exception_init (&ev);
- Bonobo_Unknown_unref (interface, &ev);
- CORBA_Object_release (interface, &ev);
- CORBA_exception_free (&ev);
-}
-
-static void
-exit_cb (GtkWidget *widget,
- gpointer data)
-{
- gtk_widget_destroy (GTK_WIDGET (data));
- bonobo_main_quit ();
-}
-
-static void
-get_size(GtkWidget *widget,
- gpointer data)
-{
- gint width,height;
- BonoboWidget* control;
- BonoboControlFrame* control_frame;
-
- Bonobo_PropertyBag prop_bag;
-
- control = BONOBO_WIDGET (bonobo_window_get_contents (BONOBO_WINDOW (data)));
- control_frame = bonobo_widget_get_control_frame(BONOBO_WIDGET(control));
- prop_bag = bonobo_control_frame_get_control_property_bag(control_frame, NULL);
-
- width = bonobo_pbclient_get_long(prop_bag,"width",NULL);
- height = bonobo_pbclient_get_long(prop_bag,"height",NULL);
-
- printf("Width: %d Height: %d\n",width,height);
-
- bonobo_object_release_unref (prop_bag,NULL);
-
-};
-
-static void
-get_top(GtkWidget *widget,
- gpointer data)
-{
- gint top_x,top_y;
- BonoboWidget* control;
- BonoboControlFrame* control_frame;
- Bonobo_PropertyBag prop_bag;
-
- control = BONOBO_WIDGET(bonobo_window_get_contents(BONOBO_WINDOW(data)));
- control_frame = bonobo_widget_get_control_frame(BONOBO_WIDGET(control));
- prop_bag = bonobo_control_frame_get_control_property_bag(control_frame,NULL);
-
- top_x = bonobo_pbclient_get_long(prop_bag,"top-x",NULL);
- top_y = bonobo_pbclient_get_long(prop_bag,"top-y",NULL);
-
- printf("Top X: %d ,Top Y: %d\n",top_x,top_y);
-
- bonobo_object_release_unref(prop_bag,NULL);
-}
-
-static void
-get_font_size(GtkWidget *widget,
- gpointer data)
-{
- gint font_size;
- BonoboWidget* control;
- BonoboControlFrame* control_frame;
- Bonobo_PropertyBag prop_bag;
-
- control = BONOBO_WIDGET(bonobo_window_get_contents(BONOBO_WINDOW(data)));
- control_frame = bonobo_widget_get_control_frame(BONOBO_WIDGET(control));
- prop_bag = bonobo_control_frame_get_control_property_bag(control_frame,NULL);
-
- font_size = bonobo_pbclient_get_long(prop_bag,"font-size",NULL);
-
- printf("FontSize : %d\n",font_size);
-
- bonobo_object_release_unref(prop_bag,NULL);
-}
-
-static void
-get_verbosity(GtkWidget *widget,
- gpointer data)
-{
- gint verbosity;
- BonoboWidget* control;
- BonoboControlFrame* control_frame;
- Bonobo_PropertyBag prop_bag;
-
- control = BONOBO_WIDGET(bonobo_window_get_contents(BONOBO_WINDOW(data)));
- control_frame = bonobo_widget_get_control_frame(BONOBO_WIDGET(control));
- prop_bag = bonobo_control_frame_get_control_property_bag(control_frame,NULL);
-
- verbosity = bonobo_pbclient_get_long(prop_bag,"verbosity",NULL);
-
- printf("Verbosity: %d\n",verbosity);
-
- bonobo_object_release_unref(prop_bag,NULL);
-}
-
-static BonoboUIVerb verbs [] = {
- BONOBO_UI_UNSAFE_VERB ("OpenFile", open_through_persist_file_cb),
- BONOBO_UI_UNSAFE_VERB ("OpenStream", open_through_persist_stream_cb),
- BONOBO_UI_UNSAFE_VERB ("TestView", test_view),
- BONOBO_UI_UNSAFE_VERB ("Size", get_size),
- BONOBO_UI_UNSAFE_VERB ("Top", get_top),
- BONOBO_UI_UNSAFE_VERB ("Font Size", get_font_size),
- BONOBO_UI_UNSAFE_VERB ("Verbosity", get_verbosity),
- BONOBO_UI_UNSAFE_VERB ("FileExit", exit_cb),
- BONOBO_UI_VERB_END
-};
-
-/* A dirty, non-translatable hack */
-static char ui [] =
-"<Root>"
-" <commands>"
-" <cmd name=\"FileExit\" _label=\"Exit\" _tip=\"Exit the program\""
-" pixtype=\"stock\" pixname=\"Exit\" accel=\"*Control*q\"/>"
-" <cmd name=\"FormatHTML\" _label=\"HTML mode\" type=\"toggle\" _tip=\"HTML Format switch\"/>"
-" </commands>"
-" <menu>"
-" <submenu name=\"File\" _label=\"_File\">"
-" <menuitem name=\"OpenFile\" verb=\"\" _label=\"Open (PersistFile)\" _tip=\"Open using the PersistFile interface\""
-" pixtype=\"stock\" pixname=\"Open\"/>"
-" <menuitem name=\"OpenStream\" verb=\"\" _label=\"_Open Stream (PersistStream)\" _tip=\"Open using the PersistStream interface\""
-" pixtype=\"stock\" pixname=\"Open Stream\"/>"
-" <separator/>"
-" <menuitem name=\"TestView\" verb=\"\" _label=\"Test View\" _tip=\"Test the View interface\"/>"
-" <separator/>"
-" <menuitem name=\"FileExit\" verb=\"\" _label=\"E_xit\"/>"
-" </submenu>"
-" <placeholder name=\"Component\"/>"
-" <submenu name=\"PropertyBags\" _label=\"Property_Bag\">"
-" <menuitem name=\"Size\" verb=\"\" _label=\"Size(PropertyBag)\" _tip=\"Get size\""
-" pixtype=\"stock\" pixname=\"Get Size\"/>"
-
-" <menuitem name=\"Top\" verb=\"\" _label=\"Top(PropertyBag)\" _tip=\"Get Top\""
-" pixtype=\"stock\" pixname=\"Get Top\"/>"
-
-" <menuitem name=\"Font Size\" verb=\"\" _label=\"Font Size(PropertyBag)\" _tip=\"Get FontSize\""
-" pixtype=\"stock\" pixname=\"Get FontSize\"/>"
-
-" <menuitem name=\"Verbosity\" verb=\"\" _label=\"Verbosity(PropertyBag)\" _tip=\"Get Verbosity\""
-" pixtype=\"stock\" pixname=\"Get Verbosity\"/>"
-" </submenu>"
-" </menu>"
-" <dockitem name=\"Toolbar\" behavior=\"exclusive\">"
-" </dockitem>"
-"</Root>";
-
-static int
-app_delete_cb (GtkWidget *widget, GdkEvent *event, gpointer dummy)
-{
- gtk_widget_destroy (GTK_WIDGET (widget));
- bonobo_main_quit ();
-
- return FALSE;
-}
-
-static guint
-container_create (void)
-{
- GtkWidget *win;
- GtkWindow *window;
- BonoboUIComponent *component;
- BonoboUIContainer *container;
- CORBA_Environment ev;
-
-
- win = bonobo_window_new ("test-editor",
- "GtkMathView Control Test");
- window = GTK_WINDOW (win);
-
- container = bonobo_window_get_ui_container (BONOBO_WINDOW (win));
-
- g_signal_connect (window, "delete_event", G_CALLBACK (app_delete_cb), NULL);
-
- gtk_window_set_default_size (window, 600, 440);
- gtk_window_set_resizable (window, TRUE);
-
- component = bonobo_ui_component_new ("test");
- bonobo_running_context_auto_exit_unref (BONOBO_OBJECT (component));
-
- bonobo_ui_component_set_container (component, BONOBO_OBJREF (container), NULL);
- bonobo_ui_component_add_verb_list_with_data (component, verbs, win);
- bonobo_ui_component_set_translate (component, "/", ui, NULL);
-
- control = bonobo_widget_new_control (CONTROL_ID, BONOBO_OBJREF (container));
-
- if (control == NULL)
- g_error ("Cannot get `%s'.", CONTROL_ID);
-
- bonobo_window_set_contents (BONOBO_WINDOW (win), control);
-
- gtk_widget_show_all (GTK_WIDGET (window));
-
- CORBA_exception_init (&ev);
-
- return FALSE;
-}
-
-static gint
-load_file (const gchar *fname)
-{
- CORBA_Object interface;
- CORBA_Environment ev;
-
- printf ("loading: %s\n", fname);
- CORBA_exception_init (&ev);
- interface = Bonobo_Unknown_queryInterface (bonobo_widget_get_objref (BONOBO_WIDGET (control)),
- "IDL:Bonobo/PersistFile:1.0", &ev);
- CORBA_exception_free (&ev);
- load_through_persist_file (fname, interface);
-
- return FALSE;
-}
-
-static gint
-load_file_stream(const gchar *fname)
-{
- CORBA_Object interface;
- CORBA_Environment ev;
-
- printf("loading with stream %s\n",fname);
- CORBA_exception_init(&ev);
- interface = Bonobo_Unknown_queryInterface(bonobo_widget_get_objref(BONOBO_WIDGET(control)),
- "IDL:Bonobo/PersistStream:1.0",&ev);
-
- CORBA_exception_free(&ev);
- load_through_persist_stream(fname,interface);
-
- return FALSE;
-}
-
-/*
-static void
-install_property_bag_listener (BonoboWidget *control, BonoboWindow *bonobo_win)
-{
- Bonobo_Listener corba_listener;
- BonoboListener *listener;
- BonoboControlFrame *control_frame;
- CORBA_Environment ev;
- Bonobo_PropertyBag prop_bag;
-
- CORBA_exception_init(&ev);
-
- control_frame = bonobo_widget_get_control_frame(BONOBO_WIDGET(control));
- if(!control_frame)
- g_error("can't find control frame\n");
-
- prop_bag = bonobo_control_frame_get_control_property_bag(control_frame, NULL);
- if(prop_bag == CORBA_OBJECT_NIL)
- g_error("can't connect to property bag\n");
-
- //connect a listener to the property bag
- bonobo_event_source_client_add_listener(prop_bag, (BonoboListenerCallbackFn) width_changed,
- "Bonobo/Property:change:width",NULL,bonobo_win);
-
- bonobo_event_source_client_add_listener(prop_bag, (BonoboListenerCallbackFn)height_changed,
- "Bonobo/Property:change:height",NULL,bonobo_win);
- bonobo_event_source_client_add_listener(prop_bag, (BonoboListenerCallbackFn)top_x_changed,
- "Bonobo/Property:change:top-x",NULL,bonobo_win);
- bonobo_event_source_client_add_listener(prop_bag, (BonoboListenerCallbackFn)top_y_changed,
- "Bonobo/Property:change:top-y",NULL,bonobo_win);
- bonobo_event_source_client_add_listener(prop_bag, (BonoboListenerCallbackFn)font_size_changed,
- "Bonobo/Property:change:font-size",NULL,bonobo_win);
- bonobo_event_source_client_add_listener(prop_bag, (BonoboListenerCallbackFn)anti_aliasing_changed,
- "Bonobo/Property:change:verbosity",NULL,bonobo_win);
- bonobo_event_source_client_add_listener(prop_bag, (BonoboListenerCallbackFn)font_manager_changed,
- "Bonobo/Property:change:font_manager",NULL,bonobo_win);
- CORBA_exception_free(&ev);
-}*/
-
-
-int
-main (int argc, char **argv)
-{
- gnome_program_init("test-editor", VERSION, LIBGNOMEUI_MODULE, argc, argv,
- GNOME_PROGRAM_STANDARD_PROPERTIES,
- GNOME_PARAM_HUMAN_READABLE_NAME, _("GtkMathView Test Container"),
- NULL);
-
- bonobo_activate ();
-
- /* We can't make any CORBA calls unless we're in the main loop. So we
- delay creating the container here. */
- gtk_idle_add ((GtkFunction) container_create, NULL);
- if (argc > 1 && *argv [argc - 1] != '-')
- gtk_idle_add ((GtkFunction) load_file, argv [argc - 1]);
-
- bonobo_activate ();
- bonobo_main ();
-
- return bonobo_ui_debug_shutdown ();
-}