static GNOME_GnoCam_PortList * impl_GNOME_GnoCam_getPortList (PortableServer_Servant servant, CORBA_Environment *ev) { GnoCamMain *gm; GNOME_GnoCam_PortList *list; GPPortInfoList *il = NULL; GPPortInfo info; int n, i; gm = GNOCAM_MAIN (bonobo_object_from_servant (servant)); gp_port_info_list_new (&il); gp_port_info_list_load (il); n = MAX (0, gp_port_info_list_count (il)); list = GNOME_GnoCam_PortList__alloc (); list->_buffer = CORBA_sequence_CORBA_string_allocbuf (n); for (i = 0; i < n; i++) { if (gp_port_info_list_get_info (il, i, &info) >= 0) { list->_buffer[list->_length] = CORBA_string_dup (info.name); list->_length++; } } CORBA_sequence_set_release (list, TRUE); gp_port_info_list_free (il); return (list); }
static GNOME_GnoCam_ModelList * impl_GNOME_GnoCam_getModelList (PortableServer_Servant servant, CORBA_Environment *ev) { GnoCamMain *gm; GNOME_GnoCam_ModelList *list; CameraAbilitiesList *al = NULL; int n, i; CameraAbilities a; gm = GNOCAM_MAIN (bonobo_object_from_servant (servant)); gp_abilities_list_new (&al); gp_abilities_list_load (al, NULL); n = MAX (0, gp_abilities_list_count (al)); list = GNOME_GnoCam_ModelList__alloc (); list->_buffer = CORBA_sequence_CORBA_string_allocbuf (n); for (i = 0; i < n; i++) { if (gp_abilities_list_get_abilities (al, i, &a) >= 0) { list->_buffer[list->_length] = CORBA_string_dup (a.model); list->_length++; } } CORBA_sequence_set_release (list, TRUE); gp_abilities_list_free (al); return (list); }
static void impl_Bonobo_Listener_event (PortableServer_Servant servant, const CORBA_char *event_name, const CORBA_any *args, CORBA_Environment *ev) { BonoboListener *listener; listener = BONOBO_LISTENER (bonobo_object_from_servant (servant)); bonobo_object_ref (BONOBO_OBJECT (listener)); if (listener->priv->event_callback) bonobo_closure_invoke ( listener->priv->event_callback, G_TYPE_NONE, BONOBO_TYPE_LISTENER, listener, G_TYPE_STRING | G_SIGNAL_TYPE_STATIC_SCOPE, event_name, BONOBO_TYPE_STATIC_CORBA_ANY, args, BONOBO_TYPE_STATIC_CORBA_EXCEPTION, ev, G_TYPE_INVALID); g_signal_emit (G_OBJECT (listener), signals [EVENT_NOTIFY], 0, event_name, args, ev); bonobo_object_unref (BONOBO_OBJECT (listener)); }
static AtkRelation * get_relation_from_servant (PortableServer_Servant servant) { SpiBase *base = SPI_BASE (bonobo_object_from_servant(servant)); g_return_val_if_fail (base, NULL); return ATK_RELATION(base->gobj); }
static AtkObject * get_atkobject_from_servant (PortableServer_Servant servant) { SpiBase *object = SPI_BASE (bonobo_object_from_servant (servant)); g_return_val_if_fail (object, NULL); g_return_val_if_fail (ATK_IS_OBJECT(object->gobj), NULL); return ATK_OBJECT(object->gobj); }
static CORBA_long impl_accessibility_application_get_id (PortableServer_Servant servant, CORBA_Environment *ev) { SpiApplication *application = SPI_APPLICATION ( bonobo_object_from_servant (servant)); return application->id; }
static CORBA_boolean impl_quit(PortableServer_Servant servant, CORBA_Environment *ev) { MailComponent *mc = MAIL_COMPONENT(bonobo_object_from_servant(servant)); if (mc->priv->quit_state == -1) mc->priv->quit_state = MC_QUIT_START; mail_config_prune_proxies (); switch (mc->priv->quit_state) { case MC_QUIT_START: { extern int camel_application_is_exiting; int now = time(NULL)/60/60/24, days; gboolean empty_junk; GConfClient *gconf = mail_config_get_gconf_client(); camel_application_is_exiting = TRUE; mail_vfolder_shutdown(); mc->priv->quit_expunge = gconf_client_get_bool(gconf, "/apps/evolution/mail/trash/empty_on_exit", NULL) && ((days = gconf_client_get_int(gconf, "/apps/evolution/mail/trash/empty_on_exit_days", NULL)) == 0 || (days + gconf_client_get_int(gconf, "/apps/evolution/mail/trash/empty_date", NULL)) <= now); empty_junk = gconf_client_get_bool(gconf, "/apps/evolution/mail/junk/empty_on_exit", NULL) && ((days = gconf_client_get_int(gconf, "/apps/evolution/mail/junk/empty_on_exit_days", NULL)) == 0 || (days + gconf_client_get_int(gconf, "/apps/evolution/mail/junk/empty_date", NULL)) <= now); if (empty_junk) { g_hash_table_foreach(mc->priv->store_hash, (GHFunc)mc_quit_delete, mc); gconf_client_set_int(gconf, "/apps/evolution/mail/junk/empty_date", now, NULL); } g_hash_table_foreach(mc->priv->store_hash, (GHFunc)mc_quit_sync, mc); if (mc->priv->quit_expunge) gconf_client_set_int(gconf, "/apps/evolution/mail/trash/empty_date", now, NULL); mc->priv->quit_state = MC_QUIT_SYNC; } /* Falls through */ case MC_QUIT_SYNC: if (mc->priv->quit_count > 0) return FALSE; mail_cancel_all(); mc->priv->quit_state = MC_QUIT_THREADS; /* Falls through */ case MC_QUIT_THREADS: /* should we keep cancelling? */ return !mail_msg_active((unsigned int)-1); } return TRUE; }
static void impl_accessibility_application_set_id (PortableServer_Servant servant, const CORBA_long id, CORBA_Environment *ev) { SpiApplication *application = SPI_APPLICATION ( bonobo_object_from_servant (servant)); application->id = id; }
static void impl_requestCreateItem (PortableServer_Servant servant, const CORBA_char *item_type_name, CORBA_Environment *ev) { MailComponent *mc = MAIL_COMPONENT(bonobo_object_from_servant(servant)); if (create_item(item_type_name, mc->priv->model, NULL, NULL) == -1) { CORBA_exception_set (ev, CORBA_USER_EXCEPTION, ex_GNOME_Evolution_Component_UnknownType, NULL); } }
static void impl_ComponentView_getControls(PortableServer_Servant servant, Bonobo_Control *side_control, Bonobo_Control *view_control, Bonobo_Control *statusbar_control, CORBA_Environment *ev) { EComponentView *ecv = (EComponentView *)bonobo_object_from_servant(servant); *side_control = CORBA_Object_duplicate (BONOBO_OBJREF (ecv->side_control), ev); *view_control = CORBA_Object_duplicate (BONOBO_OBJREF (ecv->view_control), ev); *statusbar_control = CORBA_Object_duplicate (BONOBO_OBJREF (ecv->statusbar_control), ev); }
/* * CORBA Accessibility::DeviceListener::keyEvent method implementation */ static CORBA_boolean impl_device_event (PortableServer_Servant servant, const Accessibility_DeviceEvent *key, CORBA_Environment *ev) { gboolean was_consumed = FALSE; SpiDeviceListener *listener = SPI_DEVICE_LISTENER ( bonobo_object_from_servant (servant)); g_signal_emit (G_OBJECT (listener), signals [DEVICE_EVENT], 0, key, &was_consumed); return was_consumed; }
static CORBA_char * impl_GNOME_Camera_getInfo (PortableServer_Servant servant, CORBA_Environment *ev) { GnoCamCamera *c; CameraText text; c = GNOCAM_CAMERA (bonobo_object_from_servant (servant)); CR (gp_camera_get_manual (c->camera, &text, NULL), ev); if (BONOBO_EX (ev)) return (NULL); return (g_strdup (text.text)); }
static Bonobo_Control impl__get_control (PortableServer_Servant servant, CORBA_Environment *ev) { EvolutionConfigControl *config_control; EvolutionConfigControlPrivate *priv; config_control = EVOLUTION_CONFIG_CONTROL (bonobo_object_from_servant (servant)); priv = config_control->priv; bonobo_object_ref (BONOBO_OBJECT (priv->control)); return CORBA_Object_duplicate (bonobo_object_corba_objref (BONOBO_OBJECT (priv->control)), ev); }
static Bonobo_Unknown impl_Bonobo_ItemContainer_getObjectByName (PortableServer_Servant servant, const CORBA_char *item_name, CORBA_boolean only_if_exists, CORBA_Environment *ev) { Bonobo_Unknown ret; g_signal_emit ( G_OBJECT (bonobo_object_from_servant (servant)), signals [GET_OBJECT], 0, item_name, only_if_exists, ev, &ret); return ret; }
static void impl_GNOME_GnoCam_getCamera (PortableServer_Servant servant, Bonobo_Listener listener, CORBA_Environment *ev) { IdleData *d; d = g_new0 (IdleData, 1); d->gm = GNOCAM_MAIN (bonobo_object_from_servant (servant)); bonobo_object_ref (d->gm); d->listener = bonobo_object_dup_ref (listener, NULL); g_message ("Adding idle function..."); g_idle_add (get_camera_idle, d); }
static void impl_GNOME_Camera_captureImage (PortableServer_Servant servant, const Bonobo_Listener listener, CORBA_Environment *ev) { IdleData *d; d = g_new0 (IdleData, 1); d->gc = GNOCAM_CAMERA (bonobo_object_from_servant (servant)); bonobo_object_ref (d->gc); d->listener = CORBA_Object_duplicate (listener, NULL); g_message ("Adding idle function..."); g_idle_add_full (0, capture_image_idle, d, idle_data_destroy); }
static AtkHyperlink * get_hyperlink_from_servant (PortableServer_Servant servant) { SpiBase *object = SPI_BASE (bonobo_object_from_servant (servant)); g_return_val_if_fail (object != NULL, NULL); if (ATK_IS_HYPERLINK(object->gobj)) { return ATK_HYPERLINK (object->gobj); } else if (ATK_IS_HYPERLINK_IMPL(object->gobj)) { return atk_hyperlink_impl_get_hyperlink (ATK_HYPERLINK_IMPL (object->gobj)); } else return NULL; }
static void impl_GNOME_GnoCam_getCameraByModelAndPort ( PortableServer_Servant servant, Bonobo_Listener listener, const CORBA_char *model, const CORBA_char *port, CORBA_Environment *ev) { IdleData *d; d = g_new0 (IdleData, 1); d->model = CORBA_string_dup (model); d->port = CORBA_string_dup (port); d->gm = GNOCAM_MAIN (bonobo_object_from_servant (servant)); bonobo_object_ref (d->gm); d->listener = bonobo_object_dup_ref (listener, NULL); g_message ("Adding idle function..."); g_idle_add (get_camera_idle, d); }
/* * Returns a list of the objects in this container */ static Bonobo_ItemContainer_ObjectNames * impl_Bonobo_ItemContainer_enumObjects (PortableServer_Servant servant, CORBA_Environment *ev) { Bonobo_ItemContainer_ObjectNames *list; BonoboItemContainer *container; GSList *objects, *l; int i; container = BONOBO_ITEM_CONTAINER ( bonobo_object_from_servant (servant)); g_return_val_if_fail (container != NULL, NULL); list = Bonobo_ItemContainer_ObjectNames__alloc (); if (!list) return NULL; objects = NULL; g_hash_table_foreach (container->priv->objects, get_object_names, &objects); list->_length = list->_maximum = g_slist_length (objects); list->_buffer = CORBA_sequence_CORBA_string_allocbuf (list->_length); if (!list->_buffer) { CORBA_free (list); for (l = objects; l; l = l->next) CORBA_free (l->data); g_slist_free (objects); return NULL; } /* Assemble the list of objects */ for (i = 0, l = objects; l; l = l->next) list->_buffer [i++] = l->data; g_slist_free (objects); return list; }
static Bonobo_Stream impl_GNOME_Camera_capturePreview (PortableServer_Servant servant, CORBA_Environment *ev) { BonoboStream *stream; CameraFile *file; GnoCamCamera *c; g_message ("impl_GNOME_Camera_capturePreview"); c = GNOCAM_CAMERA (bonobo_object_from_servant (servant)); CR (gp_file_new (&file), ev); CR (gp_camera_capture_preview (c->camera, file), ev); if (BONOBO_EX (ev)) { gp_file_unref (file); g_message ("Returning..."); return (CORBA_OBJECT_NIL); } stream = bonobo_stream_mem_create (file->data, file->size, TRUE, FALSE); gp_file_unref (file); return (CORBA_Object_duplicate (BONOBO_OBJREF (stream), ev)); }
static GNOME_Evolution_ComponentView impl_createView (PortableServer_Servant servant, GNOME_Evolution_ShellView parent, CORBA_Environment *ev) { MailComponent *mail_component = MAIL_COMPONENT (bonobo_object_from_servant (servant)); MailComponentPrivate *priv = mail_component->priv; EComponentView *component_view; GtkWidget *tree_widget, *vbox, *info; GtkWidget *view_widget; GtkWidget *statusbar_widget; char *uri; mail_session_set_interactive(TRUE); mc_startup(mail_component); view_widget = em_folder_browser_new (); tree_widget = (GtkWidget *) em_folder_tree_new_with_model (priv->model); em_folder_tree_set_excluded ((EMFolderTree *) tree_widget, 0); em_folder_tree_enable_drag_and_drop ((EMFolderTree *) tree_widget); if ((uri = em_folder_tree_model_get_selected (priv->model))) { gboolean expanded; expanded = em_folder_tree_model_get_expanded_uri (priv->model, uri); em_folder_tree_set_selected ((EMFolderTree *) tree_widget, uri, FALSE); em_folder_view_set_folder_uri ((EMFolderView *) view_widget, uri); if (!expanded) em_folder_tree_model_set_expanded_uri (priv->model, uri, expanded); g_free (uri); } em_format_set_session ((EMFormat *) ((EMFolderView *) view_widget)->preview, session); g_signal_connect (view_widget, "on-url", G_CALLBACK (view_on_url), mail_component); em_folder_view_set_statusbar ((EMFolderView*)view_widget, FALSE); statusbar_widget = e_task_bar_new (); e_activity_handler_attach_task_bar (priv->activity_handler, E_TASK_BAR (statusbar_widget)); gtk_widget_show (tree_widget); gtk_widget_show (view_widget); gtk_widget_show (statusbar_widget); vbox = gtk_vbox_new(FALSE, 0); info = e_info_label_new("stock_mail"); e_info_label_set_info((EInfoLabel *)info, _("Mail"), ""); gtk_box_pack_start((GtkBox *)vbox, info, FALSE, TRUE, 0); gtk_box_pack_start((GtkBox *)vbox, tree_widget, TRUE, TRUE, 0); gtk_widget_show(info); gtk_widget_show(vbox); component_view = e_component_view_new(parent, "mail", vbox, view_widget, statusbar_widget); g_object_set_data((GObject *)component_view, "info-label", info); g_object_set_data_full((GObject *)view_widget, "e-creatable-items-handler", e_user_creatable_items_handler_new("mail", create_local_item_cb, tree_widget), (GDestroyNotify)g_object_unref); g_signal_connect (component_view->view_control, "activate", G_CALLBACK (view_control_activate_cb), view_widget); g_signal_connect (tree_widget, "folder-selected", G_CALLBACK (folder_selected_cb), view_widget); g_signal_connect((EMFolderBrowser *)view_widget, "account_search_cleared", G_CALLBACK (enable_folder_tree), tree_widget); g_signal_connect(((EMFolderBrowser *)view_widget), "account_search_activated", G_CALLBACK (disable_folder_tree), tree_widget); g_signal_connect(view_widget, "changed", G_CALLBACK(view_changed_cb), component_view); g_signal_connect(view_widget, "loaded", G_CALLBACK(view_changed_cb), component_view); g_object_set_data((GObject*)info, "folderview", view_widget); g_object_set_data((GObject*)view_widget, "foldertree", tree_widget); priv->component_view = component_view; return BONOBO_OBJREF(component_view); }
static inline BonoboPersist * bonobo_persist_from_servant (PortableServer_Servant servant) { return BONOBO_PERSIST (bonobo_object_from_servant (servant)); }
static inline EvolutionImporterListener * evolution_importer_listener_from_servant (PortableServer_Servant servant) { return EVOLUTION_IMPORTER_LISTENER (bonobo_object_from_servant (servant)); }
static inline BonoboEventSource * bonobo_event_source_from_servant (PortableServer_Servant servant) { return BONOBO_EVENT_SOURCE (bonobo_object_from_servant (servant)); }
static inline BonoboZoomableFrame * frame_from_servant (PortableServer_Servant servant) { return BONOBO_ZOOMABLE_FRAME (bonobo_object_from_servant (servant)); }
int main (int argc, char *argv []) { BonoboObject *object; Bonobo_Unknown ref; CORBA_Environment *ev, real_ev; g_thread_init (NULL); free (malloc (8)); if (bonobo_init (&argc, argv) == FALSE) g_error ("Can not bonobo_init"); bonobo_activate (); ev = &real_ev; CORBA_exception_init (ev); fprintf (stderr, "Local lifecycle\n"); { object = BONOBO_OBJECT (g_object_new ( bonobo_moniker_get_type (), NULL)); g_assert (bonobo_object_ref (object) == object); g_assert (bonobo_object_unref (BONOBO_OBJECT (object)) == NULL); bonobo_object_unref (BONOBO_OBJECT (object)); } fprintf (stderr, "In-proc lifecycle\n"); { object = BONOBO_OBJECT (g_object_new ( bonobo_moniker_get_type (), NULL)); ref = CORBA_Object_duplicate (BONOBO_OBJREF (object), NULL); bonobo_object_release_unref (ref, NULL); } fprintf (stderr, "Query interface\n"); { BonoboObject *a, *b; a = BONOBO_OBJECT (g_object_new ( bonobo_moniker_get_type (), NULL)); b = BONOBO_OBJECT (g_object_new ( bonobo_stream_mem_get_type (), NULL)); bonobo_object_add_interface (a, b); fprintf (stderr, " invalid interface\n"); object = bonobo_object_query_local_interface ( a, "IDL:This/Is/Not/There:1.0"); g_assert (object == CORBA_OBJECT_NIL); fprintf (stderr, " symmetry\n"); object = bonobo_object_query_local_interface ( a, "IDL:Bonobo/Stream:1.0"); g_assert (object == b); bonobo_object_unref (object); object = bonobo_object_query_local_interface ( b, "IDL:Bonobo/Stream:1.0"); g_assert (object == b); bonobo_object_unref (object); object = bonobo_object_query_local_interface ( a, "IDL:Bonobo/Moniker:1.0"); g_assert (object == a); bonobo_object_unref (object); object = bonobo_object_query_local_interface ( b, "IDL:Bonobo/Moniker:1.0"); g_assert (object == a); bonobo_object_unref (object); fprintf (stderr, " remote\n"); ref = Bonobo_Unknown_queryInterface ( BONOBO_OBJREF (a), "IDL:Broken/1.0", ev); g_assert (!BONOBO_EX (ev)); g_assert (ref == CORBA_OBJECT_NIL); ref = Bonobo_Unknown_queryInterface ( BONOBO_OBJREF (a), "IDL:Bonobo/Stream:1.0", ev); g_assert (!BONOBO_EX (ev)); g_assert (ref == BONOBO_OBJREF (b)); bonobo_object_release_unref (ref, ev); g_assert (!BONOBO_EX (ev)); bonobo_object_unref (a); } fprintf (stderr, "Environment exception checks\n"); { object = BONOBO_OBJECT (g_object_new ( bonobo_moniker_get_type (), NULL)); g_signal_connect (G_OBJECT (object), "system_exception", G_CALLBACK (system_exception_cb), object); CORBA_exception_set_system ( ev, ex_CORBA_COMM_FAILURE, CORBA_COMPLETED_MAYBE); g_assert (BONOBO_EX (ev)); signal_emitted = 0; BONOBO_OBJECT_CHECK ( object, BONOBO_OBJREF (object), ev); g_assert (signal_emitted); CORBA_exception_free (ev); bonobo_object_unref (object); } fprintf (stderr, "Servant mapping...\n"); { PortableServer_Servant servant; object = BONOBO_OBJECT (g_object_new ( bonobo_moniker_get_type (), NULL)); servant = (PortableServer_Servant) &object->servant; g_assert (bonobo_object (object) == object); g_assert (bonobo_object (&object->servant) == object); g_assert (bonobo_object_get_servant (object) == servant); g_assert (bonobo_object_from_servant (servant) == object); g_assert (bonobo_object_fast (object) == object); g_assert (bonobo_object_fast (servant) == object); bonobo_object_unref (object); } fprintf (stderr, "Ret-ex tests...\n"); { g_assert (!ret_ex_test (ev)); ex_test (ev); CORBA_exception_set (ev, CORBA_USER_EXCEPTION, ex_Bonobo_PropertyBag_NotFound, NULL); g_assert (ret_ex_test (ev)); CORBA_exception_free (ev); } fprintf (stderr, "General error tests...\n"); { bonobo_exception_general_error_set ( ev, NULL, "a%s exception occurred", "n exceptional"); g_assert (BONOBO_EX (ev)); g_assert (!strcmp (BONOBO_EX_REPOID (ev), ex_Bonobo_GeneralError)); g_assert (!strcmp (bonobo_exception_get_text (ev), "an exceptional exception occurred")); } fprintf (stderr, "All tests passed\n"); return bonobo_debug_shutdown (); }
static inline BonoboUIComponent * bonobo_ui_from_servant (PortableServer_Servant servant) { return BONOBO_UI_COMPONENT (bonobo_object_from_servant (servant)); }