From 55499e0ce4bb8a081d12e7243a0dd42aa55bbbfd Mon Sep 17 00:00:00 2001 From: Ettore Perazzoli Date: Fri, 30 Jun 2000 05:36:32 +0000 Subject: EvolutionShellClient. svn path=/trunk/; revision=3820 --- filter/filter-arg-types.c | 111 +++++++++------------------------------------- 1 file changed, 21 insertions(+), 90 deletions(-) (limited to 'filter/filter-arg-types.c') diff --git a/filter/filter-arg-types.c b/filter/filter-arg-types.c index 8599665b82..afecb0bcde 100644 --- a/filter/filter-arg-types.c +++ b/filter/filter-arg-types.c @@ -22,6 +22,8 @@ #include +#include "evolution-shell-client.h" + #include "filter-arg-types.h" /* ********************************************************************** */ @@ -501,91 +503,7 @@ static void filter_arg_folder_class_init (FilterArgFolderClass *class); static void filter_arg_folder_init (FilterArgFolder *gspaper); static FilterArg *folder_parent_class; -extern Evolution_Shell global_shell_interface; - -static PortableServer_ServantBase__epv FolderSelectionListener_base_epv; -static POA_Evolution_FolderSelectionListener__epv FolderSelectionListener_epv; -static POA_Evolution_FolderSelectionListener__vepv FolderSelectionListener_vepv; -static gboolean FolderSelectionListener_vepv_initialized = FALSE; - -struct _FolderSelectionListenerServant { - POA_Evolution_FolderSelectionListener servant; - FilterArg *arg; - int index; - /*EvolutionShellComponentClient *component_client;*/ -}; -typedef struct _FolderSelectionListenerServant FolderSelectionListenerServant; - -static void -impl_FolderSelectionListener_selected(PortableServer_Servant listener_servant, char *uri, char *physical, CORBA_Environment *ev) -{ - FolderSelectionListenerServant *servant = listener_servant; - GList *node; - - /* only if we have a selection */ - if (physical[0]) { - printf ("user selected; %s, or did they select %s\n", uri, physical); - - /* FIXME: passing arg 2 of `g_list_index' makes pointer from integer without a cast */ - if (servant->index >= 0 && (node = g_list_index (servant->arg->values, servant->index))) { - node->data = g_strdup (physical); - } else { - servant->arg->values = g_list_append (servant->arg->values, g_strdup (physical)); - } - - gtk_signal_emit_by_name (GTK_OBJECT (servant->arg), "changed"); - } - gtk_object_unref (GTK_OBJECT (servant->arg)); - - g_free (servant); -} - -static Evolution_FolderSelectionListener -create_listener (FilterArg *arg, int index) -{ - PortableServer_Servant listener_servant; - Evolution_FolderSelectionListener corba_interface; - CORBA_Environment ev; - FolderSelectionListenerServant *servant; - - if (!FolderSelectionListener_vepv_initialized) { - FolderSelectionListener_base_epv._private = NULL; - FolderSelectionListener_base_epv.finalize = NULL; - FolderSelectionListener_base_epv.default_POA = NULL; - - FolderSelectionListener_epv.selected = impl_FolderSelectionListener_selected; - - FolderSelectionListener_vepv._base_epv = & FolderSelectionListener_base_epv; - FolderSelectionListener_vepv.Evolution_FolderSelectionListener_epv = & FolderSelectionListener_epv; - - FolderSelectionListener_vepv_initialized = TRUE; - } - servant = g_malloc0 (sizeof (*servant)); - servant->servant.vepv = &FolderSelectionListener_vepv; - servant->arg = arg; - gtk_object_ref (GTK_OBJECT (arg)); - servant->index = index; - - listener_servant = (PortableServer_Servant) servant; - - CORBA_exception_init (&ev); - - POA_Evolution_FolderSelectionListener__init (listener_servant, &ev); - if (ev._major != CORBA_NO_EXCEPTION) { - g_free(servant); - return CORBA_OBJECT_NIL; - } - - CORBA_free (PortableServer_POA_activate_object (bonobo_poa (), listener_servant, &ev)); - - corba_interface = PortableServer_POA_servant_to_reference (bonobo_poa (), listener_servant, &ev); - if (ev._major != CORBA_NO_EXCEPTION) { - corba_interface = CORBA_OBJECT_NIL; - } - - CORBA_exception_free (&ev); - return corba_interface; -} +extern EvolutionShellClient *global_shell_client; guint filter_arg_folder_get_type (void) @@ -639,19 +557,32 @@ static int arg_folder_edit_value (FilterArg *arg, int index) { char *def; - CORBA_Environment ev; + char *physical_uri; printf ("folder edit value %d\n", index); + if (index < 0) { def = ""; } else { def = filter_arg_get_value (arg, index); } - CORBA_exception_init (&ev); - Evolution_Shell_user_select_folder (global_shell_interface, - create_listener (arg, index), - "Select Folder", def, &ev); + evolution_shell_client_user_select_folder (global_shell_client, + _("Select Folder"), + def, NULL, &physical_uri); + + if (physical_uri != NULL && physical_uri[0] != '\0') { + GList *node; + + if (index >= 0 && (node = g_list_index (arg->values, index))) + node->data = physical_uri; + else + arg->values = g_list_append (arg->values, physical_uri); + + gtk_signal_emit_by_name (GTK_OBJECT (arg), "changed"); + } else { + g_free (physical_uri); + } #warning "What do we really want to return here???" return 0; -- cgit v1.2.3