aboutsummaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/.cvsignore2
-rw-r--r--doc/COPYING-DOCS355
-rw-r--r--doc/Camel-Classes65
-rw-r--r--doc/ChangeLog0
-rw-r--r--doc/ChangeLog.pre-1-41146
-rw-r--r--doc/Design201
-rw-r--r--doc/Keybindings13
-rw-r--r--doc/Makefile.am1
-rw-r--r--doc/NAMESPACE65
-rw-r--r--doc/devel/.cvsignore5
-rw-r--r--doc/devel/ChangeLog57
-rw-r--r--doc/devel/ChangeLog.pre-1-4286
-rw-r--r--doc/devel/Makefile.am179
-rwxr-xr-xdoc/devel/build-eplugin-manual.pl263
-rw-r--r--doc/devel/evolution-devel-guide.sgml98
-rw-r--r--doc/devel/evolution-plugin-manual.xml2803
-rw-r--r--doc/devel/executive-summary/evolution-services.hierarchy7
-rw-r--r--doc/devel/fdl.sgml671
-rw-r--r--doc/devel/images/Makefile21
-rw-r--r--doc/devel/images/e-config-build-1.pngbin16402 -> 0 bytes
-rw-r--r--doc/devel/images/e-config-build-2.pngbin19889 -> 0 bytes
-rw-r--r--doc/devel/images/e-config-build-3.pngbin7281 -> 0 bytes
-rw-r--r--doc/devel/images/e-config-flow.pic36
-rw-r--r--doc/devel/images/e-popup-merge-1.pic61
-rw-r--r--doc/devel/images/e-popup-merge-2.pic67
-rw-r--r--doc/devel/importer/.cvsignore10
-rw-r--r--doc/devel/importer/Makefile.am195
-rw-r--r--doc/devel/importer/evolution-shell-importer-sections.txt79
-rw-r--r--doc/devel/importer/evolution-shell-importer.args0
-rw-r--r--doc/devel/importer/evolution-shell-importer.hierarchy7
-rw-r--r--doc/devel/importer/evolution-shell-importer.types9
-rw-r--r--doc/devel/importer/private-reference.sgml21
-rw-r--r--doc/devel/importer/public-reference.sgml20
-rw-r--r--doc/devel/importer/tmpl/evolution-importer-client.sgml84
-rw-r--r--doc/devel/importer/tmpl/evolution-importer.sgml96
-rw-r--r--doc/devel/importer/tmpl/evolution-shell-importer-unused.sgml10
-rw-r--r--doc/devel/preface.sgml113
-rw-r--r--doc/devel/reference.sgml49
-rw-r--r--doc/white-papers/calendar/calendar.sgml209
-rw-r--r--doc/white-papers/mail/camel.sgml356
-rw-r--r--doc/white-papers/mail/ibex.sgml158
-rw-r--r--doc/white-papers/widgets/e-table.sgml279
42 files changed, 0 insertions, 8097 deletions
diff --git a/doc/.cvsignore b/doc/.cvsignore
deleted file mode 100644
index 282522db03..0000000000
--- a/doc/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-Makefile
-Makefile.in
diff --git a/doc/COPYING-DOCS b/doc/COPYING-DOCS
deleted file mode 100644
index b42936beb3..0000000000
--- a/doc/COPYING-DOCS
+++ /dev/null
@@ -1,355 +0,0 @@
- GNU Free Documentation License
- Version 1.1, March 2000
-
- Copyright (C) 2000 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-
-0. PREAMBLE
-
-The purpose of this License is to make a manual, textbook, or other
-written document "free" in the sense of freedom: to assure everyone
-the effective freedom to copy and redistribute it, with or without
-modifying it, either commercially or noncommercially. Secondarily,
-this License preserves for the author and publisher a way to get
-credit for their work, while not being considered responsible for
-modifications made by others.
-
-This License is a kind of "copyleft", which means that derivative
-works of the document must themselves be free in the same sense. It
-complements the GNU General Public License, which is a copyleft
-license designed for free software.
-
-We have designed this License in order to use it for manuals for free
-software, because free software needs free documentation: a free
-program should come with manuals providing the same freedoms that the
-software does. But this License is not limited to software manuals;
-it can be used for any textual work, regardless of subject matter or
-whether it is published as a printed book. We recommend this License
-principally for works whose purpose is instruction or reference.
-
-
-1. APPLICABILITY AND DEFINITIONS
-
-This License applies to any manual or other work that contains a
-notice placed by the copyright holder saying it can be distributed
-under the terms of this License. The "Document", below, refers to any
-such manual or work. Any member of the public is a licensee, and is
-addressed as "you".
-
-A "Modified Version" of the Document means any work containing the
-Document or a portion of it, either copied verbatim, or with
-modifications and/or translated into another language.
-
-A "Secondary Section" is a named appendix or a front-matter section of
-the Document that deals exclusively with the relationship of the
-publishers or authors of the Document to the Document's overall subject
-(or to related matters) and contains nothing that could fall directly
-within that overall subject. (For example, if the Document is in part a
-textbook of mathematics, a Secondary Section may not explain any
-mathematics.) The relationship could be a matter of historical
-connection with the subject or with related matters, or of legal,
-commercial, philosophical, ethical or political position regarding
-them.
-
-The "Invariant Sections" are certain Secondary Sections whose titles
-are designated, as being those of Invariant Sections, in the notice
-that says that the Document is released under this License.
-
-The "Cover Texts" are certain short passages of text that are listed,
-as Front-Cover Texts or Back-Cover Texts, in the notice that says that
-the Document is released under this License.
-
-A "Transparent" copy of the Document means a machine-readable copy,
-represented in a format whose specification is available to the
-general public, whose contents can be viewed and edited directly and
-straightforwardly with generic text editors or (for images composed of
-pixels) generic paint programs or (for drawings) some widely available
-drawing editor, and that is suitable for input to text formatters or
-for automatic translation to a variety of formats suitable for input
-to text formatters. A copy made in an otherwise Transparent file
-format whose markup has been designed to thwart or discourage
-subsequent modification by readers is not Transparent. A copy that is
-not "Transparent" is called "Opaque".
-
-Examples of suitable formats for Transparent copies include plain
-ASCII without markup, Texinfo input format, LaTeX input format, SGML
-or XML using a publicly available DTD, and standard-conforming simple
-HTML designed for human modification. Opaque formats include
-PostScript, PDF, proprietary formats that can be read and edited only
-by proprietary word processors, SGML or XML for which the DTD and/or
-processing tools are not generally available, and the
-machine-generated HTML produced by some word processors for output
-purposes only.
-
-The "Title Page" means, for a printed book, the title page itself,
-plus such following pages as are needed to hold, legibly, the material
-this License requires to appear in the title page. For works in
-formats which do not have any title page as such, "Title Page" means
-the text near the most prominent appearance of the work's title,
-preceding the beginning of the body of the text.
-
-
-2. VERBATIM COPYING
-
-You may copy and distribute the Document in any medium, either
-commercially or noncommercially, provided that this License, the
-copyright notices, and the license notice saying this License applies
-to the Document are reproduced in all copies, and that you add no other
-conditions whatsoever to those of this License. You may not use
-technical measures to obstruct or control the reading or further
-copying of the copies you make or distribute. However, you may accept
-compensation in exchange for copies. If you distribute a large enough
-number of copies you must also follow the conditions in section 3.
-
-You may also lend copies, under the same conditions stated above, and
-you may publicly display copies.
-
-
-3. COPYING IN QUANTITY
-
-If you publish printed copies of the Document numbering more than 100,
-and the Document's license notice requires Cover Texts, you must enclose
-the copies in covers that carry, clearly and legibly, all these Cover
-Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
-the back cover. Both covers must also clearly and legibly identify
-you as the publisher of these copies. The front cover must present
-the full title with all words of the title equally prominent and
-visible. You may add other material on the covers in addition.
-Copying with changes limited to the covers, as long as they preserve
-the title of the Document and satisfy these conditions, can be treated
-as verbatim copying in other respects.
-
-If the required texts for either cover are too voluminous to fit
-legibly, you should put the first ones listed (as many as fit
-reasonably) on the actual cover, and continue the rest onto adjacent
-pages.
-
-If you publish or distribute Opaque copies of the Document numbering
-more than 100, you must either include a machine-readable Transparent
-copy along with each Opaque copy, or state in or with each Opaque copy
-a publicly-accessible computer-network location containing a complete
-Transparent copy of the Document, free of added material, which the
-general network-using public has access to download anonymously at no
-charge using public-standard network protocols. If you use the latter
-option, you must take reasonably prudent steps, when you begin
-distribution of Opaque copies in quantity, to ensure that this
-Transparent copy will remain thus accessible at the stated location
-until at least one year after the last time you distribute an Opaque
-copy (directly or through your agents or retailers) of that edition to
-the public.
-
-It is requested, but not required, that you contact the authors of the
-Document well before redistributing any large number of copies, to give
-them a chance to provide you with an updated version of the Document.
-
-
-4. MODIFICATIONS
-
-You may copy and distribute a Modified Version of the Document under
-the conditions of sections 2 and 3 above, provided that you release
-the Modified Version under precisely this License, with the Modified
-Version filling the role of the Document, thus licensing distribution
-and modification of the Modified Version to whoever possesses a copy
-of it. In addition, you must do these things in the Modified Version:
-
-A. Use in the Title Page (and on the covers, if any) a title distinct
- from that of the Document, and from those of previous versions
- (which should, if there were any, be listed in the History section
- of the Document). You may use the same title as a previous version
- if the original publisher of that version gives permission.
-B. List on the Title Page, as authors, one or more persons or entities
- responsible for authorship of the modifications in the Modified
- Version, together with at least five of the principal authors of the
- Document (all of its principal authors, if it has less than five).
-C. State on the Title page the name of the publisher of the
- Modified Version, as the publisher.
-D. Preserve all the copyright notices of the Document.
-E. Add an appropriate copyright notice for your modifications
- adjacent to the other copyright notices.
-F. Include, immediately after the copyright notices, a license notice
- giving the public permission to use the Modified Version under the
- terms of this License, in the form shown in the Addendum below.
-G. Preserve in that license notice the full lists of Invariant Sections
- and required Cover Texts given in the Document's license notice.
-H. Include an unaltered copy of this License.
-I. Preserve the section entitled "History", and its title, and add to
- it an item stating at least the title, year, new authors, and
- publisher of the Modified Version as given on the Title Page. If
- there is no section entitled "History" in the Document, create one
- stating the title, year, authors, and publisher of the Document as
- given on its Title Page, then add an item describing the Modified
- Version as stated in the previous sentence.
-J. Preserve the network location, if any, given in the Document for
- public access to a Transparent copy of the Document, and likewise
- the network locations given in the Document for previous versions
- it was based on. These may be placed in the "History" section.
- You may omit a network location for a work that was published at
- least four years before the Document itself, or if the original
- publisher of the version it refers to gives permission.
-K. In any section entitled "Acknowledgements" or "Dedications",
- preserve the section's title, and preserve in the section all the
- substance and tone of each of the contributor acknowledgements
- and/or dedications given therein.
-L. Preserve all the Invariant Sections of the Document,
- unaltered in their text and in their titles. Section numbers
- or the equivalent are not considered part of the section titles.
-M. Delete any section entitled "Endorsements". Such a section
- may not be included in the Modified Version.
-N. Do not retitle any existing section as "Endorsements"
- or to conflict in title with any Invariant Section.
-
-If the Modified Version includes new front-matter sections or
-appendices that qualify as Secondary Sections and contain no material
-copied from the Document, you may at your option designate some or all
-of these sections as invariant. To do this, add their titles to the
-list of Invariant Sections in the Modified Version's license notice.
-These titles must be distinct from any other section titles.
-
-You may add a section entitled "Endorsements", provided it contains
-nothing but endorsements of your Modified Version by various
-parties--for example, statements of peer review or that the text has
-been approved by an organization as the authoritative definition of a
-standard.
-
-You may add a passage of up to five words as a Front-Cover Text, and a
-passage of up to 25 words as a Back-Cover Text, to the end of the list
-of Cover Texts in the Modified Version. Only one passage of
-Front-Cover Text and one of Back-Cover Text may be added by (or
-through arrangements made by) any one entity. If the Document already
-includes a cover text for the same cover, previously added by you or
-by arrangement made by the same entity you are acting on behalf of,
-you may not add another; but you may replace the old one, on explicit
-permission from the previous publisher that added the old one.
-
-The author(s) and publisher(s) of the Document do not by this License
-give permission to use their names for publicity for or to assert or
-imply endorsement of any Modified Version.
-
-
-5. COMBINING DOCUMENTS
-
-You may combine the Document with other documents released under this
-License, under the terms defined in section 4 above for modified
-versions, provided that you include in the combination all of the
-Invariant Sections of all of the original documents, unmodified, and
-list them all as Invariant Sections of your combined work in its
-license notice.
-
-The combined work need only contain one copy of this License, and
-multiple identical Invariant Sections may be replaced with a single
-copy. If there are multiple Invariant Sections with the same name but
-different contents, make the title of each such section unique by
-adding at the end of it, in parentheses, the name of the original
-author or publisher of that section if known, or else a unique number.
-Make the same adjustment to the section titles in the list of
-Invariant Sections in the license notice of the combined work.
-
-In the combination, you must combine any sections entitled "History"
-in the various original documents, forming one section entitled
-"History"; likewise combine any sections entitled "Acknowledgements",
-and any sections entitled "Dedications". You must delete all sections
-entitled "Endorsements."
-
-
-6. COLLECTIONS OF DOCUMENTS
-
-You may make a collection consisting of the Document and other documents
-released under this License, and replace the individual copies of this
-License in the various documents with a single copy that is included in
-the collection, provided that you follow the rules of this License for
-verbatim copying of each of the documents in all other respects.
-
-You may extract a single document from such a collection, and distribute
-it individually under this License, provided you insert a copy of this
-License into the extracted document, and follow this License in all
-other respects regarding verbatim copying of that document.
-
-
-7. AGGREGATION WITH INDEPENDENT WORKS
-
-A compilation of the Document or its derivatives with other separate
-and independent documents or works, in or on a volume of a storage or
-distribution medium, does not as a whole count as a Modified Version
-of the Document, provided no compilation copyright is claimed for the
-compilation. Such a compilation is called an "aggregate", and this
-License does not apply to the other self-contained works thus compiled
-with the Document, on account of their being thus compiled, if they
-are not themselves derivative works of the Document.
-
-If the Cover Text requirement of section 3 is applicable to these
-copies of the Document, then if the Document is less than one quarter
-of the entire aggregate, the Document's Cover Texts may be placed on
-covers that surround only the Document within the aggregate.
-Otherwise they must appear on covers around the whole aggregate.
-
-
-8. TRANSLATION
-
-Translation is considered a kind of modification, so you may
-distribute translations of the Document under the terms of section 4.
-Replacing Invariant Sections with translations requires special
-permission from their copyright holders, but you may include
-translations of some or all Invariant Sections in addition to the
-original versions of these Invariant Sections. You may include a
-translation of this License provided that you also include the
-original English version of this License. In case of a disagreement
-between the translation and the original English version of this
-License, the original English version will prevail.
-
-
-9. TERMINATION
-
-You may not copy, modify, sublicense, or distribute the Document except
-as expressly provided for under this License. Any other attempt to
-copy, modify, sublicense or distribute the Document is void, and will
-automatically terminate your rights under this License. However,
-parties who have received copies, or rights, from you under this
-License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-
-10. FUTURE REVISIONS OF THIS LICENSE
-
-The Free Software Foundation may publish new, revised versions
-of the GNU Free Documentation License from time to time. Such new
-versions will be similar in spirit to the present version, but may
-differ in detail to address new problems or concerns. See
-http://www.gnu.org/copyleft/.
-
-Each version of the License is given a distinguishing version number.
-If the Document specifies that a particular numbered version of this
-License "or any later version" applies to it, you have the option of
-following the terms and conditions either of that specified version or
-of any later version that has been published (not as a draft) by the
-Free Software Foundation. If the Document does not specify a version
-number of this License, you may choose any version ever published (not
-as a draft) by the Free Software Foundation.
-
-
-ADDENDUM: How to use this License for your documents
-
-To use this License in a document you have written, include a copy of
-the License in the document and put the following copyright and
-license notices just after the title page:
-
- Copyright (c) YEAR YOUR NAME.
- Permission is granted to copy, distribute and/or modify this document
- under the terms of the GNU Free Documentation License, Version 1.1
- or any later version published by the Free Software Foundation;
- with the Invariant Sections being LIST THEIR TITLES, with the
- Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
- A copy of the license is included in the section entitled "GNU
- Free Documentation License".
-
-If you have no Invariant Sections, write "with no Invariant Sections"
-instead of saying which ones are invariant. If you have no
-Front-Cover Texts, write "no Front-Cover Texts" instead of
-"Front-Cover Texts being LIST"; likewise for Back-Cover Texts.
-
-If your document contains nontrivial examples of program code, we
-recommend releasing these examples in parallel under your choice of
-free software license, such as the GNU General Public License,
-to permit their use in free software.
diff --git a/doc/Camel-Classes b/doc/Camel-Classes
deleted file mode 100644
index 8b510dad7a..0000000000
--- a/doc/Camel-Classes
+++ /dev/null
@@ -1,65 +0,0 @@
-CamelException
-CamelLock
-CamelLockClient
-CamelLockHelper
-CamelMovemail
-CamelOperation
-CamelProvider
-CamelUIDCache
-CamelURL
-CamelObject
- + CamelAddress
- | + CamelInternetAddress
- | ` CamelNewsAddress
- + CamelDataWrapper
- | + CamelMedium
- | | ` CamelMimePart
- | | ` CamelMimeMessage
- | ` CamelMultipart
- + CamelCipherContext
- | ` CamelPgpContext
- + CamelCMSContext
- | ` CamelSMimeContext
- + CamelDiscoDiary
- + CamelFolder
- | + CamelDiscoFolder
- | ` CamelVeeFolder
- | ` CamelVTrashFolder
- + CamelFolderSearch
- + CamelFolderSummary
- + CamelMimeFilter
- | + CamelMimeFilterBasic
- | + CamelMimeFilterBestenc
- | + CamelMimeFilterCharset
- | + CamelMimeFilterCRLF
- | + CamelMimeFilterFrom
- | + CamelMimeFilterIndex
- | + CamelMimeFilterLinewrap
- | + CamelMimeFilterSave
- | ` CamelMimeFilterStripHeader
- + CamelSasl
- | + CamelSaslAnonymous
- | + CamelSaslCramMD5
- | + CamelSaslDigestMD5
- | + CamelSaslKerberos
- | + CamelSaslLogin
- | ` CamelSaslPlain
- + CamelService
- | + CamelStore
- | | + CamelRemoteStore
- | | | ` CamelDiscoStore
- | | ` CamelVeeStore
- | ` CamelTransport
- + CamelSession
- ` CamelStream
- + CamelSeekableStream
- | + CamelSeekableSubstream
- | + CamelStreamFs
- | ` CamelStreamMem
- + CamelStreamBuffer
- + CamelStreamFilter
- + CamelStreamNull
- ` CamelTcpStream
- + CamelTcpStreamOpenSSL
- + CamelTcpStreamRaw
- ` CamelTcpStreamSSL
diff --git a/doc/ChangeLog b/doc/ChangeLog
deleted file mode 100644
index e69de29bb2..0000000000
--- a/doc/ChangeLog
+++ /dev/null
diff --git a/doc/ChangeLog.pre-1-4 b/doc/ChangeLog.pre-1-4
deleted file mode 100644
index e7dd37db31..0000000000
--- a/doc/ChangeLog.pre-1-4
+++ /dev/null
@@ -1,1146 +0,0 @@
-2001-08-16 Kjartan Maraas <kmaraas@gnome.org>
-
- * C/Makefile.am: Small fix to build.
- * C/evolution-C.omf: Small fix. Remove an extra space.
- * no/Makefile.am: Same here.
- * no/evolution-no.omf: And here.
-
-2001-08-15 Kevin Breit <battery841@mediaone.net>
-
- * C/usage-mail.sgml: Updated one line about bullet points.
-
-2001-08-15 Kjartan Maraas <kmaraas@gnome.org>
-
- * no/*: Added beginnings of a Norwegian translation.
- * sgmldocs.make: Forgot to add this. Kinda important.
- * C/*.sgml: s/fig/figures/
- * C/Makefile.am: Make it use the sgmldocs.make framework.
-
-2001-08-14 Aaron Weber <aaron@ximian.com>
-
- * C/usage-mainwindow.sgml: Commented out menuref.
- * C/usage-contact.sgml: Commented out menuref.
- * C/evolution.sgml: commented out menuref.
- * C/preface.sgml: commented out menuref.
-
-2001-08-12 Kjartan Maraas <kmaraas@gnome.org>
-
- * C/apx-authors.sgml: Added missing ;'s after entities.
- * C/evolution-C.omf: s/en/C in Language.
- * C/usage-mail-org.sgml: Add missing ;.
- * C/usage-mainwindow.sgml: Same here.
-
-2001-08-10 Aaron Weber <aaron@ximian.com>
-
- * C/usage-mail.sgml: Switched all images in entire document to
- *not* use file extensions, so that they work properly with
- db2ps. This doesn't completely fix the db2ps issues, but it's
- apparently the right way to do this.
-
-2001-08-09 Aaron Weber <aaron@ximian.com>
-
- * C/config-prefs.sgml: Made sharing tip an orderedlist.
-
-2001-08-08 Kevin Breit <battery841@mediaone.net>
-
- * C/config-prefs.sgml: Add information about sharing mailbox files.
-
-2001-08-03 Kevin Breit <battery841@mediaone.net>
-
- * C/usage-calendar.sgml: Add information about gathering actions.
-
-2001-08-02 Kevin Breit <battery841@mediaone.net>
-
- * C/usage-mail.sgml: Added a <tip> for scrolling through mails.
-
-2001-07-30 Kevin Breit <battery841@mediaone.net>
-
- * C/usage-mail.sgml: Fixed some breakage Aaron caused.
-
-2001-07-26 Aaron Weber <aaron@ximian.com>
-
- * C/usage-mail-org.sgml: revised.
-
- * C/usage-mail.sgml: revisions and stuff.
-
-2001-07-24 Aaron Weber <aaron@ximian.com>
-
- * C/evolution-faq.sgml: Reworded a few questions.
-
-2001-07-23 Kevin Breit <battery841@mediaone.net>
-
- * C/Makefile.am: Pulled instance of config-setupassist.sgml to make stuff build right.
-
-2001-07-23 Aaron Weber <aaron@ximian.com>
-
- * C/usage-mainwindow.sgml: validated.
-
- * C/config-setupassist.sgml: Removed.
-
- * C/evolution.sgml: removed config-setupassist.
-
- * C/usage-exec-summary.sgml: Minor revisions.
-
- * C/usage-contact.sgml: Added 'format="png"' to all <image> tags
- missing the attribute.
-
- * C/usage-calendar.sgml: Added 'format="png"' to all <image> tags
- missing the attribute.
-
- * C/usage-mail.sgml: Added 'format="png"' to all <image> tags
- missing the attribute.
-
- * C/usage-mainwindow.sgml: Style. Merged info from preface. Added
- 'format="png"' to all <image> tags missing the attribute.
-
- * C/preface.sgml: Style changes. Removed info that was duplicated
- in mainwindow.sgml.
-
-2001-07-20 Kevin Breit <battery841@mediaone.net>
-
- * C/usage-mainwindow.sgml: Fixed the first time druid stuff a little more.
-
-2001-07-16 Aaron Weber <aaron@ximian.com>
-
- * C/evolution-faq.sgml: Sepllcheck.
-
-2001-07-15 Kevin Breit <battery841@mediaone.net>
-
- * C/config-sync.sgml: Updated slightly for new design.
-
-2001-07-13 Kevin Breit <battery841@mediaone.net>
-
- * C/usage-mainwindow.sgml: Added lots of good stuff with the first time druid.
-
-2001-07-12 Aaron Weber <aaron@ximian.com>
-
- * C/evolution-faq.sgml: TYPO fixing.
-
-2001-07-12 Aaron Weber <aaron@ximian.com>
-
- * C/evolution-faq.sgml: Added "get bt for component-only crash" qandaentry.
-
-2001-07-10 Peter Williams <peterw@ximian.com>
-
- * */Makefile.am (dist-hook): Clean up make dist.
-
-2001-07-11 Aaron Weber <aaron@ximian.com>
-
- * C/evolution.sgml: validation on usage-mainwindow and usage-contact.
-
-2001-07-11 Kevin Breit <battery841@mediaone.net>
-
- * C/usage-calendar.sgml: More edits.
-
- * C/usage-contact.sgml: Sick amounts of changes too!
-
- * C/usage-mail-org.sgml: Heavy editing...touched almost everything.
-
- * C/usage-exec-summary.sgml: Minor change. There was only one change for this chapter, cuz I'm such a 'godly' writer...yeah.
-
- * C/usage-mainwindow.sgml: A bit of editing.
-
- * C/preface.sgml: Screwed with the examples and did some cleanup.
-
-2001-07-10 Aaron Weber <aaron@ximian.com>
-
- * C/usage-mail-org.sgml: validation.
-
-2001-07-10 Kevin Breit <battery841@mediaone.net>
-
- * C/usage-mail.sgml: Added <application> tags
-
- * C/usage-mail-org.sgml: Added <application> tags
-
- * C/config-prefs.sgml: Added <application> tags
-
-2001-07-09 Kevin Breit <battery841@mediaone.net>
-
- * C/usage-exec-summary.sgml: Editing
-
- * C/usage-mail.sgml: Editing
-
- * C/usage-mail-org.sgml: Editing
-
- * C/usage-calendar.sgml: Editing
-
- * C/usage-contact.sgml: Editing
-
- * C/usage-mail-org.sgml: Mention UNMATCHED
-
- * C/usage-mail.sgml: Commented on trash being a vFolder
-
-2001-07-06 Kevin Breit <battery841@mediaone.net>
-
- * C/usage-mail.sgml: Spell check
-
- * C/usage-calendar.sgml: Spell check
-
-2001-07-05 Kevin Breit <battery841@mediaone.net>
-
- * C/usage-mainwindow.sgml: Added orderedlists.
-
- * C/usage-exec-summary.sgml: Added orderedlists.
-
- * C/usage-contact.sgml: Added orderedlists.
-
- * C/usage-mail-org.sgml: Added orderedlists.
-
-2001-07-03 Kevin Breit <battery841@mediaone.net>
-
- * C/usage-mail.sgml: Put in lots of orderedlists...more SGML, less
- for the user to read. They'll thank me in droves later.
-
- * C/usage-exec-summary.sgml: Fixed build error
-
-2001-06-29 Jeffrey Stedfast <fejj@ximian.com>
-
- * white-papers/mail/camel.sgml: Updated slightly.
-
- * Camel-Classes: Updated.
-
-2001-07-02 Kevin Breit <battery841@mediaone.net>
-
- * C/apx-common-tasks.sgml: Created its own file.
-
- * C/usage-mainwindow.sgml: You name it.
-
- * C/preface.sgml: Pulled shortcuts from here into its own apx
-
- * C/evolution.sgml: Reordered entities
-
-2001-06-30 Kevin Breit <battery841@mediaone.net>
-
- * C/usage-mail.sgml: Pulled organizing stuff, made its own file.
-
-2001-06-26 Aaron Weber <aaron@ximian.com>
-
- * C/evolution-faq.sgml: Revised move/rename/copy questions, now
- that these functions work.
-
-2001-06-25 Aaron Weber <aaron@ximian.com>
-
- * C/evolution-faq.sgml: Now that bug-buddy works with our
- bugzilla, update faq to reflect it.
-
-2001-06-25 Kevin Breit <battery841@mediaone.net>
-
- * C/usage-mail.sgml: Put config-encryption in usage-mail.sgml.
- config-encryption.sgml should be depreciated.
-
- * C/usage-contact.sgml: Fixed typo
-
- * C/usage-mail.sgml: Added info about mailing lists Elaborated on
- mailing lists
-
- * C/usage-exec-summary.sgml: Fixed a few typos
-
- * C/preface.sgml: Added section for importing files
-
- * C/usage-calendar.sgml: Removed some *'s that are causing
- problems.
-
-2001-06-22 Kevin Breit <battery841@mediaone.net>
-
- * C/preface.sgml: Put in Contacts information in the quicktasks.
-
- * C/usage-mail.sgml: Pulled some redundant information.
-
-2001-06-21 battery841 <battery841@mediaone.net>
-
- * C/preface.sgml, C/fig/mail-inbox.png, C/fig/mainwindow-pic.png,
- C/usage-mail.sgml: Updated screenshots and redid layout for
- graphics on pages.
-
-2001-06-21 Kevin Breit <battery841@mediaone.net>
-
- * C/usage-contact.sgml: Fixed .gif problem
-
- * C/usage-mail.sgml:
-
-2001-06-21 Kevin Breit <battery841@mediaone.net>
-
- * C/usage-mail.sgml: Specify the file format
-
- * C/usage-contact.sgml, C/usage-mail.sgml:
-
-2001-06-21 Kevin Breit <battery841@mediaone.net>
-
- * C/usage-mail.sgml: Trying to fix the .gif problem
-
- * C/fig/calendar.png, C/fig/contact.png, C/usage-calendar.sgml:
-
-2001-06-21 Kevin Breit <battery841@mediaone.net>
-
- * C/usage-calendar.sgml: Redid graphics to add labels to them and
- described the labels in text.
-
- * C/config-encryption.sgml, C/evolution.sgml:
-
-2001-06-21 Kevin Breit <battery841@mediaone.net>
-
- * C/evolution.sgml: Added config-encryption.sgml for building
-
- * C/fig/calendar.png, C/fig/config-cal.png, C/fig/config-mail.png,
- C/fig/filter-assist-fig.png, C/fig/filter-new-fig.png,
- C/fig/mail-composer.png, C/fig/mail-druid-pic.png,
- C/fig/mail-inbox.png, C/fig/print-dest.png,
- C/fig/print-preview.png, C/fig/vfolder-createrule-fig.png:
-
-2001-06-21 Kevin Breit <battery841@mediaone.net>
-
- * C/fig/*png: Updated graphics for newer UI.
-
- * C/fig/full-1.png, C/fig/full-2.png, C/fig/full-3.png,
- C/fig/full-4.png, C/fig/full-5.png, C/fig/full-6.png,
- C/fig/full-7.png, C/fig/mainwindow-pic.png, C/usage-mail.sgml:
-
-2001-06-21 Kevin Breit <battery841@mediaone.net>
-
- * C/usage-mail.sgml: Redid graphics to add labels to them and
- described in labels in text. Looks good!
-
- * C/usage-encryption.sgml:
-
-2001-06-21 Kevin Breit <battery841@mediaone.net>
-
- * C/encryption.sgml: Added file
-
- * C/preface.sgml:
-
-2001-06-20 Kevin Breit <battery841@mediaone.net>
-
- * doc/ChangeLog: Moved my entires to doc/ChangeLog per request of
- danw
-
-2001-06-21 Kevin Breit <battery841@mediaone.net>
-
- * C/usage-contact.sgml: Fixed .gif problem
-
- * C/usage-mail.sgml: Specify the file format
-
- * C/usage-mail.sgml: Trying to fix the .gif problem
-
- * C/usage-calendar.sgml: Redid graphics to add labels to them and
- described the labels in text.
-
-2001-06-21 Kevin Breit <battery841@mediaone.net>
-
- * C/evolution.sgml: Added config-encryption.sgml for building
-
- * C/fig/*png: Updated graphics for newer UI.
-
-2001-06-21 Kevin Breit <battery841@mediaone.net>
-
- * C/usage-mail.sgml: Redid graphics to add labels to them and
- described in labels in text. Looks good!
-
-2001-06-21 Kevin Breit <battery841@mediaone.net>
-
- * C/usage-mail.sgml:
-
-2001-06-21 Kevin Breit <battery841@mediaone.net>
-
- * C/encryption.sgml: Added file
-
-2001-06-20 Kevin Breit <battery841@mediaone.net>
-
- * ChangeLog: Moved my entires to doc/ChangeLog per request of danw
-
-2001-06-20 Kevin Breit <battery841@mediaone.net>
-
- * C/config-setupassist.sgml: Updated for new UI.
-
-2001-06-20 Kevin Breit <battery841@mediaone.net>
-
- * C/usage-sync: Reworded a little bit for more descrip.
-
-2001-06-20 Kevin Breit <battery841@mediaone.net>
-
- * C/usage-calendar.sgml: Documented categorizing an event.
-
-2001-06-20 Kevin Breit <battery841@mediaone.net>
-
- * C/usage-mail.sgml: Updated Bcc: example
-
-2001-06-19 Aaron Weber <aaron@ximian.com>
-
- * C/usage-mainwindow.sgml: A couple changes to Kevin's update.
-
-2001-06-19 Kevin Breit <battery841@mediaone.net>
-
- * C/usage-mail.sgml: Basic edits
-
-2001-06-19 Kevin Breit <battery841@mediaone.net>
-
- * C/usage-exec-summary: Updated to say "My Evolution"
-
-2001-06-19 Kevin Breit <battery841@mediaone.net>
-
- * C/apx-gloss.sgml: Added definition.
-
- * C/usage-mainwindow.sgml: Routine updates.
-
-2001-06-07 Duncan Mak <duncan@lumox.simplemente.net>
-
- * C/evolution-faq.sgml: Fixed a typo. Thanks to Greg Leblanc for
- pointing this out.
-
-2001-05-23 Ettore Perazzoli <ettore@ximian.com>
-
- * C/evolution-faq.sgml: Re-indented.
-
-2001-05-18 Duncan Mak <duncan@ximian.com>
-
- * C/evolution-faq.sgml: Added two questions about importing
- Outlook (text from Iain). Fixed some tags and cleaned up a bit
- here and there.
-
-2001-05-18 Ettore Perazzoli <ettore@ximian.com>
-
- * C/evolution-faq.sgml: Added a question about the permission
- issues with /var/spool/mail.
-
-2001-05-15 Ettore Perazzoli <ettore@ximian.com>
-
- * C/Makefile.am (SGML_FILES): Renamed to `GUIDE_SGML_FILES'.
- (EXTRA_DIST): Add `$(FAQ_SGML_FILES)'.
- (all): Depend on `evolution-faq' too.
- (evolution-faq): New.
- (install-data-local): Depend on `evolution-faq' too. Install the
- FAQ into `$(evolution_helpdir)/evolution-faq' and the guide into
- `$(evolution_helpdir)/evolution-guide'.
-
- * C/evolution-faq.sgml: New.
-
-2001-04-23 Jon Trowbridge <trow@ximian.com>
-
- * C/Makefile.am (install-data-local): Changed dependency for
- install-data-local from "evolution" to "evolution-guide".
-
-2001-04-23 Ettore Perazzoli <ettore@ximian.com>
-
- * C/Makefile.am (evolution-guide): Use `$(srcdir)' here.
-
-2001-04-23 Ettore Perazzoli <ettore@ximian.com>
-
- * C/Makefile.am (SGML_FILES): Add `evolution.sgml'.
- (evolution-guide): Process `evolution.sgml', not
- `evolution-guide.sgml'.
- (dist-hook): s/evolution-guide/evolution/
- (install-data-local): Likewise.
-
-2001-02-23 Aaron Weber <aaron@helixcode.com>
-
- * C/apx-authors.sgml: s/helixcode/ximian (How I missed this page
- on the first go-round I don't know).
-
-2001-03-14 Gediminas Paulauskas <menesis@delfi.lt>
-
- * C/Makefile.am: there's no apx-fdl.sgml and evolution-guide.sgml
- anymore
-
-2001-02-23 Aaron Weber <aaron@helixcode.com>
-
- * C/usage-mail.sgml: IMAP subscriptions stuff.
-
-2001-02-21 Aaron Weber <aaron@helixcode.com>
-
- * C/usage-mail.sgml: Advanced search/show all/save search stuff.
-
- * C/evolution.sgml: This file replaces evolution-guide.sgml, for
- Nautilus Readiness.
-
- * C/apx-gloss.sgml: glossterm conduit.
-
- * C/config-sync.sgml: Glossterm conduit.
-
- * C/preface.sgml: Checked over for Keyboard-Shortcut and other
- truthfulness.
-
-2001-02-15 Aaron Weber <aaron@helixcode.com>
-
- * C/evolution-guide.sgml: Validated. Verified. Markup fixed in
- several individual files.
-
- * C/apx-gpl.sgml: cvs-removed for GNOME 1.4 compliance.
-
- * C/apx-fdl.sgml: cvs-removed for GNOME 1.4 compliance.
-
-2001-02-09 Aaron Weber <aaron@helixcode.com>
-
- * C/config-sync.sgml: Overhaul. Now accurate and truthful and
- clear.
-
- * C/usage-calendar.sgml: Minor Changes.
-
-2001-02-08 Aaron Weber <aaron@helixcode.com>
-
- * C/usage-contact.sgml: Minor Changes.
-
- * C/usage-mail.sgml: Minor Changes.
-
-2001-02-07 Aaron Weber <aaron@helixcode.com>
-
- * C/menuref.sgml: Added section, but left blank til UI stabilizes.
-
- * C/usage-exec-summary.sgml: A little functionality described.
-
- * C/usage-mainwindow.sgml: Added tasks and Exec-summary.
-
- * C/usage-calendar.sgml: Describe semi-autonomy of task pad.
-
-2001-02-06 Aaron Weber <aaron@ximian.com>
-
- * C/usage-contact.sgml: s/contact manager/address book/ and
- revised text.
-
- * C/usage-exec-summary.sgml: New file. Describes Executive
- Summary.
-
-2001-01-19 Aaron Weber <aaron@helixcode.com>
-
- * C/usage-mail.sgml: More of Megan's revisions, and Field Chooser
- functions in the Sort section.
-
- * C/apx-gloss.sgml: added "ToolTip"
-
-2001-01-18 Aaron Weber <aaron@helixcode.com>
-
- * C/preface.sgml: s/Helix Code/Ximian, and Megan's comments.
-
- * C/usage-mainwindow.sgml: s/Helix Code/Ximian/, and Megan's
- comments.
-
- * C/evolution-guide.sgml: s/Helix Code/Ximian/
-
-2000-12-13 Aaron Weber <aaron@helixcode.com>
-
- * C/usage-mail.sgml: Revisions as suggested by Dan. Especially to
- filter dialogs... which still need some renaming, IMHO.
-
- * C/usage-mainwindow.sgml: Revisions as suggested by
- Dan. Especially to the Folder Limits thing, which still upsets me
- somehow.
-
- * C/preface.sgml: Revisions as suggested by Dan.
-
-2000-11-29 Aaron Weber <aaron@helixcode.com>
-
- * C/config-setupassist.sgml: added some <glossterms>, added
- linkends to existing glossterms.
-
-2000-11-28 Aaron Weber <aaron@helixcode.com>
-
- * C/evolution-guide.sgml: Changed intro to Config section. Now
- defines what, exactly, "configurable" means.
-
- * C/usage-print.sgml: Stylistic revisions.
-
- * C/usage-calendar.sgml: Stylistic revisions.
-
- * C/usage-contact.sgml: Stylistic revisions.
-
-2000-11-09 Aaron Weber <aaron@helixcode.com>
-
- * C/menuref.sgml: Message heading Right-Click Menu.
-
-2000-11-03 Aaron Weber <aaron@helixcode.com>
-
- * C/apx-gloss.sgml: The regexp example was quite wrong. Props to
- Sasha.
-
-2000-11-02 Aaron Weber <aaron@helixcode.com>
-
- * C/usage-contact.sgml: Style and spelling.
-
-2000-11-01 Aaron Weber <aaron@helixcode.com>
-
- * C/config-prefs.sgml: Fixed validation errors.
-
- * C/apx-gloss.sgml: Fixed HTML, style stuff.
-
- * C/usage-mail.sgml: Stylistic overhaul.
-
- * C/usage-mainwindow.sgml: Fixed groups in shortcut bar, fixed
- folder navigation tips.
-
-2000-10-31 Aaron Weber <aaron@helixcode.com>
-
- * C/preface.sgml: Minor stylistic revisions.
-
-2000-10-30 Aaron Weber <aaron@helixcode.com>
-
- * COPYING-DOCS: New file. This is the official place to put the
- FDL now.
-
-
-2000-11-01 Radek Doulik <rodo@helixcode.com>
-
- * Keybindings: added composer keybindings description
-
-2000-10-25 Aaron Weber <aaron@helixcode.com>
-
- * C/menuref.sgml: Actions -> New Directory Server added.
-
- * C/config-prefs.sgml: Actions -> New Directory Server added.
-
- * C/usage-contact.sgml: Actions -> New Directory Server added.
-
- * C/menuref.sgml: Added mail Settings->Manage Subscriptions menu.
-
- * C/usage-mail.sgml: Subscriptions section added. Quite
- incomplete, though.
-
-2000-10-11 Aaron Weber <aaron@helixcode.com>
-
- * C/evolution-guide.sgml: Re-checked validity of all files. Made
- minor changes to menuref.sgml, usage-mail.sgml, usage-print.sgml
- to bring up to spec.
-
- * C/usage-mail.sgml: Redid Filter & Vfolder to match the new &
- improved functionality.
-
- * C/fig/*: Re-did remaining screenshots.
-
-2000-10-10 Aaron Weber <aaron@helixcode.com>
-
- * C/usage-print.sgml: New file, describing printing and
- print-preview.
-
- * C/fig/print-preview.png: New file.
-
- * C/fig/print-dest.png: New file.
-
- * C/evolution-guide.sgml: Added usage-print entity.
-
- * C/menuref.sgml: Fixed calendar menu stuff.
-
- * C/usage-mail.sgml: No more "Actions" menu, other assorted
- menu-related changes.
-
-2000-10-06 Aaron Weber <aaron@helixcode.com>
-
- * C/fig/ * replaced a whole bunch of screenshots.
-
-2000-10-05 Aaron Weber <aaron@helixcode.com>
-
- * C/usage-contact.sgml: Described Search features.
-
- * C/menuref.sgml: Contact Manager menus fixed.
-
-2000-10-04 Aaron Weber <aaron@helixcode.com>
-
- * C/usage-contact.sgml: Fixed glossterms.
-
- * C/usage-mail.sgml: Fixed glossterms, filenames, spellchecked.
-
- * C/apx-gloss.sgml: Added "Inline," "VCard".
-
- * C/usage-mainwindow.sgml: Fixed glossterms,
- filenames. Spellchecked.
-
- * C/usage-mail.sgml: Fixed glossterms, filenames. Spellchecked.
-
- * C/evolution-guide.sgml: New Legalnotice. Removed FDL and GPL,
- which are now included as part of the gnome-help package.
-
- * C/usage-contact.sgml: Spellcheck. Fixed some wording, and
- responded to clahey's suggestions-- notably, commented out the
- "add to master list" category feature.
-
- * C/usage-calendar.sgml: Spellcheck. Fixed wording, event overlap
- description.
-
- * C/evolution-guide.sgml: Spellcheck. Commented out Notes
- entities.
-
- * C/usage-notes.sgml: Spellchecked, then decided to comment out
- this file/chapter and all references to it, since it's unlikely to
- be implemented any time soon.
-
- * C/config-setupassist.sgml: Spellcheck. Other minor updates. May
- need more work in the near future.
-
- * C/usage-sync.sgml: Now it's really short. And spelled correctly.
-
-2000-10-03 Aaron Weber <aaron@helixcode.com>
-
- * C/config-prefs.sgml: Mostly spelling. Still needs major
- alteration.
-
- * C/menuref.sgml: s/Appintment/Appointment, fixed small errors,
- ran spellcheck. Still needs lots of work, since many menus have
- changed.
-
- * C/apx-gloss.sgml: Added Virus, Protocol, fixed vFolder,
- spellchecked.
-
-2000-09-26 Aaron Weber <aaron@helixcode.com>
-
- * C/apx-gloss.sgml: Added sendmail and SMTP.
-
-2000-09-22 Aaron Weber <aaron@helixcode.com>
-
- * C/menuref.sgml: Changed to reflect new menu layout.
-
- * C/usage-mainwindow.sgml: Changed to reflect new menu
- layout. Again.
-
- * C/usage-contact.sgml: Stop and Display All features.
-
-2000-09-21 Aaron Weber <aaron@helixcode.com>
-
- * C/evolution-guide.sgml: Switched to the "official" FSF markup.
- I will have to make changes to the markup-- adding ids, etc, or
- switch to another version of the markup. Pending discussion by
- GDP.
-
- * C/apx-authors.sgml: Changed Matt Loper's email address to
- loper.org; added Jeff Stedfast and Peter Williams to authors list,
- realphebetized.
-
- * C/config-prefs.sgml: Revision to reflect current options
- labelling.
-
- * C/evolution-guide.sgml: Changes to part intros.
-
- * C/preface.sgml: Spelling and menu fixes. Will need more work
- tomorrow.
-
-2000-09-20 Aaron Weber <aaron@helixcode.com>
-
- * C/config-prefs.sgml: Fixed sig stuff here and in setupassist.
-
- * C/config-sync.sgml: Fixed description of conduit usage.
-
-2000-09-18 Aaron Weber <aaron@helixcode.com>
-
- * C/preface.sgml: Spelling fixes, etc.
-
-2000-09-19 Federico Mena Quintero <federico@helixcode.com>
-
- * C/Makefile.am: Fixed to install the stylesheet-images as well.
-
-2000-09-07 Aaron Weber <aaron@helixcode.com>
-
- * C/fig/ New files: contact-editor.png, mail-composer.png,
- filter-assist-fig.png, mail-inbox.png
-
-2000-09-07 Aaron Weber <aaron@helixcode.com>
-
- * C/preface.sgml: Redid "soft" intro stuff.
-
- * C/evolution-guide.sgml: Accidentally broke docs, now valid.
-
-2000-09-06 Aaron Weber <aaron@helixcode.com>
-
- * C/usage-contact.sgml: Editing, proofing.
-
-2000-09-05 Aaron Weber <aaron@helixcode.com>
-
- * C/usage-contact.sgml: Grammar, links, screenshots.
-
- * fig/* Re-took most screenshots.
-
- * C/usage-mail.sgml: Filters, proofing.
-
-2000-09-01 Aaron Weber <aaron@helixcode.com>
-
- * C/config-prefs.sgml: Added coverage of news, clarified POP/IMAP
- distinction (there's a theme to these four log entries here).
-
- * C/usage-mail.sgml: Added coverage of news.
-
- * C/config-setupassist.sgml: Revised mail sources content for
- IMAP/POP stuff.
-
- * C/apx-gloss.sgml: Added IMAP and POP.
-
-2000-08-31 Aaron Weber <aaron@helixcode.com>
-
- * C/apx-gloss.sgml: Added regular expressions to glossary.
- Explanation should be removed from other portions of the book now.
-
- * C/usage-mainwindow.sgml: Revisions, minor.
-
- * C/apx-menuref.sgml: Now named menuref.sgml, to reflect its new
- status as a part.
-
- * C/evolution-guide.sgml: Structural alterations: Menuref is now a
- part, not an appendix.
-
- * C/apx-menuref.sgml: Added contextual menus for mail.
-
- * C/preface.sgml: Added "quickref and pointers" sections. Props to
- O'Reilly for the copy of Outlook in a Nutshell which gave me the
- idea.
-
-2000-08-30 Aaron Weber <aaron@helixcode.com>
-
- * C/usage-mainwindow.sgml: Minor fixes.
-
- * C/preface.sgml: Corrected grammar, added glossterms, described
- menuref.
-
-2000-08-25 Aaron Weber <aaron@helixcode.com>
-
- * C/usage-mail.sgml: Redid filter and vFolder assistant
- descriptions.
-
- * C/fig/filter-new-fig.png: Replaced with new assistant pic.
-
- * C/fig/filter-assist-fig.png: New file, showing only assistant.
-
-
- * C/apx-menuref.sgml: Finished message composer and calendar
- editor menus. Looked at Contact Editor menus and decided to
- document those features after implementation.
-
-2000-08-24 Aaron Weber <aaron@helixcode.com>
-
- * C/apx-menuref.sgml: Message Composer File and Edit menus.
-
-2000-08-23 Aaron Weber <aaron@helixcode.com>
-
- * C/apx-menuref.sgml: Added editor sections.
-
- * C/evolution-guide.sgml: Included Menu Reference Appendix.
-
-2000-08-22 Aaron Weber <aaron@helixcode.com>
-
- * C/usage-mail.sgml: Minor markup changes.
-
- * C/apx-menuref.sgml: New File. Menu Reference. Still needs much
- work, but not bad for an evening.
-
-2000-08-21 Aaron Weber <aaron@helixcode.com>
-
- * C/usage-mail.sgml: Kevin's diff applied, with minor changes.
-
-2000-08-09 Aaron Weber <aaron@helixcode.com>
-
- * C/evolution-guide.sgml: Fixed bugs in validation. Went home to
- sleep.
-
- * C/usage-mainwindow.sgml: Redid menubar description.
-
-
- * C/config-prefs.sgml: Added coverage of folder config, requested
- that feature be transferred to config section. Switched to
- variablelist in "Other" config section.
-
- * C/usage-mail.sgml: Added coverage of right-click on messages,
- threaded-view.
-
- * C/usage-mainwindow.sgml: Right-click on folder menu reinstated.
-
-2000-08-07 Aaron Weber <aaron@helixcode.com>
-
- * C/config-prefs.sgml: Added news server coverage. Other config
- proofing changes.
-
-
-2000-08-05 Aaron Weber <aaron@helixcode.com>
-
- * C/apx-gpl.sgml: New file. Contains contents of "COPYING", but
- marked up (probably not very well, but valid) as docbook
- (SGML).
-
- * C/evolution-guide.sgml: Subtle change to the legal notice:
- distinguished manual license from software license. Linked to
- apx-gpl.sgml above.
-
- * C/usage-calendar.sgml: I redid all the usage files.
-
-2000-07-21 Aaron Weber <aaron@helixcode.com>
-
- * C/usage-mail.sgml: Added password remembering/forgetting
- feature.
-
- * C/config-prefs.sgml: Mostly moved to variablelists, a few
- language changes.
-
- * C/config-setupassist.sgml: Minor changes to formatting, wording.
-
- * C/usage-notes.sgml: Changed trademark references, other minor
- changes.
-
- * C/usage-calendar.sgml: Minor fixes, added additional calendar
- section, removed references to unimplemented features. Spellcheck,
- prep for 0.3 release.
-
-2000-07-19 Aaron Weber <aaron@helixcode.com>
-
- * C/usage-mail.sgml: lots of minor fixes to language. added
- desc. of clahey's cool button-address thing.
-
- * C/usage-mainwindow.sgml: fixed itemizedlists, ch. to shortcut
- bar & folder descs, removed refs to trash.
-
-2000-07-18 Aaron Weber <aaron@helixcode.com>
-
- * C/usage-contact.sgml: Altered category addition stuff, plus
- suggestions from Kevin.
-
- * C/apx-gloss.sgml: Added ldap and signature definitions (from
- Kevin).
-
- * C/usage-mail.sgml: Move to variablelists from itemizedlists.
-
-2000-07-14 Aaron Weber <aaron@helixcode.com>
-
- * C/usage-contact.sgml: moved to variablelists from itemizedlists
- * C/usage-calendar.sgml: moved to variablelists from itemizedlists
-
-2000-06-29 Aaron Weber <aaron@helixcode.com>
-
- * C/preface.sgml: Minor fixes.
-
- * C/usage-notes.sgml: New File for feature that is yet to come.
- * C/evolution-guide.sgml: Added entity for notes chapter.
- * C/usage-mainwindow.sgml: Un-commented references to notes section.
-
- * C/apx-authors.sgml: Removed dcm from author list.
-
- * C/usage-calendar.sgml: Added to-do list features.
-
-2000-06-28 Aaron Weber <aaron@helixcode.com>
-
- * C/usage-contact.sgml: commented out future features; redid
- contact editor stuff.
-
- * C/apx-gloss.sgml: Removed "live doc" and added "minicard"
-
-2000-06-27 Aaron Weber <aaron@helixcode.com>
-
- * C/devel-action.sgml: Removed file.
- * C/devel-script.sgml: Same.
- * C/devel-component.sgml: Same.
- * C/preface.sgml: Removed references to devel section.
- * C/evolution-guide.sgml: Removed references to devel section.
-
-2000-06-23 Aaron Weber <aaron@helixcode.com>
-
- * C/evolution-guide.sgml: Made moderate to major stylistic updates
- to this, apx-gloss.sgml, and to all files beginning with "usage,"
- especially wrt HTML mail.
-
-
-2000-06-15 Aaron Weber <aaron@helixcode.com>
-
- * C/usage-contact.sgml: Category stuff improved.
-
- * C/usage-calendar.sgml: Now covers how to add an event properly.
-
-2000-07-17 Federico Mena Quintero <federico@helixcode.com>
-
- * Makefile.am (SUBDIRS): Added the devel directory.
-
-2000-06-28 Peter Williams <peterw@curious-george.helixcode.com>
-
- * C/Makefile.am (SGML_FILES): Don't depend on the newly-removed
- devel-*.sgml files.
-
-2000-06-16 Damon Chaplin <damon@helixcode.com>
-
- * C/.cvsignore: added evolution-guide and evolution-guide.junk
- so we don't get the '? doc/C/evolution-guide' messages each time we
- do a cvs update.
-
-2000-06-14 Aaron Weber <aaron@helixcode.com>
-
- * C/usage-mainwindow.sgml: added sect on menubar, other minor changes.
-
- * C/usage-mail.sgml: Improved filter and vfolder
- description, and some minor changes from me and Kevin.
-
-2000-06-07 Aaron Weber <aaron@helixcode.com>
-
- * C/config-prefs.sgml: finished adding calendar prefs. screenshots.
- * C/fig/config-cal.png: new file (screenshot for above)
- * C/fig/config-mail.png: same
-
-2000-06-05 Aaron Weber <aaron@helixcode.com>
-
- * C/usage-calendar.sgml: Incorporated chgs from Kevin.
-
- * C/config-prefs.sgml: began total overhaul of structure and added
- content reflecting new prefs items. needs LOTS more work.
-
- * C/usage-mail.sgml: changed some references to id's in the
- config-prefs section.
-
- * C/fig/config-mail.png: changed filename from config-prefs.png
-
-2000-06-01 Aaron Weber <aaron@helixcode.com>
-
- * C/config-prefs.sgml: filename was wrong, altered.
-
- * C/usage-mail.sgml: improved filter instructions, vFolder
- instructions. still need work though.
-
-
- * C/usage-contact.sgml: added screenshot.
-
- * C/usage-calendar.sgml: added screenshot.
-
- * C/config-prefs.sgml: added screenshots, and now describes the
- actual prefs dialogs.
-
- * C/fig/config-camel.png: new (screenshot) file
- * C/fig/filter-druid.png: same
- * C/fig/vfolder-druid.png: same
- * C/fig/calendar.png: same
- * C/fig/contact.png: same
- * C/fig/vfolder-createrule-fig.png: same
- * C/fig/filter-new-fig.png: same
- * C/fig/config-camel.png: same
-
-2000-06-01 Dan Winship <danw@helixcode.com>
-
- * Makefile.am: recurse into the C directory
-
- * C/Makefile.am: Rules to build and install the docs. Mostly
- stolen from gnomecal. Only works if you have GDP stuff
- (http://www.gnome.org/gdp/) set up on your machine, but won't make
- the build fail if you don't.
-
-2000-05-29 Aaron Weber <aaron@helixcode.com>
-
- * C/usage-contact.sgml: incorporated kevins notes.
- * C/usage-mainwindow.sgml: incorporated kevins notes.
-
-2000-05-27 Aaron Weber <aaron@helixcode.com>
-
- * C/evolution-guide.sgml: added Kevin Breit to author and
- copyright.
-
- * C/apx-authors.sgml: Put app authors in a simplelist.
-
- * C/usage-mail.sgml: Removed USAGE-SETUP insertion, added xref to send
- users to config-setupassist chapter. This and the following changes
- take setup druid coverage out of usage
- section and put it in config section.
- * C/config-setupassist.sgml: Added mail druid coverage from
- usage-setup.sgml.
- * C/usage-setup.sgml: Removed file. contents in
- config-setupassist.sgml.
- * C/evolution-guide.sgml: Removed
- USAGE-SETUP entity (and file usage-setup.sgml.)
-
-
-2000-05-26 Aaron Weber <aaron@helixcode.com>
-
- * C/fig/mainwindow-pic.png: new file
- * C/fig/mail-druid-pic.png: new file
- * C/fig: New directory, for figure graphics.
-
- * C/apx-gloss.sgml: new file. glossary. thx. to kevin from chicago.
-
- * C/usage-setup.sgml: More accurate description of druid, and
- moved to mail section-- see usage-mail.sgml entry. This is a new
- location for this entity, and it may move more later.
-
-
- * C/usage-mainwindow.sgml: altered description of starting
- evolution. added screenshot for main-window picture.
-
- * C/usage-mail.sgml: added screenshots, added coverage of setup
- druid and put it into get-and-send section, which is probably not
- where it should stay. Also started filter druid coverage and
- clarified examples, esp. in Bcc: section.
-
- * C/usage-contact.sgml: Clarified examples.
-
- * C/preface.sgml: rewording of "what is" and "about book" sections.
-
- * C/evolution-guide.sgml: added glossary entity APX-GLOSS, altered
- phrasing in part intros, changed order of Setup-assistant section.
-
- * C/config-prefs.sgml: changed wording, removed ref. to re-running
- setup assistant.
-
-2000-05-18 Aaron Weber <aaron@helixcode.com>
-
- * C/evo_book_0.1.sgml: removed.
-
- * C/apx-authors.sgml: new file.
- * C/apx-bugs.sgml: same.
- * C/apx-fdl.sgml: same.
- * C/config-prefs.sgml: same.
- * C/config-setupassist.sgml: same.
- * C/config-sync.sgml: same.
- * C/devel-action.sgml: same.
- * C/devel-component.sgml: same.
- * C/devel-script.sgml: same.
- * C/evolution-guide.sgml: same.
- * C/preface.sgml: same.
- * C/usage-calendar.sgml: same.
- * C/usage-contact.sgml: same.
- * C/usage-mail.sgml: same.
- * C/usage-mainwindow.sgml: same.
- * C/usage-setup.sgml: same.
- * C/usage-sync.sgml: same.
-
-2000-05-07 Dan Winship <danw@helixcode.com>
-
- * Camel-Classes: sync
-
-2000-04-16 Aaron Weber <aaron@helixcode.com>
-
- * C/evo_book_0.1.sgml: new file (doc sgml)
-
- * C/ : New directory for doc sgml & graphics
-
-2000-03-05 Christopher James Lahey <clahey@helixcode.com>
-
- * white-papers/widgets/e-table.sgml: Added Miguel to the author
- list for ETable.
-
-2000-03-03 Christopher James Lahey <clahey@helixcode.com>
-
- * white-papers/widgets/, white-papers/widgets/e-table.sgml: New
- doc for the ETable widget.
-
- * ChangeLog: Created a ChangeLog file for the docs file and
- integrated the individual ChangeLogs.
-
-2000-03-01 Dan Winship <danw@helixcode.com>
-
- * ibex.sgml: Ibex white paper
-
-2000-02-29 Federico Mena Quintero <federico@helixcode.com>
-
- * calendar.sgml: Sections for the calendar user agent and the
- calendar client library.
-
-2000-02-29 Dan Winship <danw@helixcode.com>
-
- * camel.sgml: Reorg a bit more, make the <PRE> section narrower,
- add more references to graphics (the graphics themselves are
- still in beta), add a section on CamelStream.
-
-2000-02-28 Federico Mena Quintero <federico@helixcode.com>
-
- * calendar.sgml: Section for the personal calendar server.
-
-2000-02-28 Dan Winship <danw@helixcode.com>
-
- * camel.sgml: add Bertrand to authors, edit his additions
-
-2000-02-28 bertrand <bertrand@helixcode.com>
-
- * camel.sgml: add a blurb about camel offering
- uniform interface. needs style and grammar corrections.
- Talk about virtual folders.
- Talk about lightweight messages
- Talk about IMAP.
-
-2000-02-28 Dan Winship <danw@helixcode.com>
-
- * camel.sgml: Beginnings of a Camel white paper
-
-2000-02-25 Federico Mena Quintero <federico@helixcode.com>
-
- * calendar.sgml: New file for the Evolution calendaring white paper.
diff --git a/doc/Design b/doc/Design
deleted file mode 100644
index 7b7cf6f821..0000000000
--- a/doc/Design
+++ /dev/null
@@ -1,201 +0,0 @@
-
-The Evolution Project specification
-Miguel de Icaza.
-
-
-* Introduction
-
- Evolution is a project aiming at providing the free software
- community with a professional, high-quality tool for managing
- mail, appointments, tasks and other personal information
- tools.
-
- We want to make Evolution a system that addresses our needs
- (the free software development community) and we believe that
- by addressing our needs, we will provide a system that will
- scale in the years to come for other users that are just
- starting to use computers and the internet.
-
- The main objectives of Evolution are to provide these powerful
- features, and to make the user interface as pretty and
- polished as possible.
-
- Evolution is a GNOME application and a number of auxiliary
- CORBA servers that act as the storage backends.
-
- Evolution will copy the best user interface bits and the best
- ideas and features found on contemporary groupware systems.
-
-* Evolution internals.
-
- Evolution can store its information locally (files for mail,
- calendar and address book) or on a remote server (imap/pop,
- cap, ldap).
-
- Given the importance of syncing in this modern PDA world,
- the Evolution GUI acts as a client to the data repository.
- The data repository is a GUI-less CORBA server called Wombat.
-
- Wombat provides a unified access system to the calendar and
- addressbook data (doing mail is a bit hard, so we are leaving
- this as a TODO item for now).
-
- Wombat's CORBA interfaces are notifier-based. This means that
- CORBA requests sent to Wombat do not return values
- inmediately, but rather than for Wombat requests the user has
- to provide a CORBA object that will be notified of what
- happened.
-
- Yes, that sounds hairy. It is actually pretty simple. It
- basically means that you submit requests to Wombat, and a
- callback is invoked in your code when the request has been
- carried away.
-
- This enables a Palm to sync to the repository without having
- the GUI for Evolution running. It also means that volunteers
- will be able to write text-based and web-based versions of
- Evolution (not me though :-).
-
-* Evolution as a platform
-
- Evolution is more than a client for managing the above
- information: Evolution is a platform for building groupware
- applications that use the above components to get their work done.
-
- To achieve this Evolution is designed to be scriptable, and it
- exports its internals trough CORBA/Bonobo. It is implemented
- as a collection of Bonobo containers and Bonobo components.
-
- There is a clean separation between the views (the user
- interface) and the model (the view). The views that we are
- writing are GNOME based, and they talk to the Wombat CORBA
- server.
-
- Wombat takes care of notifications to the various clients for
- the data.
-
-* The overall organization
-
- A bar similar to outlook provides shortcuts for accessing the
- various resources managed by Evolution: mail folders,
- contacts, tasks, journal entries, notes, messages and other
- user-defined destinations.
-
-* User interface widgets
-
-** The ETable package
-
- This package provides a way of displaying and editing tables.
-
- Tables are displayed based on a TableColumn definition that
- defines the layout used for the display. Table Columns can be
- nested, and the package does grouping of information displayed
- according to the criteria defined there.
-
- This is used in multiple places troughout evolution: it is
- used for the Mail summary display, for the TODO display and
- TODO new data entry and for the address book.
-
- Nesting in the address book can be performed on various
- fields. For example, a first level of nesting could be
- "Company" and a second level would be "Country" the result is
- a 2-level tree that can be collapsed expanded and contains the
- information sorted/grouped by those two criteria.
-
- The user interface for this will be copied from Outlook: the
- possibility of adding and removing fields with drag and drop
- as well as grouping using drag and drop.
-
-* The Mail system
-
-** The Mail sources
-
- The mail system will support 4 sources of mail:
-
- POP3 (transfer to a local file).
- IMAP
- Local mbox format in $MAIL.
- Local mbox format that have other delivery points.
-
- On top of that, it will be possible to browse existing mbox
- archives (and possibly other formats in the future, like
- Mailbox and Maildir).
-
-** Storing the mail
-
- Mail that gets incorporated into the system is stored in mbox
- format, and summary files are provided for quick access to the
- files. No modifications to the file on disk is performed (I
- am not quite sure about this, perhaps we want to add the
- status flags and some method for adding metadata to the mail).
-
- Summary files are rebuilt on demand or rebuild if the mbox
- file and the summary file have got out of sync.
-
- A Metadata system that will enable us to attach information to
- a message will have to be designed and implemented (enabling
- users to add annotations to mails, and special keywords and
- flags in a per-message fashion).
-
-** Folders
-
- Michael Zucchi is working on a system that will let users
- easily define rules for splitting their incoming mail into
- physical folders.
-
- A further refinement to Folders are Virtual Folders. This
- basically provides a powerful search and viewing facility for
- mail. It works like this: when a mail is "incorporated" into
- Evolution it is scanned and indexed.
-
- Then users can enter queries into Evolution that will search
- the entire database of messages.
-
-** Virtual folders
-
- Virtual folders will enable users to read/browse their mail in
- new ways: by specifying search criterias, these folders will
- contain messages that match the criteria given.
-
- There is more information about this in the libcamel
- directory.
-
- We will index all headers from a message, and possible the
- contents of messages and keep those on a separate file, to
- enable users to query their mail database.
-
-** Mail summary display
-
- The summary will be displayed using the ETable package, to
- enable users to add a number of sorting criteria and various
- display methods for the summary view.
-
- The Outlook methods for displaying will be present on the
- system.
-
- Message threading will be supported in Evolution.
-
-** Message display engine
-
- We are going to be using a combination of
- libcamel/limime/libjamie to parse messages and render them
- into an HTML buffer.
-
-* The HTML engine
-
- The GtkHTML engine will be used to display messages, and will
- be extended to support a number of features that we require:
- internal handling of characters will be based on Unicode
-
-* The message composer
-
- Regular features found in composers will be added: connecting
- the composer to the address book, support for drag and drop
- for including attachments, editing the message, archiving
- drafts and archiving messages sent.
-
- Ettore has been working on adding editing support to the
- GtkHTML and he is working currently on a Bonobo component that
- will provide a ready-to-use Bonobo control for embedding into
- other applications.
-
diff --git a/doc/Keybindings b/doc/Keybindings
deleted file mode 100644
index f232802110..0000000000
--- a/doc/Keybindings
+++ /dev/null
@@ -1,13 +0,0 @@
-* Keybindings for the mailer
-
- Delete key: Deletes message, moves forward.
-
-* Keybindings for the composer
-
- Control-s: Saves message to file.
- Control-w: Closes composer window.
- Control-Return: Sends message now.
-
- F6: Opens find dialog.
- F7: Opens replace dialog.
-
diff --git a/doc/Makefile.am b/doc/Makefile.am
deleted file mode 100644
index 965492689a..0000000000
--- a/doc/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-EXTRA_DIST = ChangeLog.pre-1-4
diff --git a/doc/NAMESPACE b/doc/NAMESPACE
deleted file mode 100644
index 4ca7c454d1..0000000000
--- a/doc/NAMESPACE
+++ /dev/null
@@ -1,65 +0,0 @@
-
- Here is how both the Evolution implementation and IDL namespacing
-is to be organized, NB. for implementations and oafinfo filenames we replace
-'/' with '_'
-
-Files:
-
-/GNOME/Evolution/
-
- Addressbook/
- Calendar/
- Control
- gnomecal
- Composer/
- Mail/
- Notes/
- Shell/
- Summary/
- test
- rdf
- Wombat/
-
-Components:
-
- Shell components end in _ShellComponent, controls in _Control,
-executive summary components in _ExecutiveSummaryComponent and
-factories append 'Factory'.
-
-GNOME/
- Evolution/
-
- Shell
-
- Addressbook/
- MiniCard/
- Control, ControlFactory
- SelectNames, SelectNamesFactory
- Control, ControlFactory
- ShellComponent, ShellComponentFactory
- Calendar/
- iTip/
- Control, ControlFactory
- Control, ControlFactory
- ShellComponent, ShellComponentFactory
- ExecutiveSummaryComponent, ExecutiveSummaryComponentFactory
- Mail/
- Control, ControlFactory
- ShellComponent, ShellComponentFactory
- ExecutiveSummaryComponent, ExecutiveSummaryComponentFactory
- Composer, ComposerFactory
- Notes/
- control, controlFactory
- shellComponent, shellComponentFactory
- Summary/
- rdf/
- SummaryComponent, SummaryComponentFactory
- test/
- Component, ComponentFactory
-
- ShellComponent, ShellComponentFactory
-
- Wombat/
- ServerFactory
- CalendarFactory
-
diff --git a/doc/devel/.cvsignore b/doc/devel/.cvsignore
deleted file mode 100644
index 81268d18cf..0000000000
--- a/doc/devel/.cvsignore
+++ /dev/null
@@ -1,5 +0,0 @@
-Makefile
-Makefile.in
-html
-evolution-devel-guide.html
-*.stamp
diff --git a/doc/devel/ChangeLog b/doc/devel/ChangeLog
deleted file mode 100644
index 0b137d8036..0000000000
--- a/doc/devel/ChangeLog
+++ /dev/null
@@ -1,57 +0,0 @@
-2004-11-18 Not Zed <NotZed@Ximian.com>
-
- * evolution-plugin-manual.xml: define load-on-startup parameter.
-
-2004-11-03 Not Zed <NotZed@Ximian.com>
-
- * evolution-plugin-manual.xml: added author section to eplugin
- definition.
-
-2004-10-28 Not Zed <NotZed@Ximian.com>
-
- * evolution-plugin-manual.xml: setup for more auto-built stuff.
-
- * build-eplugin-manual.pl: auto-build more stuff.
-
-2004-10-12 Not Zed <NotZed@Ximian.com>
-
- * evolution-plugin-manual.xml: doc updates for new 'check' callback.
-
-2004-10-07 Not Zed <NotZed@Ximian.com>
-
- * evolution-plugin-manual.xml: some updates.
-
-2004-09-09 Not Zed <NotZed@Ximian.com>
-
- * evolution-plugin-manual.xml: updates. some not very readable, sigh.
-
- * images: Added e-popup-merge-[12].pic.
-
-2004-09-04 Not Zed <NotZed@Ximian.com>
-
- * images/Makefile: add a temporary makefile to build images from
- source pic files.
-
- * evolution-plugin-manual.xml: updates/rearrangements.
-
-2004-09-01 Not Zed <NotZed@Ximian.com>
-
- * images/*: added some image files.
-
- * evolution-plugin-manual.xml: fix for some api changes. Updates.
-
-2004-08-25 Not Zed <NotZed@Ximian.com>
-
- * evolution-plugin-manual.xml: Added the working plugin manual
- in-case i crash my bike going to work one day.
-
-2003-11-20 JP Rosevear <jpr@ximian.com>
-
- * Remove dead doc files.
-
-2003-09-11 Dan Winship <danw@ximian.com>
-
- * calendar/cal-client/Makefile.am (GTKDOC_LIBS): Use non-static
- libraries.
-
- * calendar/cal-util/Makefile.am (GTKDOC_LIBS): Likewise
diff --git a/doc/devel/ChangeLog.pre-1-4 b/doc/devel/ChangeLog.pre-1-4
deleted file mode 100644
index 4d90e1e515..0000000000
--- a/doc/devel/ChangeLog.pre-1-4
+++ /dev/null
@@ -1,286 +0,0 @@
-2003-01-22 Ettore Perazzoli <ettore@ximian.com>
-
- * Makefile.am (HTML_DIR): Version using $(BASE_VERSION).
-
-2002-07-17 Peter Williams <peterw@ximian.com>
-
- * calendar/cal-util/Makefile.am (GTKDOC_LIBS): Because we're
- using libtool as our LD, we can reference .la's and libtool
- will DTRT for us.
-
- * calendar/cal-client/Makefile.am (GTKDOC_LIBS): Same here.
-
-2002-03-19 Dan Winship <danw@ximian.com>
-
- * calendar/cal-util/Makefile.am (GTKDOC_LIBS): Update for
- libversit change.
-
- * calendar/cal-client/Makefile.am (GTKDOC_LIBS): Likewise
-
-2002-01-24 Ettore Perazzoli <ettore@ximian.com>
-
- * calendar/cal-client/Makefile.am: Use EVOLUTION_CALENDAR_CFLAGS
- and EVOLUTION_CALENDAR_LIBS.
- * calendar/cal-util/Makefile.am: Likewise.
-
-2001-12-18 JP Rosevear <jpr@ximian.com>
-
- * calendar/cal-client/Makefile.am: cal-client needs bonobo-conf
- now
-
-2001-10-29 Federico Mena Quintero <federico@ximian.com>
-
- * calendar/alarm-generation.sgml: Updated docs for repeating
- alarms.
-
-2001-07-31 Ettore Perazzoli <ettore@ximian.com>
-
- * Makefile.am (dist-hook): Remove the copying of the
- index.sgml file which doesn't seem to be generated
- anywhere anyway.
-
-2001-06-25 Peter Williams <peterw@ximian.com>
-
- * Makefile.am: ... and comment out more exec summary stuff.
-
- * reference.sgml: Here too.
-
-2001-06-25 Peter Williams <peterw@ximian.com>
-
- * calendar/cal-util/Makefile.am,
- calendar/cal-client/Makefile.am: Fix make dist.
-
- * Makefile.am: clean up a bit.
-
-2001-06-21 JP Rosevear <jpr@ximian.com>
-
- * Makefile.am: disable executive summary build because it is no
- longer built
-
-2001-06-21 JP Rosevear <jpr@ximian.com>
-
- * calendar/cal-client/Makefile.am: add new lib
-
-2001-06-21 Peter Williams <peterw@ximian.com>
-
- * Makefile.am:
- calendar/cal-client/Makefile.am:
- calendar/cal-util/Makefile.am:
- importer/Makefile.am:
- executive-summary/Makefile.am: Changed to used gtk-doc's
- canonical Makefile.am (plus some tweaks because not every
- dir builds html).
-
-2001-06-14 Damon Chaplin <damon@ximian.com>
-
- * executive-summary/.cvsignore:
- * calendar/cal-util/.cvsignore:
- * calendar/cal-client/.cvsignore: added *-undocumented.txt
-
-2001-05-24 Federico Mena Quintero <federico@ximian.com>
-
- * evolution-devel-guide.sgml: s/Helix Code/Ximian
-
-2001-05-15 Jeffrey Stedfast <fejj@ximian.com>
-
- * Removed some evolution-*-decl.txt files since these are
- autogenerated by gtk-doc and don't belong in cvs anyway.
- Should the tmpl/ dirs also be removed??
-
- Updated: Readded them and updated the .cvsignore files - I guess
- we do need them after all ;-)
-
-2001-04-25 Jon Trowbridge <trow@ximian.com>
-
- * Removed generated files from CVS, updated .cvsignore files
- to include generated files.
-
-2001-04-23 Ettore Perazzoli <ettore@ximian.com>
-
- * executive-summary/Makefile.am (scan) [ENABLE_GTK_DOC]: Kludge
- builddir != srcdir behavior by symlinking the $(DOC_MODULE).types
- file into the builddir.
- * calendar/cal-client/Makefile.am (scan) [ENABLE_GTK_DOC]:
- Likewise.
- * calendar/cal-util/Makefile.am (scan) [ENABLE_GTK_DOC]: Likewise.
-
-2001-04-23 Ettore Perazzoli <ettore@ximian.com>
-
- * evolution-devel-guide.sgml: Disable the importer references here
- too.
-
- * Makefile.am: Remove the importer stuff for now.
-
-2001-04-20 Damon Chaplin <damon@ximian.com>
-
- * importer/evolution-shell-importer.types: changed path to the
- importer header files, since we've had reports that they aren't being
- found (though it worked OK for me).
-
-2001-04-17 Ettore Perazzoli <ettore@ximian.com>
-
- * calendar/cal-client/Makefile.am (install-data-local): Install
- the $(DOC_DIR_INSTALL_FILES) from the srcdir.
- * calendar/cal-util/Makefile.am (install-data-local): Likewise.
- * importer/Makefile.am (install-data-local): Likewise.
- * executive-summary/Makefile.am (install-data-local): Likewise.
-
-2001-01-26 John R. Sheets <dusk@ravendusk.org>
-
- * importer/Makefile.am: Change (nonexistant) importer.sgml
- references to evolution-importer.sgml to fix dependency problem.
-
-2001-01-17 Iain Holmes <iain@ximian.com>
-
- * Makefile.am (local_entities): Added the importer stuff.
-
- * evolution-devel-guide.sgml: Added entities for the importer documents.
-
- * reference.sgml: Added the public and private APIs for the importer.
-
- * importer/*: New directory containing all the documenation for the
- importer.
-
-2001-01-17 Federico Mena Quintero <federico@ximian.com>
-
- * evolution-devel-guide.sgml: Ximianified.
-
- * calendar/evolution-calendar.sgml: Ditto.
-
- * calendar/cal-util/evolution-cal-util-sections.txt: Updated.
-
- * calendar/cal-client/evolution-cal-client-sections.txt: Updated.
-
-2001-01-10 Federico Mena Quintero <federico@helixcode.com>
-
- * Makefile.am: Make it work when gtk-doc is not installed.
-
- * calendar/cal-client/Makefile.am: Likewise.
-
- * calendar/cal-util/Makefile.am: Likewise.
-
-2000-12-19 Federico Mena Quintero <federico@helixcode.com>
-
- Added proper dependency lists to the gtk-doc mess.
-
- * calendar/cal-client/Makefile.am (TARGET_DIR): Removed unused
- variable.
- (SOURCE_FILES): New variable with the list of source files we
- depend on.
- (IGNORED_SOURCE_HEADERS): New variable with the headers we ignore
- for the gtkdoc-scan phase.
- (scan_generated):
- (tmpl_dependencies):
- (tmpl_sources):
- (tmpl_generated);
- (sgml_dependencies):
- (sgml_generated): Lists of stuff that is generated and that other
- stuff depends on.
- (all): Added the $(sgml_generated) as the final target.
- (install-data-local): Added an installation hook; gtk-doc seems to
- want some of its generated files to be installed.
-
- * calendar/cal-client/evolution-cal-client-sections.txt: Updated.
-
- * calendar/cal-util/Makefile.am: Made the same changes as for
- calendar/cal-client/Makefile.am.
-
- * calendar/cal-util/evolution-cal-util-sections.txt: Updated.
-
- * Makefile.am (local_entities): Added alarm-generation.sgml.
- (all): Made the main target be the html/index.html.
-
-2000-12-18 Federico Mena Quintero <federico@helixcode.com>
-
- * calendar/alarm-generation.sgml: New file with a description of
- the algorithm used to generate alarm instances.
-
- * evolution-devel-guide.sgml: Added an entity for the above
- chapter.
-
- * calendar/evolution-calendar.sgml: Reference the entity here.
-
- * calendar/Makefile.am (EXTRA_DIST): Added alarm-generation.sgml.
-
-2000-12-13 Larry Ewing <lewing@helixcode.com>
-
- * calendar/Makefile.am (EXTRA_DIST): make it public-reference.sgml
- not referenc.sgml here.
-
-2000-11-29 Federico Mena Quintero <federico@helixcode.com>
-
- * calendar/architecture.sgml: Finished the calendar architecture
- chapter.
-
-2000-11-29 Federico Mena Quintero <federico@helixcode.com>
-
- * evolution-devel-guide.sgml: Added an id for the API reference <part>.
- Added the FDL <legalnotice>.
- Added the preface and toplevel reference entities.
- Added entities for Evolution, Wombat, and Camel.
- Added an appendix for the GNU FDL.
-
- * preface.sgml: New file with the introduction to the Evolution
- Developer's Guide.
-
- * reference.sgml: Split the toplevel reference part into its own
- file.
-
- * fdl.sgml: Added the GNU Free Documentation License.
-
- * calendar/evolution-calendar.sgml: Added an id for the <part>.
-
- * calendar/public-reference.sgml: Added an id for the <reference>.
- Moved this file over from calendar/reference.sgml.
-
- * Makefile.am (local_entities): Added a list of the SGML files
- that define entities for inclusion in the toplevel document. This
- way we can track documentation file dependencies down to all
- levels.
- (html/index.html): Made the toplevel document depend on
- $(local_entities). Also, removed the "html" target and put its
- contents directly here; this way we avoid having .PHONY targets.
- (EXTRA_DIST): Removed the evolution_devel_guideDATA; it made no
- sense.
- (content_files): Added preface.sgml and reference.sgml.
-
-2000-09-15 Federico Mena Quintero <federico@helixcode.com>
-
- * evolution-devel-guide.sgml: Made the toplevel <book> id be
- "index".
-
-2000-08-14 Federico Mena Quintero <federico@helixcode.com>
-
- * calendar/cal-util/*: Integrated the cal-util library into the
- documentation framework.
-
- * calendar/Makefile.am (SUBDIRS): Added the cal-util directory.
-
- * evolution-devel-guide.sgml: Added entities for the cal-util stuff.
- Added entity for libical.
-
- * calendar/reference.sgml: Added the cal-util reference entries.
-
- * calendar/cal-client/evolution-cal-client-sections.txt: Updated
- for new API.
-
-2000-08-09 Peter Williams <peterw@helixcode.com>
-
- * Makefile.am (maintainer-clean-local): Don't depend
- on 'clean'; this messes up maintainer-clean.
-
-2000-07-17 Federico Mena Quintero <federico@helixcode.com>
-
- * calendar/cal-client/tmpl/cal-client.sgml: Populated.
-
- * evolution-devel-guide.sgml: New <book> toplevel for the
- Evolution Developer's Guide.
-
- * calendar/evolution-calendar.sgml: New <part> for the calendar
- developer's documentation.
-
- * calendar/architecture.sgml: New <chapter> for the calendar
- architecture.
-
- * calendar/reference.sgml: New <reference> for the calendar API
- reference.
diff --git a/doc/devel/Makefile.am b/doc/devel/Makefile.am
deleted file mode 100644
index 7940af73f5..0000000000
--- a/doc/devel/Makefile.am
+++ /dev/null
@@ -1,179 +0,0 @@
-## Process this file with automake to produce Makefile.in
-
-SUBDIRS = calendar
-
-# The name of the module, e.g. 'glib'.
-DOC_MODULE=evolution-devel-guide
-
-# The top-level SGML file. Change it if you want.
-DOC_MAIN_SGML_FILE=evolution-devel-guide.sgml
-
-# The directory containing the source code. Relative to $(srcdir).
-# gtk-doc will search all .c & .h files beneath here for inline comments
-# documenting functions and macros.
-#DOC_SOURCE_DIR=
-
-# Extra options to supply to gtkdoc-scan.
-#SCAN_OPTIONS=
-
-# Extra options to supply to gtkdoc-mkdb.
-#MKDB_OPTIONS=
-
-# Extra options to supply to gtkdoc-fixref.
-#FIXXREF_OPTIONS=
-
-# Used for dependencies.
-#HFILE_GLOB=
-#CFILE_GLOB=
-
-# Header files to ignore when scanning.
-#IGNORE_HFILES=
-
-# Images to copy into HTML directory.
-HTML_IMAGES =
-
-
-# Add your module's hand-written and auto-generated files here; these
-# are used for dependency tracking.
-
-local_entities = \
- calendar/alarm-generation.sgml \
- calendar/architecture.sgml \
- calendar/evolution-calendar.sgml \
- calendar/public-reference.sgml \
- \
- calendar/cal-client/sgml/cal-client.sgml \
- \
- calendar/cal-util/sgml/cal-component.sgml \
- calendar/cal-util/sgml/cal-recur.sgml \
- calendar/cal-util/sgml/cal-util.sgml \
- calendar/cal-util/sgml/timeutil.sgml
-
-# executive-summary/sgml/executive-summary-component.sgml \
-# executive-summary/sgml/executive-summary-component-factory.sgml \
-# executive-summary/sgml/executive-summary-component-factory-client.sgml \
-# executive-summary/sgml/executive-summary-html-view.sgml
-
-# importer/sgml/evolution-importer.sgml \
-# importer/sgml/evolution-importer-client.sgml
-
-installed_content_files = \
- fdl.sgml \
- preface.sgml \
- reference.sgml
-
-# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE).
-content_files = \
- $(installed_content_files) \
- $(local_entities)
-
-# Other files to distribute.
-extra_files =
-
-# CFLAGS and LDFLAGS for compiling scan program. Only needed if your app/lib
-# contains GtkObjects/GObjects and you want to document signals and properties.
-#GTKDOC_CFLAGS =
-#GTKDOC_LIBS =
-#
-#GTKDOC_CC=$(LIBTOOL) --mode=compile $(CC)
-#GTKDOC_LD=$(LIBTOOL) --mode=link $(CC)
-
-# If you need to override some of the declarations, place them in this file
-# and uncomment this line.
-#DOC_OVERRIDES = $(DOC_MODULE)-overrides.txt
-
-HTML_DIR = $(datadir)/gnome/html/evolution-$(BASE_VERSION)
-
-###########################################################################
-# Everything below here is generic and you shouldn't need to change it.
-###########################################################################
-
-TARGET_DIR=$(HTML_DIR)/$(DOC_MODULE)
-
-EXTRA_DIST = \
- $(extra_files) \
- $(installed_content_files) \
- $(HTML_IMAGES) \
- $(DOC_MAIN_SGML_FILE) \
- ChangeLog.pre-1-4
-
-# $(DOC_MODULE).types \
-# $(DOC_MODULE)-sections.txt \
-# $(DOC_OVERRIDES)
-
-DOC_STAMPS=scan-build.stamp tmpl-build.stamp sgml-build.stamp html-build.stamp \
- $(srcdir)/tmpl.stamp $(srcdir)/sgml.stamp $(srcdir)/html.stamp
-
-#SCANOBJ_FILES = \
-# $(DOC_MODULE).args \
-# $(DOC_MODULE).hierarchy \
-# $(DOC_MODULE).signals
-
-if ENABLE_GTK_DOC
-all-local: html-build.stamp
-
-#### html ####
-
-html-build.stamp: $(DOC_MAIN_SGML_FILE) $(content_files) #sgml.stamp
- @echo '*** Building HTML ***'
- test -d $(srcdir)/html || mkdir $(srcdir)/html
- cd $(srcdir)/html && gtkdoc-mkhtml $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE)
- test "x$(HTML_IMAGES)" = "x" || ( cd $(srcdir) && cp $(HTML_IMAGES) html )
- @echo '-- Fixing Crossreferences'
- cd $(srcdir) && gtkdoc-fixxref --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS)
- touch html-build.stamp
-endif
-
-##############
-
-clean-local:
- rm -f *~ *.bak *-unused.txt $(DOC_STAMPS) # $(SCANOBJ_FILES)
-
-maintainer-clean-local: clean
- cd $(srcdir) && rm -rf sgml html $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt
-
-install-data-local:
- $(mkinstalldirs) $(DESTDIR)$(TARGET_DIR)
- (installfiles=`echo $(srcdir)/html/*.html`; \
- if test "$$installfiles" = '$(srcdir)/html/*.html'; \
- then echo '-- Nothing to install' ; \
- else \
- for i in $$installfiles; do \
- echo '-- Installing '$$i ; \
- $(INSTALL_DATA) $$i $(DESTDIR)$(TARGET_DIR); \
- done; \
- fi)
-
-# echo '-- Installing $(srcdir)/html/index.sgml' ; \
-# $(INSTALL_DATA) $(srcdir)/html/index.sgml $(DESTDIR)$(TARGET_DIR); \
-
-#
-# Require gtk-doc when making dist
-#
-if ENABLE_GTK_DOC
-dist-check-gtkdoc:
-else
-dist-check-gtkdoc:
- @echo "*** gtk-doc must be installed and enabled in order to make dist"
- @false
-endif
-
-dist-hook: dist-check-gtkdoc dist-hook-local
- mkdir $(distdir)/html
- files=`echo $(srcdir)/html/*.html` ; \
- test '$(srcdir)/html/*.html' = "$$files" \
- || cp $$files $(distdir)/html
- files=`echo $(srcdir)/html/*.css` ; \
- test '$(srcdir)/html/*.css' = "$$files" \
- || cp $$files $(distdir)/html
- images=$(HTML_IMAGES) ; \
- for i in $$images ; do \
- cp $(srcdir)/$$i $(distdir)/html ; \
- done
-
-# mkdir $(distdir)/tmpl
-# mkdir $(distdir)/sgml
-# -cp $(srcdir)/sgml/*.sgml $(distdir)/sgml
-# -cp $(srcdir)/tmpl/*.sgml $(distdir)/tmpl
-
-.PHONY : dist-hook-local
diff --git a/doc/devel/build-eplugin-manual.pl b/doc/devel/build-eplugin-manual.pl
deleted file mode 100755
index 8cb951a516..0000000000
--- a/doc/devel/build-eplugin-manual.pl
+++ /dev/null
@@ -1,263 +0,0 @@
-#!/usr/bin/perl
-
-#
-# API reference
-#
-
-%byref = ( 'e-popup.xml' =>
- { 'files' => [ 'e-popup.h', 'e-popup.c' ],
- 'module' => 'e-util' },
-
- 'e-menu.xml' =>
- { 'files' => [ 'e-menu.h', 'e-menu.c' ],
- 'module' => 'e-util' },
-
- 'e-event.xml' =>
- { 'files' => [ 'e-event.h', 'e-event.c' ],
- 'module' => 'e-util' },
-
- 'e-config.xml' =>
- { 'files' => [ 'e-config.h', 'e-config.c' ],
- 'module' => 'e-util' },
-
- 'e-plugin.xml' =>
- { 'files' => [ 'e-plugin.h', 'e-plugin.c' ],
- 'module' => 'e-util' },
-
- 'em-popup.xml' =>
- { 'files' => [ 'em-popup.h', 'em-popup.c' ],
- 'module' => 'mail' },
-
- 'em-format.xml' =>
- { 'files' => [ 'em-format-hook.h' , 'em-format-hook.c',
- 'em-format.h', 'em-format.c',
- 'em-format-html.h', 'em-format-html.c' ],
- 'module' => 'mail' },
- );
-
-foreach $out (keys %byref) {
- print "file $out\n";
- %data = %{$byref{$out}};
- @files = @{$data{'files'}};
- $module = $data{'module'};
- $files = "";
- foreach $file (@files) {
- $files .= " ../../".$module."/".$file;
- }
- system("kernel-doc -docbook $files > $out");
-}
-
-#
-# Event reference
-#
-
-# %events = ( 'em-events.xml' =>
-# { 'files' => [ 'em-folder-view.c', 'em-composer-utils.c', 'mail-folder-cache.c' ],
-# 'module' => 'mail' },
-# );
-
-# foreach $out (keys %events) {
-# print "generating events doc $out\n";
-# %data = %{$events{$out}};
-# @files = @{$data{'files'}};
-# $module = $data{'module'};
-# open OUT,">$out";
-# foreach $file (@files) {
-# open IN,"<../../$module/$file";
-# while (<IN>) {
-# if (m/\@Event: (.*)/) {
-# $title = $1;
-# $name = $1;
-# $target = "";
-# while (<IN>) {
-# if (m/\@Title: (.*)/) {
-# $title = $1;
-# } elsif (m/\@Target: (.*)/) {
-# $target = $1;
-# } elsif (m/\* (.*)/) {
-# $desc.= $1."\n";
-# }
-# last if (m/\*\//);
-# }
-# if ($target eq "") {
-# print "Warning: No target defined for event $name ($title)\n";
-# }
-# print OUT <<END;
-# <sect2>
-# <title>$title</title>
-# <informaltable>
-# <tgroup cols="2">
-# <colspec colnum="1" colname="field" colwidth="1*"/>
-# <colspec colnum="2" colname="value" colwidth="4*"/>
-# <tbody valign="top">
-# <row>
-# <entry>Name</entry>
-# <entry><constant>$name</constant></entry>
-# </row>
-# <row>
-# <entry>Target</entry>
-# <entry>
-# <link
-# linkend="$module-hooks-event-$target">$target</link>
-# </entry>
-# </row>
-# <row>
-# <entry>Description</entry>
-# <entry>
-# <simpara>
-# $desc
-# </simpara>
-# </entry>
-# </row>
-# </tbody>
-# </tgroup>
-# </informaltable>
-# </sect2>
-# END
-# }
-# }
-# close IN;
-# }
-# close OUT;
-# }
-
-#
-# Generic table builder, still experimental.
-#
-
-sub buildxml {
- my $type = $_[0];
- my $out = $_[1];
- my %data = %{$_[2]};
- my @files, $module;
- my $line;
-
- print "generating doc $out for $type\n";
- @files = @{$data{'files'}};
- $module = $data{'module'};
- open OUT,">$out";
- foreach $file (@files) {
- my $line = 0;
-
- open IN,"<../../$module/$file" || die ("Cannot open \"$module/$file\"");
- while (<IN>) {
- if (m/\/\*\* \@$type: (.*)/) {
- my $key = "";
- my $val = "";
- my $desc = 0;
- my $title = $1;
- my %blob = { };
- my @blobs = ();
-
- while (<IN>) {
- $line++;
- if (m/\@(.*): (.*)/) {
- if ($val ne "") {
- $blob{$key} = $val;
- }
- $key = $1;
- $val = $2;
- push @blobs, $key;
- } elsif (m/\* (.+)/) {
- $val .= $1."\n";
- } else {
- if ($desc == 0) {
- if ($val ne "") {
- $blob{$key} = $val;
- }
- $val = "";
- $key = "";
- } else {
- $val .= "\n";
- }
- if (m/\*\s*$/) {
- $desc = 1;
- }
- }
- last if (m/\*\//);
- }
- print OUT<<END;
- <sect2>
- <title>$title</title>
-END
- if ($val ne "") {
- $val =~ s/[\n]+$//gos;
- $val =~ s/\n\n/\<\/simpara\>\n\<simpara\>/g;
- print OUT "<simpara>$val</simpara>\n";
- }
- print OUT <<END;
- <informaltable>
- <tgroup cols="2">
- <colspec colnum="1" colname="field" colwidth="1*"/>
- <colspec colnum="2" colname="value" colwidth="4*"/>
- <tbody valign="top">
-END
-
- foreach $key (@blobs) {
- print OUT <<END;
- <row>
- <entry>$key</entry>
- <entry>$blob{$key}</entry>
- </row>
-END
-}
- print OUT <<END;
- <row>
- <entry>Defined</entry>
- <entry>$module/$file:$line</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </sect2>
-END
- }
- $line++;
- }
- close IN;
- }
- close OUT;
-}
-
-
-%hooks = ( 'es-hooks.xml' =>
- { 'type' => 'HookClass',
- 'files' => [ 'es-menu.c', 'es-event.c' ],
- 'module' => 'shell' },
- 'es-menus.xml' =>
- { 'type' => 'HookPoint',
- 'files' => [ 'e-shell-window.c' ],
- 'module' => 'shell' },
- 'es-events.xml' =>
- { 'type' => 'Event',
- 'files' => [ 'e-shell.c' ],
- 'module' => 'shell' },
- 'em-events.xml' =>
- { 'type' => 'Event',
- 'files' => [ 'em-folder-view.c', 'em-composer-utils.c', 'mail-folder-cache.c' ],
- 'module' => 'mail' },
- 'em-popups.xml' =>
- { 'type' => 'HookPoint-EMPopup',
- 'files' => [ 'em-folder-tree.c', 'em-folder-view.c', 'em-format-html-display.c', '../composer/e-msg-composer-attachment-bar.c' ],
- 'module' => 'mail' },
- 'ecal-popups.xml' =>
- { 'type' => 'HookPoint-ECalPopup',
- 'files' => [ 'gui/e-calendar-view.c', 'gui/calendar-component.c', 'gui/e-calendar-view.c', 'gui/tasks-component.c' ],
- 'module' => 'calendar' },
- 'em-configs.xml' =>
- { 'type' => 'HookPoint-EMConfig',
- 'files' => [ 'em-mailer-prefs.c', 'em-account-editor.c', 'em-folder-properties.c', 'em-composer-prefs.c' ],
- 'module' => 'mail' },
- 'em-menus.xml' =>
- { 'type' => 'HookPoint-EMMenu',
- 'files' => [ 'em-folder-browser.c', 'em-message-browser.c' ],
- 'module' => 'mail' },
- );
-
-foreach $out (keys %hooks) {
- %data = %{$hooks{$out}};
-
- &buildxml($data{'type'}, $out, \%data);
-}
-
-
diff --git a/doc/devel/evolution-devel-guide.sgml b/doc/devel/evolution-devel-guide.sgml
deleted file mode 100644
index c089c5b885..0000000000
--- a/doc/devel/evolution-devel-guide.sgml
+++ /dev/null
@@ -1,98 +0,0 @@
-<!DOCTYPE book PUBLIC "-//Davenport//DTD DocBook V3.0//EN"[
-<!ENTITY preface SYSTEM "preface.sgml">
-<!ENTITY evolution-reference SYSTEM "reference.sgml">
-<!ENTITY FDL SYSTEM "fdl.sgml">
-
-<!ENTITY evolution-calendar SYSTEM "calendar/evolution-calendar.sgml">
-<!ENTITY calendar-architecture SYSTEM "calendar/architecture.sgml">
-<!ENTITY calendar-alarm-generation SYSTEM "calendar/alarm-generation.sgml">
-<!ENTITY calendar-public-reference SYSTEM "calendar/public-reference.sgml">
-<!ENTITY CalClient SYSTEM "calendar/cal-client/sgml/cal-client.sgml">
-<!ENTITY CalComponent SYSTEM "calendar/cal-util/sgml/cal-component.sgml">
-<!ENTITY cal-recur SYSTEM "calendar/cal-util/sgml/cal-recur.sgml">
-<!ENTITY cal-util SYSTEM "calendar/cal-util/sgml/cal-util.sgml">
-<!ENTITY timeutil SYSTEM "calendar/cal-util/sgml/timeutil.sgml">
-
-<!ENTITY evolution-services-public-reference SYSTEM "executive-summary/public-reference.sgml">
-<!ENTITY evolution-services-private-reference SYSTEM "executive-summary/private-reference.sgml">
-<!ENTITY ExecutiveSummaryComponent SYSTEM "executive-summary/sgml/executive-summary-component.sgml">
-<!ENTITY ExecutiveSummaryComponentFactory SYSTEM "executive-summary/sgml/executive-summary-component-factory.sgml">
-<!ENTITY ExecutiveSummaryComponentFactoryClient SYSTEM "executive-summary/sgml/executive-summary-component-factory-client.sgml">
-<!ENTITY ExecutiveSummaryHtmlView SYSTEM "executive-summary/sgml/executive-summary-html-view.sgml">
-
-<!ENTITY Evolution "<application>Evolution</application>">
-<!ENTITY Wombat "<application>Wombat</application>">
-<!ENTITY Camel "<application>Camel</application>">
-<!ENTITY PCS "<acronym>PCS</acronym>">
-<!ENTITY libical "<application>libical</application>">
-<!ENTITY Executive-Summary "<application>Executive Summary</application>">
-]>
-
-<!-- ENTITY importer-public-reference SYSTEM "importer/public-reference.sgml" -->
-<!-- ENTITY importer-private-reference SYSTEM "importer/private-reference.sgml" -->
-<!-- ENTITY EvolutionImporter SYSTEM "importer/sgml/evolution-importer.sgml" -->
-<!-- ENTITY EvolutionImporterClient SYSTEM "importer/sgml/evolution-importer-client.sgml" -->
-<!-- ENTITY EvolutionImporterListener SYSTEM "importer/sgml/evolution-importer-listener.sgml" -->
-
-
-<book id="index">
- <bookinfo>
- <title>&Evolution; Developer's Guide</title>
-
- <authorgroup>
- <corpauthor>
- Ximian, Inc.
- </corpauthor>
- </authorgroup>
-
- <copyright>
- <year>2001</year>
- <holder>Ximian, Inc.</holder>
- </copyright>
-
- <copyright>
- <year>2001</year>
- <holder>Ximian, Inc.</holder>
- </copyright>
-
- <legalnotice id="legalnotice">
- <para>
- Permission is granted to copy, distribute and/or modify this
- document under the terms of the <ulink type="help"
- url="gnome-help:fdl"><citetitle>GNU Free Documentation
- License</citetitle></ulink>, Version 1.1 or any later version
- published by the Free Software Foundation with no Invariant
- Sections, no Front-Cover Texts, and no Back-Cover Texts. You
- may obtain a copy of the <citetitle>GNU Free Documentation
- License</citetitle> from the Free Software Foundation by
- visiting <ulink type="http" url="http://www.fsf.org">their Web
- site</ulink> or by writing to: Free Software Foundation, Inc.,
- 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- </para>
-
- <para>
- Many of the names used by companies to distinguish their
- products and services are claimed as trademarks. Where those
- names appear in any GNOME documentation, and those trademarks
- are made aware to the members of the GNOME Documentation
- Project, the names have been printed in caps or initial caps.
- </para>
- </legalnotice>
- </bookinfo>
-
- <!-- Introduction -->
-
- &preface;
-
- <!-- DocBook parts for each individual component -->
-
- &evolution-calendar;
-
- <!-- API Reference part -->
-
- &evolution-reference;
-
- <!-- Appendices -->
-
- &FDL;
-</book>
diff --git a/doc/devel/evolution-plugin-manual.xml b/doc/devel/evolution-plugin-manual.xml
deleted file mode 100644
index 2feb047482..0000000000
--- a/doc/devel/evolution-plugin-manual.xml
+++ /dev/null
@@ -1,2803 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
- "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
-
-<!ENTITY Evolution "<application>Evolution</application>">
-<!ENTITY GNOME "<application>GNOME</application>">
-<!ENTITY eclipse "<application>Eclipse</application>">
-<!ENTITY Camel "<application>Camel</application>">
-<!ENTITY EPlugin "<application>EPlugin</application>">
-<!ENTITY e-popup-reference SYSTEM "e-popup.xml">
-<!ENTITY e-menu-reference SYSTEM "e-menu.xml">
-<!ENTITY e-config-reference SYSTEM "e-config.xml">
-<!ENTITY e-event-reference SYSTEM "e-event.xml">
-<!ENTITY e-plugin-reference SYSTEM "e-plugin.xml">
-
-<!ENTITY em-popup-reference SYSTEM "em-popup.xml">
-<!ENTITY em-format-reference SYSTEM "em-format.xml">
-
-<!ENTITY em-popups SYSTEM "em-popups.xml">
-<!ENTITY em-menus SYSTEM "em-menus.xml">
-<!ENTITY em-configs SYSTEM "em-configs.xml">
-<!ENTITY em-events SYSTEM "em-events.xml">
-
-<!ENTITY ecal-popups SYSTEM "ecal-popups.xml">
-
-<!ENTITY es-events SYSTEM "es-events.xml">
-<!ENTITY es-menus SYSTEM "es-menus.xml">
-
-]>
-<?xml-stylesheet href="sdocbook.css" type="text/css"?>
-
-<book lang="en">
- <!-- DocBook file was created by LyX 1.3
- See http://www.lyx.org/ for more information -->
- <bookinfo>
- <title>
- &Evolution; Plugin Development Manual
- </title>
-
- <authorgroup>
- <corpauthor>
- Novell, Inc.
- </corpauthor>
- <author>
- <firstname>Michael</firstname><surname>Zucchi</surname>
- </author>
- </authorgroup>
-
- <copyright>
- <year>2004</year>
- <holder>Novell, Inc.</holder>
- </copyright>
-
- </bookinfo>
-
- <preface id="preface">
- <title>Preface</title>
-
- <para>
- This document is work-in-progress. Its structure and design is still as
- fluid as the underlying strucutre and design of some parts of EPlugin.
- There's no guarantee it will be updated at regular intervals,
- particularly this version.
- </para>
- <para>
- The API documentation is currently generated using the Linux kernel-doc
- script. The stylesheets used to generate the HTML you're seeing seems to
- have bugs which duplicates some sections. It is also ugly and difficult
- to navigate.
- </para>
-
- <sect1>
- <title>Conventions</title>
- <para>
- The following conventions are used in the manual ... (insert details
- here).
- </para>
- <sect2>
- <title>XML Annotation</title>
- <para>
- XML definitions are annotated with BNF-style markers to indicate
- alternative (|), multiples (* or +), and optional (?) items. If no
- annotation is present then the item must be present once.
- </para>
- <variablelist>
- <varlistentry>
- <!-- is symbol the right one here? -->
- <term><symbol>|</symbol></term>
- <listitem>
- <simpara>Indicates an alternative option. Only one of the items
- separated by <symbol>|</symbol> is to be chosen.
- </simpara>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><symbol>*</symbol></term>
- <listitem>
- <simpara>Following an item, <symbol>*</symbol> indicates the item
- may occur any number of times, including no times (0 or more
- multiple).
- </simpara>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><symbol>+</symbol></term>
- <listitem>
- <simpara>Following an item, <symbol>+</symbol> indicates the item
- must occur at least once, but may occur more than ones (1 or
- more multiple).
- </simpara>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><symbol>?</symbol></term>
- <listitem>
- <simpara>Following an item, <symbol>?</symbol> indicates the item
- may occur at most once, if present (0 or 1 times).
- </simpara>
- </listitem>
- </varlistentry>
- </variablelist>
- </sect2>
- </sect1>
-
- </preface>
-
- <part id="informational">
- <title>
- EPlugin
- </title>
- <chapter>
- <title>
- Introduction
- </title>
- <para>
- This book aims to be a comprehensive technical manual for the
- development of plugins for &Evolution;, a personal information manager
- for &GNOME;.
- </para>
- <para>
- Up-to, and including, &Evolution; version 2.0, &Evolution; contained
- limited extensibility interfaces. There were only two ways to extend
- &Evolution;; by implementing a new top-level component, or by
- implementing a &Camel; provider. When implementing a top-level component,
- there was still little integration, and in effect it was merely a more
- complex way of writing a separate &GNOME; application. &Camel; providers
- were only designed to be e-mail storage backends, so were of limited
- use for general extensibility. Despite this, both mechanisms were used
- for example for the Exchange Connector, although the system made the
- integration clumsy and difficult.
- </para>
- <para>
- This lack of extensibility has severaly stifled external developer
- contributions by forcing any extensions to be considered as core
- features. &Evolution; being a commercial product, it has tight usability
- and quality requirements that limits the ability to experiment with
- the core feature set in this way. As a result, very few lines of code
- or new features have been implemented by external contributors.
- </para>
- <para>
- One of the major goals for the 2.2 release was to implement an
- extensibility system, given the working name of EPlugin, which must
- provide a frame-work for both providing extensibility hooks, and for
- extending the functionality of &Evolution;.
- </para>
- <sect1>
- <title>
- Plugin System
- </title>
- <para>
- Any plugin system will generally have a number of goals:
- </para>
- <itemizedlist>
- <listitem>
- <simpara>
- Provide a language independent invocation mechanism
- </simpara>
- </listitem>
- <listitem>
- <simpara>
- Allow extension of parts of the user interface and processing elements
- </simpara>
- </listitem>
- <listitem>
- <simpara>
- Require minimal extra or foreign code to implement in the core application
- </simpara>
- </listitem>
- <listitem>
- <simpara>
- Require minimal interface code to implement the extensions
- </simpara>
- </listitem>
- <listitem>
- <simpara>
- Not to impact performance or increase resource usage unduly
- </simpara>
- </listitem>
- <listitem>
- <simpara>
- Versioning
- </simpara>
- </listitem>
- <listitem>
- <simpara>
- Be able to be extended itself fairly easily.
- </simpara>
- </listitem>
- </itemizedlist>
- <para>
- EPlugin manages to fulfill these goals in most cases. EPlugin isn't a
- single object or interface in itself, although there is an object
- titled EPlugin, it is a synergistic
- <footnote><simpara>I've always wanted to use
- <emphasis>synergistic</emphasis> in a sentence since
- I read it on the back of the Commodore 64 Users
- Guide.</simpara></footnote>
- collection of integrated and
- continually evolving objects which work together to achieve these
- goals (and that will definitly be the end of the MarketSpeak). It
- consists of a loader to invoke extension callbacks, hooks to resolve
- these callbacks, targets to identify context, and managers which are
- used by the core code to provide functionality and merging points for
- the extensions.
- </para>
- <para>
- EPlugin's design was inspired and influenced by the &eclipse;
- project. It aims at a lower target however, so it was able more easily
- implemented in a practical time-frame.
- </para>
- <para>
- &EPlugin; was chosen as an approach to the problem of adding
- scriptability to &Evolution;. Instead of just linking to Perl, or
- Python, or even Mono by itself an approach was taken which focuses on
- the application end of the system. So instead of making every part
- of the application export its functionality and have to deal with
- whatever script engine is present, EPlugin addresses the hooking part
- of the equation in a language-independent manner. It also attemps to
- do it in a way which doesn't impact on the application development
- either.
- </para>
- <para>
- The EPlugin world is awash with its own language. The next few
- sections will introduce the basic plugin nomenclature and high-level
- view of this world.
- </para>
-
- </sect1>
-
- <sect1>
- <title>
- Loaders
- </title>
- <para>
- The core of EPlugin is a light-weight object loader and callback
- invocation system. Because of the varied calling conventions of
- different languages, and to reduce the overhead of the plugin system
- itself, all callbacks only receive and return a single argument. By
- using structures to pass complex arguments, native C plugins require
- no extra overhead, and marshalling details are moved into the plugin
- implementation itself where required. It also simplifies memory
- management issues significantly. For example, the C plugin handler
- merely loads a shared library using GModule, and resolves a symbol by
- name; and is so all of 50 lines of code, total. The loaders are the
- only modules which need to interace with non-native code or
- conventions.
- </para>
- <para>
- The other task of the plugin core is to load XML definitions of the
- plugins. Extension hooks are registered with the plugin core before
- the plugins are scanned, and are automatically instantiated to load
- each definition appropriately as they are encountered.
- </para>
- <para>
- At each layer, a level of indirection is used so that new loaders and
- new hooks can be added transparently, and extend the plugin
- definition freely with any information they require.
- </para>
- </sect1>
-
- <sect1>
- <title>
- Hooks
- </title>
- <para>
- The hooks
- <footnote>
- <para>A hook is something you can hang your stuff on.</para>
- </footnote>
- which are registered with the loader provide meta-data for
- the management implementation layer for extending it at
- run-time. Their primary
- functions are to load the detail of the XML plugin definition, map it
- to the implementation, and marshal the implementation callbacks to
- the common plugin interface. How they do this depends on the
- implementation itself, and ranges from registering factory methods to
- simply adding the items directly.
- </para>
- <para>
- In most cases the physical object need not be loaded until the
- callback is invoked, since the plugin definitions provide enough
- contextual information to build the interface or determine when they
- need to be invoked.
- </para>
- </sect1>
-
- <sect1>
- <title>
- Managers
- </title>
- <para>
- Managers
- <footnote>
- <para>
- Unlike real managers, these are the ones that do the heavy lifting.
- </para>
- </footnote>
- provide tools for the core code to extend itself at specific
- points, and in many cases are the objects used directly in the code
- to implement core features. In other cases they simply provide the
- hooks with an entry point into &Evolution;. For example, for the main
- menu hook, the manager is a thin layer to BonoboUI. On the other
- hand, EPopup is a complete implementation of a popup menu management
- system which was already used in &Evolution; 2.0. Some managers are
- one-off objects used as constructors for other objects, others are
- view-dependent, and some are static objects, such as the Event
- routers.
- </para>
- </sect1>
-
- <sect1>
- <title>
- Items
- </title>
- <para>
- Each manager uses a number of items to describe the object they
- control or create. The items are added to each manager instance from
- the plugins or from core code. The items from all of these sources
- are then merged together when required and processed accordingly. For
- example, menu items are merged into a tree of GtkMenus. Events on the
- other hand are simply ordered and then invoked in the order of their
- priority. Items are part of the manager implementation, and in
- &EPlugin; they are all extensible objects too, which the hooks use to
- perform mapping to the plugin. Items may be extended by code hooking
- into the implementation, either the plugin hooks, or the core code.
- </para>
- </sect1>
-
- <sect1>
- <title>
- Targets
- </title>
- <para>
- Targets
- <footnote><para>Think of a target as the target of
- interest.</para></footnote>
- are view or component specific context objects. They contain
- enough information to be used as stand-alone contexts to implement
- callbacks for both core functions and plugin hooks. For example for
- the mail view, a select target contains a folder and a list of
- selected messages. An attachment (part) target contains the
- &Camel; representation of the part and the mime-type for
- that part. Targets are part of the manager implementation and are
- extended by subclassing the manager.
- </para>
- </sect1>
- </chapter>
-
- <chapter id="plugin-loaders">
- <title>
- Plugin Loaders
- </title>
- <para>
- Plugin loaders implement a hool to a new language, or loading system in the
- plugin system. The actual binding of new languages to the plugin system or
- other parst of &Evolution;s api's are beyond the scope of this
- document, some languages make this easier than others.
- </para>
- <sect1 id="plugin-loaders-base">
- <title>
- Base Plugin
- </title>
- <para>
- The <link linkend="API-struct--EPlugin">EPlugin base class</link>
- is an abstract class which provides the basic services for plugin
- implementations. The main services are:
- <itemizedlist>
- <listitem><simpara>Resolve plugin type and instantiate an EPlugin
- object to represent and manage it.</simpara></listitem>
- <listitem><simpara>Load the base structure of the XML plugin
- definition files.</simpara></listitem>
- <listitem><simpara>Resolve plugin hook types and instantiate a
- EPluginHook to represent and manage it.</simpara></listitem>
- <listitem><simpara>Provide a simple, language-independent api for
- invoking plugin callbacks</simpara></listitem>
- <listitem><simpara>Provide I18N context for plugins.</simpara></listitem>
- <listitem><simpara>Some simple static helper methods to simplify each
- implementing class.</simpara></listitem>
- </itemizedlist>
- See the <xref linkend="REF-EPlugin"/> for
- these details.
- </para>
-
- <sect2 id="plugin-loaders-definition">
- <title>Definition of a Plugin</title>
- <para>
- The base plugin XML definition. Subclasses of EPlugin extend this
- basic structure with additional parameters or elements as they
- require.
- </para>
- <para>
- Note that there may be any number of <sgmltag>e-plugin</sgmltag>
- elements in a given plugin file, this may be used to simplify
- distribution of plugin packages.
- </para>
- <programlisting>
- <![CDATA[
-<?xml version="1.0">
-<e-plugin-list>
- <e-plugin
- id="unique id"
- type="loader type"
- domain="translation domain" ?
- name="plugin name"
- ...>
- <description>long description</description> ?
- <author name="real name"? email="email addr"?/> *
- <hook
- class="hook class"
- ...>
- ...
- </hook> +
- </e-plugin> +
-</e-plugin-list>]]></programlisting>
- <variablelist>
- <varlistentry>
- <term><parameter>id</parameter></term>
- <listitem>
- <simpara>
- A unique string identifying this plugin. By convention this
- will follow the java-like class namespace system.
- e.g. <constant>com.ximian.evolution.test-plugin</constant>
- </simpara>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><parameter>type</parameter></term>
- <listitem>
- <simpara>
- The type name of the plugin loader. Currently <link
- linkend="plugin-loaders-lib">shlib</link> and <link
- linkend="plugin-loaders-mono">mono</link> are the only
- supported values. If no known handler is registered for this
- type, the plugin definition is silently ignored.
- </simpara>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><parameter>domain</parameter></term>
- <listitem>
- <simpara>
- The translation domain for this plugin, as passed to the
- <function>dcgettext</function> call of the gettext package.
- If not supplied then the default application domain is used
- (i.e. &quot;evolution&quot;). This is used to translate
- translatable strings for display.
- </simpara>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><parameter>name</parameter></term>
- <listitem>
- <simpara>
- A short name for the plugin. &quot;Bob's Wonder
- Extender&quot; might be suitable. This value will be
- translated.
- </simpara>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><parameter>description</parameter></term>
- <listitem>
- <simpara>
- A longer description of the plugin's purpose. This value will be
- translated.
- </simpara>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><parameter>author</parameter></term>
- <listitem>
- <simpara>
- One of the authors who wrote the plugin. Either
- <parameter>name</parameter> or <parameter>email</parameter>
- may be ommitted. This element may occur multiple times to
- indicate multiple authors.
- </simpara>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><parameter>hook</parameter></term>
- <listitem>
- <simpara>
- This is a list of all of the hooks that this plugin wishes to
- hook into. See the <link linkend="plugin-hooks">Plugin
- Hooks</link> section for the details of the basic hook
- types defined.
- </simpara>
- <simpara>
- The hook <parameter>class</parameter> is resolved using the
- registered hook types, and if none can be found, or a version
- mismatch occurs, then the hook is silently ignored.
- </simpara>
- </listitem>
- </varlistentry>
- </variablelist>
- </sect2>
- </sect1>
-
- <sect1 id="plugin-loaders-lib">
- <title>
- Shared Library Loader
- </title>
- <para>
- The shared library loader <link
- linkend="API-struct--EPluginLib">EPluginLib</link> implements a
- concrete EPlugin type which loads GNU shared libraries via the
- GModule api. It simply resolves symbols directly from the loaded
- shared object and invokes them expecting a function signature of
- <type>EPluginLibFunc</type>.
- </para>
- <para>
- To manage plugin lifecycle, the function
- <function>e_plugin_lib_enable</function>
- will be invoked which allows the plugin to initialise itself. Its
- signature should match <type>EPluginLibEnableFunc</type>, and it will
- be called with <parameter>enable=1</parameter>. If the enable
- function returns non-zero it is assumed to have failed intialisation
- and will not be invoked further.
- </para>
-
- <sect2 id="plugin-loaders-lib-definition">
- <title>Definition</title>
- <para>The shared library loader only requires one extra parameter in
- the base plugin definition.
- </para>
- <programlisting>
- <![CDATA[
-<e-plugin
- ...
- type="shlib"
- location="/full/path/name.so"
- load-on-startup="true" ?
- ...
- <hook class="...">
- ...
-</e-plugin>]]></programlisting>
- <variablelist>
- <varlistentry>
- <term><parameter>type</parameter></term>
- <listitem>
- <simpara>
- The type name of the shared library plugin is
- <constant>shlib</constant>.
- </simpara>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><parameter>location</parameter></term>
- <listitem>
- <simpara>
- The location parameter contains
- the full path-name of a shared object to load.
- </simpara>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><parameter>load-on-startup</parameter></term>
- <listitem>
- <simpara>
- If provided, indicates that the plugin should be loaded and
- enabled when the application is first started. Normally the
- plugin is only loaded when necessary, i.e. when a callback is
- first invoked. Only use this option if you have defined an
- <function>e_plugin_lib_enable</function> callback in your
- module, and only if absolutely necessary.
- </simpara>
- </listitem>
- </varlistentry>
- </variablelist>
- </sect2>
-
- <sect2 id="plugin-loaders-lib-invocation">
- <title>Invocation</title>
- <simplesect>
- <title>Function specification
- </title>
- <para>Where a function spec is required in a plugin
- hook definition, it should simply be the full name of an
- exported symbol in the shared object.
- </para>
- </simplesect>
- <simplesect>
- <title>Callback signature</title>
- <funcsynopsis><funcprototype>
- <funcdef>void * <function>function</function></funcdef>
- <paramdef>EPlugin * <parameter>ep</parameter></paramdef>
- <paramdef>void * <parameter>data</parameter></paramdef>
- </funcprototype></funcsynopsis>
- <variablelist>
- <varlistentry>
- <term><function>function</function></term>
- <listitem>
- <simpara>
- The callback function.
- </simpara>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><parameter>ep</parameter></term>
- <listitem>
- <simpara>
- The container EPlugin representing this plugin.
- </simpara>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><parameter>data</parameter></term>
- <listitem>
- <simpara>
- Hook context data. It is part of the hook's api to specify
- the type of this pointer.
- </simpara>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><returnvalue>return value</returnvalue></term>
- <listitem>
- <simpara>
- Return data. It is part of the hook's api to specify the
- type of this pointer.
- </simpara>
- </listitem>
- </varlistentry>
- </variablelist>
- </simplesect>
- </sect2>
- </sect1>
-
- <sect1 id="plugin-loaders-mono">
- <title>
- Mono Assembly Loader
- </title>
- <para>
- The mono assembly loader <link
- linkend="API-struct--EPluginMono">EPluginMono</link> implements a
- concrete EPlugin type which loads C# assemblies using Mono. Apart
- from loading the assembly, it can optionally instantiate a class to
- implement the callback or invoke static methods directly.
- </para>
-
- <sect2 id="plugin-loaders-mono-definition">
- <title>Definition</title>
- <para>The mono assembly loader needs the name of the assembly and
- optionally the name of the class for handling the callbacks.
- </para>
- <programlisting>
- <![CDATA[
-<e-plugin
- ...
- type="mono"
- location="/full/path/name.dll"
- handler="PluginClass" ?
- ...
- <hook class="...">
- ...
-</e-plugin>]]></programlisting>
- <variablelist>
- <varlistentry>
- <term><parameter>type</parameter></term>
- <listitem>
- <simpara>
- The type name of a mono assembly plugin is
- <constant>mono</constant>.
- </simpara>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><parameter>location</parameter></term>
- <listitem>
- <simpara>
- The location parameter contains
- the full path-name of an assembly to load.
- </simpara>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><parameter>handler</parameter></term>
- <listitem>
- <simpara>
- If supplied, the handler contains the fully qualified name of
- the class which handles all callbacks for this plugin. If a
- handling class is used, then the function specifications
- become relative to this class.
- </simpara>
- <simpara>
- This class will be
- instantiated once upon the first callback invocation, and
- remain active for the life of the plugin (or application).
- </simpara>
- </listitem>
- </varlistentry>
- </variablelist>
- </sect2>
-
- <sect2 id="plugin-loaders-mono-invocation">
- <title>Invocation</title>
- <simplesect>
- <title>Function specification
- </title>
- <para>If no <parameter>handler</parameter> class is specified, then
- the function specification must match a static method in the
- assembly. This is passed to <function>mono_method_desc_new</function>
- and <function>mono_method_desc_search_in_image</function>,
- typically <function>FunctionName(intptr)</function>.
- </para>
- <para>
- If the handler is specified, then the function specification is
- relative to the handler class. This is passed to
- <function>mono_method_desc_new</function> and
- <function>mono_method_desc_search_in_class</function>, typically
- <function>:MethodName(intptr)</function>.
- </para>
- </simplesect>
- <simplesect>
- <title>Callback signature</title>
- <funcsynopsis><funcprototype>
- <funcdef>IntPtr <function>function</function></funcdef>
- <paramdef>IntPtr <parameter>data</parameter></paramdef>
- </funcprototype></funcsynopsis>
- <variablelist>
- <varlistentry>
- <term><function>function</function></term>
- <listitem>
- <simpara>
- The callback method.
- </simpara>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><parameter>data</parameter></term>
- <listitem>
- <simpara>
- The hook context data. This is a pointer to unmanaged data, and it is up-to the plugin to interpret this
- data right now, although some helper binding classes are
- planned. FIXME: hook-up when they and doco are done.
- </simpara>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><returnvalue>return value</returnvalue></term>
- <listitem>
- <simpara>
- The callback return data. It is up to the hook's api to
- define the type of this pointer. It may be a simple boxed
- value type, or a memory pointer allocated in unmanaged memory (e.g. a
- GObject handle or a CamelObject cobject value).
- </simpara>
- </listitem>
- </varlistentry>
- </variablelist>
- </simplesect>
- </sect2>
- </sect1>
-
- </chapter>
-
- <chapter id="plugin-hooks">
- <title>
- Plugin Hooks
- </title>
- <para>
- This chapter will introduce the available plugin hook types. A given
- plugin can hook into any of these hooks any number of times. Some refer
- to specific instances of objects and others are implicitly defined.
- </para>
- <para>
- By design, there is considerable similarity and orthogonality amongst
- all of the various hook types and management objects.
- </para>
- <sect1 id="plugin-hooks-popup">
- <title>
- Popup Menus
- </title>
- <para>
- The popup menu hook lets you hook into any of the context menus in
- &Evolution;, by name and context. Complex, dynamic, and multi-level
- menus are created on the fly by merging the items for a given menu as
- it is being shown. Each component provides its own context targets to
- self-describe the situation under which the menu is invoked. Plugins
- and core code alike are then invoked at the user's direction. The
- popup manager and all context data lives as long as the menu and
- until a choice is made, simplifying memory management.
- </para>
- <para>
- The menu is merged from multiple plugins and core application code by
- using a simple lexiographical sort of an absolute path to the menu
- item. This merged list is then scanned and expanded into a tree of
- menus. Individual items can be hidden or inactive based on the target
- and a simple mask which is defined by the component itself. A rich
- collection of menu item types are possible, from simple, to
- checkboxes or images. The popup code is simple, and easy to use, and
- simplifies the use of popup menu's in the core application anyway,
- that they are pluggable is a free-bonus.
- </para>
- <sect2>
- <title>Defining a popup hook</title>
- <para>
- Not sure if this fits here as such. Probably temporary placeholder.
- </para>
- <programlisting>
- <![CDATA[
-<hook class="com.ximian.evolution.mail.popup:1.0">
- <menu id="menuid" target="targettype">
- <item
- type="item | toggle | radio | image | submenu | bar"
- active ?
- path="foo/bar"
- label="menu text"
- icon="icon name" ?
- visible="target mask" ?
- enable="target mask" ?
- activate="function spec"/> *
- </menu> *
-</hook>]]></programlisting>
- <!-- this is all too bloody verbose, is there a better way? -->
- <para>
- <emphasis>Need to define menu tag</emphasis>
- </para>
- <variablelist>
- <varlistentry>
- <term><parameter>type</parameter></term>
- <listitem>
- <simpara>
- The menu item type. The type maps directly to the
- corresponding EPopupItem types.
- </simpara>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><parameter>active</parameter></term>
- <listitem>
- <simpara>
- If present, then radio or toggle menu items are active when
- first shown. After the first instantiation, they will
- remember their active state.
- </simpara>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><parameter>path</parameter></term>
- <listitem>
- <simpara>
- A '/' separated path used to position the item within menu
- and in the right submenu. Each menu and plugin should
- define how its menu's are layed out so other plugins can
- determine what value to use here.
- </simpara>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><parameter>label</parameter></term>
- <listitem>
- <simpara>
- The text to be displayed on the menu item. This will be
- translated based on the plugin translation domain.
- </simpara>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><parameter>icon</parameter></term>
- <listitem>
- <simpara>
- The name of a gnome-icon-theme standard icon, or the full
- path-name of an icon image to use as menu item icon. This
- will be blank if not supplied.
- </simpara>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><parameter>visible</parameter></term>
- <listitem>
- <simpara>
- A comma separated list of mask enumeration values used to
- define when this item is shown. What values are valid
- depend on the menu hook class of the menu being hooked
- onto.
- </simpara>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><parameter>enable</parameter></term>
- <listitem>
- <simpara>
- A comma separated list of mask enumeration values used to
- define when this item is enabled. What values are valid
- depend on the menu hook class of the menu being hooked
- onto. This is currently unimplemented.
- </simpara>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><parameter>activate</parameter></term>
- <listitem>
- <simpara>
- A plugin-type specific function specification. This
- function will be resolved and called when the menu item is
- activated.
- </simpara>
- </listitem>
- </varlistentry>
- </variablelist>
- </sect2>
- <sect2>
- <title>Merging Plugin Items</title>
- <para>
- A very simple algorithm is used to form the menu by merging the
- plugin's menu items with the system menu items for a given menu.
- What follows is a simple example of how this is done. It will be
- demonstrated using a simplified menu from the message-list, as used
- in the &Evolution; Mail component, and a simple plugin which adds a
- single menu item and menu separator into the middle of the menu,
- when appropriate.
- </para>
- <para>
- When the application wishes to show a specific popup menu, it
- creates a new EPopup object with a unique menu id to manage it. It
- adds all of the items it wishes to add to the menu (see "Builtin
- Items" in the following diagrams). The application then asks for
- the menu to be created. The menu building
- process adds all of the menu items from all plugins that target
- this specific menu into a flat list, discarding those which don't
- match the current Target qualifications. The result is then
- sorted using a simple ASCII sort, and then a menu built from the
- remaining items. This is probably best described by some diagrams.
- </para>
- <para>
- The following two diagrams show how a popup menu is automatically
- customised depending on the context. On the left of each diagram
- are all of the menu items which apply to the example menu. The
- menu label, with the qualifiers listed underneath, with the menu
- item path along-side. On the right-hand side of each diagram is
- the result of:
- </para>
- <itemizedlist>
- <listitem><simpara>Selecting items based on the target
- qualifiers</simpara></listitem>
- <listitem><simpara>Sorting the remaining items based on their
- path.</simpara></listitem>
- <listitem><simpara>Building this sorted list into a
- menu.</simpara></listitem>
- </itemizedlist>
-
- <para>
- The actual list of target qualifiers are defined by the application
- itself. Generally a specific menu will have only one possible
- target, and a list of matching target qualifiers. The example
- shows how a plugin can insert a menu item anwhere it wishes in the
- menu system. Submenus are also supported, and they work in exactly
- the same manner, with / characters used to separate submenu paths.
- A submenu must sort into the position immediately before the
- definition of its items.
- </para>
-
- <figure id="e-popup-merge-1">
- <title>Merging a menu with many items selected.</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/e-popup-merge-1.pic" format="PIC" />
- </imageobject>
- <imageobject>
- <imagedata fileref="images/e-popup-merge-1.eps" format="EPS"/>
- </imageobject>
- <imageobject>
- <imagedata fileref="images/e-popup-merge-1.png" format="PNG"/>
- </imageobject>
- <textobject>
- <phrase>Showing how a display list of menu items is selected
- and then sorted for display.</phrase>
- </textobject>
- </mediaobject>
- </figure>
-
- <para>
- The first diagram shows when the target qualifiers are
- <parameter>many</parameter>, and
- <parameter>mark_unread</parameter>. The menu items which operate
- on only one selected message are not shown. Similarly for those
- able to be marked as unread (i.e. they are currently read).
- </para>
-
- <figure id="e-popup-merge-2">
- <title>Merging a menu with one item selected.</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/e-popup-merge-2.pic" format="PIC"/>
- </imageobject>
- <imageobject>
- <imagedata fileref="images/e-popup-merge-2.eps" format="EPS"/>
- </imageobject>
- <imageobject>
- <imagedata fileref="images/e-popup-merge-2.png" format="PNG"/>
- </imageobject>
- <textobject>
- <phrase>Showing how a display list of menu items is selected
- and then sorted for display with different qualifiers.</phrase>
- </textobject>
- </mediaobject>
- </figure>
-
- <para>
- This diagram shows when the target qualifiers are
- <parameter>one</parameter>, and
- <parameter>mark_read</parameter>. The menu items which operate
- on only many selected messages are not shown. Similarly for those
- able to be marked as read.
- </para>
- </sect2>
- </sect1>
-
- <sect1 id="plugin-hooks-menu">
- <title>
- Main menus
- </title>
- <para>
- The main menu hook lets you hook into various main menus in
- &Evolution;, based on the current active view (component). The system
- works by piggy-backing on the existing use of the BonoboUI menu
- system used by all of the &Evolution; components. Bonobo handles the
- menu merging and user input, and the hook resolves the verb being
- invoked and redirects it to the plugin. Each view defines a single
- target which describes the appropriate context. For the Mail view,
- this is the current folder and currently selected message(s).
- </para>
- <para>
- Each view keeps track of its own manager object. When it is
- (de)activated, it also (de)activates the management object which
- dynamically adds and removes the menu items from the
- BonoboUIContainer via a supplied BonoboUI XML definition file
- &lt;perhaps it should embed the bonobouixml&gt;. If the target
- changes, the view lets the manager know, and it updates the
- visibility and sensitivity of objects appropriately, allowing
- reasonably dynamic user-interfaces to be managed automatically. The
- plugin itself isn't loaded until the menu item in question is invoked
- </para>
- <para>
- Simple menu items and toggle menu items are supported currently.
- Also, because actual menu display is driven by BonoboUI, then toolbar
- items can also be added using this mechanism.
- </para>
- <sect2>
- <title>Defining a menu hook</title>
- <para>
- Not sure if this fits here as such. Probably temporary placeholder.
- </para>
- <programlisting>
- <![CDATA[
-<hook class="com.ximian.evolution.mail.bonoboMenu:1.0">
- <menu id="menuid" target="targettype"
- <ui file="/path/to/bonobo-ui-menu-definition.xml"> +
- <item
- type="item | toggle | radio"
- active ?
- path="/commands/FooBar"
- verb="FooBar"
- visible="target mask" ?
- enable="target mask" ?
- activate="function spec"/> *
- </menu> *
-</hook>]]></programlisting>
- <para>
- <emphasis>Need to define menu tag</emphasis>
- </para>
- <variablelist>
- <varlistentry>
- <term><parameter>ui</parameter></term>
- <listitem>
- <simpara>
- The <parameter>ui</parameter> element contains a filename of the
- BonoboUI XML menu definition to load when the view is activated. Any number of
- <parameter>ui</parameter> elements may be defined, and they
- are all loaded.
- </simpara>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><parameter>type</parameter></term>
- <listitem>
- <simpara>
- The menu item type. The type maps directly to the
- corresponding EMenuItem types.
- <parameter>radio</parameter> is currently not implemented.
- </simpara>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><parameter>active</parameter></term>
- <listitem>
- <simpara>
- If present, then radio or toggle menu items are active when
- first shown. After the first instantiation, they will
- remember their active state.
- </simpara>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><parameter>path</parameter></term>
- <listitem>
- <simpara>
- The BonoboUI element path corresponding to this menu item.
- </simpara>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><parameter>verb</parameter></term>
- <listitem>
- <simpara>
- The BonoboUI verb corresponding to the item to be listened to.
- </simpara>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><parameter>visible</parameter></term>
- <listitem>
- <simpara>
- A comma separated list of mask enumeration values used to
- define when this item is shown. What values are valid
- depend on the menu hook class of the menu being hooked
- onto.
- </simpara>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><parameter>enable</parameter></term>
- <listitem>
- <simpara>
- A comma separated list of mask enumeration values used to
- define when this item is sensitive. What values are valid
- depend on the menu hook class of the menu being hooked
- onto.
- </simpara>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><parameter>activate</parameter></term>
- <listitem>
- <simpara>
- A plugin-type specific function specification. This
- function will be resolved and called when the menu item is
- activated. The funciton's parameters will depend on the type
- of menu item being invoked.
- </simpara>
- </listitem>
- </varlistentry>
- </variablelist>
- </sect2>
- <sect2>
- <title>Merging Plugin Items</title>
- <para>
- Merging is performed by BonoboUI, and the source of the menu data
- is defined by the <parameter>ui</parameter> file.
- </para>
- </sect2>
- </sect1>
-
- <sect1 id="plugin-hooks-config">
- <title>
- Configuration Pages and Wizards
- </title>
- <para>
- Configuration pages are somewhat more complex than any of the other
- types of hookable object. This is reflected in the complexity of the
- items and callbacks involved.
- </para>
- <para>
- Essentially, the EConfig object is used in combination to both
- instrument existing windows and building new content. Each
- configuration window comprises of several basic elements with some
- minor variations allowed. It consists of a number of pages in a
- specific order, each containing a number of titled sections in a specific
- order, each containing a number of items. The variations are that
- the top-level widget may be a GtkNotebook or a GnomeDruid; and each
- section may instrument a GtkBox, or a GtkTable. The definition of
- the available hooks will define what form they take.
- </para>
- <para>
- The EConfig manager uses the description of all the items supplied to
- it to build the complete window. It can also drive various aspects
- of the UI, such as navigating through a druid or handling
- instant-apply vs. modify-and-save dialogues.
- </para>
- <figure id="e-config-flow">
- <title>Event and Data Flow in EMConfig</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/e-config-flow.pic" format="PIC"/>
- </imageobject>
- <imageobject>
- <imagedata fileref="images/e-config-flow.eps" format="EPS"/>
- </imageobject>
- <imageobject>
- <imagedata fileref="images/e-config-flow.png" format="PNG"/>
- </imageobject>
- <textobject>
- <phrase>The flow of information and control signals in the
- configuration management object.</phrase>
- </textobject>
- </mediaobject>
- </figure>
-
- <sect2>
- <title>Defining a configuration page hook</title>
- <para>
- Not sure if this fits here as such. Probably temporary placeholder.
- </para>
- <programlisting>
- <![CDATA[
-<hook class="com.ximian.evolution.mail.config:1.0">
- <group
- id="window id"
- target="targettype"
- check="function spec"?
- commit="function spec"?
- abort="function spec"?>
- <item
- type="book | druid | page | page_start | page_finish | section | section_table | item"
- path="/absolute/path"
- label="name" | factory="function spec"
- /> *
- </menu> *
-</hook>]]></programlisting>
-
- <sect3>
- <title>Group Element Properties</title>
-
- <variablelist>
- <varlistentry>
- <term><parameter>id</parameter></term>
- <listitem>
- <simpara>
- The name of the configuration window to which this hook
- applies.
- </simpara>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><parameter>target</parameter></term>
- <listitem>
- <simpara>
- The type of target this configuration window applies too.
- This will normally be tied directly to the specific
- configuration window itself.
- </simpara>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><parameter>check</parameter></term>
- <listitem>
- <simpara>
- A callback which will be invoked to validate the
- configuration or a specific page of the configuration. It
- will be invoked with a
- <link
- linkend="API-struct--EConfigHookPageCheckData">EConfigHookPageCheckData</link>
- structure, and is expected to return a non-NULL value if
- the page validates.
- </simpara>
- <simpara>
- The callback will be expected to handle all
- <parameter>pageid</parameter>'s present in the
- configuration window, and should return
- <constant>TRUE</constant> for pages it does not recognise.
- If <parameter>pageid=&quot;&quot;</parameter> (an empty
- string), then the <parameter>check</parameter> function
- should validate all settings. See also <xref
- linkend="API-e-config-add-page-check" />.
- </simpara>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><parameter>commit</parameter></term>
- <listitem>
- <simpara>
- A callback which will be invoked to commit the
- configuration data, if the configuration page isn't an
- instant-apply one. This callback can write any
- configuration changes to permanent storage. It is not used
- for instant-apply windows.
- </simpara>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><parameter>abort</parameter></term>
- <listitem>
- <simpara>
- A callback which will be invoked to abort the configuration
- process. This callback is called when the
- <guibutton>Cancel</guibutton> button is pressed on stateful
- configuration windows.
- </simpara>
- </listitem>
- </varlistentry>
- </variablelist>
- </sect3>
- <sect3>
- <title>Item Element Properties</title>
-
- <variablelist>
- <varlistentry>
- <term><parameter>type</parameter></term>
- <listitem>
- <simpara>
- The menu item type. The type maps directly to the
- corresponding EConfigItem types. Only one of
- <parameter>book</parameter> and <parameter>druid</parameter>
- may be supplied for the entire configuration page, and this
- will usually already be defined by the application.
- </simpara>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><parameter>path</parameter></term>
- <listitem>
- <simpara>
- The path to the configuration item in question. This is a
- simple string that when sorted using an ASCII sort will place
- the items in the right order. That is, sections before items
- before pages before the root object.
- </simpara>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><parameter>label</parameter></term>
- <listitem>
- <simpara>
- The textual label of this item. This may only be supplied
- for the section and page types. For sections it will be the
- section frame text. For pages this will be the druid page
- title or the notebook tab text. If a
- <parameter>factory</parameter>is supplied then this value is
- not used. This will be translated based on the plugin
- translation domain.
- </simpara>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><parameter>factory</parameter></term>
- <listitem>
- <simpara>
- If supplied, the factory method used to create the GtkWidget
- elements for this configuration item. Factories may be
- supplied for any of the item types. If no
- <parameter>label</parameter> is set then the
- <parameter>factory</parameter> must be set.
- </simpara>
- </listitem>
- </varlistentry>
- </variablelist>
- </sect3>
- </sect2>
- <sect2>
- <title>Generating Configuration Pages</title>
- <para>
- Configuration items essentially spam 3 dimensions, but are
- merged in a similar fashion to the way Popup items are merged. The
- main difference is that there are no target qualifiers used to
- select which items are shown, it is up to the item factory to
- either create or not create the item as it sees fit. The EConfig
- manager takes care of the rest, including removing un-used sections
- or pages.
- </para>
- <para>
- All items for a given configuration screen are converted into a
- list and sorted based on the <parameter>path</parameter>. The
- configuration builder then goes through each item, creating
- container widgets or calling factories as required. If a given
- page or section is empty, then it is removed automatically. This
- process isn't only a one-off process. For certain complex
- configuration screens, items or even pages and sections need to be
- dynamic based on a previous setting. EConfig supports this mode of
- operation too, in which case it re-builds the configuration screen
- the same way, and automatically destroys the old widgets
- <footnote><simpara>In most cases, in some cases additional manual
- processing is required in the factory
- callback.</simpara></footnote> and even re-orders pages and
- sections where appropriate to make the user-interface consistent.
- </para>
- <para>
- The following few examples some of the flexibility of the EConfig
- system.
- </para>
- <figure id="e-config-build-1">
- <title>The application defined, unaltered configuration page.</title>
- <mediaobject>
- <!-- do we need to build our own eps for the image? -->
- <imageobject>
- <imagedata fileref="images/e-config-build-1.png" format="PNG"/>
- </imageobject>
- <textobject>
- <phrase>Shows the original HTML Mail settings page.</phrase>
- </textobject>
- </mediaobject>
- </figure>
- <para>
- First we have the original configuration window. This is defined
- by the application, the application uses EConfig to build this
- window, and in the process EConfig instruments the sections that
- the application defines. This allows plugins to add new
- pages/sections/items anywhere on the page - to a granularity as
- defined by the application. For example the application may at
- minimum merely define the top-level notebook or druid object and a
- number of pages. When the pages are created the application could
- add as much content as it wants, which would still allow plugins to
- extend the user interface, but only by adding options to the end of
- each page. At the other end of the scale the application could
- enumerate every single item (i.e. row) in every section on every
- page, allowing plugins to put new items anywhere in the display.
- </para>
- <figure id="e-config-build-2">
- <title>A plugin adding a new section to an existing page.</title>
- <mediaobject>
- <!-- do we need to build our own eps for the image? -->
- <imageobject>
- <imagedata fileref="images/e-config-build-2.png" format="PNG"/>
- </imageobject>
- <textobject>
- <phrase>Shows the HTML Mail settings page with a new section
- and item added by a plugin.</phrase>
- </textobject>
- </mediaobject>
- </figure>
- <para>
- In this case the plugin has merely added a new section on the
- bottom of the HTML Mail settings page. When the factory is called
- the plugin has a parent GtkTable (in this case, it could be a VBox)
- and borderless frame already defined, and it just has to
- instantiate its own control widgets, add them to the table, and
- return one of the widgets. The returned widget is used later if
- the window needs to be reconfigured, although this particular configuration
- page is static so it isn't needed.
- </para>
- <figure id="e-config-build-3">
- <title>A plugin inserting a new page for its settings.</title>
- <mediaobject>
- <!-- do we need to build our own eps for the image? -->
- <imageobject>
- <imagedata fileref="images/e-config-build-3.png" format="PNG"/>
- </imageobject>
- <textobject>
- <phrase>Shows the plugin adding a new page for its setting as
- an alternative.</phrase>
- </textobject>
- </mediaobject>
- </figure>
- <para>
- And finally we have exactly the same plugin, which has exactly the
- same code. But a small change to the plugin definition allows the
- plugin to add an arbitrary new page (in an arbitrary position) into
- the whole window. If this was a druid, then new druid pages can
- also be inserted at arbitrary locations, and page navigation (in a
- strictly linear manner) is automatically controlled by EConfig as
- per <xref linkend="e-config-flow"/>.
- </para>
- <para>
- In practice, EConfig provides more than it takes the application to
- use - generally little or no extra application code is required to
- use it. It also
- <footnote><simpara>Or it will - the code needs some
- tweaking.</simpara></footnote> enforces and simplifies HIG
- compliance. And as a side-benefit to the application it
- transparently provides extension hooks for
- external code to provide a seamlessly integrated user experience.
- </para>
- </sect2>
- </sect1>
-
- <sect1 id="plugin-hooks-event">
- <title>
- Events
- </title>
- <para>
- No extensibility framework would be complete without an event
- system. Events are used to reflect changes in internal state of the
- application, and track actions by the user. They can contain any
- information and additionally can be filtered based on the information
- itself. Special targets are used, as in the other plugin hooks, to
- hold this information.
- </para>
- <para>
- Event managers are defined to contain the different event types that
- a given component can export. Only one event manager object is
- instantiated for each component, and each plugin listening to events
- from that component are registered on that event manager directly.
- </para>
- <para>
- Events handlers have priorities, and can swallow events, allowing
- some level of complexity of event routing. This feature might not
- prove useful and may be removed in the future if it isn't.
- </para>
- <sect2>
- <title>Defining an event hook</title>
- <para>
- Not sure if this fits here as such. Probably temporary placeholder.
- </para>
-
- <programlisting>
- <![CDATA[
-<hook class="com.ximian.evolution.mail.events:1.0">
- <event
- target="target name"
- id="event name"
- type="pass | sink" ?
- priority="signed integer" ?
- enable="target mask" ?
- handle="function spec"/> *
-</hook>]]></programlisting>
- <variablelist>
- <varlistentry>
- <term><parameter>target</parameter></term>
- <listitem>
- <simpara>
- The target type of the event listener. This will normally
- match in a 1:1 relationship to the event
- <parameter>id</parameter> itself.
- </simpara>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><parameter>id</parameter></term>
- <listitem>
- <simpara>
- The name of the event to listen to. By convention the names
- will be of the form
- <constant>target.event</constant>.
- e.g. <constant>folder.changed</constant>, or
- <constant>message.read</constant>, etc. Although they are
- just simple case-sensitive strings.
- </simpara>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><parameter>type</parameter></term>
- <listitem>
- <simpara>
- The event listener type. The type maps directly to the corresponding
- corresponding EEventItem types.
- </simpara>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><parameter>priority</parameter></term>
- <listitem>
- <simpara>
- A signed integer specifying the priority of this event
- listener. 0 (zero) should be used normally, although positive
- and negative integers in the range -128 to 127 may aslo be
- used.
- </simpara>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><parameter>enable</parameter></term>
- <listitem>
- <simpara>
- A comma separated list of mask enumeration values used to
- qualify when this event listener is invoked. What values are valid
- depend on the event hook class.
- </simpara>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><parameter>handle</parameter></term>
- <listitem>
- <simpara>
- A plugin-type specific function specification. This
- function will be resolved and called when an event is routed to
- this listener.
- </simpara>
- </listitem>
- </varlistentry>
- </variablelist>
- </sect2>
- </sect1>
-
- <sect1 id="plugin-hooks-format">
- <title>
- Mail Formatter
- </title>
- <para>
- The mail formatter plugin will invoke plugin code to format any part
- of an email based on mime-type. There are several formatters used
- internally by the mailer for different contexts, and each can be
- hooked into separately, providing extensible mail formatting for
- everything from the primary mail display, to printing, to reply
- quoting and more. If you are implementing a handler for a given
- mime-type, each formatter appropriate for the data-type should be
- hooked into, so that it displays properly in all contexts.
- </para>
- <para>
- Since the management object in this case is the same formatting
- object as used by the core mail display engine, a plugin may override
- or reimplement complete new functionality seamlessly.
- </para>
- <para>
- This plugin hook isn't strictly part of the core functionality as it
- is provided only by the mail component. It however demonstrates that the
- plugin system is extensible itself.
- </para>
- <sect2>
- <title>Defining a formatter hook</title>
- <para>
- Not sure if this fits here as such. Probably temporary placeholder.
- </para>
-
- <programlisting>
- <![CDATA[
-<hook class="com.novell.evolution.mail.format:1.0">
- <group id="formatter type">
- <item
- flags="handler flags"
- mime_type="major/minor"
- format="function spec"/> +
- </group> +
-</hook>]]></programlisting>
- <variablelist>
- <varlistentry>
- <term><parameter>id</parameter></term>
- <listitem>
- <simpara>
- The actual formatter this applies to. e.g. EMFormat for the
- base formatter class, EMFormatHTML for HTML output to a
- GtkHTML object, etc.
- </simpara>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><parameter>flags</parameter></term>
- <listitem>
- <simpara>
- Flags to define whether this is an attachment or inline
- content.
- </simpara>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><parameter>id</parameter></term>
- <listitem>
- <simpara>
- The name of the event to listen to.
- </simpara>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><parameter>mime_type</parameter></term>
- <listitem>
- <simpara>
- The type of object this handler formats.
- </simpara>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><parameter>format</parameter></term>
- <listitem>
- <simpara>
- A plugin-type specific function specification. This
- function will be invoked to format objects of the specified
- <parameter>mime_type</parameter>.
- </simpara>
- </listitem>
- </varlistentry>
- </variablelist>
- </sect2>
-
- <sect2>
- <title>The formatting process</title>
- <para>
- The formatting process is driven by the <link
- linkend="API-struct--EMFormat">EMFormat</link> object, although
- there are different subclasses of this object used for different
- purposes. These behave quite differently so each must be explained
- separately. There is the basic formatter type which converts a
- CamelMimeMessage into a stream of data, and there is a HTML
- <link linkend="API-struct--EMFormatHTML">formatter type</link>
- which uses a GtkHTML object to parse the content
- and may request further information required to complete the
- formatting.
- </para>
- <para>
- A basic formatter goes through the following steps:
- </para>
- <orderedlist>
- <listitem>
- <simpara>Outputs pre-amble information. e.g. Flag-For-Followup
- status.</simpara>
- </listitem>
- <listitem>
- <simpara>Invokes <methodname>format_message</methodname> to begin the message
- formatting. <methodname>format_message</methodname> displays the message header, then
- looks up the content object.</simpara>
- </listitem>
- <listitem>
- <simpara>Using the mime-type of the content object (whether
- supplied or calculated), a handler is looked up from a
- per-class table to process the type.</simpara>
- </listitem>
- <listitem>
- <simpara>If no handler exists, then the data is formatted as an
- attachment.</simpara>
- </listitem>
- <listitem>
- <simpara>If a handler exists, then it is invoked to display that
- type. Depending on whether the data is to be displayed
- 'inline' or not, the data may also get an attachment expander
- and button.</simpara>
- </listitem>
- <listitem>
- <simpara>The handler transforms the part's data, if need be, and
- writes the appropriate format output to a stream.</simpara>
- </listitem>
- </orderedlist>
- <para>
- For conglomerate types, the formatting process is continued
- recursively, until all parts have been displayed, as appropriate.
- </para>
- <para>
- A HTML formatter goes through the same basic steps, but has
- additional features and requirements. It uses multiple
- threads. At least one other thread is used for all of the
- Camel message content operations since some of them may block on
- remote I/O. This also simplifies cancellation processing. Also,
- because it has access to a full HTML rendering object, references
- to embedded content (images, buttons, etc.) are also processed.
- </para>
- <para>
- Most format handlers don't need to know about all the fiddly
- details however. If they are just outputting HTML content with no
- out of band references, they work identical to the basic format
- handlers with the exception they cannot call any Gtk GUI code
- because of threading issues. This can still be done by using an
- IFRAME. If they want to embed an icon or other image,
- they simply need to insert the HTML IMG tag reference in their
- format handler, and setup a callback to handle it when GtkHTML
- requests it. EMFormat has some helper classes to make this
- only a few lines of code, including generation of the IMG SRC URL.
- IFRAMEs work identically to IMG tags, and similar process is
- involved with embedding custom widgets using the OBJECT tag.
- EMFormatHTML takes care of calling the right callbacks for the
- right embedded reference from the right thread.
- </para>
- <para>
- Since format handlers are chained off a given type, then a plugin
- can also inherit formatting behaviour as well as override it. This
- gives much greater flexibility since the plugin need only implement
- its behaviour in specific situations. e.g. an OpenPGP message
- handler could fall-back to the normal text-formatter if it doesn't
- detect the ASCII armour in a text/plain part. Or another handler
- may disable itself based on configuration or state.
- </para>
- <para>
- All format handlers for all types must also be fully re-entrant
- code (more or less write-once global and static variables) if
- they call any other formatting functions.
- </para>
- </sect2>
- </sect1>
- </chapter>
- </part>
-
- <part>
- <title>
- &Evolution; Hook Points.
- </title>
- <partintro>
- <para>
- This section enumerates all of the published hook points and target
- types available in each component in &Evolution;.
- </para>
-
- <simplesect>
- <title>Table Format</title>
- <informaltable>
- <tgroup cols="2">
- <colspec colnum="1" colname="field" colwidth="1*"/>
- <colspec colnum="2" colname="value" colwidth="4*"/>
- <tbody>
- <row>
- <entry>Id</entry>
- <entry>The hook point id.</entry>
- </row>
- <row>
- <entry>Target</entry>
- <entry>The target which this hook uses for its context data.
- Targets are described in a following section.
- </entry>
- </row>
- <row>
- <entry>Items</entry>
- <entry>If appropriate and defined, specifies identifying path
- names of items which make up the hook. e.g. popup menu
- items, and configuration pages. These item specifications
- allow the plugin writer to position their items
- appropriately.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </simplesect>
-
- </partintro>
- <chapter id="mail-hooks">
- <title>
- Mail Hooks
- </title>
- <para>
- <emphasis>
- Need to find out the right docbook to mark-up most of this
- text.
- </emphasis>
- </para>
-
- <sect1 id="mail-hooks-popup">
- <title>Popup menus</title>
-
- <para>
- The mail popup menu class is
- <interfacename>org.gnome.evolution.mail.popup:1.0</interfacename>.
- </para>
- <para>
- The plugin callback data will be the target matching the plugin
- menu itself, and the callback returns no value.
- </para>
-
- &em-popups;
-
- <sect2>
- <title>Internal popup menus</title>
- <para>
- The following popup menus are defined, but they are used with no
- target, and so provide no useful context if they were to be hooked
- onto.
- </para>
- <para>
- <interfacename>com.ximian.mail.messagelist.popup.drop</interfacename>
- is used for the ASK drop type on the message list.
- </para>
- <para>
- <interfacename>com.ximian.mail.storageset.popup.drop</interfacename>
- is used for the ASK drop type on the folder tree.
- </para>
- </sect2>
-
- <sect2>
- <title>Mail Popup Targets</title>
-
- <para>
- <emphasis>
- Not sure if this needs to explain the qualifier meanings, or
- leave it to the in-line comment stuff in the enumeration
- definition. Maybe it just needs a direct link to the
- enumeration.
- </emphasis>
- </para>
-
- <sect3 id="mail-hooks-popup-EMPopupTargetFolder">
- <title>Folder Target</title>
-
- <para>
- This target is used to define actions on a folder context.
- Normally associated with the folder tree.
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <colspec colnum="1" colname="field" colwidth="1*"/>
- <colspec colnum="2" colname="value" colwidth="4*"/>
- <tbody valign="top">
- <row>
- <entry>Name</entry>
- <entry><constant>folder</constant></entry>
- </row>
- <row>
- <entry>Structure</entry>
- <entry>
- <link
- linkend="API-struct--EMPopupTargetFolder">EMPopupTargetFolder</link>
- </entry>
- </row>
- <row>
- <entry>Qualifiers</entry>
- <entry>
- <simplelist>
- <member><constant>folder</constant> = <constant>EM_POPUP_FOLDER_FOLDER</constant></member>
- <member><constant>store</constant> = <constant>EM_POPUP_FOLDER_STORE</constant></member>
- <member><constant>inferiors</constant> = <constant>EM_POPUP_FOLDER_INFERIORS</constant></member>
- <member><constant>delete</constant> = <constant>EM_POPUP_FOLDER_DELETE</constant></member>
- <member><constant>select</constant> = <constant>EM_POPUP_FOLDER_SELECT</constant></member>
- </simplelist>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </sect3>
-
- <sect3 id="mail-hooks-popup-EMPopupTargetSelect">
- <title>Selection Target</title>
-
- <para>This target is used to define context for actions associated
- with a selection of mail messages from a specific folder.</para>
-
- <informaltable>
- <tgroup cols="2">
- <colspec colnum="1" colname="field" colwidth="1*"/>
- <colspec colnum="2" colname="value" colwidth="4*"/>
- <tbody valign="top">
- <row>
- <entry>Name</entry>
- <entry><constant>select</constant></entry>
- </row>
- <row>
- <entry>Structure</entry>
- <entry>
- <link
- linkend="API-struct--EMPopupTargetSelect">EMPopupTargetSelect</link>
- </entry>
- </row>
- <row>
- <entry>Qualifiers</entry>
- <entry>
- <simplelist>
- <member><constant>one</constant> = <constant>EM_POPUP_SELECT_ONE</constant></member>
- <member><constant>many</constant> = <constant>EM_POPUP_SELECT_MANY</constant></member>
- <member><constant>mark_read</constant> = <constant>EM_POPUP_SELECT_MARK_READ</constant></member>
- <member><constant>mark_unread</constant> = <constant>EM_POPUP_SELECT_MARK_UNREAD</constant></member>
- <member><constant>delete</constant> = <constant>EM_POPUP_SELECT_DELETE</constant></member>
- <member><constant>undelete</constant> = <constant>EM_POPUP_SELECT_UNDELETE</constant></member>
- <member><constant>mailing_list</constant> = <constant>EM_POPUP_SELECT_MAILING_LIST</constant></member>
- <member><constant>resend</constant> = <constant>EM_POPUP_SELECT_EDIT</constant></member>
- <member><constant>mark_important</constant> = <constant>EM_POPUP_SELECT_MARK_IMPORTANT</constant></member>
- <member><constant>mark_unimportant</constant> = <constant>EM_POPUP_SELECT_MARK_UNIMPORTANT</constant></member>
- <member><constant>flag_followup</constant> = <constant>EM_POPUP_SELECT_FLAG_FOLLOWUP</constant></member>
- <member><constant>flag_completed</constant> = <constant>EM_POPUP_SELECT_FLAG_COMPLETED</constant></member>
- <member><constant>flag_clear</constant> = <constant>EM_POPUP_SELECT_FLAG_CLEAR</constant></member>
- <member><constant>add_sender</constant> = <constant>EM_POPUP_SELECT_ADD_SENDER</constant></member>
- <member><constant>mark_junk</constant> = <constant>EM_POPUP_SELECT_MARK_JUNK</constant></member>
- <member><constant>mark_nojunk</constant> = <constant>EM_POPUP_SELECT_MARK_NOJUNK</constant></member>
- <member><constant>folder</constant> = <constant>EM_POPUP_SELECT_FOLDER</constant></member>
- </simplelist>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </sect3>
-
- <sect3 id="mail-hooks-popup-EMPopupTargetURI">
- <title>URI Target</title>
-
- <para>This target defines context for operations on a URI, normally
- displayed inline somewhere in the message view.</para>
-
- <informaltable>
- <tgroup cols="2">
- <colspec colnum="1" colname="field" colwidth="1*"/>
- <colspec colnum="2" colname="value" colwidth="4*"/>
- <tbody valign="top">
- <row>
- <entry>Name</entry>
- <entry><constant>uri</constant></entry>
- </row>
- <row>
- <entry>Structure</entry>
- <entry><link
- linkend="API-struct--EMPopupTargetURI">EMPopupTargetURI</link></entry>
- </row>
- <row>
- <entry>Qualifiers</entry>
- <entry>
- <simplelist>
- <member><constant>http</constant> = <constant>EM_POPUP_URI_HTTP</constant></member>
- <member><constant>mailto</constant> = <constant>EM_POPUP_URI_MAILTO</constant></member>
- <member><constant>notmailto</constant> = <constant>EM_POPUP_URI_NOT_MAILTO</constant></member>
- </simplelist>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </sect3>
-
- <sect3 id="mail-hooks-popup-EMPopupTargetPart">
- <title>Message Part Target</title>
-
- <para>This target defines context for operations on messages, or
- individual message parts. The same target is used for inline
- images or other content which can be encapsulated in a MIME part
- (i.e. anything).</para>
-
- <informaltable>
- <tgroup cols="2">
- <colspec colnum="1" colname="field" colwidth="1*"/>
- <colspec colnum="2" colname="value" colwidth="4*"/>
- <tbody valign="top">
- <row>
- <entry>Name</entry>
- <entry><constant>part</constant></entry>
- </row>
- <row>
- <entry>Structure</entry>
- <entry><link
- linkend="API-struct--EMPopupTargetPart">EMPopupTargetPart</link></entry>
- </row>
- <row>
- <entry>Qualifiers</entry>
- <entry>
- <simplelist>
- <member><constant>message</constant> = <constant>EM_POPUP_PART_MESSAGE</constant></member>
- <member><constant>image</constant> = <constant>EM_POPUP_PART_IMAGE</constant></member>
- </simplelist>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </sect3>
-
- <sect3 id="mail-hooks-popup-EMPopupTargetAttachments">
- <title>Attachments Target</title>
-
- <para>This target is used to define context for operations on the
- mail composer attachment bar.</para>
-
- <informaltable>
- <tgroup cols="2">
- <colspec colnum="1" colname="field" colwidth="1*"/>
- <colspec colnum="2" colname="value" colwidth="4*"/>
- <tbody valign="top">
- <row>
- <entry>Name</entry>
- <entry><constant>attachments</constant></entry>
- </row>
- <row>
- <entry>Structure</entry>
- <entry><link
- linkend="API-struct--EMPopupTargetAttachments">EMPopupTargetAttachments</link></entry>
- </row>
- <row>
- <entry>Qualifiers</entry>
- <entry>
- <simplelist>
- <member><constant>one</constant> = <constant>EM_POPUP_ATTACHMENTS_ONE</constant></member>
- <member><constant>many</constant> = <constant>EM_POPUP_ATTACHMENTS_MANY</constant></member>
- </simplelist>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </sect3>
-
- </sect2>
- </sect1>
-
- <sect1 id="mail-hooks-menu">
- <title>Main menus</title>
-
- <para>
- The mail popup menu class is
- <interfacename>org.gnome.evolution.mail.bonobomenu:1.0</interfacename>.
- </para>
- <para>
- The plugin callback data will be the target matching the plugin
- menu itself, and the callback returns no value.
- </para>
-
- &em-menus;
-
- <sect2>
- <title>Mail Menu Targets</title>
-
- <sect3 id="mail-hooks-menu-EMMenuTargetSelect">
- <title>Message Selection Target</title>
-
- <para>This target is used to define context for operations on a
- selection of messages in the view's message list.</para>
-
- <informaltable>
- <tgroup cols="2">
- <colspec colnum="1" colname="field" colwidth="1*"/>
- <colspec colnum="2" colname="value" colwidth="4*"/>
- <tbody valign="top">
- <row>
- <entry>Name</entry>
- <entry><constant>select</constant></entry>
- </row>
- <row>
- <entry>Structure</entry>
- <entry>
- <link
- linkend="API-struct--EMMenuTargeSelect">EMMenuTargetSelect</link>
- </entry>
- </row>
- <row>
- <entry>Qualifiers</entry>
- <entry>
- <simplelist>
- <member><constant>one</constant> = <constant>EM_MENU_SELECT_ONE</constant></member>
- <member><constant>many</constant> = <constant>EM_MENU_SELECT_MANY</constant></member>
- <member><constant>mark_read</constant> = <constant>EM_MENU_SELECT_MARK_READ</constant></member>
- <member><constant>mark_unread</constant> = <constant>EM_MENU_SELECT_MARK_UNREAD</constant></member>
- <member><constant>delete</constant> = <constant>EM_MENU_SELECT_DELETE</constant></member>
- <member><constant>undelete</constant> = <constant>EM_MENU_SELECT_UNDELETE</constant></member>
- <member><constant>mailing_list</constant> = <constant>EM_MENU_SELECT_MAILING_LIST</constant></member>
- <member><constant>resend</constant> = <constant>EM_MENU_SELECT_EDIT</constant></member>
- <member><constant>mark_important</constant> = <constant>EM_MENU_SELECT_MARK_IMPORTANT</constant></member>
- <member><constant>mark_unimportant</constant> = <constant>EM_MENU_SELECT_MARK_UNIMPORTANT</constant></member>
- <member><constant>flag_followup</constant> = <constant>EM_MENU_SELECT_FLAG_FOLLOWUP</constant></member>
- <member><constant>flag_completed</constant> = <constant>EM_MENU_SELECT_FLAG_COMPLETED</constant></member>
- <member><constant>flag_clear</constant> = <constant>EM_MENU_SELECT_FLAG_CLEAR</constant></member>
- <member><constant>add_sender</constant> = <constant>EM_MENU_SELECT_ADD_SENDER</constant></member>
- <member><constant>mark_junk</constant> = <constant>EM_MENU_SELECT_MARK_JUNK</constant></member>
- <member><constant>mark_nojunk</constant> = <constant>EM_MENU_SELECT_MARK_NOJUNK</constant></member>
- <member><constant>folder</constant> = <constant>EM_MENU_SELECT_FOLDER</constant></member>
- </simplelist>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </sect3>
- </sect2>
- </sect1>
-
- <sect1 id="mail-hooks-config">
- <title>Config Windows and Druids</title>
-
- <para>
- The mail config class is
- <interfacename>org.gnome.evolution.mail.config:1.0</interfacename>.
- </para>
-
- &em-configs;
-
- <sect2>
- <title>Mail Config Targets</title>
-
- <sect3 id="mail-hooks-config-EMConfigTargetAccount">
- <title>Account Target</title>
-
- <para>The account target is used for configuring accounts, and so
- has a pointer to the EAccount being configured. This is a copy
- of the actual account object, and is copied to the original once
- the data is ready to commit.</para>
-
- <informaltable>
- <tgroup cols="2">
- <colspec colnum="1" colname="field" colwidth="1*"/>
- <colspec colnum="2" colname="value" colwidth="4*"/>
- <tbody valign="top">
- <row>
- <entry>Name</entry>
- <entry><constant>account</constant></entry>
- </row>
- <row>
- <entry>Structure</entry>
- <entry>
- <link
- linkend="API-struct--EMConfigTargetAccount">EMConfigTargetAccount</link>
- </entry>
- </row>
- <row>
- <entry>Items</entry>
- <entry>Define some of the items available and where they fit
- in the gui</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </sect3>
-
- <sect3 id="mail-hooks-config-EMConfigTargetPrefs">
- <title>Preferences Target</title>
-
- <para>The preferences target is used for global preferences. As
- such it just contains a pointer to the global configuration store
- - a GConfClient.</para>
-
- <informaltable>
- <tgroup cols="2">
- <colspec colnum="1" colname="field" colwidth="1*"/>
- <colspec colnum="2" colname="value" colwidth="4*"/>
- <tbody valign="top">
- <row>
- <entry>Name</entry>
- <entry><constant>prefs</constant></entry>
- </row>
- <row>
- <entry>Structure</entry>
- <entry>
- <link
- linkend="API-struct--EMConfigTargetPrefs">EMConfigTargetPrefs</link>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </sect3>
-
- <sect3 id="mail-hooks-config-EMConfigTargetFolder">
- <title>Folder Target</title>
-
- <informaltable>
- <tgroup cols="2">
- <colspec colnum="1" colname="field" colwidth="1*"/>
- <colspec colnum="2" colname="value" colwidth="4*"/>
- <tbody valign="top">
- <row>
- <entry>Name</entry>
- <entry><constant>folder</constant></entry>
- </row>
- <row>
- <entry>Structure</entry>
- <entry>
- <link
- linkend="API-struct--EMConfigTargetFolder">EMConfigTargetFolder</link>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </sect3>
-
- </sect2>
- </sect1>
-
- <sect1 id="mail-hooks-event">
- <title>Events</title>
-
- <para>
- The mail event class is
- <interfacename>org.gnome.evolution.mail.events:1.0</interfacename>.
- </para>
-
- &em-events;
-
- <sect2>
- <title>Mail Event Targets</title>
-
- <sect3 id="mail-hooks-event-EMEventTargetFolder">
- <title>Folder Target</title>
-
- <informaltable>
- <tgroup cols="2">
- <colspec colnum="1" colname="field" colwidth="1*"/>
- <colspec colnum="2" colname="value" colwidth="4*"/>
- <tbody valign="top">
- <row>
- <entry>Name</entry>
- <entry><constant>folder</constant></entry>
- </row>
- <row>
- <entry>Structure</entry>
- <entry>
- <link
- linkend="API-struct--EMEventTargetFolder">EMEventTargetFolder</link>
- </entry>
- </row>
- <row>
- <entry>Qualifiers</entry>
- <entry>List qualifiers</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </sect3>
- </sect2>
- </sect1>
-
- <sect1 id="mail-hooks-format">
- <title>Formatters</title>
-
- <para>
- The mail formatter hook class is
- <interfacename>com.novell.evolution.mail.format:1.0</interfacename>.
- </para>
-
- <sect2>
- <title>Base Formatter</title>
-
- <para>
- The EMFormat class is the base class for all formatting types.
- It should only be used to define compound and complex types which
- do not rely on outputting any textual information, or rely on any
- screen or print output differences.
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <colspec colnum="1" colname="field" colwidth="1*"/>
- <colspec colnum="2" colname="value" colwidth="4*"/>
- <tbody valign="top">
- <row>
- <entry>Name</entry>
- <entry><constant>EMFormat</constant></entry>
- </row>
- <row>
- <entry>Target</entry>
- <entry>
- <link
- linkend="mail-hooks-format-EMFormatHookTarget">EMFormatHookTarget</link>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </sect2>
-
- <sect2>
- <title>HTML Formatter</title>
-
- <para>
- The EMFormatHTML class is the base class for most formatting types
- which generate HTML output. It renders output to a GtkHTML
- object. It uses a fairly complex multi-thread approach to the
- formatting to ensure the user-interface is not blocked for
- processing. GtkHTML is used in a limited way by this class for
- HTML parsing and resolution of embedded objects. Embedded objects
- and Widgets may not be used from formatters which hook onto this
- entry point.
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <colspec colnum="1" colname="field" colwidth="1*"/>
- <colspec colnum="2" colname="value" colwidth="4*"/>
- <tbody valign="top">
- <row>
- <entry>Name</entry>
- <entry><constant>EMFormatHTML</constant></entry>
- </row>
- <row>
- <entry>Target</entry>
- <entry>
- <link
- linkend="mail-hooks-format-EMFormatHookTarget">EMFormatHookTarget</link>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>
- <emphasis>This section needs a huge amount of
- explanation, and/or more detail needs to be added to another
- section about the formatter class</emphasis>
- </para>
- </sect2>
-
- <sect2>
- <title>HTML Display Formatter</title>
-
- <para>
- The EMFormatHTMLDisplay class is a subclass of EMFormatHTML, and is
- used as a mail display widget. As such, it has access to all of
- the facilities of GtkHTML, such as embedded widgets. Like the
- EMFormatHTML class, this uses a complex multi-thread architecture.
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <colspec colnum="1" colname="field" colwidth="1*"/>
- <colspec colnum="2" colname="value" colwidth="4*"/>
- <tbody valign="top">
- <row>
- <entry>Name</entry>
- <entry><constant>EMFormatHTMLDisplay</constant></entry>
- </row>
- <row>
- <entry>Target</entry>
- <entry>
- <link
- linkend="mail-hooks-format-EMFormatHookTarget">EMFormatHookTarget</link>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>
- <emphasis>This section needs a huge amount of
- explanation, and/or more detail needs to be added to another
- section about the formatter class</emphasis>
- </para>
- </sect2>
-
- <sect2>
- <title>HTML Print Formatter</title>
-
- <para>
- The EMFormatHTMLPrint class is a subclass of EMFormatHTML, and is
- used as a mail printing widget. It cannot access embedded
- widgets. For most purposes you would normally only connect to the
- EMFormatHTML hook, and generate generic HTML output which could be
- printed or shown on-screen if it isn't overriden by the display
- formatter.
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <colspec colnum="1" colname="field" colwidth="1*"/>
- <colspec colnum="2" colname="value" colwidth="4*"/>
- <tbody valign="top">
- <row>
- <entry>Name</entry>
- <entry><constant>EMFormatHTMLPrint</constant></entry>
- </row>
- <row>
- <entry>Target</entry>
- <entry>
- <link
- linkend="mail-hooks-format-EMFormatHookTarget">EMFormatHookTarget</link>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>
- <emphasis>This section needs a huge amount of
- explanation, and/or more detail needs to be added to another
- section about the formatter class</emphasis>
- </para>
- </sect2>
-
- <sect2>
- <title>Mail Quote Formatter</title>
- <para>
- The EMFormatQuote class is a subclass of EMFormat, and is
- used as generator for quoted mail content and for
- inline-forwarding. This formatter converts message objects into
- a pure HTML stream, which is not parsed directly, but normally fed
- to the message composer.
- </para>
- <informaltable>
- <tgroup cols="2">
- <colspec colnum="1" colname="field" colwidth="1*"/>
- <colspec colnum="2" colname="value" colwidth="4*"/>
- <tbody valign="top">
- <row>
- <entry>Name</entry>
- <entry><constant>EMFormatQuote</constant></entry>
- </row>
- <row>
- <entry>Target</entry>
- <entry>
- <link
- linkend="mail-hooks-EMFormatHookTarget">EMFormatHookTarget</link>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </sect2>
-
- <sect2 id="mail-hooks-format-EMFormatHookTarget">
- <title>Mail Formatter Targets</title>
-
- <para>There is only one target for all mail formatters, and it is
- implied automatically for all formatter hooks.</para>
-
- <informaltable>
- <tgroup cols="2">
- <colspec colnum="1" colname="field" colwidth="1*"/>
- <colspec colnum="2" colname="value" colwidth="4*"/>
- <tbody valign="top">
- <row>
- <entry>Structure</entry>
- <entry>
- <link
- linkend="API-struct--EMFormatHookTarget">EMFormatHookTarget</link>
- </entry>
- </row>
- <row>
- <entry>Flags</entry>
- <entry>
- <simplelist>
- <member><constant>inline</constant> = <constant>EM_FORMAT_HANDLER_INLINE</constant></member>
- <member><constant>inline_disposition</constant> =
- <constant>EM_FORMAT_HANDLER_INLINE_DISPOSITION</constant></member>
- </simplelist>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- </sect2>
- </sect1>
- </chapter>
-
- <chapter id="contacts-hooks">
- <title>
- Contacts Hooks
- </title>
- <para>
- Hooks available in the the contacts component.
- </para>
-
- <sect1 id="contacts-hooks-popup">
- <title>Popup menus</title>
-
- <para>
- The contacts popup menu class is
- <interfacename>org.gnome.evolution.addressbook.popup:1.0</interfacename>.
- </para>
-
- <!-- TODO: define the entity once it exists
- &eab-popups; -->
-
- <sect2>
- <title>Calendar Popup Targets</title>
- <para>TBD</para>
- </sect2>
- </sect1>
-
- <sect1 id="contacts-hooks-menu">
- <title>Main menus</title>
-
- <para>
- The addressbook menu class is
- <interfacename>org.gnome.evolution.addressbook.bonobomenu:1.0</interfacename>.
- </para>
-
- <!-- TODO: define the entity once it exists
- &eab-menus; -->
-
- <sect2>
- <title>Contacts Menu Targets</title>
- <para>TBD</para>
- </sect2>
- </sect1>
-
- <sect1 id="contacts-hooks-config">
- <title>Config Windows and Druids</title>
- <para>
- The addressbook config class is
- <interfacename>org.gnome.evolution.addressbook.config:1.0</interfacename>.
- </para>
-
- <!-- TODO: define the entity once it exists
- &eab-configs; -->
-
- <sect2>
- <title>Contacts Config Targets</title>
- <para>TBD</para>
- </sect2>
- </sect1>
-
- <sect1 id="contacts-hooks-event">
- <title>Events</title>
-
- <para>
- None defined.
- </para>
- </sect1>
- </chapter>
-
- <chapter id="calendar-hooks">
- <title>
- Calendar Hooks
- </title>
- <para>
- Hooks available in the the calendar component.
- </para>
-
- <sect1 id="calendar-hooks-popup">
- <title>Popup menus</title>
-
- <para>
- The calendar popup menu class is
- <interfacename>org.gnome.evolution.calendar.popup:1.0</interfacename>.
- </para>
-
- &ecal-popups;
-
- <sect2>
- <title>Calendar Popup Targets</title>
- <para>TBD</para>
- </sect2>
- </sect1>
-
- <sect1 id="calendar-hooks-menu">
- <title>Main menus</title>
-
- <para>
- The calendar menu class is
- <interfacename>org.gnome.evolution.calendar.bonobomenu:1.0</interfacename>.
- </para>
-
- <!-- TODO: define the entity once it exists
- &ecal-menus; -->
-
- <sect2>
- <title>Calendar Menu Targets</title>
- <para>TBD</para>
- </sect2>
- </sect1>
-
- <sect1 id="calendar-hooks-config">
- <title>Config Windows and Druids</title>
- <para>
- The calendar config class is
- <interfacename>org.gnome.evolution.calendar.config:1.0</interfacename>.
- </para>
-
- <!-- TODO: define the entity once it exists
- &ecal-configs; -->
-
- <sect2>
- <title>Calendar Config Targets</title>
- <para>TBD</para>
- </sect2>
- </sect1>
-
- <sect1 id="calendar-hooks-event">
- <title>Events</title>
-
- <para>
- None defined.
- </para>
- </sect1>
- </chapter>
-
- <chapter id="shell-hooks">
- <title>
- Shell Hooks
- </title>
-
- <sect1 id="shell-hooks-menu">
- <title>Main menus</title>
-
- <para>
- The mail menu class is
- <interfacename>org.gnome.evolution.shell.bonobomenu:1.0</interfacename>.
- </para>
- <para>
- The plugin callback data will be the target matching the plugin
- menu itself, and the callback returns no value.
- </para>
- &es-menus;
- </sect1>
- <sect1 id="shell-hooks-event">
- <title>Events</title>
-
- <para>
- The shell event class is
- <interfacename>org.gnome.evolution.shell.events:1.0</interfacename>.
- </para>
-
- &es-events;
- </sect1>
-
- </chapter>
-
- </part>
-
- <part id="reference">
- <title>
- Reference
- </title>
- <partintro>
- <para>
- This section of the book is a detailed API reference of the
- objects and methods that implement the core plugin system and hooks.
- </para>
- <para>
- It contains the detailed information required for all uses of the
- plugin system. That is, implementors
- of new hook types, application developers providing hook points, and
- plugin developers.
- </para>
- </partintro>
- <chapter id="REF-EPlugin">
- <title>
- EPlugin
- </title>
- <para>
- The EPlugin object manages the loading and invocation of physical
- plugin definitions and plugin binaries. The base EPlugin class is an
- abstract class which loads plugin definitons, resolving hooks, and
- provides an api for invoking callbacks.
- </para>
- <para>
- The EPluginLib object is a concrete derived class of EPlugin which
- handles loading shared libraries using the GModule interface.
- </para>
- &e-plugin-reference;
- </chapter>
-
- <chapter>
- <title>
- EPopup
- </title>
- <para>
- The EPopup object manages a single popup menu. It is used to
- application code as a convenience function for building dynamic popup
- menus based on a specific context.
- </para>
- <para>
- The EPopupHook object is loaded by
- the &EPlugin; system, and is used to provide dynamic extension to the
- application context menus.
- </para>
- &e-popup-reference;
-
- <!-- this looks like bum here, not sure where else to put it though -->
- &em-popup-reference;
- </chapter>
-
- <chapter>
- <title>
- EMenu
- </title>
- <para>
- The EMenu object manages the menus for a given view or component. It
- is used by application code to allow the plugin system an entry point
- to current application view. It may also be used by the application as
- a convenience function to dynamically alter the menu system based on
- user context.
- </para>
- <para>
- The EMenuHook object is loaded by the &EPlugin; system, and is used to
- provide dynamic extension to the application menus.
- </para>
- &e-menu-reference;
- </chapter>
-
- <chapter>
- <title>
- EConfig
- </title>
- <para>
- The EConfig object manages the building of dynamic configuration pages
- to configure specific application objects. The same basic object can
- be used to fully drive a wizard-like druid object, or to drive a
- note-book of configuration options. It is used by application code to
- provide the core controller in a model-view-controller implementation
- of a UI window.
- </para>
- <para>
- The EConfigHook object is loaded by the &EPlugin; system, and is used hook
- in additional configuration items into configuration windows or druids
- dynamically.
- </para>
- &e-config-reference;
- </chapter>
-
- <chapter>
- <title>
- EEvent
- </title>
- <para>
- The EEvent object manages broadcast of events for a given component or
- application. It is used by application code to provide the plugin
- system with an entry point for user and system state events.
- </para>
- <para>
- The EEventHook object is loaded by the &EPlugin; system, and is used hook
- event listeners into dynamically loaded event handlers.
- </para>
- &e-event-reference;
- </chapter>
-
- <chapter>
- <title>
- EMFormat
- </title>
- <para>
- The EMFormat object drives the formatting of MIME message content for
- display, print, and replying. EMFormatHTML is an implementation of
- EMFormat which writes its output to a GtkHTML instance.
- </para>
- <para>
- The EMFormatHook object is loaded by the &EPlugin; system, and is used hook
- event listeners into dynamically loaded event handlers.
- </para>
- &em-format-reference;
- </chapter>
- </part>
-
-</book>
diff --git a/doc/devel/executive-summary/evolution-services.hierarchy b/doc/devel/executive-summary/evolution-services.hierarchy
deleted file mode 100644
index 37559d819d..0000000000
--- a/doc/devel/executive-summary/evolution-services.hierarchy
+++ /dev/null
@@ -1,7 +0,0 @@
-GtkObject
- BonoboObject
- ExecutiveSummaryComponent
- ExecutiveSummaryComponentFactory
- Handle to remote Bonobo::Unknown
- ExecutiveSummaryComponentFactoryClient
- ExecutiveSummaryHtmlView
diff --git a/doc/devel/fdl.sgml b/doc/devel/fdl.sgml
deleted file mode 100644
index 817adbdbb7..0000000000
--- a/doc/devel/fdl.sgml
+++ /dev/null
@@ -1,671 +0,0 @@
-<!--
- The GNU Free Documentation License 1.1 in DocBook
- Markup by Eric Baudais <baudais@okstate.edu>
- Maintained by the GNOME Documentation Project
- http://developer.gnome.org/projects/gdp
- Version: 1.0.1
- Last Modified: Nov 16, 2000
--->
-
-<appendix id="fdl">
- <docinfo>
- <releaseinfo>
- Version 1.1, March 2000
- </releaseinfo>
- <copyright>
- <year>2000</year><holder>Free Software Foundation, Inc.</holder>
- </copyright>
- <legalnotice id="fdl-legalnotice">
- <para>
- <address>Free Software Foundation, Inc. <street>59 Temple Place,
- Suite 330</street>, <city>Boston</city>, <state>MA</state>
- <postcode>02111-1307</postcode> <country>USA</country></address>
- Everyone is permitted to copy and distribute verbatim copies of this
- license document, but changing it is not allowed.
- </para>
- </legalnotice>
- </docinfo>
- <title>GNU Free Documentation License</title>
-
- <sect1 id="fdl-preamble">
- <title>0. PREAMBLE</title>
- <para>
- The purpose of this License is to make a manual, textbook, or
- other written document <quote>free</quote> in the sense of
- freedom: to assure everyone the effective freedom to copy and
- redistribute it, with or without modifying it, either
- commercially or noncommercially. Secondarily, this License
- preserves for the author and publisher a way to get credit for
- their work, while not being considered responsible for
- modifications made by others.
- </para>
-
- <para>
- This License is a kind of <quote>copyleft</quote>, which means
- that derivative works of the document must themselves be free in
- the same sense. It complements the GNU General Public License,
- which is a copyleft license designed for free software.
- </para>
-
- <para>
- We have designed this License in order to use it for manuals for
- free software, because free software needs free documentation: a
- free program should come with manuals providing the same
- freedoms that the software does. But this License is not limited
- to software manuals; it can be used for any textual work,
- regardless of subject matter or whether it is published as a
- printed book. We recommend this License principally for works
- whose purpose is instruction or reference.
- </para>
- </sect1>
- <sect1 id="fdl-section1">
- <title>1. APPLICABILITY AND DEFINITIONS</title>
- <para id="fdl-document">
- This License applies to any manual or other work that contains a
- notice placed by the copyright holder saying it can be
- distributed under the terms of this License. The
- <quote>Document</quote>, below, refers to any such manual or
- work. Any member of the public is a licensee, and is addressed
- as <quote>you</quote>.
- </para>
-
- <para id="fdl-modified">
- A <quote>Modified Version</quote> of the Document means any work
- containing the Document or a portion of it, either copied
- verbatim, or with modifications and/or translated into another
- language.
- </para>
-
- <para id="fdl-secondary">
- A <quote>Secondary Section</quote> is a named appendix or a
- front-matter section of the <link
- linkend="fdl-document">Document</link> that deals exclusively
- with the relationship of the publishers or authors of the
- Document to the Document's overall subject (or to related
- matters) and contains nothing that could fall directly within
- that overall subject. (For example, if the Document is in part a
- textbook of mathematics, a Secondary Section may not explain any
- mathematics.) The relationship could be a matter of historical
- connection with the subject or with related matters, or of
- legal, commercial, philosophical, ethical or political position
- regarding them.
- </para>
-
- <para id="fdl-invariant">
- The <quote>Invariant Sections</quote> are certain <link
- linkend="fdl-secondary"> Secondary Sections</link> whose titles
- are designated, as being those of Invariant Sections, in the
- notice that says that the <link
- linkend="fdl-document">Document</link> is released under this
- License.
- </para>
-
- <para id="fdl-cover-texts">
- The <quote>Cover Texts</quote> are certain short passages of
- text that are listed, as Front-Cover Texts or Back-Cover Texts,
- in the notice that says that the <link
- linkend="fdl-document">Document</link> is released under this
- License.
- </para>
-
- <para id="fdl-transparent">
- A <quote>Transparent</quote> copy of the <link
- linkend="fdl-document"> Document</link> means a machine-readable
- copy, represented in a format whose specification is available
- to the general public, whose contents can be viewed and edited
- directly and straightforwardly with generic text editors or (for
- images composed of pixels) generic paint programs or (for
- drawings) some widely available drawing editor, and that is
- suitable for input to text formatters or for automatic
- translation to a variety of formats suitable for input to text
- formatters. A copy made in an otherwise Transparent file format
- whose markup has been designed to thwart or discourage
- subsequent modification by readers is not Transparent. A copy
- that is not <quote>Transparent</quote> is called
- <quote>Opaque</quote>.
- </para>
-
- <para>
- Examples of suitable formats for Transparent copies include
- plain ASCII without markup, Texinfo input format, LaTeX input
- format, SGML or XML using a publicly available DTD, and
- standard-conforming simple HTML designed for human
- modification. Opaque formats include PostScript, PDF,
- proprietary formats that can be read and edited only by
- proprietary word processors, SGML or XML for which the DTD
- and/or processing tools are not generally available, and the
- machine-generated HTML produced by some word processors for
- output purposes only.
- </para>
-
- <para id="fdl-title-page">
- The <quote>Title Page</quote> means, for a printed book, the
- title page itself, plus such following pages as are needed to
- hold, legibly, the material this License requires to appear in
- the title page. For works in formats which do not have any title
- page as such, <quote>Title Page</quote> means the text near the
- most prominent appearance of the work's title, preceding the
- beginning of the body of the text.
- </para>
- </sect1>
-
- <sect1 id="fdl-section2">
- <title>2. VERBATIM COPYING</title>
- <para>
- You may copy and distribute the <link
- linkend="fdl-document">Document</link> in any medium, either
- commercially or noncommercially, provided that this License, the
- copyright notices, and the license notice saying this License
- applies to the Document are reproduced in all copies, and that
- you add no other conditions whatsoever to those of this
- License. You may not use technical measures to obstruct or
- control the reading or further copying of the copies you make or
- distribute. However, you may accept compensation in exchange for
- copies. If you distribute a large enough number of copies you
- must also follow the conditions in <link
- linkend="fdl-section3">section 3</link>.
- </para>
-
- <para>
- You may also lend copies, under the same conditions stated
- above, and you may publicly display copies.
- </para>
- </sect1>
-
- <sect1 id="fdl-section3">
- <title>3. COPYING IN QUANTITY</title>
- <para>
- If you publish printed copies of the <link
- linkend="fdl-document">Document</link> numbering more than 100,
- and the Document's license notice requires <link
- linkend="fdl-cover-texts">Cover Texts</link>, you must enclose
- the copies in covers that carry, clearly and legibly, all these
- Cover Texts: Front-Cover Texts on the front cover, and
- Back-Cover Texts on the back cover. Both covers must also
- clearly and legibly identify you as the publisher of these
- copies. The front cover must present the full title with all
- words of the title equally prominent and visible. You may add
- other material on the covers in addition. Copying with changes
- limited to the covers, as long as they preserve the title of the
- <link linkend="fdl-document">Document</link> and satisfy these
- conditions, can be treated as verbatim copying in other
- respects.
- </para>
-
- <para>
- If the required texts for either cover are too voluminous to fit
- legibly, you should put the first ones listed (as many as fit
- reasonably) on the actual cover, and continue the rest onto
- adjacent pages.
- </para>
-
- <para>
- If you publish or distribute <link
- linkend="fdl-transparent">Opaque</link> copies of the <link
- linkend="fdl-document">Document</link> numbering more than 100,
- you must either include a machine-readable <link
- linkend="fdl-transparent">Transparent</link> copy along with
- each Opaque copy, or state in or with each Opaque copy a
- publicly-accessible computer-network location containing a
- complete Transparent copy of the Document, free of added
- material, which the general network-using public has access to
- download anonymously at no charge using public-standard network
- protocols. If you use the latter option, you must take
- reasonably prudent steps, when you begin distribution of Opaque
- copies in quantity, to ensure that this Transparent copy will
- remain thus accessible at the stated location until at least one
- year after the last time you distribute an Opaque copy (directly
- or through your agents or retailers) of that edition to the
- public.
- </para>
-
- <para>
- It is requested, but not required, that you contact the authors
- of the <link linkend="fdl-document">Document</link> well before
- redistributing any large number of copies, to give them a chance
- to provide you with an updated version of the Document.
- </para>
- </sect1>
-
- <sect1 id="fdl-section4">
- <title>4. MODIFICATIONS</title>
- <para>
- You may copy and distribute a <link
- linkend="fdl-modified">Modified Version</link> of the <link
- linkend="fdl-document">Document</link> under the conditions of
- sections <link linkend="fdl-section2">2</link> and <link
- linkend="fdl-section3">3</link> above, provided that you release
- the Modified Version under precisely this License, with the
- Modified Version filling the role of the Document, thus
- licensing distribution and modification of the Modified Version
- to whoever possesses a copy of it. In addition, you must do
- these things in the Modified Version:
- </para>
-
- <itemizedlist mark="opencircle">
- <listitem>
- <formalpara>
- <title>A</title>
- <para>
- Use in the <link linkend="fdl-title-page">Title
- Page</link> (and on the covers, if any) a title distinct
- from that of the <link
- linkend="fdl-document">Document</link>, and from those of
- previous versions (which should, if there were any, be
- listed in the History section of the Document). You may
- use the same title as a previous version if the original
- publisher of that version gives permission.
- </para>
- </formalpara>
- </listitem>
-
- <listitem>
- <formalpara>
- <title>B</title>
- <para>
- List on the <link linkend="fdl-title-page">Title
- Page</link>, as authors, one or more persons or entities
- responsible for authorship of the modifications in the
- <link linkend="fdl-modified">Modified Version</link>,
- together with at least five of the principal authors of
- the <link linkend="fdl-document">Document</link> (all of
- its principal authors, if it has less than five).
- </para>
- </formalpara>
- </listitem>
-
- <listitem>
- <formalpara>
- <title>C</title>
- <para>
- State on the <link linkend="fdl-title-page">Title
- Page</link> the name of the publisher of the <link
- linkend="fdl-modified">Modified Version</link>, as the
- publisher.
- </para>
- </formalpara>
- </listitem>
-
- <listitem>
- <formalpara>
- <title>D</title>
- <para>
- Preserve all the copyright notices of the <link
- linkend="fdl-document">Document</link>.
- </para>
- </formalpara>
- </listitem>
-
- <listitem>
- <formalpara>
- <title>E</title>
- <para>
- Add an appropriate copyright notice for your modifications
- adjacent to the other copyright notices.
- </para>
- </formalpara>
- </listitem>
-
- <listitem>
- <formalpara>
- <title>F</title>
- <para>
- Include, immediately after the copyright notices, a
- license notice giving the public permission to use the
- <link linkend="fdl-modified">Modified Version</link> under
- the terms of this License, in the form shown in the
- Addendum below.
- </para>
- </formalpara>
- </listitem>
-
- <listitem>
- <formalpara>
- <title>G</title>
- <para>
- Preserve in that license notice the full lists of <link
- linkend="fdl-invariant"> Invariant Sections</link> and
- required <link linkend="fdl-cover-texts">Cover
- Texts</link> given in the <link
- linkend="fdl-document">Document's</link> license notice.
- </para>
- </formalpara>
- </listitem>
-
- <listitem>
- <formalpara>
- <title>H</title>
- <para>
- Include an unaltered copy of this License.
- </para>
- </formalpara>
- </listitem>
-
- <listitem>
- <formalpara>
- <title>I</title>
- <para>
- Preserve the section entitled <quote>History</quote>, and
- its title, and add to it an item stating at least the
- title, year, new authors, and publisher of the <link
- linkend="fdl-modified">Modified Version </link>as given on
- the <link linkend="fdl-title-page">Title Page</link>. If
- there is no section entitled <quote>History</quote> in the
- <link linkend="fdl-document">Document</link>, create one
- stating the title, year, authors, and publisher of the
- Document as given on its Title Page, then add an item
- describing the Modified Version as stated in the previous
- sentence.
- </para>
- </formalpara>
- </listitem>
-
- <listitem>
- <formalpara>
- <title>J</title>
- <para>
- Preserve the network location, if any, given in the <link
- linkend="fdl-document">Document</link> for public access
- to a <link linkend="fdl-transparent">Transparent</link>
- copy of the Document, and likewise the network locations
- given in the Document for previous versions it was based
- on. These may be placed in the <quote>History</quote>
- section. You may omit a network location for a work that
- was published at least four years before the Document
- itself, or if the original publisher of the version it
- refers to gives permission.
- </para>
- </formalpara>
- </listitem>
-
- <listitem>
- <formalpara>
- <title>K</title>
- <para>
- In any section entitled <quote>Acknowledgements</quote> or
- <quote>Dedications</quote>, preserve the section's title,
- and preserve in the section all the substance and tone of
- each of the contributor acknowledgements and/or
- dedications given therein.
- </para>
- </formalpara>
- </listitem>
-
- <listitem>
- <formalpara>
- <title>L</title>
- <para>
- Preserve all the <link linkend="fdl-invariant">Invariant
- Sections</link> of the <link
- linkend="fdl-document">Document</link>, unaltered in their
- text and in their titles. Section numbers or the
- equivalent are not considered part of the section titles.
- </para>
- </formalpara>
- </listitem>
-
- <listitem>
- <formalpara>
- <title>M</title>
- <para>
- Delete any section entitled
- <quote>Endorsements</quote>. Such a section may not be
- included in the <link linkend="fdl-modified">Modified
- Version</link>.
- </para>
- </formalpara>
- </listitem>
-
- <listitem>
- <formalpara>
- <title>N</title>
- <para>
- Do not retitle any existing section as
- <quote>Endorsements</quote> or to conflict in title with
- any <link linkend="fdl-invariant">Invariant
- Section</link>.
- </para>
- </formalpara>
- </listitem>
- </itemizedlist>
-
- <para>
- If the <link linkend="fdl-modified">Modified Version</link>
- includes new front-matter sections or appendices that qualify as
- <link linkend="fdl-secondary">Secondary Sections</link> and
- contain no material copied from the Document, you may at your
- option designate some or all of these sections as invariant. To
- do this, add their titles to the list of <link
- linkend="fdl-invariant">Invariant Sections</link> in the
- Modified Version's license notice. These titles must be
- distinct from any other section titles.
- </para>
-
- <para>
- You may add a section entitled <quote>Endorsements</quote>,
- provided it contains nothing but endorsements of your <link
- linkend="fdl-modified">Modified Version</link> by various
- parties--for example, statements of peer review or that the text
- has been approved by an organization as the authoritative
- definition of a standard.
- </para>
-
- <para>
- You may add a passage of up to five words as a <link
- linkend="fdl-cover-texts">Front-Cover Text</link>, and a passage
- of up to 25 words as a <link
- linkend="fdl-cover-texts">Back-Cover Text</link>, to the end of
- the list of <link linkend="fdl-cover-texts">Cover Texts</link>
- in the <link linkend="fdl-modified">Modified Version</link>.
- Only one passage of Front-Cover Text and one of Back-Cover Text
- may be added by (or through arrangements made by) any one
- entity. If the <link linkend="fdl-document">Document</link>
- already includes a cover text for the same cover, previously
- added by you or by arrangement made by the same entity you are
- acting on behalf of, you may not add another; but you may
- replace the old one, on explicit permission from the previous
- publisher that added the old one.
- </para>
-
- <para>
- The author(s) and publisher(s) of the <link
- linkend="fdl-document">Document</link> do not by this License
- give permission to use their names for publicity for or to
- assert or imply endorsement of any <link
- linkend="fdl-modified">Modified Version </link>.
- </para>
- </sect1>
-
- <sect1 id="fdl-section5">
- <title>5. COMBINING DOCUMENTS</title>
- <para>
- You may combine the <link linkend="fdl-document">Document</link>
- with other documents released under this License, under the
- terms defined in <link linkend="fdl-section4">section 4</link>
- above for modified versions, provided that you include in the
- combination all of the <link linkend="fdl-invariant">Invariant
- Sections</link> of all of the original documents, unmodified,
- and list them all as Invariant Sections of your combined work in
- its license notice.
- </para>
-
- <para>
- The combined work need only contain one copy of this License,
- and multiple identical <link linkend="fdl-invariant">Invariant
- Sections</link> may be replaced with a single copy. If there are
- multiple Invariant Sections with the same name but different
- contents, make the title of each such section unique by adding
- at the end of it, in parentheses, the name of the original
- author or publisher of that section if known, or else a unique
- number. Make the same adjustment to the section titles in the
- list of Invariant Sections in the license notice of the combined
- work.
- </para>
-
- <para>
- In the combination, you must combine any sections entitled
- <quote>History</quote> in the various original documents,
- forming one section entitled <quote>History</quote>; likewise
- combine any sections entitled <quote>Acknowledgements</quote>,
- and any sections entitled <quote>Dedications</quote>. You must
- delete all sections entitled <quote>Endorsements.</quote>
- </para>
- </sect1>
-
- <sect1 id="fdl-section6">
- <title>6. COLLECTIONS OF DOCUMENTS</title>
- <para>
- You may make a collection consisting of the <link
- linkend="fdl-document">Document</link> and other documents
- released under this License, and replace the individual copies
- of this License in the various documents with a single copy that
- is included in the collection, provided that you follow the
- rules of this License for verbatim copying of each of the
- documents in all other respects.
- </para>
-
- <para>
- You may extract a single document from such a collection, and
- dispbibute it individually under this License, provided you
- insert a copy of this License into the extracted document, and
- follow this License in all other respects regarding verbatim
- copying of that document.
- </para>
- </sect1>
-
- <sect1 id="fdl-section7">
- <title>7. AGGREGATION WITH INDEPENDENT WORKS</title>
- <para>
- A compilation of the <link
- linkend="fdl-document">Document</link> or its derivatives with
- other separate and independent documents or works, in or on a
- volume of a storage or distribution medium, does not as a whole
- count as a <link linkend="fdl-modified">Modified Version</link>
- of the Document, provided no compilation copyright is claimed
- for the compilation. Such a compilation is called an
- <quote>aggregate</quote>, and this License does not apply to the
- other self-contained works thus compiled with the Document , on
- account of their being thus compiled, if they are not themselves
- derivative works of the Document. If the <link
- linkend="fdl-cover-texts">Cover Text</link> requirement of <link
- linkend="fdl-section3">section 3</link> is applicable to these
- copies of the Document, then if the Document is less than one
- quarter of the entire aggregate, the Document's Cover Texts may
- be placed on covers that surround only the Document within the
- aggregate. Otherwise they must appear on covers around the whole
- aggregate.
- </para>
- </sect1>
-
- <sect1 id="fdl-section8">
- <title>8. TRANSLATION</title>
- <para>
- Translation is considered a kind of modification, so you may
- distribute translations of the <link
- linkend="fdl-document">Document</link> under the terms of <link
- linkend="fdl-section4">section 4</link>. Replacing <link
- linkend="fdl-invariant"> Invariant Sections</link> with
- translations requires special permission from their copyright
- holders, but you may include translations of some or all
- Invariant Sections in addition to the original versions of these
- Invariant Sections. You may include a translation of this
- License provided that you also include the original English
- version of this License. In case of a disagreement between the
- translation and the original English version of this License,
- the original English version will prevail.
- </para>
- </sect1>
-
- <sect1 id="fdl-section9">
- <title>9. TERMINATION</title>
- <para>
- You may not copy, modify, sublicense, or distribute the <link
- linkend="fdl-document">Document</link> except as expressly
- provided for under this License. Any other attempt to copy,
- modify, sublicense or distribute the Document is void, and will
- automatically terminate your rights under this License. However,
- parties who have received copies, or rights, from you under this
- License will not have their licenses terminated so long as such
- parties remain in full compliance.
- </para>
- </sect1>
-
- <sect1 id="fdl-section10">
- <title>10. FUTURE REVISIONS OF THIS LICENSE</title>
- <para>
- The <ulink type="http"
- url="http://www.gnu.org/fsf/fsf.html">Free Software
- Foundation</ulink> may publish new, revised versions of the GNU
- Free Documentation License from time to time. Such new versions
- will be similar in spirit to the present version, but may differ
- in detail to address new problems or concerns. See <ulink
- type="http"
- url="http://www.gnu.org/copyleft">http://www.gnu.org/copyleft/</ulink>.
- </para>
-
- <para>
- Each version of the License is given a distinguishing version
- number. If the <link linkend="fdl-document">Document</link>
- specifies that a particular numbered version of this License
- <quote>or any later version</quote> applies to it, you have the
- option of following the terms and conditions either of that
- specified version or of any later version that has been
- published (not as a draft) by the Free Software Foundation. If
- the Document does not specify a version number of this License,
- you may choose any version ever published (not as a draft) by
- the Free Software Foundation.
- </para>
- </sect1>
-
- <sect1 id="fdl-using">
- <title>Addendum</title>
- <para>
- To use this License in a document you have written, include a copy of
- the License in the document and put the following copyright and
- license notices just after the title page:
- </para>
-
- <blockquote>
- <para>
- Copyright &copy; YEAR YOUR NAME.
- </para>
- <para>
- Permission is granted to copy, distribute and/or modify this
- document under the terms of the GNU Free Documentation
- License, Version 1.1 or any later version published by the
- Free Software Foundation; with the <link
- linkend="fdl-invariant">Invariant Sections</link> being LIST
- THEIR TITLES, with the <link
- linkend="fdl-cover-texts">Front-Cover Texts</link> being LIST,
- and with the <link linkend="fdl-cover-texts">Back-Cover
- Texts</link> being LIST. A copy of the license is included in
- the section entitled <quote>GNU Free Documentation
- License</quote>.
- </para>
- </blockquote>
-
- <para>
- If you have no <link linkend="fdl-invariant">Invariant
- Sections</link>, write <quote>with no Invariant Sections</quote>
- instead of saying which ones are invariant. If you have no
- <link linkend="fdl-cover-texts">Front-Cover Texts</link>, write
- <quote>no Front-Cover Texts</quote> instead of
- <quote>Front-Cover Texts being LIST</quote>; likewise for <link
- linkend="fdl-cover-texts">Back-Cover Texts</link>.
- </para>
-
- <para>
- If your document contains nontrivial examples of program code,
- we recommend releasing these examples in parallel under your
- choice of free software license, such as the <ulink type="http"
- url="http://www.gnu.org/copyleft/gpl.html"> GNU General Public
- License</ulink>, to permit their use in free software.
- </para>
- </sect1>
-</appendix>
-
-
-
-
-
-
diff --git a/doc/devel/images/Makefile b/doc/devel/images/Makefile
deleted file mode 100644
index bef9f8bf62..0000000000
--- a/doc/devel/images/Makefile
+++ /dev/null
@@ -1,21 +0,0 @@
-
-# this is only a temporary makefile
-
-# you need ps2eps, groff, pnmutils, and ghostscript installed
-
-PICS=e-config-flow.pic e-popup-merge-1.pic e-popup-merge-2.pic
-EPS=$(PICS:.pic=.eps)
-PNG=$(PICS:.pic=.png)
-
-all: $(PNG)
-
-%.eps: %.pic
- groff -p $^ | ps2eps -f -l > $@
-
-%.png: %.pic
- groff -p $^ \
- | gs -q -dSAFER -dNOPAUSE -dBATCH -r180 -sDEVICE=pnmraw -sOutputFile=- - -c quit \
- | pnmcrop \
- | pnmscale 0.5 \
- | pnmtopng > $@
-
diff --git a/doc/devel/images/e-config-build-1.png b/doc/devel/images/e-config-build-1.png
deleted file mode 100644
index a18f8ab503..0000000000
--- a/doc/devel/images/e-config-build-1.png
+++ /dev/null
Binary files differ
diff --git a/doc/devel/images/e-config-build-2.png b/doc/devel/images/e-config-build-2.png
deleted file mode 100644
index 455a21728f..0000000000
--- a/doc/devel/images/e-config-build-2.png
+++ /dev/null
Binary files differ
diff --git a/doc/devel/images/e-config-build-3.png b/doc/devel/images/e-config-build-3.png
deleted file mode 100644
index 546210793e..0000000000
--- a/doc/devel/images/e-config-build-3.png
+++ /dev/null
Binary files differ
diff --git a/doc/devel/images/e-config-flow.pic b/doc/devel/images/e-config-flow.pic
deleted file mode 100644
index a75a8b6087..0000000000
--- a/doc/devel/images/e-config-flow.pic
+++ /dev/null
@@ -1,36 +0,0 @@
-
-.PS 5
-space=0.7
-[
- Editor: ellipse "Editor"
- Pages: box "Pages" at last ellipse + (0,-space)
- Sections: box "Sections" at last box + (space/4, -space/2) fill 0
- Items: box "Items" at last box + (space/4, -space/2) fill 0
- line <-> from Editor.s to Pages.n
-]
-Manager: box dashed ht last [].ht+0.2 wid last[].wid+.2 at last []
-right; move; move
-[
- EConfig: ellipse "EConfig"
- EMConfig: ellipse "EMConfig" at last ellipse + (0,-space)
-]
-Config: box dashed ht last [].ht+0.2 wid last[].wid+.2 at last []
-
-EMTargetAccount: ellipse "Account" "Target" at Config.e + (1.5*space, 0)
-Druid: ellipse "Druid" at Config.s + (0,-1.5*space)
-EAccount: ellipse "EAccount" at Config.se + (1.5*space,-1.5*space)
-
-line <-> from Config.s to Druid.n " next, prepare" ljust "create, enable " rjust
-line -> from EAccount.n to EMTargetAccount.s " initialise" ljust " change" ljust
-
-line <-> from EAccount.w to Druid.e "initialise" "changes"
-line <-> from Config.e to EMTargetAccount.w "create" "changed"
-
-line <-> from Manager.e to Config.w "create" "check" "commit" "abort"
-spline <-> from Manager.s \
- to (Manager.s.x,Druid.s.y) \
- to (Manager.s.x+space/2,Druid.s.y-space/2) \
- then to EAccount.s + (-space/2,-space/2) \
- then to EAccount.s
-.PE
-
diff --git a/doc/devel/images/e-popup-merge-1.pic b/doc/devel/images/e-popup-merge-1.pic
deleted file mode 100644
index 1baa83a793..0000000000
--- a/doc/devel/images/e-popup-merge-1.pic
+++ /dev/null
@@ -1,61 +0,0 @@
-
-.PS 5
-space=0.7
-down
-define item {
- [ right
- box ht 0.25 wid 0 $1 ljust invis
- box ht 0.25 wid 3 "" invis ]
- [ right
- box ht 0.25 wid 0 $3 ljust invis
- box ht 0.25 wid 3 $2 ljust invis ]
- box ht 0.5 wid 3 at last [].n
-}
-
-define link {
- line -> from $1.e + (0.1,0) to $2.w - (0.1,0)
-}
-
-define title {
- box ht 0.5 wid 3 $1 invis
-}
-
-A: [
- title("Core Menu")
-
- Copy: item("Copy", "many", "00.copy")
- Paste: item("Paste", "", "01.paste")
- Bar1: item("-----", "one", "20.")
- Open: item("Open", "one", "21.open")
- Save: item("Save...", "one", "22.save")
- Bar2: item("-----", "", "40.")
- Read: item("Mark as Read", "mark_read", "41.markread")
- Unread: item("Mark as Unread", "mark_unread", "42.markunread")
-]
-
-move
-B: [
- title("Additional Items")
-
- ReplyList: item("Reply To List", "one", "02.replylist")
- Forward: item("Forward", "any", "03.forward")
-]
-
-C: [
- title("Merged Menu")
-
- Copy: item("Copy", "", "00.copy")
- Paste: item("Paste", "", "01.paste")
- Forward: item("Forward", "", "03.forward")
- Bar2: item("-----", "", "40.")
- Unread: item("Mark as Unread", "", "42.markunread")
-] with .nw at A.ne + ( 2,-1)
-
-link(A.Copy, C.Copy)
-link(A.Paste, C.Paste)
-link(B.Forward, C.Forward)
-link(A.Bar2, C.Bar2)
-link(A.Unread, C.Unread)
-
-.PE
-
diff --git a/doc/devel/images/e-popup-merge-2.pic b/doc/devel/images/e-popup-merge-2.pic
deleted file mode 100644
index 277d451517..0000000000
--- a/doc/devel/images/e-popup-merge-2.pic
+++ /dev/null
@@ -1,67 +0,0 @@
-
-.PS 5
-space=0.7
-down
-define item {
- [ right
- box ht 0.25 wid 0 $1 ljust invis
- box ht 0.25 wid 3 "" invis ]
- [ right
- box ht 0.25 wid 0 $3 ljust invis
- box ht 0.25 wid 3 $2 ljust invis ]
- box ht 0.5 wid 3 at last [].n
-}
-
-define link {
- line -> from $1.e + (0.1,0) to $2.w - (0.1,0)
-}
-
-define title {
- box ht 0.5 wid 3 $1 invis
-}
-
-A: [
- title("Core Menu")
-
- Copy: item("Copy", "many", "00.copy")
- Paste: item("Paste", "", "01.paste")
- Bar1: item("-----", "one", "20.")
- Open: item("Open", "one", "21.open")
- Save: item("Save...", "one", "22.save")
- Bar2: item("-----", "", "40.")
- Read: item("Mark as Read", "mark_read", "41.markread")
- Unread: item("Mark as Unread", "mark_unread", "42.markunread")
-]
-
-move
-B: [
- title("Additional Items")
-
- ReplyList: item("Reply To List", "one", "02.replylist")
- Forward: item("Forward", "any", "03.forward")
-]
-
-C: [
- title("Merged Menu")
-
- Paste: item("Paste", "", "01.paste")
- ReplyList: item("Reply To List", "", "02.replylist")
- Forward: item("Forward", "", "03.forward")
- Bar1: item("-----", "", "20.")
- Open: item("Open", "", "21.open");
- Save: item("Save...", "", "22.save")
- Bar2: item("-----", "", "40.")
- Read: item("Mark as Read", "", "41.markread")
-] with .nw at A.ne + ( 2,-1)
-
-link(A.Paste, C.Paste)
-link(B.ReplyList, C.ReplyList)
-link(B.Forward, C.Forward)
-link(A.Bar1, C.Bar1)
-link(A.Open, C.Open)
-link(A.Save, C.Save)
-link(A.Bar2, C.Bar2)
-link(A.Read, C.Read)
-
-.PE
-
diff --git a/doc/devel/importer/.cvsignore b/doc/devel/importer/.cvsignore
deleted file mode 100644
index 439d6641ff..0000000000
--- a/doc/devel/importer/.cvsignore
+++ /dev/null
@@ -1,10 +0,0 @@
-sgml
-Makefile
-Makefile.in
-*-decl.txt
-*-decl-list.txt
-*-unused.txt
-*.hierarchy
-*.signals
-*.stamp
-*-scan.c
diff --git a/doc/devel/importer/Makefile.am b/doc/devel/importer/Makefile.am
deleted file mode 100644
index 8b5343677a..0000000000
--- a/doc/devel/importer/Makefile.am
+++ /dev/null
@@ -1,195 +0,0 @@
-## Process this file with automake to produce Makefile.in
-
-# The name of the module, e.g. 'glib'.
-DOC_MODULE=evolution-shell-importer
-
-# The top-level SGML file. Change it if you want.
-DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.sgml
-
-# The directory containing the source code. Relative to $(srcdir).
-# gtk-doc will search all .c & .h files beneath here for inline comments
-# documenting functions and macros.
-DOC_SOURCE_DIR=$(EVOLUTION_DIR)/shell/importer
-
-# Extra options to supply to gtkdoc-scan.
-SCAN_OPTIONS=
-
-# Extra options to supply to gtkdoc-mkdb.
-MKDB_OPTIONS=
-
-# Extra options to supply to gtkdoc-fixref.
-FIXXREF_OPTIONS=
-
-# Used for dependencies.
-HFILE_GLOB= \
- $(top_srcdir)/shell/importer/evolution-importer.h \
- $(top_srcdir)/shell/importer/evolution-importer-client.h
-
-CFILE_GLOB= \
- $(top_srcdir)/shell/importer/evolution-importer.c \
- $(top_srcdir)/shell/importer/evolution-importer-client.c
-
-# Header files to ignore when scanning.
-IGNORE_HFILES= \
- GNOME_Evolution_Importer.h \
- importer.h
-
-# Images to copy into HTML directory.
-HTML_IMAGES =
-
-# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE).
-content_files =
-
-# Other files to distribute.
-extra_files =
-
-# CFLAGS and LDFLAGS for compiling scan program. Only needed if your app/lib
-# contains GtkObjects/GObjects and you want to document signals and properties.
-GTKDOC_CFLAGS = \
- -I$(top_srcdir)/shell/importer \
- -I$(top_srcdir)/shell \
- -I$(top_srcdir) \
- -I$(top_builddir) \
- $(BONOBO_VFS_GNOME_CFLAGS)
-
-GTKDOC_LIBS = \
- $(BONOBO_VFS_GNOME_LIBS) \
- $(top_builddir)/shell/importer/.libs/libevolution-importer.so
-
-GTKDOC_CC=$(LIBTOOL) --mode=compile $(CC)
-GTKDOC_LD=$(LIBTOOL) --mode=link $(CC)
-
-# If you need to override some of the declarations, place them in this file
-# and uncomment this line.
-#DOC_OVERRIDES = $(DOC_MODULE)-overrides.txt
-DOC_OVERRIDES =
-
-###########################################################################
-# Everything below here is generic and you shouldn't need to change it.
-###########################################################################
-
-TARGET_DIR=$(HTML_DIR)/$(DOC_MODULE)
-
-EXTRA_DIST = \
- $(content_files) \
- $(extra_files) \
- $(HTML_IMAGES) \
- $(DOC_MAIN_SGML_FILE) \
- $(DOC_MODULE).types \
- $(DOC_MODULE)-sections.txt \
- $(DOC_OVERRIDES)
-
-DOC_STAMPS=scan-build.stamp tmpl-build.stamp sgml-build.stamp html-build.stamp \
- $(srcdir)/tmpl.stamp $(srcdir)/sgml.stamp $(srcdir)/html.stamp
-
-SCANOBJ_FILES = \
- $(DOC_MODULE).args \
- $(DOC_MODULE).hierarchy \
- $(DOC_MODULE).signals
-
-if ENABLE_GTK_DOC
-#all-local: html-build.stamp
-all-local: sgml-build.stamp
-
-#### scan ####
-
-scan-build.stamp: $(HFILE_GLOB)
- @echo '*** Scanning header files ***'
- if grep -l '^..*$$' $(srcdir)/$(DOC_MODULE).types > /dev/null ; then \
- CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" CFLAGS="$(GTKDOC_CFLAGS)" LDFLAGS="$(GTKDOC_LIBS)" gtkdoc-scanobj --module=$(DOC_MODULE) --output-dir=$(srcdir) ; \
- else \
- cd $(srcdir) ; \
- for i in $(SCANOBJ_FILES) ; do \
- test -f $$i || touch $$i ; \
- done \
- fi
- cd $(srcdir) && \
- gtkdoc-scan --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) --ignore-headers="$(IGNORE_HFILES)" $(SCAN_OPTIONS) $(EXTRA_HFILES)
- touch scan-build.stamp
-
-$(DOC_MODULE)-decl.txt $(SCANOBJ_FILES): scan-build.stamp
- @true
-
-#### templates ####
-
-tmpl-build.stamp: $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_OVERRIDES)
- @echo '*** Rebuilding template files ***'
- cd $(srcdir) && gtkdoc-mktmpl --module=$(DOC_MODULE)
- touch tmpl-build.stamp
-
-tmpl.stamp: tmpl-build.stamp
- @true
-
-#### sgml ####
-
-sgml-build.stamp: tmpl.stamp $(CFILE_GLOB) $(srcdir)/tmpl/*.sgml
- @echo '*** Building SGML ***'
- cd $(srcdir) && \
- gtkdoc-mkdb --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) --main-sgml-file=$(DOC_MAIN_SGML_FILE) $(MKDB_OPTIONS)
- touch sgml-build.stamp
-
-sgml.stamp: sgml-build.stamp
- @true
-
-#### html ####
-
-html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files)
- @echo '*** Building HTML ***'
- test -d $(srcdir)/html || mkdir $(srcdir)/html
- cd $(srcdir)/html && gtkdoc-mkhtml $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE)
- test "x$(HTML_IMAGES)" = "x" || ( cd $(srcdir) && cp $(HTML_IMAGES) html )
- @echo '-- Fixing Crossreferences'
- cd $(srcdir) && gtkdoc-fixxref --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS)
- touch html-build.stamp
-endif
-
-##############
-
-clean-local:
- rm -f *~ *.bak $(SCANOBJ_FILES) *-unused.txt $(DOC_STAMPS)
-
-maintainer-clean-local: clean
- cd $(srcdir) && rm -rf sgml html $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt
-
-install-data-local:
- $(mkinstalldirs) $(DESTDIR)$(TARGET_DIR)
- (installfiles=`echo $(srcdir)/html/*.html`; \
- if test "$$installfiles" = '$(srcdir)/html/*.html'; \
- then echo '-- Nothing to install' ; \
- else \
- for i in $$installfiles; do \
- echo '-- Installing '$$i ; \
- $(INSTALL_DATA) $$i $(DESTDIR)$(TARGET_DIR); \
- done; \
- echo '-- Installing $(srcdir)/html/index.sgml' ; \
- $(INSTALL_DATA) $(srcdir)/html/index.sgml $(DESTDIR)$(TARGET_DIR); \
- fi)
-
-#
-# Require gtk-doc when making dist
-#
-if ENABLE_GTK_DOC
-dist-check-gtkdoc:
-else
-dist-check-gtkdoc:
- @echo "*** gtk-doc must be installed and enabled in order to make dist"
- @false
-endif
-
-dist-hook: dist-check-gtkdoc dist-hook-local
- mkdir $(distdir)/tmpl
- mkdir $(distdir)/sgml
- mkdir $(distdir)/html
- -cp $(srcdir)/tmpl/*.sgml $(distdir)/tmpl
- -cp $(srcdir)/sgml/*.sgml $(distdir)/sgml
- -cp $(srcdir)/html/index.sgml $(distdir)/html
- -cp $(srcdir)/html/*.html $(srcdir)/html/*.css $(distdir)/html
-
- images=$(HTML_IMAGES) ; \
- for i in $$images ; do \
- cp $(srcdir)/$$i $(distdir)/html ; \
- done
-
-.PHONY : dist-hook-local
-
-
diff --git a/doc/devel/importer/evolution-shell-importer-sections.txt b/doc/devel/importer/evolution-shell-importer-sections.txt
deleted file mode 100644
index e2474f6375..0000000000
--- a/doc/devel/importer/evolution-shell-importer-sections.txt
+++ /dev/null
@@ -1,79 +0,0 @@
-<INCLUDE>evolution-importer.h</INCLUDE>
-
-<SECTION>
-<FILE>evolution-importer</FILE>
-EVOLUTION_IMPORTER
-<TITLE>EvolutionImporter</TITLE>
-
-EvolutionImporterSupportFormatFn
-EvolutionImporterLoadFileFn
-EvolutionImporterProcessItemFn
-EvolutionImporterGetErrorFn
-
-EvolutionImporterResult
-
-evolution_importer_new
-
-<SUBSECTION Standard>
-EVOLUTION_TYPE_IMPORTER
-EVOLUTION_IMPORTER
-EVOLUTION_IS_IMPORTER
-EVOLUTION_IMPORTER_CLASS
-EVOLUTION_IS_IMPORTER_CLASS
-evolution_importer_get_type
-
-<SUBSECTION Private>
-EvolutionImporter
-EvolutionImporterPrivate
-
-</SECTION>
-
-<INCLUDE>evolution-importer-listener.h</INCLUDE>
-<SECTION>
-<FILE>evolution-importer-listener</FILE>
-EVOLUTION_IMPORTER_LISTENER
-<TITLE>EvolutionImporterListener</TITLE>
-
-EvolutionImporterListenerCallback
-
-evolution_importer_listener_new
-
-<SUBSECTION Standard>
-EVOLUTION_TYPE_IMPORTER_LISTENER
-EVOLUTION_IMPORTER_LISTENER
-EVOLUTION_IMPORTER_LISTENER_CLASS
-EVOLUTION_IS_IMPORTER_LISTENER
-EVOLUTION_IS_IMPORTER_LISTENER_CLASS
-evolution_importer_listener_get_type
-
-<SUBSECTION Private>
-EvolutionImporterListener
-EvolutionImporterListenerPrivate
-
-</SECTION>
-
-<INCLUDE>evolution-importer-client.h</INCLUDE>
-<SECTION>
-<FILE>evolution-importer-client</FILE>
-EVOLUTION_IMPORTER_CLIENT
-<TITLE>EvolutionImporterClient</TITLE>
-
-evolution_importer_client_new
-evolution_importer_client_new_from_id
-evolution_importer_client_support_format
-evolution_importer_client_load_file
-evolution_importer_client_process_item
-evolution_importer_client_get_error
-
-<SUBSECTION Standard>
-EVOLUTION_TYPE_IMPORTER_CLIENT
-EVOLUTION_IMPORTER_CLIENT
-EVOLUTION_IMPORTER_CLIENT_CLASS
-EVOLUTION_IS_IMPORTER_CLIENT
-EVOLUTION_IS_IMPORTER_CLIENT_CLASS
-evolution_importer_client_get_type
-
-<SUBSECTION Private>
-EvolutionImporterClient
-
-</SECTION>
diff --git a/doc/devel/importer/evolution-shell-importer.args b/doc/devel/importer/evolution-shell-importer.args
deleted file mode 100644
index e69de29bb2..0000000000
--- a/doc/devel/importer/evolution-shell-importer.args
+++ /dev/null
diff --git a/doc/devel/importer/evolution-shell-importer.hierarchy b/doc/devel/importer/evolution-shell-importer.hierarchy
deleted file mode 100644
index c46ebdf782..0000000000
--- a/doc/devel/importer/evolution-shell-importer.hierarchy
+++ /dev/null
@@ -1,7 +0,0 @@
-GtkObject
- BonoboObject
- BonoboXObject
- EvolutionImporter
- EvolutionImporterListener
- Handle to remote Bonobo::Unknown
- EvolutionImporterClient
diff --git a/doc/devel/importer/evolution-shell-importer.types b/doc/devel/importer/evolution-shell-importer.types
deleted file mode 100644
index e787818599..0000000000
--- a/doc/devel/importer/evolution-shell-importer.types
+++ /dev/null
@@ -1,9 +0,0 @@
-#include <gnome.h>
-#include <bonobo.h>
-#include <shell/importer/evolution-importer.h>
-#include <shell/importer/evolution-importer-client.h>
-#include <shell/importer/evolution-importer-listener.h>
-
-evolution_importer_get_type
-evolution_importer_client_get_type
-evolution_importer_listener_get_type
diff --git a/doc/devel/importer/private-reference.sgml b/doc/devel/importer/private-reference.sgml
deleted file mode 100644
index d28c7b8591..0000000000
--- a/doc/devel/importer/private-reference.sgml
+++ /dev/null
@@ -1,21 +0,0 @@
- <reference id="importer-private-reference">
- <title>Importer Private API Reference</title>
-
- <partintro>
- <para>
- This part presents the class and function reference for the
- private APIs of the different components of the &Evolution;
- Import Framework.
- </para>
- </partintro>
-
- &EvolutionImporterListener;
- &EvolutionImporterClient;
- </reference>
-
-<!--
-Local variables:
-mode: sgml
-sml-parent-document: ("../evolution-devel-guide.sgml" "book" "part" "")
-End:
--->
diff --git a/doc/devel/importer/public-reference.sgml b/doc/devel/importer/public-reference.sgml
deleted file mode 100644
index ba99c9b309..0000000000
--- a/doc/devel/importer/public-reference.sgml
+++ /dev/null
@@ -1,20 +0,0 @@
- <reference id="importer-public-reference">
- <title>Importer Public API Reference</title>
-
- <partintro>
- <para>
- This part presents the class and function reference for the
- public APIs of the different components of the &Evolution;
- Import Framework.
- </para>
- </partintro>
-
- &EvolutionImporter;
- </reference>
-
-<!--
-Local variables:
-mode: sgml
-sml-parent-document: ("../evolution-devel-guide.sgml" "book" "part" "")
-End:
--->
diff --git a/doc/devel/importer/tmpl/evolution-importer-client.sgml b/doc/devel/importer/tmpl/evolution-importer-client.sgml
deleted file mode 100644
index 6cee37bef1..0000000000
--- a/doc/devel/importer/tmpl/evolution-importer-client.sgml
+++ /dev/null
@@ -1,84 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-EvolutionImporterClient
-
-<!-- ##### SECTION Short_Description ##### -->
-A #GtkObject based client to simplify use of a GNOME_Evolution_Importer object.
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-This #GtkObject provides a convience wrapper to the GNOME_Evolution_Importer object, providing error checking and hiding all the CORBA internals from the user.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### MACRO EVOLUTION_IMPORTER_CLIENT ##### -->
-<para>
-Casts a #GtkObject into an #EvolutionImporterClient
-</para>
-
-@obj: A #GtkObject
-
-
-<!-- ##### FUNCTION evolution_importer_client_new ##### -->
-<para>
-
-</para>
-
-@objref:
-@Returns:
-
-
-<!-- ##### FUNCTION evolution_importer_client_new_from_id ##### -->
-<para>
-
-</para>
-
-@id:
-@Returns:
-
-
-<!-- ##### FUNCTION evolution_importer_client_support_format ##### -->
-<para>
-
-</para>
-
-@client:
-@filename:
-@Returns:
-
-
-<!-- ##### FUNCTION evolution_importer_client_load_file ##### -->
-<para>
-
-</para>
-
-@client:
-@filename:
-@folderpath:
-@Returns:
-
-
-<!-- ##### FUNCTION evolution_importer_client_process_item ##### -->
-<para>
-
-</para>
-
-@client:
-@listener:
-<!-- # Unused Parameters # -->
-@callback:
-@closure:
-
-
-<!-- ##### FUNCTION evolution_importer_client_get_error ##### -->
-<para>
-
-</para>
-
-@client:
-@Returns:
-
-
diff --git a/doc/devel/importer/tmpl/evolution-importer.sgml b/doc/devel/importer/tmpl/evolution-importer.sgml
deleted file mode 100644
index 1c7736a37f..0000000000
--- a/doc/devel/importer/tmpl/evolution-importer.sgml
+++ /dev/null
@@ -1,96 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-EvolutionImporter
-
-<!-- ##### SECTION Short_Description ##### -->
-A #BonoboObject that implements the GNOME/Evolution/Importer interface.
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-A #BonoboObject wrapper around the GNOME/Evolution/Importer interface, providing error checking and reference counting, hiding the CORBA internals from the user and providing a simple way to create a GNOME_Evolution_Importer object.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### MACRO EVOLUTION_IMPORTER ##### -->
-<para>
-Casts a #GtkObject into an #EvolutionImporter.
-</para>
-
-@obj: A #GtkObject.
-
-
-<!-- ##### USER_FUNCTION EvolutionImporterSupportFormatFn ##### -->
-<para>
-The type of function that is called when the importer wishes to find out if the importing component can support the file given in @filename.
-</para>
-
-@importer: The #EvolutionImporter.
-@filename: The filename of the file to check.
-@closure: The data passed into evolution_importer_new ().
-@Returns: A #gboolean. TRUE if the importing component can import the file, FALSE otherwise.
-
-
-<!-- ##### USER_FUNCTION EvolutionImporterLoadFileFn ##### -->
-<para>
-The type of function that is called when the importer wishes the importing component to load the file given in @filename, and initialise itself.
-</para>
-
-@importer: The #EvolutionImporter.
-@filename: The filename of the file to load.
-@folderpath:
-@closure: The data passed into evolution_importer_new ().
-@Returns: A #gboolean. TRUE if the load and initialisation was successful, FALSE otherwise.
-
-
-<!-- ##### USER_FUNCTION EvolutionImporterProcessItemFn ##### -->
-<para>
-The type of function that is called when the importer wants the importing component to process the next item (or items) in a file.
-</para>
-
-@importer: The #EvolutionImporter
-@listener: A GNOME_Evolution_Importer_Listener CORBA object.
-@closure: The data passed into evolution_importer_new ().
-@ev: A #CORBA_Environment for returning any CORBA exceptions.
-
-
-<!-- ##### USER_FUNCTION EvolutionImporterGetErrorFn ##### -->
-<para>
-The type of function that is called when the importer wants to get a string version of an error. Not all importing components support this function.
-</para>
-
-@importer: The #EvolutionImporter.
-@closure: The data passed to evolution_importer_new ().
-@Returns: A string representation of the error, or NULL if there was no error, or the importing component does not support the getError method.
-
-
-<!-- ##### ENUM EvolutionImporterResult ##### -->
-<para>
-
-</para>
-
-@EVOLUTION_IMPORTER_OK:
-@EVOLUTION_IMPORTER_UNSUPPORTED_OPERATION:
-@EVOLUTION_IMPORTER_INTERRUPTED:
-@EVOLUTION_IMPORTER_BUSY:
-@EVOLUTION_IMPORTER_NOT_READY:
-@EVOLUTION_IMPORTER_UNKNOWN_DATA:
-@EVOLUTION_IMPORTER_BAD_DATA:
-@EVOLUTION_IMPORTER_BAD_FILE:
-@EVOLUTION_IMPORTER_UNKNOWN_ERROR:
-
-<!-- ##### FUNCTION evolution_importer_new ##### -->
-<para>
-
-</para>
-
-@support_format_fn:
-@load_file_fn:
-@process_item_fn:
-@get_error_fn:
-@closure:
-@Returns:
-
-
diff --git a/doc/devel/importer/tmpl/evolution-shell-importer-unused.sgml b/doc/devel/importer/tmpl/evolution-shell-importer-unused.sgml
deleted file mode 100644
index 7a9a98034b..0000000000
--- a/doc/devel/importer/tmpl/evolution-shell-importer-unused.sgml
+++ /dev/null
@@ -1,10 +0,0 @@
-<!-- ##### USER_FUNCTION EvolutionImporterClientCallback ##### -->
-<para>
-
-</para>
-
-@client:
-@result:
-@more_items:
-@data:
-
diff --git a/doc/devel/preface.sgml b/doc/devel/preface.sgml
deleted file mode 100644
index fdaa824a8b..0000000000
--- a/doc/devel/preface.sgml
+++ /dev/null
@@ -1,113 +0,0 @@
- <preface id="introduction">
- <title>Introduction</title>
-
- <para>
- This is the &Evolution; Developer's Guide or programming guide
- for the &Evolution; groupware suite. If you are a programmer
- and you wish to use &Evolution;'s functionality from your own
- applications or if you wish to modify the &Evolution; core code,
- you should read this guide.
- </para>
-
- <para>
- If you are an end-user of &Evolution; you do not need to read
- this guide; please read the &Evolution; User's Guide instead.
- </para>
-
- <para>
- This guide contains the information you need to know to do the
- following:
-
- <itemizedlist>
- <listitem>
- <para>
- Write applications that use &Evolution;'s data
- repositories via the &Wombat; personal information server.
- Examples of this would be a <application>GNOME
- Panel</application> applet that displays today's
- appointments, or a telephone dialer application that uses
- the contents of the &Evolution; Addressbook.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Write applications that use the &Camel; mail library.
- This includes extending &Evolution;'s own mail component
- to perform additional functions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Write new components for the &Evolution; Shell. Instead
- of writing a stand-alone application, you can provide your
- users with the benefit of having integrated views of their
- data from within Evolution.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Write new modules for the &Evolution; Executive Summary.
- This allows you to present commonly-accessed information
- in a convenient fashion directly in the &Evolution; Shell.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Modify the core &Evolution; code to add new features or
- change its architecture.
- </para>
- </listitem>
- </itemizedlist>
- </para>
-
- <sect1 id="organization">
- <title>Organization of this Guide</title>
-
- <para>
- This guide is organized in two big sections. The first is a
- programming guide, which consists of one part for each one of
- &Evolution;'s components: there are separate parts for the
- calendar, the addressbook, the mailer, the executive summary,
- and the shell. Each part gives a description of the
- architecture of its corresponding component, and also gives
- information about the component's internal architecture and
- some implementation details.
- </para>
-
- <para>
- The second section of this guide is a reference guide for
- &Evolution;'s programming interfaces. We have separated these
- into public and private interfaces. The public ones are those
- that most people will need to use when writing extensions or
- third-party components; the private interfaces are those used
- internally in &Evolution;. Even if you do not intend to
- modify the &Evolution; core code, it may be useful to know a
- bit about the way it is organized internally.
- </para>
-
- <para>
- &Evolution; is free software, and we want you as a programmer
- to make the most of it. We have provided many useful
- interfaces that you can use in your own applications. Still,
- we want you to view &Evolution; as a framework for building
- groupware applications, and this may occasionally involve
- making changes to its core code. We want you to learn from
- &Evolution;'s design because we think it marks an important
- milestone in the development of large-scale free software
- applications. We want you to modify it as you see fit. Free
- software gives you this freedom, and we want the whole world
- to benefit from it.
- </para>
- </sect1>
- </preface>
-
-<!--
-Local variables:
-mode: sgml
-sgml-parent-document: ("evolution-devel-guide.sgml" "book" "book" "")
-End:
--->
diff --git a/doc/devel/reference.sgml b/doc/devel/reference.sgml
deleted file mode 100644
index 4381ad29b7..0000000000
--- a/doc/devel/reference.sgml
+++ /dev/null
@@ -1,49 +0,0 @@
- <part id="evolution-api-reference">
- <title>&Evolution; API Reference</title>
-
- <partintro>
- <para>
- This part presents the class and function reference for the
- different libraries and interfaces that &Evolution; provides.
- Classes are described together with their methods; individual
- functions are grouped by functional group.
- </para>
-
- <para>
- &Evolution; provides two kinds of interfaces, public and
- private. The public interfaces are those designed to be used
- from third-party applications or components; if you wanted to
- write an application that uses &Evolution;'s data repositories
- to display data in a particular way, you would use the public
- interfaces. The private interfaces are those used inside
- &Evolution; itself; these are generally not interesting unless
- you intend to make modifications to the &Evolution; code base.
- </para>
-
- <para>
- While the public and private interfaces are described in
- separate reference sections, we have decided to put them
- together in the same book, this guide, because we want to
- encourage you to regard &Evolution; as something more than a
- black box that stores and dispatches personal information. We
- want you to make modifications to the &Evolution; core if
- these would allow you to present or store your data in better
- ways. &Evolution; is free software; we want you to learn from
- its design and implementation details so that you can make it
- even better for the whole world to use.
- </para>
- </partintro>
-
- &calendar-public-reference;
- <!-- &importer-public-reference; -->
- <!-- &evolution-services-public-reference; -->
- <!-- &importer-private-reference; -->
- <!-- &evolution-services-private-reference; -->
- </part>
-
-<!--
-Local variables:
-mode: sgml
-sgml-parent-document: ("evolution-devel-guide.sgml" "book" "book" "")
-End:
--->
diff --git a/doc/white-papers/calendar/calendar.sgml b/doc/white-papers/calendar/calendar.sgml
deleted file mode 100644
index 2cb3132e2b..0000000000
--- a/doc/white-papers/calendar/calendar.sgml
+++ /dev/null
@@ -1,209 +0,0 @@
-<!doctype article PUBLIC "-//Davenport//DTD DocBook V3.0//EN" [
-<!entity Evolution "<application>Evolution</application>">
-<!entity CUA "<acronym>CUA</acronym>">
-<!entity PCS "<acronym>PCS</acronym>">
-<!entity Bonobo "<application>Bonobo</application>">
-<!entity CORBA "<acronym>CORBA</acronym>">
-<!entity GTK "<acronym>GTK+</acronym>">
-]>
-
-<article class="whitepaper" id="calendar">
-
- <artheader>
- <title>&Evolution; Calendaring Framework</title>
-
- <authorgroup>
- <author>
- <firstname>Federico</firstname>
- <surname>Mena Quintero</surname>
- <affiliation>
- <address>
- <email>federico@helixcode.com</email>
- </address>
- </affiliation>
- </author>
- </authorgroup>
-
- <copyright>
- <year>2000</year>
- <holder>Helix Code, Inc.</holder>
- </copyright>
-
- <abstract>
- <para>
- The &Evolution; groupware suite provides a framework for
- developing calendaring applications, as well as a graphical
- calendar client and a personal calendar server. This white
- paper describes the architecture of the &Evolution;
- calendaring framework.
- </para>
- </abstract>
- </artheader>
-
- <!-- Introduction -->
-
- <sect1 id="introduction">
- <title>Introduction</title>
-
- <para>
- Calendaring is an important part of a groupware suite. A
- calendaring framework will allow a user to keep a personal
- calendar and have several applications use it. Such
- applications could be a graphical calendar client that the user
- employs to schedule appointments and keep track of his time, a
- <productname>Palm Pilot</productname> synchronization client, or
- a simple alarm or reminder utility. A comprehensive calendaring
- framework will also allow multiple users to schedule
- appointments between each other; for example, a project director
- may want to schedule a weekly meeting with the rest of the
- project members, or a person who owns a large house may want to
- schedule a big party with his friends. The attendees will then
- want to reply with messages such as, &ldquo;I will
- attend&rdquo;, or &ldquo;I will attend only if the proposed time
- is changed&rdquo;.
- </para>
-
- <para>
- The &Evolution; groupware suite provides a framework for
- developing calendaring applications, as well as a graphical
- calendar client or calendar user agent (&CUA;) and a personal
- calendar server (&PCS;).
- </para>
-
- <para>
- The following sections explain the basic calendaring framework,
- the functions of the calendar user agent and the personal
- calendar server, and the relationship between the two.
- </para>
- </sect1>
-
- <!-- Personal Calendar Server -->
-
- <sect1 id="pcs">
- <title>Personal Calendar Server</title>
-
- <para>
- The personal calendar server (&PCS;) provides centralized
- management and storage of a user's personal calendar. Multiple
- clients can connect to the &PCS; simultaneously to query and
- modify the user's calendar in a synchronized fashion. The main
- features of the &PCS; are as follows:
- </para>
-
- <formalpara>
- <title>Storage</title>
-
- <para>
- The &PCS; is responsible for loading and saving calendars.
- Centralizing the loading and saving functionality allows
- multiple clients to use the same calendar at the same time
- without having to worry about each other.
- </para>
- </formalpara>
-
- <formalpara>
- <title>Basic Queries</title>
-
- <para>
- The &PCS; provides functions to do basic queries on a
- calendar, for example, a client can ask the server for a list
- of all the appointments in the calendar, or for all the data
- for a specific appointment.
- </para>
- </formalpara>
-
- <formalpara>
- <title>Recurrence and Alarm Queries</title>
-
- <para>
- Clients can ask the &PCS; for a list of the appointments that
- occur within a specified time range; for example a graphical
- client that has a per-week view could ask the &PCS; for all
- the appointments that occur in a particular week. This
- includes multiple occurrences of a single recurring event; for
- example, the object for &ldquo;a 1-hour meeting that occurs on
- every Tuesday and Thursday&rdquo; is represented inside the
- &PCS; as a single event with a recurrence rule. Similarly,
- clients can ask the &PCS; for a list of events that have
- alarms that trigger within a specified time range.
- </para>
- </formalpara>
-
- <formalpara>
- <title>Notification of Changes</title>
-
- <para>
- This is the most important function of the &PCS;, as it allows
- multiple calendar clients to maintain a unified view of the
- calendar between the server and themselves. When a client
- asks the &PCS; to modify or remove an event, the &PCS;
- notifies all the clients that are connected to it about the
- change. The policy is that &ldquo;the server is always
- right&rdquo;; clients can act as dumb views onto the
- calendar's data and they will be notified by the &PCS; when
- something changes.
- </para>
- </formalpara>
- </sect1>
-
- <!-- Calenar User Agent -->
-
- <sect1 id="cua">
- <title>Calendar User Agent</title>
-
- <para>
- A calendar user agent (&CUA;) is a program that lets a user
- manipulate a calendar. &Evolution; provides an attractive,
- graphical calendar client that communicates with the &Evolution;
- personal calendar server.
- </para>
-
- <para>
- The &Evolution; calendar client just provides a view onto the
- data that is stored and managed by the personal calendar server.
- The calendar client does not perform direct manipulations on a
- calendar's data; instead it offloads those requests to the
- calendar server, which takes care of making the appropriate
- modifications in the calendar and then notifies all the clients
- about the changes.
- </para>
- </sect1>
-
- <!-- Calendar Client Library -->
-
- <sect1 id="client-lib">
- <title>Calendar Client Library</title>
-
- <para>
- Communication between the personal calendar server and calendar
- clients is defined by a set of &Bonobo; &CORBA; interfaces.
- Clients can be written by implementing the client-side
- <classname>Listener</classname> interface, which defines the
- notification callbacks that the PCS uses to inform clients about
- changes to the calendar.
- </para>
-
- <para>
- As a convenience for &GTK; programmers, &Evolution; also
- includes a library which provides a
- <classname>CalClient</classname> class which can be used for
- communication with the personal calendar server. Objects of
- this class automatically contact the PCS when they are created.
- <classname>CalClient</classname> provides functions to request
- changes in the calendar, and it also emits signals when it gets
- notification about changes from the PCS. This makes it easy and
- convenient to write calendar clients for &Evolution; using
- &GTK;.
- </para>
-
- <para>
- The implementation of the <classname>CalClient</classname> class
- simply wraps the &Evolution; &CORBA; interfaces for calendaring
- with a familiar-looking &GTK; object. Calls to the
- <classname>Listener</classname> interface get translated to
- signal emissions from the <classname>CalClient</classname>, thus
- shielding programmers from the details of the &CORBA;
- interfaces.
- </para>
- </sect1>
-</article>
diff --git a/doc/white-papers/mail/camel.sgml b/doc/white-papers/mail/camel.sgml
deleted file mode 100644
index 5f5ea27a98..0000000000
--- a/doc/white-papers/mail/camel.sgml
+++ /dev/null
@@ -1,356 +0,0 @@
-<!doctype article PUBLIC "-//Davenport//DTD DocBook V3.0//EN" [
-<!entity Evolution "<application>Evolution</application>">
-<!entity Camel "Camel">
-]>
-
-<article class="whitepaper" id="camel">
-
- <artheader>
- <title>The &Camel; Messaging Library</title>
-
- <authorgroup>
- <author>
- <firstname>Jeffrey</firstname>
- <surname>Stedfast</surname>
- <affiliation>
- <address>
- <email>fejj@helixcode.com</email>
- </address>
- </affiliation>
- </author>
-
- <author>
- <firstname>Michael</firstname>
- <surname>Zucchi</surname>
- <affiliation>
- <address>
- <email>notzed@helixcode.com</email>
- </address>
- </affiliation>
- </author>
-
- <author>
- <firstname>Dan</firstname>
- <surname>Winship</surname>
- <affiliation>
- <address>
- <email>danw@helixcode.com</email>
- </address>
- </affiliation>
- </author>
-
- <author>
- <firstname>Bertrand</firstname>
- <surname>Guiheneuf</surname>
- <affiliation>
- <address>
- <email>bertrand@helixcode.com</email>
- </address>
- </affiliation>
- </author>
- </authorgroup>
-
- <copyright>
- <year>2000, 2001</year>
- <holder>Ximian, Inc.</holder>
- </copyright>
-
- </artheader>
-
- <sect1 id="introduction">
- <title>Introduction</title>
-
- <para>
- &Camel; is a generic messaging library. It is being used as the
- back end for the mail component of &Evolution;. The name
- "&Camel;" is an acronym; it refers to the fact that the
- library is capable of going several days without food or water.
- It means : Camel's Acronym Makes Everyone Laugh.
- </para>
-
- <para>
- &Camel;'s initial design is heavily based on Sun's
- <trademark>JavaMail</trademark> API. It uses the Gtk+ object
- system, and many of its classes are direct analags of JavaMail
- classes. Its design has also been influenced by the features of
- IMAP, and the limitations of the standard UNIX mbox mail store,
- which set some of the boundaries on its requirements and
- extensibility.
- </para>
-
- <para>
- &Camel; sees all message repositories as stores containing
- folders. These folders in turn contain the messages the client
- actually accesses. The use of such a unified interface allows
- the client applications to be very extensible. &Camel; includes
- an external provider mechanism which allows applications to
- dynamically load and use protocols which were not available when
- the application was initially written.
- </para>
-
- <para>
- The abstract store/folder mechanism is a powerful and versatile
- way of accessing messages. No particular asumptions are made on
- the client side, thus allowing new ways of managing the
- messages. For example, the messages stored in the folders don't
- necessarily have to share some common physical location. The
- folder can be a purely virtual folder, containing only
- references to the actual messages. This is used by the "vFolder"
- provider, which allows you select messages meeting particular
- criteria and deal with them as a group.
- </para>
-
- <para>
- In addition to these possibilities, &Camel; has full MIME
- support. &Camel; MIME messages are lightweight objects
- representing the MIME skeleton of the actual message. The data
- contained in the subparts are never stored in memory except when
- they are actually needed. The application, when accessing the
- various MIME objects contained in the message (text parts,
- attachments, embedded binary objects ...) asks &Camel; for a
- stream that it can read data from. This scheme is particularly
- useful with the IMAP provider. IMAP has strong MIME support
- built-in, which allows &Camel; to download only the parts of
- messages that it actually needs: attachments need not be
- downloaded until they are viewed, and unnecessary
- "multipart/alternative" parts will never be read off the server.
- </para>
- </sect1>
-
- <sect1 id="overview">
- <title>Overview</title>
-
- <graphic format="gif" fileref="camel"></graphic>
-
- <para>
- To begin using &Camel;, an application first creates subclassed
- <classname>CamelSession</classname> object. This object is used
- to store application defaults, and to coordinate communication
- between providers and the application.
- </para>
-
- <para>
- A <classname>CamelProvider</classname> is a dynamically-loadable
- module that provides functionality associated with a specific
- service. Examples of providers are POP, IMAP and SMTP. Providers
- include subclasses of the various other &Camel; classes for
- accessing and manipulating messages.
- </para>
-
- <para>
- <classname>CamelService</classname> is an abstract class for
- describing a connection to a local or remote service. It
- currently has two subclasses: <classname>CamelStore</classname>,
- for services that store messages (such as IMAP servers and mbox
- files), and <classname>CamelTransport</classname>, for services
- that deliver messages (such as SMTP or a local MTA). A provider
- could also be both a store and a transport, as in the case of
- NNTP.
- </para>
-
- <para>
- A <classname>CamelStore</classname> contains some number of
- <classname>CamelFolder</classname> objects, which in turn
- contain messages. A <classname>CamelFolder</classname> provides
- a <classname>CamelFolderSummary</classname> object, which
- includes details about the subject, date, and sender of each
- message in the folder. The folder also includes the messages
- themselves, as subclasses of <classname>CamelMedium</classname>.
- </para>
-
- <para>
- Email messages are represented by the
- <classname>CamelMimeMessage</classname> class, a subclass of
- <classname>CamelMedium</classname>. This class includes
- operations for accessing RFC822 and MIME headers, accessing
- subparts of MIME messages, encoding and decoding Base64 and
- Quoted-Printable, etc.
- </para>
-
- <para>
- <classname>CamelTransport</classname> includes methods for
- delivering messages. While the abstract
- <function>CamelTransport::send</function> method takes a
- <classname>CamelMedium</classname>, its subclasses may only be
- able to deliver messages of specific
- <classname>CamelMedium</classname> subclasses. For instance,
- <classname>CamelSendmailTransport</classname> requires a
- <classname>CamelMimeMessage</classname>, because it needs a
- message that includes a "To:" header. A hypothetical
- <classname>CamelNNTPTransport</classname> would need a
- <classname>CamelNewsMessage</classname>, which would have a
- "Newsgroups:" header.
- </para>
-
- <para>
- The content of messages are referred to using
- <classname>CamelStream</classname> and its subclasses. In the
- case of an mbox-based store, the
- <classname>CamelStream</classname> would abstract the operation
- of reading the correct section of the mbox file. For IMAP,
- reading off the <classname>CamelStream</classname> might result
- in commands being issued to the remote IMAP server and data
- being read off a socket.
- </para>
-
- <para>
- The final major class in &Camel; is
- <classname>CamelException</classname>, which is used to
- propagate information about errors. Many methods take a
- <classname>CamelException</classname> as an argument, which the
- caller can then check if an error occurs. It includes both a
- numeric error code which can be interpreted by the program, and
- a text error message that can be displayed to the user.
- </para>
- </sect1>
-
- <sect1 id="classes">
- <title>Major Subcomponents</title>
-
- <sect2 id="store">
- <title>The Message Store</title>
-
- <para>
- A <classname>CamelStore</classname> inherits the ability to
- connect and authenticate to a service from its parent class,
- <classname>CamelService</classname>. It then adds the ability
- to retrieve folders. A store must contain at least one folder,
- which can be retrieved with
- <function>CamelStore::get_default_folder</function>. There are
- also methods to retrieve the "top-level" folder (for
- hieararchical stores), and to retrieve an arbitrary folder by
- name.
- </para>
-
- <para>
- All <classname>CamelFolder</classname>s must implement certain
- core operations, most notably generating a summary and
- retrieving and deleting messages. A
- <classname>CamelFolder</classname> must assign a permanently
- unique identifier to each message it contains. Messages can
- then be retrieved via
- <function>CamelFolder::get_message</function>.
- </para>
-
- <para>
- Folders must also implement the
- <function>get_parent_folder</function> and
- <function>list_subfolders</function> methods. For stores that
- don't allow multiple folders, they would return NULL and an
- empty list, respectively. Stores that do allow multiple
- folders will also define methods for creating and deleting
- folders, and for moving messages between them (assuming the
- folders are writable).
- </para>
-
- <para>
- Folders that support searching can define the
- <function>search_by_expression</function> method. For mbox
- folders, this is implemented by indexing the messages with the
- ibex library and using that to search them later. For IMAP
- folders, this uses the IMAP SEARCH command. Other folder types
- might not be able to implement this functionality, in which
- case users would not be able to do full-content searches on
- them.
- </para>
- </sect2>
-
- <sect2 id="messages">
- <title>Messages</title>
-
- <para>
- As mentioned before, messages are represented by subclasses of
- <classname>CamelMedium</classname>.
- <classname>CamelMedium</classname> itself is a subclass of
- <classname>CamelDataWrapper</classname>, a generic class for
- connecting a typed data source to a data sink.
- <classname>CamelMedium</classname> adds the concept of message
- headers versus message body.
- (<classname>CamelDataWrapper</classname> has one other
- important subclass, <classname>CamelMultipart</classname>,
- which is used to provide separate access to the multiple
- independent parts of a multipart MIME type.)
- <classname>CamelMedium</classname>'s subclasses provide more
- specialized handling of various headers:
- <classname>CamelMimePart</classname> adds special handling for
- the &ldquot;Content-*&rdquot; headers in MIME messages, and
- its subclass <classname>CamelMimeMessage</classname> adds
- handling for the RFC822 headers.
- </para>
-
- <graphic format="gif" fileref="mimemessage"></graphic>
-
- <para>
- Consider a message with two parts: a text part (in both plain
- text and HTML), and an attached image:
-
- <programlisting>
-
- From: Dan Winship &lt;danw@helixcode.com&gt;
- To: Matt Loper &lt;matt@helixcode.com&gt;
- Subject: the Camel white paper
- MIME-Version: 1.0
- Content-Type: multipart/mixed;
- boundary="jhTYrnsRrdhDFGa"
-
- This is a multi-part message in MIME format.
- --jhTYrnsRrdhDFGa
- Content-Type: multipart/alternative;
- boundary="sFSenbAFDSgDfg"
-
- --sFSenbAFDSgDfg
- Content-Type: text/plain
-
- Hey, Matt
-
- Check out this graphic...
-
- -- Dan
-
- --sFSenbAFDSgDfg
- Content-Type: text/html
-
- Hey, Matt&lt;br&gt;
- &lt;br&gt;
- Check out this graphic...&lt;br&gt;
- &lt;br&gt;
- -- Dan&lt;br&gt;
- &lt;br&gt;
- --sFSenbAFDSgDfg--
-
- --jhTYrnsRrdhDFGa
- Content-Type: image/png
- Content-Transfer-Encoding: base64
-
- F4JLw0ORrkRa8AwAMQJLAaI3UDIGsco9RAaB92...
- --jhTYrnsRrdhDFGa--
- </programlisting>
-
- <para>
- In &Camel;, this would be represented as follows:
- </para>
-
- <graphic fileref="samplemsg"></graphic>
- </sect2>
-
- <sect2 id="streams">
- <title>Streams</title>
-
- <para>
- Streams are a generic data transport layer. Two basic stream
- classes are <classname>CamelStreamFs</classname>, for
- reading and writing files, and
- <classname>CamelStreamMem</classname>, for reading from and
- writing to objects that are already in memory.
- </para>
-
- <para>
- Streams can also be filtered. So a CamelMimePart
- containing base64-encoded data can filter its output through
- CamelMimeFilterBasic. Other parts of the application that want
- to read its data will never need to even realize that the
- original data was encoded.
- </para>
- </sect2>
-
-</article>
diff --git a/doc/white-papers/mail/ibex.sgml b/doc/white-papers/mail/ibex.sgml
deleted file mode 100644
index dcb8f5ca4b..0000000000
--- a/doc/white-papers/mail/ibex.sgml
+++ /dev/null
@@ -1,158 +0,0 @@
-<!doctype article PUBLIC "-//Davenport//DTD DocBook V3.0//EN" [
-<!entity Evolution "<application>Evolution</application>">
-<!entity Camel "Camel">
-<!entity Ibex "Ibex">
-]>
-
-<article class="whitepaper" id="ibex">
-
- <artheader>
- <title>Ibex: an Indexing System</title>
-
- <authorgroup>
- <author>
- <firstname>Dan</firstname>
- <surname>Winship</surname>
- <affiliation>
- <address>
- <email>danw@helixcode.com</email>
- </address>
- </affiliation>
- </author>
- </authorgroup>
-
- <copyright>
- <year>2000</year>
- <holder>Helix Code, Inc.</holder>
- </copyright>
-
- </artheader>
-
- <sect1 id="introduction">
- <title>Introduction</title>
-
- <para>
- &Ibex; is a library for text indexing. It is being used by
- &Camel; to allow it to quickly search locally-stored messages,
- either because the user is looking for a specific piece of text,
- or because the application is contructing a vFolder or filtering
- incoming mail.
- </para>
- </sect1>
-
- <sect1 id="goals">
- <title>Design Goals and Requirements for Ibex</title>
-
- <para>
- The design of &Ibex; is based on a number of requirements.
-
- <itemizedlist>
- <listitem>
- <para>
- First, obviously, it must be fast. In particular, searching
- the index must be appreciably faster than searching through
- the messages themselves, and constructing and maintaining
- the index must not take a noticeable amount of time.
- </para>
- </listitem>
-
- <listitem>
- <para>
- The indexes must not take up too much space. Many users have
- limited filesystem quotas on the systems where they read
- their mail, and even users who read mail on private machines
- have to worry about running out of space on their disks. The
- indexes should be able to do their job without taking up so
- much space that the user decides he would be better off
- without them.
- </para>
-
- <para>
- Another aspect of this problem is that the system as a whole
- must be clever about what it does and does not index:
- accidentally indexing a "text" mail message containing
- uuencoded, BinHexed, or PGP-encrypted data will drastically
- affect the size of the index file. Either the caller or the
- indexer itself has to avoid trying to index these sorts of
- things.
- </para>
- </listitem>
-
- <listitem>
- <para>
- The indexing system must allow data to be added to the index
- incrementally, so that new messages can be added to the
- index (and deleted messages can be removed from it) without
- having to re-scan all existing messages.
- </para>
- </listitem>
-
- <listitem>
- <para>
- It must allow the calling application to explain the
- structure of the data however it wants to, rather than
- requiring that the unit of indexing be individual files.
- This way, &Camel; can index a single mbox-format file and
- treat it as multiple messages.
- </para>
- </listitem>
-
- <listitem>
- <para>
- It must support non-ASCII text, given that many people send
- and receive non-English email, and even people who only
- speak English may receive email from people whose names
- cannot be written in the US-ASCII character set.
- </para>
- </listitem>
- </itemizedlist>
-
- <para>
- While there are a number of existing indexing systems, none of
- them met all (or even most) of our requirements.
- </para>
- </sect1>
-
- <sect1 id="implementation">
- <title>The Implementation</title>
-
- <para>
- &Ibex; is still young, and many of the details of the current
- implementation are not yet finalized.
- </para>
-
- <para>
- With the current index file format, 13 megabytes of Info files
- can be indexed into a 371 kilobyte index file&mdash;a bit under
- 3% of the original size. This is reasonable, but making it
- smaller would be nice. (The file format includes some simple
- compression, but <application>gzip</application> can compress an
- index file to about half its size, so we can clearly do better.)
- </para>
-
- <para>
- The implementation has been profiled and optimized for speed to
- some degree. But, it has so far only been run on a 500MHz
- Pentium III system with very fast disks, so we have no solid
- benchmarks.
- </para>
-
- <para>
- Further optimization (of both the file format and the in-memory
- data structures) awaits seeing how the library is most easily
- used by &Evolution;: if the indexes are likely to be kept in
- memory for long periods of time, the in-memory data structures
- need to be kept small, but the reading and writing operations
- can be slow. On the other hand, if the indexes will only be
- opened when they are needed, reading and writing must be fast,
- and memory usage is less critical.
- </para>
-
- <para>
- Of course, to be useful for other applications that have
- indexing needs, the library should provide several options, so
- that each application can use the library in the way that is
- most suited for its needs.
- </para>
- </sect1>
-</article>
diff --git a/doc/white-papers/widgets/e-table.sgml b/doc/white-papers/widgets/e-table.sgml
deleted file mode 100644
index 5ff4faf2ae..0000000000
--- a/doc/white-papers/widgets/e-table.sgml
+++ /dev/null
@@ -1,279 +0,0 @@
-<!doctype article PUBLIC "-//Davenport//DTD DocBook V3.0//EN" [
-<!entity Evolution "<application>Evolution</application>">
-<!entity ETable "<classname>ETable</classname>">
-<!entity ETableModel "<classname>ETableModel</classname>">
-<!entity ETableSimple "<classname>ETableSimple</classname>">
-<!entity ETableHeader "<classname>ETableHeader</classname>">
-<!entity ETableSpecification "<classname>ETableSpecification</classname>">
-<!entity ETableCol "<classname>ETableCol</classname>">
-]>
-
-<article class="whitepaper" id="e-table">
-
- <artheader>
- <title>The ETable Widget</title>
-
- <authorgroup>
- <author>
- <firstname>Chris</firstname>
- <surname>Lahey</surname>
- <affiliation>
- <address>
- <email>clahey@helixcode.com</email>
- </address>
- </affiliation>
- </author>
- <author>
- <firstname>Miguel</firstname>
- <surname>de Icaza</surname>
- <affiliation>
- <address>
- <email>miguel@helixcode.com</email>
- </address>
- </affiliation>
- </author>
- </authorgroup>
-
- <copyright>
- <year>2000</year>
- <holder>Helix Code, Inc.</holder>
- </copyright>
-
- </artheader>
-
- <sect1 id="introduction">
- <title>Introduction</title>
-
- <para>
- &ETable; is a table widget on steroids. It is intended to provide
- all the table functionality needed throughout &Evolution;, and
- hopefully be general purpose enough to be used in other projects.
- </para>
-
- <para>
- &ETable; provides a lot of interactive control over the data in the
- table. Without any work from the programmer, &ETable; provides
- rearrangeable columns and editable data. When finished, &ETable; will
- also provide, again with no programmer intervention, easy interactive
- sorting and grouping.
- </para>
-
- <para>
- &ETable; gives you a great deal of functionality, flexibility, and
- power. Most of this power is internal to the widget, but some of
- the flexibility requires a bit of work by the programmer.
- However, once you learn it, &ETable; is not very hard at all to
- use.
- </para>
-
- <para>
- &ETable;'s power comes from the fact that it is fully
- model/view/controller based. Various models are involved into
- the process of rendering the information, and various views are
- provided. The programmer has a wide range of options: from the
- most finely hand-tuned table to a generic all-encompasing widget
- that takes over most of tasks. It is up to the programmer: he
- can use the simple to use &ETable; widget that takes care of
- everything in a generic way, or he can use the various
- components to roll his own tabular display.
- </para>
-
- <para>
- &ETable; ships with a standard set of information renderers:
- strings, bitmaps, toggle-buttons, check-boxes, and multi-line
- strings. But the programmer can write and implement his own
- renderer for his information. This means that by default
- &ETable; provides the basic display facilities that programmers
- required, but they offer the programmer a complete freedom to
- incorporate new cell renderers.
- </para>
-
- </sect1>
-
- <sect1 id="model">
- <title>ETableModel</title>
-
- <para>
- The data back end for the &ETable; is an &ETableModel;. The
- &ETableModel is an abstract interface that acts as the
- information repository for the various &ETable components.
- </para>
-
- <para>
- To use &ETable; you have to create a subclass of the abstract
- &ETableModel; class. However, to save you the work of defining
- a new <classname>GtkClass</classname> every time you use
- &ETable, there is a predefined subclass of &ETableModel; called
- &ETableSimple; which simply takes a list of function callbacks
- to perform the various operations.
- </para>
-
- </sect1>
-
- <sect1 id="columns">
- <title>Columns</title>
-
- <para>
- There are two different meanings to the word "column". The first
- is the model column (defined by the &ETableCol: object). A model
- column describes how it maps to the column in the &ETableModel;
- as well as containing information about its properties (name,
- resizability, resize dimensions, and a renderer for this
- specific columns).
- </para>
-
- <para>
- &ETable; distinguishes between a model column index, and a view
- column index. The former reflects the column in which the data
- is stored in the &ETableModel; The later represents the actual
- location at which the column is being displayed in the screen.
- </para>
-
- <para>
- Each view column index corresponds to a specific model column,
- though a model column may have any number of view columns
- associated with it (including zero). For example the same
- column might be rendered twice, or the data from one column
- could be used to display different bits of information
- </para>
-
- <para>
- The view column does not necessarily depend on only one model
- column. In some cases, the view column renderer can be given a
- reference to another model column to get extra information about
- its display. For example, a mail program could display deleted
- messages with a line through them by creating a model column
- with no corresponding view column that told whether or not the
- message is deleted, and then having the text column
- strikethrough the display if the invisible column had a value
- corresponding to "deleted".
- </para>
-
- <para>
- The view column also specifies a few other pieces of
- information. One piece of information is the renderer. &ETable;
- provides a number of renderers to choose from, or you can write
- your own. Currently, there are renderers for text, image sets,
- and checkboxes.
- </para>
-
- <para>
- The view column also includes information about the header.
- There are two types of headers: text, and pixbuf. The first
- allows you to specify a string which is rendered in the header.
- The second allows you to specify an image to copy into the
- header.
- </para>
- </sect1>
-
- <sect1 id="header">
- <title>Header</title>
-
- <para>
- The &ETableHeader; represents the header information for the
- table. The &ETableHeader; is used in two different ways. The
- first is the in the <structfield>full_header</structfield>
- element of an &ETable;. This is the list of possible columns in
- the view. You add each of your columns to this &ETableHeader;
- and then pass it into the &ETable;.
- </para>
-
- <para>
- The second use is completely internal. &ETable; uses another
- &ETableHeader; to store the actual displayed columns. Many of
- the &ETableHeader; functions are for this purpose. The only
- functions that users of the library should need to use are
- <function>e_table_header_new</function> and
- <function>e_table_header_add_col</function>.
- </para>
- </sect1>
-
- <sect1 id="layout">
- <title>Layout Specification</title>
-
- <para>
- &ETable; uses an &ETableSpecification; to layout the columns of
- the widget. The &ETableSpecification; is specified as XML data
- passed into the &ETable; as a string.
- </para>
-
- <para>
- The most powerful part of the &ETableSpecification; is that when
- finished, &ETable; will allow you to get a copy of an
- &ETableSpecification; that describes the current view of the
- tree. This allows the developer to save the current view so that
- next time the user opens this table, they find it in exactly the
- state that they left it.
- </para>
-
- <para>
- The XML specification allows for a number of things. First, it
- allows you to pick a set of default columns to be shown. Thus,
- even if you had hundreds of pieces of data, you could choose to
- only display a few that fit on the screen by default.
- </para>
-
- <para>
- The second major thing that the &ETableSpecification; allows you
- to specify is the column grouping and sorting. &ETable; has a
- powerful mechanism for allowing the user to choose columns to
- group by, thus allowing multiple columns of sorting, as well as
- visual grouping of similar elements and interactive selection of
- what data to display.
- </para>
-
- <para>
- The grouping in &ETableSpecification; is specified as a
- hierarchy of columns to group by. Each level of the hierarchy
- lets you sort by a particular column, either ascending or
- descending. All levels except the last cause the canvas to group
- by the given column.
- </para>
-
- <para>
- An example &ETableSpecification; follows.
- </para>
-
- <programlisting>
- &lt;ETableSpecification&gt;
- &lt;columns-shown frozen_columns="2"&gt;
- &lt;column&gt; 0 &lt;/column&gt;
- &lt;column&gt; 1 &lt;/column&gt;
- &lt;column&gt; 2 &lt;/column&gt;
- &lt;column&gt; 3 &lt;/column&gt;
- &lt;column&gt; 4 &lt;/column&gt;
- &lt;/columns-shown&gt;
- &lt;grouping&gt;
- &lt;group column="3" ascending="1"&gt;
- &lt;group column="4" ascending="0"&gt;
- &lt;leaf column="2" ascending="1"/&gt;
- &lt;/group&gt;
- &lt;/group&gt;
- &lt;/grouping&gt;
- &lt;/ETableSpecification&gt;
- </programlisting>
-
- <para>
- This example has 5 columns which are initially in order. It has
- 2 levels of grouping. The first is grouped by the 4th column
- (all indexes are 0 based) and sorts those groups in ascending
- order. Inside those groups, the data is grouped by the fifth
- column and sorted in descending order of the fifth column.
- Finally, the data in those groups is sorted by the third column
- in ascending order. Due to the "frozen_columns" attribute on the
- columns-shown element, the user will not be
- able to rearrange the first two columns. They will always be the
- first two.
- </para>
- </sect1>
-
- <sect1 id="conclusion">
- <title>Conclusion</title>
-
- <para>
- All in all, &ETable; is a very powerful widget. Once you learn
- to use it, you have access to a vast amount of power requiring a
- comparatively small amount of work.
- </para>
- </sect1>
-</article>