+ * 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
This commit is contained in:
Matthew Loper
2000-04-24 03:10:30 +00:00
parent 0fe51af010
commit 7c309e43b2
16 changed files with 438 additions and 20 deletions

View File

@ -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

View File

@ -28,6 +28,7 @@ SUBDIRS = \
calendar \
wombat \
art \
default_user \
po
dist-hook:

View File

@ -375,4 +375,5 @@ calendar/gui/Makefile
filter/Makefile
wombat/Makefile
art/Makefile
default_user/Makefile
])

29
default_user/Inbox.mbox Normal file
View File

@ -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

View File

@ -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>

11
default_user/Makefile.am Normal file
View File

@ -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

View File

@ -0,0 +1,4 @@
<?xml version="1.0">
<shortcutpane>
<shortcut><uri name="file:///../folders/Drafts/"/></shortcut>
</shortcutpane>

View File

@ -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

View File

@ -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

227
e-util/e-paned.c Normal file
View File

@ -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);

45
e-util/e-paned.h Normal file
View File

@ -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__ */

View File

@ -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

View File

@ -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
};

View File

@ -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);

View File

@ -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 */

View File

@ -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