2e3a7b37fe4bb3adffd998d005e39fd4758e2c1e
2001-09-08 Jon Trowbridge <trow@ximian.com> * backend/ebook/e-book-view-listener.c (e_book_view_listener_check_queue): See e_book_listener_check_queue below. (e_book_view_listener_queue_response): See e_book_listener_queue_response below. * backend/ebook/e-book-listener.c (e_book_listener_check_queue): Explicitly prohibit reentrancy. Use gtk-unref rather than bobobo-unref. (e_book_listener_queue_response): Hold a gtk-ref to the listener while the idle function runs, not a bonobo-ref. As far as I can tell, it is impossible to avoid a race condition here when we have to worry about bonobo reentrancy. * gui/component/select-names/e-select-names-text-model.c (e_select_names_text_model_insert_length): Alter a copy of the original EDestination, rather than just using a new one. We need to do this to preserve prior-card information for possible reversion later. (e_select_names_text_model_delete): Ditto. * backend/ebook/e-destination.c (e_destination_clear_card): When clearing a destination where ->card != NULL, store it for possible reversion later. (e_destination_revert): If we have an old card stored, go back to using it for the destination. (e_destination_is_valid): Tries to detect obviously broken addresses. (e_destination_cardify): If our destination is invalid, first try to cardify simply by reverting to an older card. (e_destination_destroy): Unref any cached old card. (e_destination_copy): Copy the old card information. 2001-09-07 Jon Trowbridge <trow@ximian.com> * gui/component/select-names/e-select-names.c (sync_table_and_models): Show all rows in the table, and then remove the rows that correspond to entries in the ESelectNamesModels in the children. (real_add_address): Freeze/thaw our ESelectNamesModel, so that we don't change our table while we are in the middle of iterating over the selection. (remove_address): Just delete the address from the ESelectNamesModel, the signal handler will do the rest. (selected_rows_foreach_cb): Call remove_address to do our dirty work. (e_select_names_add_section): Connect to the 'changed' signal from the ESelectNamesModel, and call sync_table_and_models explicitly to get our initial state correct. * gui/component/select-names/e-select-names-table-model.c (fill_in_info): Deal with EDestinations in our table that don't come from cards. * gui/component/select-names/e-select-names-manager.c: Added another ESelectNamesModel* to the ESelectNamesManagerSection struct. Called 'original_model', this contains a copy of the model as it is when we begin using the SelectNames dialog. (section_copy): Copy the original model. (section_free): Free the original model. (e_select_names_manager_add_section_with_limit): Initialize the original model. (e_select_names_clicked): I've changed the semantics of this dialog quite a bit... no UI freeze can stop me! If OK is clicked, we do nothing. If Cancel is clicked, we revert to the 'original_model' copy of our address entry state before we started editting. Finally, we close the dialog before any of thing. Doing it last caused problems, because signals were being triggered which had dangling pointers as their closures. (e_select_names_manager_activate_dialog): Copy our current state to the original model, and share the same ESelectNamesModel between the dialog and the address entry in the composer.. (e_select_names_manager_get_cards): Removed. It had been #if 0/#endif-ed out for a while. * gui/component/select-names/e-select-names-model.c (e_select_names_model_freeze): Added. (e_select_names_model_thaw): Added. (e_select_names_model_uncardify): Added. If possible, "uncardifies" a specific model entry. (e_select_names_model_changed): Changed to pay attention to the freeze count. * gui/component/select-names/e-select-names-completion.c (clean_query_text): Strip leading/trailing whitespace from queries. * backend/ebook/e-destination.c (e_destination_uncardify): Added. Converts a card-associated destination into a text-associated destination w/ the e-mail address. (e_destination_list_to_vector): Added. A convenience routine. (e_destination_freev): Added. A convenience routine. (e_destination_touchv): Added. I'm lazy. svn path=/trunk/; revision=12709
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
Evolution is the integrated mail, calendar and address book
distributed suite from Ximian, Inc.
See http://www.ximian.com/apps/evolution.php3 for more information.
Note that Evolution is still beta. This means it may delete all of
your mail if you give it the chance.
If you are using Evolution, you should subscribe to the Evolution
mailing list. If you are interested in hacking on it, you should
subscribe to the Evolution Hackers mailing list. Send mail to
"evolution-request@ximian.com" or
"evolution-hackers-request@ximian.com" with the word "subscribe" in
the body of the message. If you are planning to work on any part of
Evolution, please send mail to the mailing list first, to avoid
duplicated effort (and to make sure that you aren't basing your work
on interfaces that are expected to change).
There are mailing list archives available at
http://lists.ximian.com/archives/public/evolution/ and
http://lists.ximian.com/archives/public/evolution-hackers/
There is also an #evolution IRC channel on irc.gnome.org.
IF IT DOESN'T WORK
------------------
Did you read the "How to build" section below?
If the configure script complains that you don't have a library that
you know you have installed, it usually means either that you've
installed things into multiple prefixes (see the bits on GNOME_PATH
below) or (if you're on Linux) that you installed the "foo" package
but forgot the "foo-devel" or "foo-dev" packages.
HOW TO BUILD EVOLUTION
----------------------
*** READ THIS BEFORE YOU START BUILDING ANYTHING! ***
Evolution depends on a large number of unreleased and rapidly-changing
libraries. Some of these libraries in turn depend on other unreleased
and rapidly-changing libraries.
Building Evolution is HARD, and it's going to stay hard until all of
the libraries it depends on stabilize, and there's nothing we can do
to make it any easier until then.
GENERAL PRINCIPLES
------------------
First you have to decide whether you want to install Evolution (and
its dependencies) into the same prefix as the rest of your GNOME
install, or into a new prefix. Installing everything into the same
prefix as the rest of your GNOME install will make it much easier to
build and run programs, and easier to switch between using packages
and building it yourself, but it may also make it harder to uninstall
later.
If you want to install into the same prefix as the rest of GNOME,
type:
gnome-config --prefix
gnome-config --sysconfdir
and remember the answers, and pass them to "configure" or "autogen.sh"
when building the other packages you need. For example:
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var/lib
--localstatedir is needed to make the docs integrate with scrollkeeper
and needs to point to the directory containing the scrollkeeper indices
which are in: gnome-config --localstatedir
If you build in another prefix instead, you will need to set the
GNOME_PATH environment variable (and ACLOCAL_FLAGS as well if building
from CVS) to include the prefix you install into. For example:
export GNOME_PATH=/usr/local
export ACLOCAL_FLAGS="-I /usr/local/share/aclocal"
(Assuming your shell is bash, and you installed into /usr/local.) You
need to set GNOME_PATH both during compiling AND when you run
evolution. Remember also that if you're installing into an odd prefix
such as /evolution, that you also need to make sure to put
${prefix}/bin in your PATH and ${prefix}/lib in your LD_LIBRARY_PATH.
DEPENDENCIES
------------
The following required libraries are available in GNOME CVS, under the
given names. Most (but not all) of them are also available as
tarballs on ftp.gnome.org. The (*)ed packages are available in Ximian
GNOME ( http://www.ximian.com/desktop/ ). Other packages may be
available from the Ximian GNOME evolution preview mirror.
If installing from packages, remember that you need both the runtime
and -devel packages for each library.
- xml-i18n-tools - latest from xml-i18n-tools-stable-1-x branch in
GNOME CVS (0.8.2 is too old)
- scrollkeeper - 0.1.4 or later (*)
- gnome-xml - 1.8.10 or later in the 1.0 series, but not from the 2.0
series (If you get this from GNOME CVS, use the tag "LIB_XML_1_BRANCH".)
(*)
- gnome-print - 0.25 or later (*)
- gdk-pixbuf - 0.9.0 or later (*)
- ORBit - 0.5.8 or later (*) (If you get this from GNOME CVS, use the
tag "orbit-stable-0-5".)
- oaf - 0.6.2 or later (If you get this from GNOME CVS, use the tag
"oaf-stable-0-6")
*** If you are using oaf from CVS, you should use the flag
*** "--disable-more-warnings" when configure, or it may fail to
*** build.
- gconf - 0.6 or later.
- gnome-vfs - 1.0.0 or later (If you get this from GNOME CVS, use
the tag "gnome-vfs-1-0")
*** If you are using gnome-vfs from CVS, you should use the flag
*** "--disable-more-warnings" when configuring, or it may fail to
*** build.
- libglade - 0.14 or later
- bonobo - 1.0.3 or later
*** Note that bonobo must be installed with the same --prefix as
*** either gnome-libs or evolution for the Makefiles to work
*** properly.
- gal (GNOME Application Library) - 0.11.99.2 or later
- gtkhtml - later than 0.11.0
Other non-GNOME Dependencies:
- Berkeley's libdb - 3.1.17
db3 is available from http://www.sleepycat.com. Make sure to get
3.1.17, it isn't the latest version.
COMPILING BERKELEY DB
---------------------
If you don't have 3.1.17 installed on your system or Evolution doesn't
detect it for some reason, here is a way to get Evolution to link to
it without messing up your system installation.
<0A> * Get the Sleepycat tarball from:
<0A><><A0><A0><A0> http://www.sleepycat.com/update/3.1.17/db-3.1.17.tar.gz
<0A> * Install the content somewhere _other_ than the evolution source tree.
<0A><><A0> e.g: NOT evolution/db-3.1.17
<0A> * Compile according to instructions, but installing into some custom
<0A><><A0> prefix, for example:
<0A><><A0><A0><A0> ../dist/configure --prefix=/home/user/berkeleydb-3.1.17
<0A> * Autogen Evolution specifying that it has to look for the DB
<0A><><A0> library there, for example:
<0A><><A0><A0><A0> ./autogen.sh --prefix=/opt/gnome
<0A><><A0><A0><A0> --with-db3-includes=/home/user/berkeleydb-3.1.17/include
<0A><><A0><A0><A0> --with-db3-libs=/home/user/berkeleydb-3.1.17/lib
COMPILING PALM PILOT SUPPORT
----------------------------
If you want support for PalmPilot syncing (currently experimental so
please back up your pilot) you will also need to do the following:
1) pilot-link 0.9.5
http://www.pilot-link.org
2) gnome-pilot 0.1.61
http://www.eskil.org/gnome-pilot/
3) evolution
In your evolution source directory do ./autogen.sh --prefix=<evo-prefix>
--with-pisock=<pilot-link-prefix> --enable-pilot-conduits=yes
make
make install
SSL SUPPORT
-----------
If you want SSL support (and someday S/MIME), you will also need libnspr4 and
libnss3 which can be found at http://www.mozilla.org.
Once you have libnspr4 and libnss3 (and their respective includes) installed,
in your evolution source directory do:
./autogen.sh --prefix=<evo-prefix> --with-nspr-includes=<nspr-includes-prefix>
--with-nspr-libs=<nspr-libs-prefix> --with-nss-includes=<nss-includes-prefix>
--with-nss-libs=<nss-libs-prefix>
You'll need to `cp ~/.mozilla/default/*.db ~/evolution` on you've
installed Evolution in order to get a functional SSL-enabled
Evolution.
SOURCE TREE LAYOUT
------------------
addressbook: the Address Book UI
art: graphics used by evolution
calendar: the Calendar UI
camel: libcamel, a messaging library used by the mailer.
Camel is inspired by Sun's JavaMail
(http://java.sun.com/products/javamail/) and the
IMAPv4 spec (RFC 2060).
composer: the message composer UI
data: the .desktop file for Evolution
default_user: initial Evolution config files for new users
devel-docs: entirely inadequate documentation
doc: more adequate documentation
e-util: utility code used by various parts of Evolution
filter: libfilter, a mail filtering library
libibex: an indexing library used by the mailer
libical: a library for the iCalendar format (RFC 2445-2446)
libversit: a library for the vCard (RFC 2425-2426) and vCalendar
(http://www.imc.org/pdi/vcal-10.txt) formats
mail: the mail display UI
shell: the Evolution shell (the main program that launches
the other components)
tests: some test programs
tools: utilities, notably "killev", a script to kill of all
of the Evolution components
widgets: widgets used by Evolution, including the shortcut bar
wombat: Has source code that will load in the addressbook
and calendar backend, and will form the server
process we'll be using
Description
Languages
C
96.8%
JavaScript
1.4%
CMake
1.2%
Makefile
0.2%
Python
0.2%