aboutsummaryrefslogtreecommitdiffstats
path: root/shell/e-shell-view.c
diff options
context:
space:
mode:
Diffstat (limited to 'shell/e-shell-view.c')
-rw-r--r--shell/e-shell-view.c364
1 files changed, 0 insertions, 364 deletions
diff --git a/shell/e-shell-view.c b/shell/e-shell-view.c
deleted file mode 100644
index e18af8550d..0000000000
--- a/shell/e-shell-view.c
+++ /dev/null
@@ -1,364 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * E-shell-view.c: Implements a Shell View of Evolution
- *
- * Authors:
- * Miguel de Icaza (miguel@helixcode.com)
- *
- * (C) 2000 Helix Code, Inc.
- */
-#include <config.h>
-#include <gnome.h>
-#include "shortcut-bar/e-shortcut-bar.h"
-#include "e-util/e-util.h"
-#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>
-
-#define PARENT_TYPE gnome_app_get_type ()
-
-static GtkObjectClass *parent_class;
-
-struct _EShellViewPrivate
-{
- /* a hashtable of e-folders -> widgets */
- GHashTable *folder_views;
- GtkWidget *notebook;
-};
-
-static void
-destroy_folder_view (EFolder *unused, GtkWidget *folder_view, gpointer unused2)
-{
- BonoboWidget *bonobo_widget;
- BonoboObject *bonobo_object;
- CORBA_Object corba_control;
- CORBA_Environment ev;
-
- g_print ("%s: %s entered\n",
- __FILE__, __FUNCTION__);
-
- g_return_if_fail (BONOBO_IS_WIDGET (folder_view));
-
- bonobo_widget = BONOBO_WIDGET (folder_view);
-
- bonobo_object = BONOBO_OBJECT (
- bonobo_widget_get_server (bonobo_widget));
-
- corba_control = bonobo_object_corba_objref (bonobo_object);
-
- g_return_if_fail (corba_control != NULL);
-
- CORBA_exception_init (&ev);
-
- /* hangs on this! */
- Bonobo_Unknown_unref (corba_control, &ev);
- CORBA_exception_free (&ev);
-
- g_print ("%s: %s exited\n",
- __FILE__, __FUNCTION__);
-}
-
-
-static void
-esv_destroy (GtkObject *object)
-{
- EShellView *eshell_view = E_SHELL_VIEW (object);
-
- e_shell_unregister_view (eshell_view->eshell, eshell_view);
-
- g_hash_table_foreach (eshell_view->priv->folder_views,
- destroy_folder_view, NULL);
-
- g_hash_table_destroy (eshell_view->priv->folder_views);
- g_free (eshell_view->priv);
- parent_class->destroy (object);
-}
-
-static void
-e_shell_view_class_init (GtkObjectClass *object_class)
-{
- object_class->destroy = esv_destroy;
-
- parent_class = gtk_type_class (PARENT_TYPE);
-}
-
-static void
-e_shell_view_setup (EShellView *eshell_view)
-{
- /*
- * FIXME, should load the config if (load_config)....
- */
- gtk_window_set_default_size (GTK_WINDOW (eshell_view), 600, 600);
-}
-
-static void
-e_shell_view_setup_shortcut_display (EShellView *eshell_view)
-{
- eshell_view->shortcut_bar = e_shortcut_bar_view_new (eshell_view->eshell->shortcut_bar);
-
- eshell_view->shortcut_hpaned = gtk_hpaned_new ();
- gtk_widget_show (eshell_view->shortcut_hpaned);
- gtk_paned_set_position (GTK_PANED (eshell_view->shortcut_hpaned), 100);
-
- gtk_paned_pack1 (GTK_PANED (eshell_view->shortcut_hpaned),
- eshell_view->shortcut_bar, FALSE, FALSE);
- gtk_widget_show (eshell_view->shortcut_bar);
-
- gnome_app_set_contents (GNOME_APP (eshell_view), eshell_view->shortcut_hpaned);
-
- gtk_signal_connect (
- GTK_OBJECT (eshell_view->shortcut_bar), "item_selected",
- GTK_SIGNAL_FUNC (shortcut_bar_item_selected), eshell_view);
-}
-
-static GtkWidget *
-get_view (EShellView *eshell_view, EFolder *efolder, Bonobo_UIHandler uih)
-{
- GtkWidget *w = NULL;
- Evolution_Shell corba_shell = CORBA_OBJECT_NIL;
- EShell *shell_model = eshell_view->eshell;
-
- /* This type could be E_FOLDER_MAIL, E_FOLDER_CONTACTS, etc */
- EFolderType e_folder_type;
-
- g_assert (efolder);
- g_assert (eshell_view);
-
- e_folder_type = e_folder_get_folder_type (efolder);
-
- 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");
-
- /* 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);
- break;
-
- case E_FOLDER_CONTACTS :
- w = bonobo_widget_new_control ("control:addressbook", uih);
- break;
-
- case E_FOLDER_CALENDAR : {
- gchar *user_cal_file;
- BonoboPropertyBagClient *pbc;
- BonoboControlFrame *cf;
-
- w = bonobo_widget_new_control ("control:calendar", uih);
- cf = bonobo_widget_get_control_frame (BONOBO_WIDGET (w));
- pbc = bonobo_control_frame_get_control_property_bag (cf);
- /*pbc = bonobo_control_get_property_bag (w);*/
-
- user_cal_file =
- g_concat_dir_and_file (gnome_util_user_home (),
- ".gnome/user-cal.vcf");
-
- bonobo_property_bag_client_set_value_string (pbc,
- "calendar_uri",
- user_cal_file);
- break;
- }
-
- case E_FOLDER_TASKS :
- case E_FOLDER_OTHER :
- default :
- printf ("%s: %s: No bonobo component associated with %s\n",
- __FILE__,
- __FUNCTION__,
- e_folder_get_description (efolder));
- return NULL;
- }
-
- if (w)
- {
- Evolution_ServiceRepository corba_sr;
- BonoboObjectClient *server =
- bonobo_widget_get_server (BONOBO_WIDGET (w));
- CORBA_Environment ev;
- CORBA_exception_init (&ev);
-
- /* Does this control have the "ServiceRepository" interface? */
- corba_sr = (Evolution_ServiceRepository)
- bonobo_object_client_query_interface (
- server,
- "IDL:Evolution/ServiceRepository:1.0",
- NULL);
-
- /* If it does, pass our shell interface to it */
- if (corba_sr != CORBA_OBJECT_NIL) {
-
- Evolution_ServiceRepository_set_shell (corba_sr,
- corba_shell,
- &ev);
- /* We're done with the service repository interface,
- so now let's get rid of it */
- Bonobo_Unknown_unref (corba_sr, &ev);
-
- } else {
-
- g_print ("The bonobo component for \"%s\" doesn't "
- "seem to implement the "
- "Evolution::ServiceRepository interface\n",
- e_folder_get_description (efolder));
- }
-
- CORBA_exception_free (&ev);
-
- gtk_widget_show (w);
- }
-
- return w;
-}
-
-
-
-void
-e_shell_view_set_view (EShellView *eshell_view, EFolder *efolder)
-{
- GtkNotebook *notebook;
- GtkWidget *folder_view;
- int current_page;
- BonoboControlFrame *control_frame;
-
- g_assert (eshell_view);
- g_assert (efolder);
-
- notebook = GTK_NOTEBOOK (eshell_view->priv->notebook);
- current_page = gtk_notebook_get_current_page (notebook);
-
- if (current_page != -1) {
- GtkWidget *current;
-
- current = gtk_notebook_get_nth_page (notebook, current_page);
- control_frame = bonobo_widget_get_control_frame (
- BONOBO_WIDGET (current));
- } else
- control_frame = NULL;
-
- /* If there's a notebook page in our hash that represents this
- * efolder, switch to it.
- */
- folder_view = g_hash_table_lookup (eshell_view->priv->folder_views,
- efolder);
- if (folder_view) {
- int notebook_page = gtk_notebook_page_num (notebook,
- folder_view);
- g_assert (notebook_page != -1);
-
- gtk_notebook_set_page (notebook, notebook_page);
- } else {
- /* Get a new control that represents this efolder,
- * append it to our notebook, and put it in our hash.
- */
- Bonobo_UIHandler uih =
- bonobo_object_corba_objref (
- BONOBO_OBJECT (eshell_view->uih));
- int new_page_index;
-
- folder_view = get_view (eshell_view, efolder, uih);
- if (!folder_view)
- return;
-
- gtk_notebook_append_page (notebook, folder_view, NULL);
- new_page_index = gtk_notebook_page_num (notebook,
- folder_view);
- g_hash_table_insert (eshell_view->priv->folder_views,
- efolder, folder_view);
- gtk_notebook_set_page (notebook, new_page_index);
- }
-
- if (control_frame)
- bonobo_control_frame_control_deactivate (control_frame);
-
- control_frame =
- bonobo_widget_get_control_frame (BONOBO_WIDGET (folder_view));
- bonobo_control_frame_control_activate (control_frame);
-}
-
-GtkWidget *
-e_shell_view_new (EShell *eshell, EFolder *efolder, gboolean show_shortcut_bar)
-{
- EShellView *eshell_view;
-
- g_return_val_if_fail (eshell != NULL, NULL);
- g_return_val_if_fail (efolder != NULL, NULL);
-
- eshell_view = gtk_type_new (e_shell_view_get_type ());
-
- eshell_view->priv = g_new (EShellViewPrivate, 1);
- eshell_view->priv->folder_views =
- g_hash_table_new (g_direct_hash, g_direct_equal);
- eshell_view->priv->notebook = NULL;
-
- gnome_app_construct (GNOME_APP (eshell_view),
- "Evolution", "Evolution");
-
- eshell_view->eshell = eshell;
- e_shell_view_setup (eshell_view);
- e_shell_view_setup_menus (eshell_view);
-
- e_shell_register_view (eshell, eshell_view);
- eshell_view->shortcut_displayed = show_shortcut_bar;
- e_shell_view_setup_shortcut_display (eshell_view);
-
- /* create our notebook, if it hasn't been created already */
- if (!eshell_view->priv->notebook) {
- eshell_view->priv->notebook = gtk_notebook_new();
-
- gtk_notebook_set_show_tabs (
- GTK_NOTEBOOK (eshell_view->priv->notebook),
- FALSE);
-
- gtk_widget_show (eshell_view->priv->notebook);
-
- if (eshell_view->shortcut_displayed){
- gtk_paned_pack2 (
- GTK_PANED (eshell_view->shortcut_hpaned),
- eshell_view->priv->notebook, TRUE, TRUE);
- }
- else {
- gnome_app_set_contents (GNOME_APP (eshell_view),
- eshell_view->priv->notebook);
- }
- }
-
- e_shell_view_set_view (eshell_view, efolder);
-
- return (GtkWidget *) eshell_view;
-}
-
-void
-e_shell_view_display_shortcut_bar (EShellView *eshell_view, gboolean display)
-{
- g_return_if_fail (eshell_view != NULL);
- g_return_if_fail (E_IS_SHELL_VIEW (eshell_view));
-
- g_error ("Switching code for the shortcut bar is not written yet");
-}
-
-E_MAKE_TYPE (e_shell_view, "EShellView", EShellView, e_shell_view_class_init, NULL, PARENT_TYPE);
-
-void
-e_shell_view_new_folder (EShellView *esv)
-{
- g_return_if_fail (esv != NULL);
- g_return_if_fail (E_IS_SHELL_VIEW (esv));
-}
-
-void
-e_shell_view_new_shortcut (EShellView *esv)
-{
- g_return_if_fail (esv != NULL);
- g_return_if_fail (E_IS_SHELL_VIEW (esv));
-}