MateComponentObject * matecomponent_foreign_object_new (CORBA_Object corba_objref) { MateComponentObject *object; CORBA_Environment ev[1]; g_return_val_if_fail (corba_objref != CORBA_OBJECT_NIL, NULL); CORBA_exception_init (ev); if (!CORBA_Object_is_a (corba_objref, "IDL:MateComponent/Unknown:1.0", ev)) { if (ev->_major != CORBA_NO_EXCEPTION) { char *text = matecomponent_exception_get_text (ev); g_warning ("CORBA_Object_is_a: %s", text); g_free (text); } else g_warning ("matecomponent_foreign_object_new: corba_objref" " doesn't have interface MateComponent::Unknown"); object = NULL; } else { object = MATECOMPONENT_OBJECT (g_object_new (MATECOMPONENT_TYPE_FOREIGN_OBJECT, NULL)); object->corba_objref = CORBA_Object_duplicate (corba_objref, NULL); matecomponent_running_context_add_object_T (object->corba_objref); } CORBA_exception_free (ev); return object; }
MateCanvasItem* get_circle(MateCanvasGroup* group) { CORBA_Object server; MateCanvasItem *item; CORBA_Environment ev; CORBA_exception_init (&ev); server = matecomponent_activation_activate_from_id ("OAFIID:CircleItem", 0, NULL, &ev); if (server == CORBA_OBJECT_NIL || MATECOMPONENT_EX (&ev)) { g_warning (_("Could activate Circle: '%s'"), matecomponent_exception_get_text (&ev)); CORBA_exception_free(&ev); exit(0); } g_print("Got circle component connect.\n"); item = mate_canvas_item_new (group, matecomponent_canvas_item_get_type (), "corba_factory", server, NULL); /* I think this tells the object it is OK to exit. Probably want to call this when I close. or matecomponent_object_release_unref(server, &ev) CORBA_Object_release(server, &ev);*/ matecomponent_object_release_unref(server, &ev); CORBA_exception_free(&ev); return item; }
void matecomponent_event_source_client_remove_listener (MateComponent_Unknown object, MateComponent_Listener listener, CORBA_Environment *opt_ev) { MateComponent_Unknown es; CORBA_Environment *ev, temp_ev; g_return_if_fail (object != CORBA_OBJECT_NIL); if (!opt_ev) { CORBA_exception_init (&temp_ev); ev = &temp_ev; } else ev = opt_ev; es = MateComponent_Unknown_queryInterface (object, "IDL:MateComponent/EventSource:1.0", ev); if (!MATECOMPONENT_EX (ev) && es) { MateComponent_EventSource_removeListener (es, listener, ev); MateComponent_Unknown_unref (es, ev); } if (!opt_ev) { if (MATECOMPONENT_EX (ev)) { char *text = matecomponent_exception_get_text (ev); g_warning ("remove_listener failed '%s'", text); g_free (text); } CORBA_exception_free (ev); } }
MateComponent_Listener matecomponent_event_source_client_add_listener_full (MateComponent_Unknown object, GClosure *event_callback, const char *opt_mask, CORBA_Environment *opt_ev) { MateComponentListener *listener = NULL; MateComponent_Listener corba_listener = CORBA_OBJECT_NIL; MateComponent_Unknown es; CORBA_Environment *ev, temp_ev; g_return_val_if_fail (event_callback != NULL, CORBA_OBJECT_NIL); if (!opt_ev) { ev = &temp_ev; CORBA_exception_init (ev); } else ev = opt_ev; es = MateComponent_Unknown_queryInterface (object, "IDL:MateComponent/EventSource:1.0", ev); if (MATECOMPONENT_EX (ev) || !es) goto add_listener_end; if (!(listener = matecomponent_listener_new_closure (event_callback))) goto add_listener_end; corba_listener = MATECOMPONENT_OBJREF (listener); if (opt_mask) MateComponent_EventSource_addListenerWithMask ( es, corba_listener, opt_mask, ev); else MateComponent_EventSource_addListener ( es, corba_listener, ev); corba_listener = CORBA_Object_duplicate (corba_listener, ev); matecomponent_object_unref (MATECOMPONENT_OBJECT (listener)); matecomponent_object_release_unref (es, ev); add_listener_end: if (!opt_ev) { if (MATECOMPONENT_EX (ev)) { char *text = matecomponent_exception_get_text (ev); g_warning ("add_listener failed '%s'", text); g_free (text); } CORBA_exception_free (ev); } return corba_listener; }
static void xfapplet_applet_activated (MateComponent_Unknown object, CORBA_Environment *ev, gpointer data) { GtkWidget *bw, *child = NULL; CORBA_Object control; CORBA_Environment corba_ev; MateComponentControlFrame *frame; MateComponentUIComponent *uic; MateComponent_PropertyBag prop_bag; XfAppletPlugin *xap = (XfAppletPlugin*) data; gchar *error; if (MATECOMPONENT_EX (ev) || object == CORBA_OBJECT_NIL) { error = matecomponent_exception_get_text (ev); CORBA_exception_free (ev); g_warning ("Failed to load applet '%s' (can't get CORBA object): %s\n", xap->iid, error); xfapplet_applet_load_failed (xap); xfapplet_cleanup_current (xap); g_free (error); return; } control = CORBA_Object_duplicate (object, NULL); bw = matecomponent_widget_new_control_from_objref (object, CORBA_OBJECT_NIL); matecomponent_object_release_unref (object, NULL); if (!bw) { g_warning ("Failed to load applet '%s' (can't get matecomponent widget)\n", xap->iid); xfapplet_applet_load_failed (xap); xfapplet_cleanup_current (xap); return; } frame = matecomponent_widget_get_control_frame (MATECOMPONENT_WIDGET (bw)); if (!frame) { g_warning ("Failed to load applet '%s' (can't get control frame)\n", xap->iid); gtk_object_sink (GTK_OBJECT (bw)); xfapplet_applet_load_failed (xap); xfapplet_cleanup_current (xap); return; } CORBA_exception_init (&corba_ev); prop_bag = matecomponent_control_frame_get_control_property_bag (frame, &corba_ev); if (prop_bag == NULL || MATECOMPONENT_EX (&corba_ev)) { error = matecomponent_exception_get_text (&corba_ev); CORBA_exception_free (&corba_ev); g_warning ("Failed to load applet '%s' (can't get property bag): %s\n", xap->iid, error); gtk_object_sink (GTK_OBJECT (bw)); xfapplet_applet_load_failed (xap); xfapplet_cleanup_current (xap); g_free (error); return; } uic = matecomponent_control_frame_get_popup_component (frame, &corba_ev); if (uic == NULL || MATECOMPONENT_EX (&corba_ev)) { error = matecomponent_exception_get_text (&corba_ev); CORBA_exception_free (&corba_ev); g_warning ("Failed to load applet '%s' (can't get popup component): %s\n", xap->iid, error); gtk_object_sink (GTK_OBJECT (bw)); xfapplet_applet_load_failed (xap); xfapplet_cleanup_current (xap); g_free (error); return; } matecomponent_ui_component_freeze (uic, CORBA_OBJECT_NIL); xfce_textdomain ("xfce4-panel", LIBXFCE4PANEL_LOCALE_DIR, "UTF-8"); matecomponent_ui_util_set_ui (uic, PKGDATADIR "/ui", "XFCE_Panel_Popup.xml", "xfce4-xfapplet-plugin", &corba_ev); if (MATECOMPONENT_EX (&corba_ev)) { error = matecomponent_exception_get_text (&corba_ev); CORBA_exception_free (&corba_ev); g_warning ("Failed to load applet '%s' (can't set ui): %s\n", xap->iid, error); gtk_object_sink (GTK_OBJECT (bw)); xfapplet_applet_load_failed (xap); xfapplet_cleanup_current (xap); g_free (error); return; } xfce_textdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR, "UTF-8"); xfapplet_setup_menu_items (xap->plugin, uic); matecomponent_ui_component_thaw (uic, CORBA_OBJECT_NIL); gtk_widget_show (bw); if (xap->configured) xfapplet_unload_applet (xap); xap->object = control; xap->uic = uic; xap->prop_bag = prop_bag; MateCORBA_small_listen_for_broken (object, G_CALLBACK (xfapplet_connection_broken), xap); child = xfapplet_get_plugin_child (xap->plugin); if (child) gtk_widget_destroy (child); gtk_container_add (GTK_CONTAINER(xap->plugin), bw); xap->configured = TRUE; if (!xfapplet_save_configuration (xap)) g_warning ("Failed to save XfApplet configuration.\n"); }