diff options
author | bertrand <bertrand@helixcode.com> | 2000-03-13 14:09:26 +0800 |
---|---|---|
committer | Bertrand Guiheneuf <bertrand@src.gnome.org> | 2000-03-13 14:09:26 +0800 |
commit | 470823e288099d4409b81fb18fadea77b2c49e11 (patch) | |
tree | 54912e611702263d1d23ec31cac33f01f6293ea6 /shell | |
parent | b3800945679e14f8bc6ca2b8f08915e0bd5dd7af (diff) | |
download | gsoc2013-evolution-470823e288099d4409b81fb18fadea77b2c49e11.tar gsoc2013-evolution-470823e288099d4409b81fb18fadea77b2c49e11.tar.gz gsoc2013-evolution-470823e288099d4409b81fb18fadea77b2c49e11.tar.bz2 gsoc2013-evolution-470823e288099d4409b81fb18fadea77b2c49e11.tar.lz gsoc2013-evolution-470823e288099d4409b81fb18fadea77b2c49e11.tar.xz gsoc2013-evolution-470823e288099d4409b81fb18fadea77b2c49e11.tar.zst gsoc2013-evolution-470823e288099d4409b81fb18fadea77b2c49e11.zip |
(get_view): added a parameter to have a reference to the EShellView.
2000-03-13 bertrand <bertrand@helixcode.com>
(get_view): added a parameter to have
a reference to the EShellView.
(get_view): In the case of the mail component
use the Evolution_ServiceRepository to
give the component a reference to the
Shell server.
The Mail component now has a reference to the shell corba
server. It is gonna make it possible to register new services
in the shell.
svn path=/trunk/; revision=2111
Diffstat (limited to 'shell')
-rw-r--r-- | shell/e-shell-view.c | 49 |
1 files changed, 37 insertions, 12 deletions
diff --git a/shell/e-shell-view.c b/shell/e-shell-view.c index 5a75ad74c2..0ea017c58e 100644 --- a/shell/e-shell-view.c +++ b/shell/e-shell-view.c @@ -15,6 +15,7 @@ #include "e-shell-view.h" #include "e-shell-view-menu.h" #include "e-shell-shortcut.h" +#include "Evolution.h" #include <bonobo.h> #include <libgnorba/gnorba.h> @@ -71,38 +72,62 @@ e_shell_view_setup_shortcut_display (EShellView *eshell_view) } static GtkWidget * -get_view (EFolder *efolder, Bonobo_UIHandler uih) +get_view (EShellView *eshell_view, EFolder *efolder, Bonobo_UIHandler uih) { GtkWidget *w = NULL; EFolderType e_folder_type; - BonoboControlFrame *control_frame; - - + BonoboControlFrame *control_frame = NULL; + BonoboObjectClient *server; + EShell *shell_model; + Evolution_Shell corba_shell = CORBA_OBJECT_NIL; + CORBA_Environment ev; - printf ("I am the view for %s\n", - e_folder_get_description (efolder)); + shell_model = eshell_view->eshell; + if (shell_model) + corba_shell = bonobo_object_corba_objref (BONOBO_OBJECT (shell_model)); + else + g_warning ("The shell Bonobo object does not have an associated CORBA object\n"); /* get the folder type */ e_folder_type = e_folder_get_folder_type (efolder); - + /* initialize the corba environment */ + CORBA_exception_init (&ev); + /* depending on the type of folder, * we launch a different bonobo component */ switch (e_folder_type) { case E_FOLDER_MAIL : - w = bonobo_widget_new_control ("control:evolution-mail", - uih ); + { + Evolution_ServiceRepository corba_sr; + + w = bonobo_widget_new_control ("control:evolution-mail", + uih); + server = bonobo_widget_get_server (BONOBO_WIDGET (w)); + + corba_sr = (Evolution_ServiceRepository) + bonobo_object_client_query_interface (server, + "IDL:Evolution/ServiceRepository:1.0", + NULL); + if (corba_sr != CORBA_OBJECT_NIL) { + Evolution_ServiceRepository_set_shell (corba_sr, corba_shell, &ev); + } else { + g_warning ("The bonobo component for the mail doesn't seem to implement the " + "Evolution::ServiceRepository interface\n"); + } + } break; - + default : printf ("No bonobo component associated to %s\n", e_folder_get_description (efolder)); } - control_frame = bonobo_widget_get_control_frame (w); + if (!control_frame) + control_frame = bonobo_widget_get_control_frame (BONOBO_WIDGET (w)); bonobo_control_frame_set_autoactivate (control_frame, FALSE); bonobo_control_frame_control_activate (control_frame); @@ -120,7 +145,7 @@ e_shell_view_set_view (EShellView *eshell_view, EFolder *efolder) uih = bonobo_object_corba_objref (BONOBO_OBJECT (eshell_view->uih)); - w = get_view (efolder, uih); + w = get_view (eshell_view, efolder, uih); if (eshell_view->contents){ gtk_widget_destroy (eshell_view->contents); |