BonoboControl * e_yank_factory_new_control (const char *uri, const GNOME_Evolution_Shell shell) { BonoboControl *control; GtkWidget *yank; EYank *e_yank; yank = e_yank_new (shell); if (yank == NULL) { return NULL; } gtk_widget_show (yank); e_yank = (EYank *)yank; e_yank->priv->uri = g_strdup(uri); control = bonobo_control_new (yank); if (control == NULL) { gtk_object_destroy (GTK_OBJECT (yank)); return NULL; } gtk_signal_connect (GTK_OBJECT (control), "activate", control_activate_cb, yank); gtk_signal_connect (GTK_OBJECT (control), "destroy", control_destroy_cb, yank); return control; }
/** * peacock_file_control_new: * @: * * Create a new BonoboControl out of a PeacockFile + PeacockFileView * * Return Value: Newly created BonoboControl **/ static BonoboObject * peacock_file_control_new () { BonoboControl *control; GtkWidget *vbox; /* Create the widget.*/ vbox = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox); /*...and then a BonoboControl of it.*/ control = bonobo_control_new (vbox); peacock_file_control_construct (control, vbox); return BONOBO_OBJECT (control); }
void bonobo_ui_component_widget_set (BonoboUIComponent *component, const char *path, GtkWidget *widget, CORBA_Environment *opt_ev) { gpointer in_proc_servant; BonoboObject *in_proc_container; CORBA_Environment *real_ev, tmp_ev; Bonobo_UIContainer container; g_return_if_fail (widget != CORBA_OBJECT_NIL); g_return_if_fail (BONOBO_IS_UI_COMPONENT (component)); container = component->priv->container; g_return_if_fail (container != CORBA_OBJECT_NIL); if (opt_ev) real_ev = opt_ev; else { CORBA_exception_init (&tmp_ev); real_ev = &tmp_ev; } if ((in_proc_servant = ORBit_small_get_servant (container)) && (in_proc_container = bonobo_object (in_proc_servant)) && BONOBO_IS_UI_CONTAINER (in_proc_container)) { BonoboUIEngine *engine; engine = bonobo_ui_container_get_engine ( BONOBO_UI_CONTAINER (in_proc_container)); g_return_if_fail (engine != NULL); bonobo_ui_engine_widget_set (engine, path, widget); } else { BonoboControl *control = bonobo_control_new (widget); Bonobo_UIContainer_setObject ( container, path, BONOBO_OBJREF (control), real_ev); bonobo_object_unref (control); } if (!opt_ev && BONOBO_EX (real_ev)) g_warning ("Serious exception setting object '%s' '%s'", path, bonobo_exception_get_text (real_ev)); if (!opt_ev) CORBA_exception_free (&tmp_ev); }
BonoboControl * itip_bonobo_control_new (void) { BonoboControl *control; BonoboPropertyBag *prop_bag; BonoboPersistStream *stream; GtkWidget *itip; itip = e_itip_control_new (); gtk_widget_show (itip); control = bonobo_control_new (itip); /* create a property bag */ prop_bag = bonobo_property_bag_new (get_prop, set_prop, itip); bonobo_property_bag_add (prop_bag, "from_address", FROM_ADDRESS_ARG_ID, BONOBO_ARG_STRING, NULL, "from_address", 0 ); bonobo_property_bag_add (prop_bag, "view_only", VIEW_ONLY_ARG_ID, BONOBO_ARG_INT, NULL, "view_only", 0 ); bonobo_control_set_properties (control, bonobo_object_corba_objref (BONOBO_OBJECT (prop_bag)), NULL); bonobo_object_unref (BONOBO_OBJECT (prop_bag)); bonobo_control_set_automerge (control, TRUE); stream = bonobo_persist_stream_new (pstream_load, pstream_save, pstream_get_content_types, "OAFIID:GNOME_Evolution_Calendar_iTip_Control:" BASE_VERSION, itip); if (stream == NULL) { bonobo_object_unref (BONOBO_OBJECT (control)); return NULL; } bonobo_object_add_interface (BONOBO_OBJECT (control), BONOBO_OBJECT (stream)); return control; }
BonoboControl * eab_vcard_control_new (void) { BonoboControl *control; BonoboPersistStream *stream; GtkWidget *display; GtkWidget *button1, *button2; GtkWidget *bbox; GtkWidget *vbox; EABVCardControl *vcard_control = g_new (EABVCardControl, 1); vcard_control->card_list = NULL; vcard_control->display = NULL; vcard_control->label = NULL; vcard_control->render_mode = EAB_CONTACT_DISPLAY_RENDER_COMPACT; /* Create the control. */ display = eab_contact_display_new (); vcard_control->display = EAB_CONTACT_DISPLAY (display); bbox = gtk_hbutton_box_new (); gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_START); gtk_box_set_spacing (GTK_BOX (bbox), 12); button1 = gtk_button_new_with_label(_("Show Full vCard")); g_signal_connect (button1, "clicked", G_CALLBACK (toggle_full_vcard), vcard_control); gtk_box_pack_start (GTK_BOX (bbox), button1, FALSE, FALSE, 0); button2 = gtk_button_new_with_label(_("Save in addressbook")); g_signal_connect (button2, "clicked", G_CALLBACK (save_in_addressbook), vcard_control); gtk_box_pack_start (GTK_BOX (bbox), button2, FALSE, FALSE, 0); /* This is intentionally not shown. */ vcard_control->label = gtk_label_new (""); vbox = gtk_vbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox), bbox, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox), display, TRUE, TRUE, 0); gtk_box_pack_start (GTK_BOX (vbox), vcard_control->label, TRUE, TRUE, 0); gtk_widget_show_all (bbox); gtk_widget_show (display); gtk_widget_show (vbox); control = bonobo_control_new (vbox); g_object_weak_ref (G_OBJECT (control), free_struct, vcard_control); stream = bonobo_persist_stream_new (pstream_load, pstream_save, pstream_get_content_types, VCARD_CONTROL_ID, vcard_control); if (stream == NULL) { bonobo_object_unref (BONOBO_OBJECT (control)); return NULL; } bonobo_object_add_interface (BONOBO_OBJECT (control), BONOBO_OBJECT (stream)); return control; }
BonoboObject * circle_control_new (CommonData *com) { BonoboPropertyBag *pb; BonoboControl *control; GParamSpec **pspecs; guint n_pspecs; GtkWidget *button, *frame, *spin, *hbox, *spin_label; GtkObject *adj; GSList **list = &com->list; GSList *li; ObjectData *object = NULL; frame = gtk_frame_new("Circle"); hbox = gtk_hbox_new(FALSE, 2); gtk_container_add(GTK_CONTAINER(frame), hbox); button = gtk_button_new(); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0); spin_label = gtk_label_new ("Speed:"); gtk_box_pack_start (GTK_BOX (hbox), spin_label, FALSE, FALSE, 0); adj = gtk_adjustment_new(100.0, 0.0, 1000.0, 1.0, 10.0, 0.0); g_signal_connect(adj, "value_changed", G_CALLBACK(set_speed), com); spin = gtk_spin_button_new(GTK_ADJUSTMENT(adj), 0.0, 0); gtk_box_pack_start (GTK_BOX (hbox), spin, FALSE, FALSE, 0); gtk_widget_show_all(frame); control = bonobo_control_new (frame); pb = bonobo_property_bag_new (NULL, NULL, NULL); bonobo_control_set_properties (control, BONOBO_OBJREF (pb), NULL); bonobo_object_unref (BONOBO_OBJECT (pb)); g_signal_connect(button, "clicked", G_CALLBACK(on_press), com); pspecs = g_object_class_list_properties ( G_OBJECT_GET_CLASS (button), &n_pspecs); bonobo_property_bag_map_params ( pb, G_OBJECT (button), (const GParamSpec **)pspecs, n_pspecs); g_free (pspecs); bonobo_control_life_instrument (control); li = g_slist_last(*list); if (li) { object = li->data; } if (!object || object->button) { object = g_new0(ObjectData, 1); *list = g_slist_append(*list, object); } object->button = button; object->adj = GTK_ADJUSTMENT(adj); update_button(object, com); set_speed(GTK_ADJUSTMENT(adj), com); return BONOBO_OBJECT (control); }
int main (int argc, char **argv) { BonoboWindow *win; BonoboUIComponent *componenta; BonoboUIComponent *componentb; BonoboUIComponent *componentc; BonoboUIContainer *container; Bonobo_UIContainer corba_container; CORBA_Environment real_ev, *ev; GnomeProgram *program; char *txt, *fname; int i; char simplea [] = "<menu>\n" " <submenu name=\"File\" _label=\"_Ga'\">\n" " <menuitem name=\"open\" pos=\"bottom\" _label=\"_Open\" verb=\"FileOpen\" pixtype=\"stock\" pixname=\"Open\" _tip=\"Wibble\"/>\n" " <control name=\"MyControl\"/>\n" " <control name=\"MyControl2\"/>\n" " <control name=\"ThisIsEmpty\"/>\n" " <menuitem name=\"close\" noplace=\"1\" verb=\"FileExit\" _label=\"_CloseA\" _tip=\"hi\"" " pixtype=\"stock\" pixname=\"Close\" accel=\"*Control*q\"/>\n" " </submenu>\n" "</menu>"; char keysa [] = "<keybindings>\n" " <accel name=\"*Control*3\" id=\"MyFoo\"/>\n" "</keybindings>\n"; char simpleb [] = "<submenu name=\"File\" _label=\"_File\">\n" " <menuitem name=\"open\" _label=\"_OpenB\" pixtype=\"stock\" pixname=\"Open\" _tip=\"Open you fool\"/>\n" " <separator/>\n" " <menuitem name=\"toggle\" type=\"toggle\" id=\"MyFoo\" _label=\"_ToggleMe\" _tip=\"a\" accel=\"*Control*t\"/>\n" " <placeholder name=\"Nice\" delimit=\"top\"/>\n" " <menuitem name=\"close\" noplace=\"1\" verb=\"FileExit\" _label=\"_CloseB\" _tip=\"hi\"" " pixtype=\"stock\" pixname=\"Close\" accel=\"*Control*q\"/>\n" "</submenu>\n"; char simplec [] = "<submenu name=\"File\" _label=\"_FileC\" _tip=\"what!\">\n" " <placeholder name=\"Nice\" delimit=\"top\" hidden=\"0\">\n" " <menuitem name=\"fooa\" _label=\"_FooA\" type=\"radio\" group=\"foogroup\" _tip=\"Radio1\"/>\n" " <menuitem name=\"foob\" _label=\"_FooB\" type=\"radio\" group=\"foogroup\" _tip=\"kippers\"/>\n" " <menuitem name=\"wibble\" verb=\"ThisForcesAnError\" _label=\"_Baa\"" " pixtype=\"stock\" pixname=\"Open\" sensitive=\"0\" _tip=\"fish\"/>\n" " <separator/>\n" " </placeholder>\n" "</submenu>\n"; char simpled [] = "<menuitem name=\"save\" _label=\"_SaveD\" pixtype=\"stock\" pixname=\"Save\" _tip=\"tip1\"/>\n"; char simplee [] = "<menuitem name=\"fish\" _label=\"_Inplace\" pixtype=\"stock\" pixname=\"Save\" _tip=\"tip2\"/>\n"; char toola [] = "<dockitem name=\"Toolbar\" homogeneous=\"0\" vlook=\"icon\">\n" " <toolitem type=\"toggle\" name=\"foo2\" id=\"MyFoo\" pixtype=\"stock\" pixname=\"Save\"" " _label=\"TogSave\" _tip=\"My tooltip\" priority=\"1\"/>\n" " <separator/>\n" " <toolitem name=\"baa\" pixtype=\"stock\" pixname=\"Open\" _label=\"baa\" _tip=\"My 2nd tooltip\" verb=\"testme\"/>\n" " <control name=\"AControl\" _tip=\"a tip on a control\" hidden=\"0\" vdisplay=\"button\"\n" " pixtype=\"stock\" pixname=\"gtk-italic\" _label=\"EntryControl\" verb=\"OpenEntry\"/>\n" " <control name=\"BControl\" _tip=\"another tip on a control\" hidden=\"0\"\n" " pixtype=\"stock\" pixname=\"gtk-stop\"/>\n" "</dockitem>"; char toolb [] = "<dockitem name=\"Toolbar\" look=\"icon\" relief=\"none\">\n" " <toolitem name=\"foo1\" _label=\"Insensitive\" sensitive=\"0\" hidden=\"0\" priority=\"1\"/>\n" " <toolitem type=\"toggle\" name=\"foo5\" id=\"MyFoo\" pixtype=\"stock\" pixname=\"Close\"" " _label=\"TogSame\" _tip=\"My tooltip\"/>\n" "</dockitem>"; /* char statusa [] = "<item name=\"main\">Kippers</item>\n";*/ char statusb [] = "<status>\n" " <item name=\"main\"/>\n" " <control name=\"Progress\"/>\n" "</status>"; ev = &real_ev; CORBA_exception_init (ev); free (malloc (8)); program = gnome_program_init ("test-ui", VERSION, LIBBONOBOUI_MODULE, argc, argv, NULL); textdomain (GETTEXT_PACKAGE); bonobo_activate (); dump_prefs (); win = BONOBO_WINDOW (bonobo_window_new ("Win", "My Test Application")); container = bonobo_window_get_ui_container (win); bonobo_ui_engine_config_set_path (bonobo_window_get_ui_engine (win), "/test-ui/UIConfig/kvps"); corba_container = BONOBO_OBJREF (container); { GtkWidget *box = gtk_vbox_new (FALSE, 0); GtkWidget *button; GtkWidget *path_entry, *state_entry; button = gtk_button_new_with_label ("Press me to test!"); g_signal_connect (GTK_OBJECT (button), "clicked", (GtkSignalFunc) cb_do_quit, NULL); gtk_widget_show (GTK_WIDGET (button)); gtk_box_pack_start_defaults (GTK_BOX (box), button); button = gtk_button_new_with_label ("Dump Xml tree"); g_signal_connect (GTK_OBJECT (button), "clicked", (GtkSignalFunc) cb_do_dump, win); gtk_widget_show (GTK_WIDGET (button)); gtk_box_pack_start_defaults (GTK_BOX (box), button); button = gtk_button_new_with_label ("Popup"); g_signal_connect (GTK_OBJECT (button), "clicked", (GtkSignalFunc) cb_do_popup, win); gtk_widget_show (GTK_WIDGET (button)); gtk_box_pack_start_defaults (GTK_BOX (box), button); button = gtk_button_new_with_label ("Hide toolbar"); g_signal_connect (GTK_OBJECT (button), "clicked", (GtkSignalFunc) cb_do_hide_toolbar, win); gtk_widget_show (GTK_WIDGET (button)); gtk_box_pack_start_defaults (GTK_BOX (box), button); path_entry = gtk_entry_new (); gtk_entry_set_text (GTK_ENTRY (path_entry), "/commands/MyFoo"); gtk_widget_show (GTK_WIDGET (path_entry)); gtk_box_pack_start_defaults (GTK_BOX (box), path_entry); state_entry = gtk_entry_new (); gtk_entry_set_text (GTK_ENTRY (state_entry), "1"); g_signal_connect (GTK_OBJECT (state_entry), "changed", (GtkSignalFunc) cb_set_state, path_entry); gtk_widget_show (GTK_WIDGET (state_entry)); gtk_box_pack_start_defaults (GTK_BOX (box), state_entry); gtk_widget_show (GTK_WIDGET (box)); bonobo_window_set_contents (win, box); } g_signal_connect (GTK_OBJECT (win), "size_request", G_CALLBACK (slow_size_request), NULL); componenta = bonobo_ui_component_new ("A"); bonobo_object_unref (BONOBO_OBJECT (componenta)); componenta = bonobo_ui_component_new ("A"); componentb = bonobo_ui_component_new ("B"); componentc = bonobo_ui_component_new ("C"); bonobo_ui_component_set_container (componenta, corba_container, NULL); bonobo_ui_component_set_container (componentb, corba_container, NULL); bonobo_ui_component_set_container (componentc, corba_container, NULL); global_component = componenta; fname = bonobo_ui_util_get_ui_fname (NULL, "../doc/std-ui.xml"); if (fname && g_file_test (fname, G_FILE_TEST_EXISTS)) { fprintf (stderr, "\n\n--- Add std-ui.xml ---\n\n\n"); bonobo_ui_util_set_ui (componenta, NULL, "../doc/std-ui.xml", "gdm", NULL); /* bonobo_ui_component_set_prop ( componenta, "/menu/Preferences", "pixname", "/demo/a.xpm", NULL);*/ gtk_widget_show (GTK_WIDGET (win)); bonobo_main (); } else { g_warning ("Can't find ../doc/std-ui.xml"); gtk_widget_show (GTK_WIDGET (win)); } g_free (fname); bonobo_ui_component_freeze (componenta, NULL); fprintf (stderr, "\n\n--- Remove A ---\n\n\n"); bonobo_ui_component_rm (componenta, "/", ev); g_assert (!BONOBO_EX (ev)); /* bonobo_ui_component_set_translate (componentb, "/status", statusa, ev); g_assert (!BONOBO_EX (ev));*/ bonobo_ui_component_set_translate (componenta, "/", simplea, ev); g_assert (!BONOBO_EX (ev)); bonobo_ui_component_set_translate (componentb, "/", "<popups> <popup name=\"MyStuff\"/> </popups>", ev); g_assert (!BONOBO_EX (ev)); bonobo_ui_component_set_translate (componenta, "/popups/MyStuff", simpleb, ev); g_assert (!BONOBO_EX (ev)); bonobo_ui_component_set_translate (componenta, "/", keysa, ev); g_assert (!BONOBO_EX (ev)); bonobo_ui_component_set_translate (componentb, "/", toola, ev); g_assert (!BONOBO_EX (ev)); { GtkWidget *widget = gtk_button_new_with_label ("My Label"); BonoboControl *control = bonobo_control_new (widget); BonoboUIComponent *componentp; g_signal_connect (GTK_OBJECT (widget), "button_press_event", G_CALLBACK (do_sane_popup), control); componentp = bonobo_control_get_popup_ui_component (control); #if 1 bonobo_ui_component_set (componentp, "/", "<popups>" "<popup name=\"button3\"/></popups>", ev); g_assert (!BONOBO_EX (ev)); bonobo_ui_component_set_translate ( componentp, "/popups/button3", simpleb, ev); g_assert (!BONOBO_EX (ev)); #endif gtk_widget_show (widget); bonobo_ui_component_object_set (componenta, "/menu/File/MyControl", BONOBO_OBJREF (control), ev); bonobo_object_unref (BONOBO_OBJECT (control)); g_assert (!BONOBO_EX (ev)); widget = gtk_menu_item_new_with_mnemonic ("_Foo item"); gtk_widget_show (widget); bonobo_ui_component_widget_set (componenta, "/menu/File/MyControl2", widget, ev); } { GtkWidget *widget = gtk_entry_new (); gtk_entry_set_text (GTK_ENTRY (widget), "Example text"); gtk_widget_show (widget); bonobo_ui_component_widget_set (componenta, "/Toolbar/AControl", widget, ev); g_assert (!BONOBO_EX (ev)); } { GtkWidget *widget; GdkPixbuf *pixbuf = gdk_pixbuf_new_from_xpm_data (tame_xpm); widget = bonobo_ui_toolbar_button_item_new (pixbuf, "Test Control"); gtk_widget_show (widget); bonobo_ui_component_widget_set (componenta, "/Toolbar/BControl", widget, ev); g_assert (!BONOBO_EX (ev)); } bonobo_ui_component_add_listener (componentb, "MyFoo", toggled_cb, ev); g_assert (!BONOBO_EX (ev)); bonobo_ui_component_set_translate (componentb, "/", statusb, ev); g_assert (!BONOBO_EX (ev)); /* Duplicate set */ bonobo_ui_component_set_translate (componenta, "/", simplea, ev); g_assert (!BONOBO_EX (ev)); bonobo_ui_component_add_verb_list_with_data ( componenta, verbs, GUINT_TO_POINTER (15)); bonobo_ui_component_thaw (componenta, ev); g_assert (!BONOBO_EX (ev)); bonobo_ui_component_set_status (componenta, "WhatA1", ev); g_assert (!BONOBO_EX (ev)); bonobo_ui_component_set_status (componenta, "WhatA1", ev); g_assert (!BONOBO_EX (ev)); bonobo_ui_component_set_status (componentb, "WhatB2", ev); g_assert (!BONOBO_EX (ev)); bonobo_ui_component_set_status (componenta, "WhatA3", ev); g_assert (!BONOBO_EX (ev)); bonobo_ui_component_rm (componenta, "/status", ev); g_assert (!BONOBO_EX (ev)); bonobo_ui_component_set_status (componentb, "WhatB4", ev); g_assert (!BONOBO_EX (ev)); bonobo_ui_component_set_status (componenta, "WhatA5", ev); g_assert (!BONOBO_EX (ev)); bonobo_ui_component_set_status (componenta, "WhatA6>", ev); g_assert (!BONOBO_EX (ev)); bonobo_ui_component_set_status (componentb, "WhatB7", ev); g_assert (!BONOBO_EX (ev)); bonobo_ui_component_set_status (componentb, "", ev); g_assert (!BONOBO_EX (ev)); g_assert (bonobo_ui_component_get_prop ( componentb, "/status/main", "non-existant", ev) == NULL); g_assert (!strcmp (BONOBO_EX_REPOID (ev), ex_Bonobo_UIContainer_NonExistentAttr)); CORBA_exception_free (ev); { const char *good = "<item name=\"main\">WhatA6></item>\n"; txt = bonobo_ui_component_get (componenta, "/status/main", TRUE, NULL); if (!txt || strcmp (txt, good)) { g_warning ("Broken merging code '%s' should be '%s'", txt, good); bonobo_window_dump (win, "on fatal error"); g_assert_not_reached (); } CORBA_free (txt); } bonobo_main (); bonobo_ui_component_freeze (componenta, ev); g_assert (!BONOBO_EX (ev)); bonobo_ui_component_set_translate (componentb, "/menu", simpleb, ev); g_assert (!BONOBO_EX (ev)); bonobo_ui_component_set_translate (componenta, "/", toolb, ev); g_assert (!BONOBO_EX (ev)); bonobo_ui_component_set_prop (componenta, "/menu/File", "label", "_Goo-wan>", ev); g_assert (!BONOBO_EX (ev)); /* A 'transparent' node merge */ txt = bonobo_ui_component_get_prop (componenta, "/Toolbar", "look", ev); g_assert (!BONOBO_EX (ev)); printf ("Before merge look '%s'\n", txt); bonobo_ui_component_set_translate (componenta, "/", "<dockitem name=\"Toolbar\"/>", ev); g_assert (!BONOBO_EX (ev)); g_free (txt); txt = bonobo_ui_component_get_prop (componenta, "/Toolbar", "look", ev); g_assert (!BONOBO_EX (ev)); printf ("After merge look '%s'\n", txt); if (txt == NULL || strcmp (txt, "icon")) g_warning ("Serious transparency regression"); g_free (txt); bonobo_ui_component_set_translate (componenta, "/menu/File/Nice", simplee, ev); g_assert (!BONOBO_EX (ev)); { GtkWidget *widget = gtk_progress_bar_new (); BonoboControl *control = bonobo_control_new (widget); guint id; gtk_widget_show (widget); bonobo_ui_component_object_set (componenta, "/status/Progress", BONOBO_OBJREF (control), NULL); id = gtk_timeout_add (100, (GSourceFunc) update_progress, widget); g_signal_connect (GTK_OBJECT (widget), "destroy", G_CALLBACK (disconnect_progress), GUINT_TO_POINTER (id)); bonobo_object_unref (BONOBO_OBJECT (control)); } bonobo_ui_component_set_status (componenta, "This is a very long status message " "that should cause the window to be resized if " "there is in fact a bug in it", ev); g_assert (!BONOBO_EX (ev)); bonobo_ui_component_thaw (componenta, ev); g_assert (!BONOBO_EX (ev)); bonobo_main (); g_warning ("Begginning stress test, this may take some time ..."); for (i = 0; i < 100; i++) { bonobo_ui_component_freeze (componentc, ev); g_assert (!BONOBO_EX (ev)); bonobo_ui_component_set_translate (componentc, "/commands", "<cmd name=\"MyFoo\" sensitive=\"0\"/>", ev); g_assert (!BONOBO_EX (ev)); bonobo_ui_component_set_translate (componentc, "/menu", simplec, ev); g_assert (!BONOBO_EX (ev)); bonobo_ui_component_set_translate (componentc, "/menu/File", simpled, ev); g_assert (!BONOBO_EX (ev)); bonobo_ui_component_thaw (componentc, ev); g_assert (!BONOBO_EX (ev)); } g_warning ("Done stress test"); bonobo_main (); bonobo_ui_component_freeze (componenta, ev); g_assert (!BONOBO_EX (ev)); fprintf (stderr, "\n\n--- Remove 2 ---\n\n\n"); bonobo_ui_component_rm (componentb, "/", ev); g_assert (!BONOBO_EX (ev)); bonobo_ui_component_set_prop (componentc, "/menu/File/save", "label", "SaveC", ev); g_assert (!BONOBO_EX (ev)); bonobo_ui_component_thaw (componenta, ev); g_assert (!BONOBO_EX (ev)); bonobo_main (); bonobo_ui_component_freeze (componenta, ev); g_assert (!BONOBO_EX (ev)); fprintf (stderr, "\n\n--- Remove 3 ---\n\n\n"); bonobo_ui_component_rm (componentc, "/", ev); g_assert (!BONOBO_EX (ev)); bonobo_ui_component_thaw (componenta, ev); g_assert (!BONOBO_EX (ev)); bonobo_main (); bonobo_ui_component_freeze (componenta, ev); g_assert (!BONOBO_EX (ev)); fprintf (stderr, "\n\n--- Remove 1 ---\n\n\n"); bonobo_ui_component_rm (componenta, "/", ev); g_assert (!BONOBO_EX (ev)); bonobo_ui_component_thaw (componenta, ev); g_assert (!BONOBO_EX (ev)); bonobo_main (); bonobo_object_unref (BONOBO_OBJECT (componenta)); bonobo_object_unref (BONOBO_OBJECT (componentb)); bonobo_object_unref (BONOBO_OBJECT (componentc)); gtk_widget_destroy (GTK_WIDGET (win)); CORBA_exception_free (ev); g_object_unref (program); return bonobo_ui_debug_shutdown (); }