diff options
author | Parthasarathi Susarla <saps@src.gnome.org> | 2005-12-21 15:18:49 +0800 |
---|---|---|
committer | Parthasarathi Susarla <saps@src.gnome.org> | 2005-12-21 15:18:49 +0800 |
commit | 57884e830b43bf7a4a1eb08ce59cb8dd06a0de60 (patch) | |
tree | 8924656fe29b0ca86450ed4c55c185d917f2770b /shell/e-shell-window.c | |
parent | 8e71ebe0f4885419bb524fed4838a3277003a828 (diff) | |
download | gsoc2013-evolution-57884e830b43bf7a4a1eb08ce59cb8dd06a0de60.tar.gz gsoc2013-evolution-57884e830b43bf7a4a1eb08ce59cb8dd06a0de60.tar.zst gsoc2013-evolution-57884e830b43bf7a4a1eb08ce59cb8dd06a0de60.zip |
committed these files to fix http://bugzilla.gnome.org/show_bug.cgi?id=260354
ChangeLog addressbook/ChangeLog
addressbook/gui/component/addressbook-component.c
calendar/ChangeLog calendar/gui/calendar-component.c
calendar/gui/memos-component.c calendar/gui/tasks-component.c
mail/ChangeLog mail/Evolution-Mail.idl mail/mail-component.c
shell/ChangeLog shell/Evolution-Component.idl
shell/Evolution-Shell.idl shell/Evolution.idl
shell/Makefile.am shell/e-shell-window.c
shell/e-shell-window.h shell/e-shell.c
svn path=/trunk/; revision=30915
Diffstat (limited to 'shell/e-shell-window.c')
-rw-r--r-- | shell/e-shell-window.c | 72 |
1 files changed, 63 insertions, 9 deletions
diff --git a/shell/e-shell-window.c b/shell/e-shell-window.c index 0fd5fe3dca..a0f70c7ccf 100644 --- a/shell/e-shell-window.c +++ b/shell/e-shell-window.c @@ -25,6 +25,7 @@ #endif #include "e-shell-window.h" +#include "e-shell-view.h" #include "Evolution.h" @@ -67,6 +68,9 @@ struct _ComponentView { char *component_id; char *component_alias; + GNOME_Evolution_ComponentView component_view; + char *title; + GtkWidget *sidebar_widget; GtkWidget *view_widget; GtkWidget *statusbar_widget; @@ -79,6 +83,8 @@ typedef struct _ComponentView ComponentView; struct _EShellWindowPrivate { EShell *shell; + EShellView *shell_view; /* CORBA wrapper for this, just a placeholder */ + /* plugin menu manager */ ESMenu *menu; @@ -149,6 +155,13 @@ component_view_new (const char *id, const char *alias, int button_id) static void component_view_free (ComponentView *view) { + if (view->component_view) { + CORBA_Environment ev = { 0 }; + + CORBA_Object_release(view->component_view, &ev); + CORBA_exception_free(&ev); + } + g_free (view->component_id); g_free (view->component_alias); g_free (view); @@ -193,6 +206,7 @@ init_view (EShellWindow *window, EShellWindowPrivate *priv = window->priv; EComponentRegistry *registry = e_shell_peek_component_registry (window->priv->shell); GNOME_Evolution_Component component_iface; + GNOME_Evolution_ComponentView component_view; Bonobo_UIContainer container; Bonobo_Control sidebar_control; Bonobo_Control view_control; @@ -221,19 +235,29 @@ init_view (EShellWindow *window, /* 2. Set up view. */ - GNOME_Evolution_Component_createControls (component_iface, &sidebar_control, &view_control, &statusbar_control, &ev); - if (BONOBO_EX (&ev)) { + /* The rest of the code assumes that the component is valid and can create + controls; if this fails something is really wrong in the component + (e.g. methods not implemented)... So handle it as if there was no + component at all. */ + + component_view = GNOME_Evolution_Component_createView(component_iface, BONOBO_OBJREF(priv->shell_view), &ev); + if (component_view == NULL || BONOBO_EX (&ev)) { g_warning ("Cannot create view for %s", view->component_id); + bonobo_object_release_unref (component_iface, NULL); + CORBA_exception_free (&ev); + return; + } - /* The rest of the code assumes that the component is valid and can create - controls; if this fails something is really wrong in the component - (e.g. methods not implemented)... So handle it as if there was no - component at all. */ + GNOME_Evolution_ComponentView_getControls(component_view, &sidebar_control, &view_control, &statusbar_control, &ev); + if (BONOBO_EX (&ev)) { + g_warning ("Cannot create view for %s", view->component_id); bonobo_object_release_unref (component_iface, NULL); CORBA_exception_free (&ev); return; } + view->component_view = component_view; + CORBA_exception_free (&ev); container = bonobo_ui_component_get_container (priv->ui_component); @@ -301,9 +325,12 @@ switch_view (EShellWindow *window, ComponentView *component_view) gtk_notebook_set_current_page (GTK_NOTEBOOK (priv->statusbar_notebook), component_view->notebook_page_num); } - title = g_strdup_printf ("Evolution - %s", info->button_label); - gtk_window_set_title (GTK_WINDOW (window), title); - g_free (title); + if (component_view->title == NULL) { + title = g_strdup_printf ("Evolution - %s", info->button_label); + gtk_window_set_title (GTK_WINDOW (window), title); + g_free (title); + } else + gtk_window_set_title (GTK_WINDOW (window), component_view->title); if (info->button_icon) gtk_window_set_icon (GTK_WINDOW (window), info->button_icon); @@ -839,6 +866,7 @@ e_shell_window_init (EShellWindow *shell_window) EShellWindowPrivate *priv = g_new0 (EShellWindowPrivate, 1); priv->tooltips = gtk_tooltips_new (); + priv->shell_view = e_shell_view_new(shell_window); shell_window->priv = priv; @@ -1064,3 +1092,29 @@ e_shell_window_show_settings (EShellWindow *window) e_shell_show_settings (window->priv->shell, window->priv->current_view ? window->priv->current_view->component_alias : NULL, window); } +void +e_shell_window_set_title(EShellWindow *window, const char *component_id, const char *title) +{ + EShellWindowPrivate *priv = window->priv; + ComponentView *view = NULL; + GSList *p; + + for (p = priv->component_views; p != NULL; p = p->next) { + ComponentView *this_view = p->data; + + if (strcmp (this_view->component_id, component_id) == 0 + || (this_view->component_alias != NULL + && strcmp (this_view->component_alias, component_id) == 0)) { + view = p->data; + break; + } + } + + if (view) { + g_free(view->title); + view->title = g_strdup(title); + if (view->title && view == priv->current_view) + gtk_window_set_title((GtkWindow *)window, title); + } +} + |