diff options
author | Matthew Loper <mloper@src.gnome.org> | 2000-04-24 11:10:30 +0800 |
---|---|---|
committer | Matthew Loper <mloper@src.gnome.org> | 2000-04-24 11:10:30 +0800 |
commit | 7c309e43b25b9de136c5329d7fc041baeaf841c6 (patch) | |
tree | a97f3dbc1e924cbd1f6e2caa66ebffb337cc1b58 | |
parent | 0fe51af01075beb777894bacca9e98aeef3f860a (diff) | |
download | gsoc2013-evolution-7c309e43b25b9de136c5329d7fc041baeaf841c6.tar.gz gsoc2013-evolution-7c309e43b25b9de136c5329d7fc041baeaf841c6.tar.zst gsoc2013-evolution-7c309e43b25b9de136c5329d7fc041baeaf841c6.zip |
+ * widgets/Makefile.am: Added e-paned directory.
+
+ * default_user/Makefile.am: new file.
+
+ * default_user/Main_Shortcuts.xml: New file; is used to fill the
+ shortcut bar's "main shortcuts" pane.
+
+ * default_user/Other_Shortcuts.xml: New file, used to fill the
+ shortcut bar's "other shortcuts" pane.
+
+ * default_user/Inbox.mbox: New file. This is the first message a
+ new user will see when they fire up Evolution. Needs work.
+
+ * Makefile.am: added default_user directory.
+ * configure.in: same.
+
+ * e-paned.c: New file. Makes a GtkPaned with more than two
+ children.
+ * e-paned.h: same.
+
+ * Makefile.am: added e-paned.[ch].
+
+ * e-shell-view.h: Added hpaned and treeview widgets to
+ EShellView. Added e_shell_view_toggle_shortcut_bar() and
+ e_shell_view_toggle_treeview().
+
+ * e-shell-view.c (e_shell_view_setup_shortcut_display): Use EPaned
+ widget to house our shortcut bar.
+ (e_shell_view_toggle_shortcut_bar): New function; toggles whether
+ the shortcut bar is showing.
+ (e_shell_view_toggle_treeview): Same, for the treeview (NYI).
+ (e_shell_view_new): Put the notebook view in our EPaned widget.
+
+ * e-shell-view-menu.c (esv_cmd_toggle_shortcut_bar): New function;
+ toggles whether the shortcut bar is viewed.
+ (esv_cmd_toggle_treeview): Same, but with the treeview. Added
+ menuitems in the "view" menu to allow access to the above.
+
svn path=/trunk/; revision=2575
-rw-r--r-- | ChangeLog | 18 | ||||
-rw-r--r-- | Makefile.am | 1 | ||||
-rw-r--r-- | configure.in | 1 | ||||
-rw-r--r-- | default_user/Inbox.mbox | 29 | ||||
-rw-r--r-- | default_user/Main_Shortcuts.xml | 8 | ||||
-rw-r--r-- | default_user/Makefile.am | 11 | ||||
-rw-r--r-- | default_user/Other_Shortcuts.xml | 4 | ||||
-rw-r--r-- | e-util/ChangeLog | 8 | ||||
-rw-r--r-- | e-util/Makefile.am | 4 | ||||
-rw-r--r-- | e-util/e-paned.c | 227 | ||||
-rw-r--r-- | e-util/e-paned.h | 45 | ||||
-rw-r--r-- | shell/ChangeLog | 18 | ||||
-rw-r--r-- | shell/e-shell-view-menu.c | 19 | ||||
-rw-r--r-- | shell/e-shell-view.c | 56 | ||||
-rw-r--r-- | shell/e-shell-view.h | 7 | ||||
-rw-r--r-- | widgets/Makefile.am | 2 |
16 files changed, 438 insertions, 20 deletions
@@ -1,3 +1,21 @@ +2000-04-24 Matt Loper <matt@helixcode.com> + + * widgets/Makefile.am: Added e-paned directory. + + * default_user/Makefile.am: new file. + + * default_user/Main_Shortcuts.xml: New file; is used to fill the + shortcut bar's "main shortcuts" pane. + + * default_user/Other_Shortcuts.xml: New file, used to fill the + shortcut bar's "other shortcuts" pane. + + * default_user/Inbox.mbox: New file. This is the first message a + new user will see when they fire up Evolution. Needs work. + + * Makefile.am: added default_user directory. + * configure.in: same. + 2000-04-23 NotZed <NotZed@HelixCode.com> * tests/test10.c: Removed some unecessary includes. From diff --git a/Makefile.am b/Makefile.am index 2fb2b21aee..84a6970be4 100644 --- a/Makefile.am +++ b/Makefile.am @@ -28,6 +28,7 @@ SUBDIRS = \ calendar \ wombat \ art \ + default_user \ po dist-hook: diff --git a/configure.in b/configure.in index fc14e15977..e94dabba7b 100644 --- a/configure.in +++ b/configure.in @@ -375,4 +375,5 @@ calendar/gui/Makefile filter/Makefile wombat/Makefile art/Makefile +default_user/Makefile ]) diff --git a/default_user/Inbox.mbox b/default_user/Inbox.mbox new file mode 100644 index 0000000000..57df16271b --- /dev/null +++ b/default_user/Inbox.mbox @@ -0,0 +1,29 @@ +From matt@loper.helixcode.com Sat Apr 22 00:00:15 2000 -0400 +Status: R +X-Status: +X-Keywords: +Return-Path: <matt> +Received: (from matt@localhost) + by loper.helixcode.com (8.9.3/8.9.3) id AAA05962 + for matt; Sat, 22 Apr 2000 00:00:15 -0400 +Date: Sat, 22 Apr 2000 00:00:15 -0400 +From: Matt Loper <matt@loper.helixcode.com> +Message-Id: <200004220400.AAA05962@loper.helixcode.com> +To: humans@the.world +Subject: Welcome to Evolution +X-Evolution: 00000001-0000 + +Welcome to Evolution 1.0: a developer's alpha preview. If you find a +bug, and you're running bug-buddy, you can submit bug-reports by going +to the file->bugbuddy menu (insert picture here). + +TODO: fill out introduction a little more; make this into a pretty +html page to show off our html support; we should use a big dancing +monkey with light contrast as a background. + +-Matt + + + + + diff --git a/default_user/Main_Shortcuts.xml b/default_user/Main_Shortcuts.xml new file mode 100644 index 0000000000..c96ddd199e --- /dev/null +++ b/default_user/Main_Shortcuts.xml @@ -0,0 +1,8 @@ +<?xml version="1.0"> +<shortcutpane> + <shortcut><uri name="file:///../folders/Today/"/></shortcut> + <shortcut><uri name="file:///../folders/Inbox/"/></shortcut> + <shortcut><uri name="file:///../folders/Calendar/"/></shortcut> + <shortcut><uri name="file:///../folders/Contacts/"/></shortcut> + <shortcut><uri name="file:///../folders/Tasks/"/></shortcut> +</shortcutpane>
\ No newline at end of file diff --git a/default_user/Makefile.am b/default_user/Makefile.am new file mode 100644 index 0000000000..d93df2cb0c --- /dev/null +++ b/default_user/Makefile.am @@ -0,0 +1,11 @@ +shortcutdir = $(datadir)/evolution/default_user/shortcuts +shortcut_DATA = \ + Main_Shortcuts.xml \ + Other_Shortcuts.xml + +inboxdir = $(datadir)/evolution/default_user/folders/Inbox +inbox_DATA = \ + Inbox.mbox + + + diff --git a/default_user/Other_Shortcuts.xml b/default_user/Other_Shortcuts.xml new file mode 100644 index 0000000000..e19f75f975 --- /dev/null +++ b/default_user/Other_Shortcuts.xml @@ -0,0 +1,4 @@ +<?xml version="1.0"> +<shortcutpane> + <shortcut><uri name="file:///../folders/Drafts/"/></shortcut> +</shortcutpane>
\ No newline at end of file diff --git a/e-util/ChangeLog b/e-util/ChangeLog index e3d13ef2b3..de6a388a16 100644 --- a/e-util/ChangeLog +++ b/e-util/ChangeLog @@ -1,3 +1,11 @@ +2000-04-24 Matt Loper <matt@helixcode.com> + + * e-paned.c: New file. Makes a GtkPaned with more than two + children. + * e-paned.h: same. + + * Makefile.am: added e-paned.[ch]. + 2000-04-19 Christopher James Lahey <clahey@helixcode.com> * e-xml-utils.c, e-xml-utils.h: Added diff --git a/e-util/Makefile.am b/e-util/Makefile.am index 77a6c5eec0..3dc32f3ab3 100644 --- a/e-util/Makefile.am +++ b/e-util/Makefile.am @@ -19,4 +19,6 @@ libeutil_la_SOURCES = \ e-xml-utils.c \ e-xml-utils.h \ e-sexp.c \ - e-sexp.h + e-sexp.h \ + e-paned.c \ + e-paned.h diff --git a/e-util/e-paned.c b/e-util/e-paned.c new file mode 100644 index 0000000000..c00c98ac53 --- /dev/null +++ b/e-util/e-paned.c @@ -0,0 +1,227 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * E-pane.c: A paned window which accepts more than one child + * + * Author: + * Matt Loper (matt@helixcode.com) + * + * Copyright 2000, Helix Code, Inc + */ + +#include "e-paned.h" +#include "e-util.h" + +#define PARENT_TYPE gtk_frame_get_type () +static GtkObjectClass *e_paned_parent_class; + +/*----------------------------------------------------------------------* + * (un)parenting functions + *----------------------------------------------------------------------*/ + +static void +unparent_all_children (EPaned *paned) +{ + GList *l; + + for (l = paned->children; l != NULL; l = l->next) { + GtkWidget *child = GTK_WIDGET (l->data); + + gtk_widget_ref (child); + gtk_container_remove (GTK_CONTAINER (child->parent), + child); + } + + if (paned->toplevel_paned) { + GtkWidget* parent = + GTK_WIDGET (paned->toplevel_paned)->parent; + + gtk_container_remove (GTK_CONTAINER (parent), + GTK_WIDGET (paned->toplevel_paned)); + } + + + paned->toplevel_paned = NULL; +} + +static GtkPaned* +new_gtk_paned (EPaned *paned) +{ + return paned->horizontal? + GTK_PANED (gtk_hpaned_new ()): + GTK_PANED (gtk_vpaned_new ()); +} + + +static void +reparent_all_children (EPaned *paned) +{ + GtkPaned *cur_gtk_paned; + GList *l = paned->children; + int requested_size; + + g_assert (E_IS_PANED (paned)); + + if (paned->toplevel_paned) + unparent_all_children (paned); + + if (!l) + return; + + /* if there's only one child in our list, we don't need a + splitter window; we can just show the one window */ + if (!l->next) + { + gtk_container_add (GTK_CONTAINER (paned), + GTK_WIDGET (l->data)); + return; + } + + /* create a gtk_paned, and put it in our toplevel EPaned */ + cur_gtk_paned = new_gtk_paned (paned); + paned->toplevel_paned = cur_gtk_paned; + gtk_container_add (GTK_CONTAINER (paned), + GTK_WIDGET (paned->toplevel_paned)); + + /* put the first widget in the left part of our pane, + and give it the amount of space requested */ + gtk_paned_add1 (cur_gtk_paned, GTK_WIDGET (l->data)); + requested_size = (int)gtk_object_get_data ( + GTK_OBJECT (l->data), + "e_paned_requested_size"); + gtk_paned_set_position (GTK_PANED (cur_gtk_paned), + requested_size); + + l = l->next; + + for (; l != NULL; l = l->next) { + + if (l->next) { + + GtkPaned *sub_gtk_paned = + new_gtk_paned (paned); + GtkWidget *w = GTK_WIDGET (l->data); + + /* add our widget to the new subpane, + on the left */ + gtk_paned_add1 (sub_gtk_paned, w); + + requested_size = (int)gtk_object_get_data ( + GTK_OBJECT (w), + "e_paned_requested_size"); + gtk_paned_set_position (GTK_PANED (sub_gtk_paned), + requested_size); + + gtk_paned_add2 (cur_gtk_paned, + GTK_WIDGET (sub_gtk_paned)); + cur_gtk_paned = sub_gtk_paned; + } + else { + gtk_paned_add2 (cur_gtk_paned, + GTK_WIDGET (l->data)); + } + } +} + +/*----------------------------------------------------------------------* + * Exposed regular functions + *----------------------------------------------------------------------*/ + + +/** + * e_paned_insert: + * @paned: the #EPaned object + * @pos: the position where we should insert the widget + * @child: the widget to insert in the #EPaned object + * @requested_size: the requested span of the widget, which will be + * width of the #EPaned is horizontal, or height if it's vertical + * + * Inserts a widget into the #EPaned window, given a requested size + * and a position; the position specifies where, among the other + * widgets, the widget should be placed. + * + **/ +void +e_paned_insert (EPaned *paned, int pos, GtkWidget *child, int requested_size) +{ + g_assert (GTK_IS_WIDGET (child)); + g_assert (E_IS_PANED (paned)); + + unparent_all_children (paned); + + paned->children = g_list_insert (paned->children, child, pos); + gtk_object_set_data (GTK_OBJECT (child), + "e_paned_requested_size", + (gpointer)requested_size); + + reparent_all_children (paned); + + g_print ("%s: %s(): exiting, length is %i\n", + __FILE__, __FUNCTION__, g_list_length (paned->children)); +} + +/** + * e_paned_remove: + * @paned: the #EPaned object + * @removed_child: the widget to remove + * + * Removes a widget from an #EPaned widget. + * + **/ +void +e_paned_remove (EPaned *paned, GtkWidget *removed_child) +{ + unparent_all_children (paned); + paned->children = g_list_remove (paned->children, removed_child); + gtk_widget_unref (GTK_WIDGET (removed_child)); + reparent_all_children (paned); +} + + +/*----------------------------------------------------------------------* + * Standard Gtk+ Class functions + *----------------------------------------------------------------------*/ + +void +e_paned_construct (EPaned *e_paned, + gboolean horizontal) +{ + g_return_if_fail (e_paned != NULL); + g_return_if_fail (E_IS_PANED (e_paned)); + + + e_paned->horizontal = horizontal; +} + +GtkWidget* +e_paned_new (gboolean horizontal) +{ + EPaned *e_paned; + + e_paned = gtk_type_new (e_paned_get_type ()); + + e_paned_construct (e_paned, horizontal); + + g_assert (E_IS_PANED (e_paned)); + + return GTK_WIDGET (e_paned); +} + +static void +e_paned_init (GtkObject *object) +{ + EPaned *e_paned; + + e_paned = E_PANED (object); + + e_paned->children = NULL; + e_paned->toplevel_paned = NULL; + e_paned->horizontal = FALSE; +} + +static void +e_paned_class_init (GtkObjectClass *object_class) +{ + e_paned_parent_class = gtk_type_class (PARENT_TYPE); +} + +E_MAKE_TYPE(e_paned, "EPaned", EPaned, e_paned_class_init, e_paned_init, PARENT_TYPE); diff --git a/e-util/e-paned.h b/e-util/e-paned.h new file mode 100644 index 0000000000..df981ca7f8 --- /dev/null +++ b/e-util/e-paned.h @@ -0,0 +1,45 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ + +#ifndef __E_PANED_H__ +#define __E_PANED_H__ + +#include <gdk/gdk.h> +#include <gtk/gtkframe.h> +#include <gtk/gtkhpaned.h> +#include <gtk/gtkvpaned.h> + + +#define E_PANED_TYPE (e_paned_get_type ()) +#define E_PANED(obj) (GTK_CHECK_CAST ((obj), E_PANED_TYPE, EPaned)) +#define E_PANED_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), E_PANED_TYPE, EPanedClass)) +#define E_IS_PANED(obj) (GTK_CHECK_TYPE ((obj), E_PANED_TYPE)) +#define E_IS_PANED_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), E_PANED_TYPE)) + + +typedef struct _EPaned EPaned; +typedef struct _EPanedClass EPanedClass; + + +struct _EPaned +{ + GtkFrame container; + + GList *children; + GtkPaned *toplevel_paned; + gboolean horizontal; +}; + +struct _EPanedClass +{ + GtkFrameClass parent_class; +}; + +void e_paned_insert (EPaned *paned, int pos, GtkWidget *child, + int requested_size); +void e_paned_remove (EPaned *paned, GtkWidget *child); + +GtkWidget *e_paned_new (gboolean horizontal); +void e_paned_construct (EPaned *e_paned, gboolean horizontal); +GtkType e_paned_get_type (void); + +#endif /* __E_PANED_H__ */ diff --git a/shell/ChangeLog b/shell/ChangeLog index de2478e268..1e8158085e 100644 --- a/shell/ChangeLog +++ b/shell/ChangeLog @@ -1,3 +1,21 @@ +2000-04-24 Matt Loper <matt@helixcode.com> + + * e-shell-view.h: Added hpaned and treeview widgets to + EShellView. Added e_shell_view_toggle_shortcut_bar() and + e_shell_view_toggle_treeview(). + + * e-shell-view.c (e_shell_view_setup_shortcut_display): Use EPaned + widget to house our shortcut bar. + (e_shell_view_toggle_shortcut_bar): New function; toggles whether + the shortcut bar is showing. + (e_shell_view_toggle_treeview): Same, for the treeview (NYI). + (e_shell_view_new): Put the notebook view in our EPaned widget. + + * e-shell-view-menu.c (esv_cmd_toggle_shortcut_bar): New function; + toggles whether the shortcut bar is viewed. + (esv_cmd_toggle_treeview): Same, but with the treeview. Added + menuitems in the "view" menu to allow access to the above. + 2000-04-19 Seth Alves <alves@hungry.com> * e-shell-view.c (get_view): set calendar's uri with a property bag diff --git a/shell/e-shell-view-menu.c b/shell/e-shell-view-menu.c index 8e8231d774..29f3db1376 100644 --- a/shell/e-shell-view-menu.c +++ b/shell/e-shell-view-menu.c @@ -92,6 +92,19 @@ esv_cmd_close_open_items (GtkWidget *widget, EShellView *esv) printf ("Unimplemented function"); } +static void +esv_cmd_toggle_shortcut_bar (GtkWidget *widget, EShellView *esv) +{ + e_shell_view_toggle_shortcut_bar (esv); +} + +static void +esv_cmd_toggle_treeview (GtkWidget *widget, EShellView *esv) +{ + e_shell_view_toggle_treeview (esv); +} + + /* * Fixme * @@ -182,6 +195,12 @@ static GnomeUIInfo esv_menu_edit [] = { }; static GnomeUIInfo esv_menu_view [] = { + { GNOME_APP_UI_ITEM, N_("_Toggle Shortcut Bar"), + N_("Toggles the shortcut bar"), esv_cmd_toggle_shortcut_bar, NULL, + NULL, 0, 0, 'n', GDK_CONTROL_MASK | GDK_SHIFT_MASK }, + { GNOME_APP_UI_ITEM, N_("_Toggle Treeview"), + N_("Toggles the tree view"), esv_cmd_toggle_treeview, NULL, + NULL, 0, 0, 'n', GDK_CONTROL_MASK | GDK_SHIFT_MASK }, GNOMEUIINFO_END }; diff --git a/shell/e-shell-view.c b/shell/e-shell-view.c index e18af8550d..d6f4eeed2b 100644 --- a/shell/e-shell-view.c +++ b/shell/e-shell-view.c @@ -96,20 +96,25 @@ e_shell_view_setup (EShellView *eshell_view) 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_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); + eshell_view->hpaned = e_paned_new (TRUE); - gtk_paned_pack1 (GTK_PANED (eshell_view->shortcut_hpaned), - eshell_view->shortcut_bar, FALSE, FALSE); - gtk_widget_show (eshell_view->shortcut_bar); + e_paned_insert (eshell_view->hpaned, 0, + eshell_view->shortcut_bar, + 100); - gnome_app_set_contents (GNOME_APP (eshell_view), eshell_view->shortcut_hpaned); + gtk_widget_show_all (eshell_view->hpaned); + + gnome_app_set_contents (GNOME_APP (eshell_view), + eshell_view->hpaned); gtk_signal_connect ( GTK_OBJECT (eshell_view->shortcut_bar), "item_selected", @@ -221,6 +226,25 @@ get_view (EShellView *eshell_view, EFolder *efolder, Bonobo_UIHandler uih) return w; } +void e_shell_view_toggle_shortcut_bar (EShellView *eshell_view) +{ + GtkWidget *shortcut_bar = eshell_view->shortcut_bar; + GtkWidget *hpaned = eshell_view->hpaned; + + if (shortcut_bar->parent) { + gtk_widget_ref (shortcut_bar); + e_paned_remove (hpaned, shortcut_bar); + } + else + e_paned_insert (hpaned, 0, shortcut_bar, + 100); + gtk_widget_show_all (GTK_WIDGET (hpaned)); +} + +void e_shell_view_toggle_treeview (EShellView *eshell_view) +{ + +} void @@ -322,15 +346,13 @@ e_shell_view_new (EShell *eshell, EFolder *efolder, gboolean show_shortcut_bar) 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_paned_insert (E_PANED (eshell_view->hpaned), + 1, + eshell_view->priv->notebook, +// gtk_button_new_with_label ("foobar"), + 500); + + gtk_widget_show_all (GTK_WIDGET (eshell_view->hpaned)); } e_shell_view_set_view (eshell_view, efolder); diff --git a/shell/e-shell-view.h b/shell/e-shell-view.h index 3045b7adb7..97e5f41742 100644 --- a/shell/e-shell-view.h +++ b/shell/e-shell-view.h @@ -4,6 +4,7 @@ #include <bonobo/bonobo-object.h> #include <bonobo/bonobo-ui-handler.h> #include "e-shell.h" +#include "e-util/e-paned.h" #define E_SHELL_VIEW_TYPE (e_shell_view_get_type ()) #define E_SHELL_VIEW(o) (GTK_CHECK_CAST ((o), E_SHELL_VIEW_TYPE, EShellView)) @@ -26,8 +27,9 @@ struct _EShellView { EFolder *efolder; gboolean shortcut_displayed; - GtkWidget *shortcut_hpaned; + GtkWidget *hpaned; GtkWidget *shortcut_bar; + GtkWidget *treeview; GtkWidget *contents; EShellViewPrivate *priv; @@ -47,6 +49,9 @@ void e_shell_view_new_shortcut (EShellView *esv); void e_shell_view_set_view (EShellView *eshell_view, EFolder *efolder); +void e_shell_view_toggle_shortcut_bar (EShellView *eshell_view); +void e_shell_view_toggle_treeview (EShellView *eshell_view); + void e_shell_view_display_shortcut_bar (EShellView *eshell_view, gboolean display); #endif /* E_SHELL_VIEW_H */ diff --git a/widgets/Makefile.am b/widgets/Makefile.am index 65afb0d471..c1ef5db968 100644 --- a/widgets/Makefile.am +++ b/widgets/Makefile.am @@ -1,3 +1,3 @@ SUBDIRS = \ - e-text meeting-time-sel shortcut-bar e-table + e-text meeting-time-sel shortcut-bar e-table e-paned |