This is Palm::Progect, a module for reading and manipulating
Palm Progect databases.

Progect is a hierarchical todo list/organizer/project manager,
and is available at

   http://progect.sourceforge.net/.

Progect itself is free software, released under the GPL.

The Palm::Progect bundle includes a command line utility called
progconv, which converts back and forth between the Progect PDB format
and a simple text representation:

   [x] Level 1 Todo item
       [10%] Child (progress)
           . Child of Child (informational)

   [80%] (31/12/2001) Progress item
       [ ] Unticked action item

This format is similar to the format that Progect's own built-in
exporter uses.  However, progconv supports almost all of Progect's
fields, including dates, priorities, categories, ToDo links and
notes. See the included docs for notes.

The progconv program also converts to and from CSV (Comma Separated
Values) files, which is a format most useful for exchanging data with
spreadsheets and databases.

Users can write their own converters for new formats, and these
converters will integrate into the progconv program.

Version 2.0 of Palm::Progect is a complete rewrite with some new
features.  See upgrade_2.0.txt for details.

Installing
----------
First, install the prerequisite Perl Modules (see "Prerequisites",
below). Next install the Palm::Progect module itself.

If you don't know how to install Perl modules, see "How to Install Perl
Modules" below.

Prerequisites
-------------
All of the following required modules are available on CPAN
(http://search.cpan.org/).  If you don't know how to install
Perl modules, see "How to Install Perl Modules" below.

1) p5-Palm (Palm::PDB) version 1.2.4 or later

  Andrew Arensburger's great suite of modules for manipulating
  palm database files.

  It is important to use version 1.2.4 (or later) of p5-palm.
  See "Checking for the Latest version of p5-palm", below.


3) CLASS
4) Class::Accessor
5) Class::Constructor

  These three modules provide some of the necessary object-oriented
  'glue' that holds the Palm::Progect::* modules together.  The first
  two are by Michael G. Schwern, the last is by me.

  On earlier versions of Perl (e.g. version 5.005), special care will be
  required to install Class::Accessor.  See below under "Installing on
  Earlier Versions of Perl"

6) Text::CSV_XS

  This is only required if you intend to import from or export to
  the CSV format.


How to Install Perl Modules (on Unix/Linux/etc)
-----------------------------------------------
You can use the 'cpan' command-line utility to install the modules (easy
to use, but can be tricky to set up).

Or you can install the modules manually by doing the following:

   1) download the module distribution

   2) unpack it into its own folder, e.g.

        $ tar zxvf Palm-Progect-2.0.0.tar.gz

   3) configure and install it:

        $ cd Palm-Progect-2.0.0
        $ perl Makefile.PL
        $ make
        $ make test
        # make install

For that final step ('make install'), you will have to be root.

How to Install Perl Modules (on Windows)
----------------------------------------

  1) download the module distribution

  2) unpack it into its own folder, using a program
     like Windows Commander (http://www.wincmd.com/)
     or WinZip (http://www.winzip.com).

  3) copy all the Perl module files (*.pm) in the
     distribution's 'lib' directory into your local Perl
     library directory (e.g. C:\PERL\lib\site).

     For Palm::Progect, you should end up with something like the
     following directory structure:

         C:\PERL\lib\site\Palm\Progect.pm
         C:\PERL\lib\site\Palm\Progect\Record.pm
         C:\PERL\lib\site\Palm\Progect\Converter.pm
         C:\PERL\lib\site\Palm\Progect\DB_18\Record.pm
         ...

     Some module distributions do not have a 'lib' directory,
     or they contain additional modules outside of the 'lib'
     directory.  They should be installed as follows:

     Distribution         File                Destination
     ------------         ----                -----------
     Class::Constructor   Constructor.pm      site\Class\Constructor.pm

     p5-Palm              Palm\Address.pm     site\Palm\Address.pm
                          Palm\Datebook.pm    site\Palm\Datebook.pm
                          Palm\Mail.pm        site\Palm\Mail.pm
                          Palm\Memo.pm        site\Palm\Memo.pm
                          Palm\PDB.pm         site\Palm\PDB.pm
                          Palm\Raw.pm         site\Palm\Raw.pm
                          Palm\StdAppInfo.pm  site\Palm\StdAppInfo.pm
                          Palm\ToDo.pm        site\Palm\ToDo.pm

     (where 'site' is your local Perl library directory (e.g.
     C:\PERL\lib\site))

  4) Finally, place any executable perl scripts in the distributions
     into a directory in your path (e.g. C:\PERL\bin) so that they can
     be run with perl's -S switch, e.g.:

         perl -S progconv --help

     Distribution         File                Destination
     ------------         ----                -----------
     Palm::Progect        bin\progconv        bin\progconv

     p5-Palm              util\copydb         bin\copydb
                          util\pdbdump        bin\pdbdump

     (where 'bin' is your local Perl binary directory (e.g.
     C:\PERL\bin), and assuming this directory is in your path)


Installing on Earlier Versions of Perl
--------------------------------------

If you are installing on Windows by manually copying files, you
can skip this section.

On earlier versions of Perl (e.g. version 5.005), you should install
Class::Accessor without using the cpan shell, by downloading it
and running the standard:

   $ cd Class-Accessor-0.1.7
   $ perl Makefile.PL
   $ make
   $ make test
   # make install

During the install, you may read complaints that the 'base' module
not being up to date.  Also, Class::Accessor will fail some of its tests.

These errors and warnings do not appear to be anything to worry about.
Palm::Progect still seems to work fine and pass all of its own tests.

Checking for the Latest version of p5-palm
------------------------------------------
How to tell what version of p5-palm you have installed:

 * Even though the package version is 1.2.4, each file in the package
   has it's own version number.

 * The version of Palm/Raw.pm in p5-palm version 1.2.4 is actually 1.8
   If your version of Palm/Raw.pm is equal to or greater than 1.8
   then you should be fine.

 * Look at the source to the file Palm/Raw.pm.  There should be a line
   like:
       $VERSION = sprintf "%d.%03d", '$Revision: 1.8 $ ' =~ m{(\d+)\.(\d+)};

   In the above example, the version number for Palm/Raw.pm is 1.8

Documentation
-------------

Help for the progconv utility is available with:

   progconv --help

This will include help on any installed Converter modules.

If you are upgrading from a previous version of Palm::Progect, you
should have a look at upgrade_2.0.txt to see what has changed.

There is detailed documentation included in this package.
Much of it is in 'pod' format (shorthand for Perl's 'Plain old
Documentation' format).

You can convert all of the included pod docs to html in one step by
using the included 'makedocs' script.  This will create a subdirectory
called 'docs' and put all of the html files there.

On Unix run:

   $ ./makedocs.sh

On Windows run:

   makedocs.bat

The following is a summary of the documentation included in this package:

 File                             Format   Description
 ----                             ------   -----------
 README                           text     this file
 Changes                          text     detailed changelog

 upgrade_2.0.txt                  text     important user-visible
                                           changes and
                                           incompatibilities in v2.x of
                                           Palm::Progect

 progconv                         pod      Overview of progconv and
                                           options


 hacking.txt                      text     Programmer's overview of
                                           Palm::Progect Includes info
                                           on how to roll your own
                                           Converter modules

 Palm/Progect.pm                  pod      the Palm::Progect API
 Palm/Progect/Record.pm           pod      Record objects
 Palm/Progect/Prefs.pm            pod      Preferences object
 Palm/Progect/Date.pm             pod      Date formating/parsing routines

 Palm/Progect/Converter/Text.pm   pod      Details about Converting Progect
                                           Databases to/from Text Format

 Palm/Progect/Converter/CSV.pm    pod      Details about converting Progect
                                           Databases to/from CSV Format

 Palm/Progect/Converter.pm        pod      Converter delegator
 Palm/Progect/VersionDelegator.pm pod      DB Driver delegator

You can read individual pod documentation with the perldoc command:

   perldoc progconv
   perldoc Palm/Progect.pm

You can convert the Pod to HTML using the pod2html
command:

   pod2html Palm/Progect/Converter/Text.pm > Text.html

If that command doesn't work, try:

   perl -S pod2html.pl Palm/Progect/Converter/Text.pm > Text.html


Homepage
--------

   http://www.occamstoothbrush.com/perl/

Author
------
Michael Graham <[email protected]>

Copyright (C) 2001 Michael Graham.  All rights reserved.
This program is free software.  You can use, modify,
and distribute it under the same terms as Perl itself.