aboutsummaryrefslogtreecommitdiffstats
path: root/shell/e-shell-window.c
diff options
context:
space:
mode:
Diffstat (limited to 'shell/e-shell-window.c')
-rw-r--r--shell/e-shell-window.c113
1 files changed, 102 insertions, 11 deletions
diff --git a/shell/e-shell-window.c b/shell/e-shell-window.c
index 9625139de7..6dfb20055c 100644
--- a/shell/e-shell-window.c
+++ b/shell/e-shell-window.c
@@ -49,6 +49,7 @@
#include <bonobo/bonobo-widget.h>
#include <libgnome/gnome-i18n.h>
+#include <libgnome/gnome-gconf.h>
#include <gconf/gconf-client.h>
@@ -87,7 +88,7 @@ struct _EShellWindowPrivate {
/* The sidebar. */
GtkWidget *sidebar;
-
+
/* Notebooks used to switch between components. */
GtkWidget *sidebar_notebook;
GtkWidget *view_notebook;
@@ -575,6 +576,14 @@ menu_component_selected (BonoboUIComponent *uic,
e_shell_window_switch_to_component (window, component_id+1);
}
+static GConfEnumStringPair button_styles[] = {
+ { E_SIDEBAR_MODE_TEXT, "text" },
+ { E_SIDEBAR_MODE_ICON, "icons" },
+ { E_SIDEBAR_MODE_BOTH, "both" },
+ { E_SIDEBAR_MODE_TOOLBAR, "toolbar" },
+ { -1, NULL }
+};
+
static void
setup_widgets (EShellWindow *window)
{
@@ -585,40 +594,91 @@ setup_widgets (EShellWindow *window)
GSList *p;
GString *xml;
int button_id;
- gboolean toolbar_visible;
-
+ gboolean visible;
+ char *style;
+ int mode;
+
priv->paned = gtk_hpaned_new ();
+ gtk_widget_show (priv->paned);
priv->sidebar = e_sidebar_new ();
g_signal_connect (priv->sidebar, "button_selected",
G_CALLBACK (sidebar_button_selected_callback), window);
gtk_paned_pack1 (GTK_PANED (priv->paned), priv->sidebar, FALSE, FALSE);
+ gtk_widget_show (priv->sidebar);
priv->sidebar_notebook = gtk_notebook_new ();
gtk_notebook_set_show_tabs (GTK_NOTEBOOK (priv->sidebar_notebook), FALSE);
gtk_notebook_set_show_border (GTK_NOTEBOOK (priv->sidebar_notebook), FALSE);
e_sidebar_set_selection_widget (E_SIDEBAR (priv->sidebar), priv->sidebar_notebook);
+ gtk_widget_show (priv->sidebar_notebook);
priv->view_notebook = gtk_notebook_new ();
gtk_notebook_set_show_tabs (GTK_NOTEBOOK (priv->view_notebook), FALSE);
gtk_notebook_set_show_border (GTK_NOTEBOOK (priv->view_notebook), FALSE);
gtk_paned_pack2 (GTK_PANED (priv->paned), priv->view_notebook, TRUE, TRUE);
+ gtk_widget_show (priv->view_notebook);
gtk_paned_set_position (GTK_PANED (priv->paned),
gconf_client_get_int (gconf_client, "/apps/evolution/shell/view_defaults/folder_bar/width", NULL));
- toolbar_visible = gconf_client_get_bool (gconf_client,
- "/apps/evolution/shell/view_defaults/toolbar_visible",
+ /* The buttons */
+ visible = gconf_client_get_bool (gconf_client,
+ "/apps/evolution/shell/view_defaults/buttons_visible",
NULL);
bonobo_ui_component_set_prop (e_shell_window_peek_bonobo_ui_component (window),
+ "/commands/ViewButtonsHide",
+ "state",
+ visible ? "0" : "1",
+ NULL);
+
+ e_sidebar_set_show_buttons (E_SIDEBAR (priv->sidebar), visible);
+
+ style = gconf_client_get_string (gconf_client,
+ "/apps/evolution/shell/view_defaults/buttons_style",
+ NULL);
+
+ if (gconf_string_to_enum (button_styles, style, &mode)) {
+ switch (mode) {
+ case E_SIDEBAR_MODE_TEXT:
+ bonobo_ui_component_set_prop (e_shell_window_peek_bonobo_ui_component (window),
+ "/commands/ViewButtonsText",
+ "state", "1", NULL);
+ break;
+ case E_SIDEBAR_MODE_ICON:
+ bonobo_ui_component_set_prop (e_shell_window_peek_bonobo_ui_component (window),
+ "/commands/ViewButtonsIcon",
+ "state", "1", NULL);
+ break;
+ case E_SIDEBAR_MODE_BOTH:
+ bonobo_ui_component_set_prop (e_shell_window_peek_bonobo_ui_component (window),
+ "/commands/ViewButtonsIconText",
+ "state", "1", NULL);
+ break;
+
+ case E_SIDEBAR_MODE_TOOLBAR:
+ bonobo_ui_component_set_prop (e_shell_window_peek_bonobo_ui_component (window),
+ "/commands/ViewButtonsToolbar",
+ "state", "1", NULL);
+ break;
+ }
+
+ e_sidebar_set_mode (E_SIDEBAR (priv->sidebar), mode);
+ }
+
+ /* The tool bar */
+ visible = gconf_client_get_bool (gconf_client,
+ "/apps/evolution/shell/view_defaults/toolbar_visible",
+ NULL);
+ bonobo_ui_component_set_prop (e_shell_window_peek_bonobo_ui_component (window),
"/commands/ViewToolbar",
"state",
- toolbar_visible ? "1" : "0",
+ visible ? "1" : "0",
NULL);
bonobo_ui_component_set_prop (e_shell_window_peek_bonobo_ui_component (window),
"/Toolbar",
"hidden",
- toolbar_visible ? "0" : "1",
+ visible ? "0" : "1",
NULL);
button_id = 0;
@@ -669,7 +729,7 @@ setup_widgets (EShellWindow *window)
contents_vbox = gtk_vbox_new (FALSE, 0);
gtk_box_pack_start (GTK_BOX (contents_vbox), priv->paned, TRUE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (contents_vbox), priv->status_bar, FALSE, TRUE, 0);
- gtk_widget_show_all (contents_vbox);
+ gtk_widget_show (contents_vbox);
/* We only display this when a menu item is actually selected. */
gtk_widget_hide (priv->menu_hint_label);
@@ -892,12 +952,21 @@ e_shell_window_peek_bonobo_ui_component (EShellWindow *window)
return window->priv->ui_component;
}
+ESidebar *
+e_shell_window_peek_sidebar (EShellWindow *window)
+{
+ g_return_val_if_fail (E_IS_SHELL_WINDOW (window), NULL);
+
+ return E_SIDEBAR (window->priv->sidebar);
+}
+
void
e_shell_window_save_defaults (EShellWindow *window)
{
GConfClient *client = gconf_client_get_default ();
char *prop;
- gboolean toolbar_visible;
+ const char *style;
+ gboolean visible;
gconf_client_set_int (client, "/apps/evolution/shell/view_defaults/width",
GTK_WIDGET (window)->allocation.width, NULL);
@@ -907,15 +976,37 @@ e_shell_window_save_defaults (EShellWindow *window)
gconf_client_set_int (client, "/apps/evolution/shell/view_defaults/folder_bar/width",
gtk_paned_get_position (GTK_PANED (window->priv->paned)), NULL);
+ /* The button styles */
+ if ((style = gconf_enum_to_string (button_styles, e_sidebar_get_mode (E_SIDEBAR (window->priv->sidebar))))) {
+ gconf_client_set_string (client,
+ "/apps/evolution/shell/view_defaults/buttons_style",
+ style, NULL);
+ }
+
+ /* Button hiding setting */
+ prop = bonobo_ui_component_get_prop (e_shell_window_peek_bonobo_ui_component (window),
+ "/commands/ViewButtonsHide",
+ "state",
+ NULL);
+ if (prop) {
+ visible = prop[0] == '0';
+ gconf_client_set_bool (client,
+ "/apps/evolution/shell/view_defaults/buttons_visible",
+ visible,
+ NULL);
+ g_free (prop);
+ }
+
+ /* Toolbar visibility setting */
prop = bonobo_ui_component_get_prop (e_shell_window_peek_bonobo_ui_component (window),
"/commands/ViewToolbar",
"state",
NULL);
if (prop) {
- toolbar_visible = prop[0] == '1';
+ visible = prop[0] == '1';
gconf_client_set_bool (client,
"/apps/evolution/shell/view_defaults/toolbar_visible",
- toolbar_visible,
+ visible,
NULL);
g_free (prop);
}