NAME
    Project::Tree - graphical filesystem / project tree for software
    developers and webmasters

SYNOPSIS
      use Project::Tree;
      gui;

      or
      
      shell# perl -MProject::Tree -e gui

      or
      
      shell# ptree

INSTALLATION
    First you have to install Kenneth Albanowski's Gtk module
    (Version 0.500 or newer) and Gurusamy Sarathy's Data::Dumper.
    The rest is business as usual...

     perl Makefile.PL
     make
     make test
     make install

DESCRIPTION
    This module is for software developers who have to maintain a
    lot of files in a software project, e.g. a website with many
    HTML and/or perl embedded dynamic pages and CGI scripts.

    Project::Tree is Gtk (Gimp/GNU Toolkit) based and creates a tree
    view of your software projects, scanning recursevely their top
    level directories using user configurable regex filters to
    include/exclude files and subdirectories. The actions for the
    file items (e.g. start an editor by double click) are
    configurable in the same way.

    The module additionally mantains a list of files for quick
    access. Those files are shown in an extra alphabetically ordered
    list. A single click on the list item triggers the file action.

    Each project is represented by a simple identifier which will be
    the top node of the tree view for this project.

CONFIGURATION
    This version of Project::Tree requires a configuration directory
    in the home directory of the user. This is the structure of the
    directory:

            $HOME/.ptree/open_projects      list of currently open projects
            $HOME/.ptree/quickaccess        list of files for quick access
            $HOME/.ptree/projects/$PROJECT  configuration for each project

    Part of this distribution is a directory called 'example-
    configuration'. You will find all these files there as a
    starting point for your private configuration.

    All configuration files are in Data::Dumper format, so they are
    even machine and human readable (Data::Dumper is a great tool
    for this purpose).

    This release of Project::Tree has no GUI for editing its
    configuration files. So you have to set them up by hand (this
    will change in future releases). Only the quickaccess file is
    actually generated by the program, but this version has no GUI
    function to remove items from the quickaccess list, so you have
    to do this by hand (or add this functionality and send me the
    patch ;)

  open_projects

    This file contains the following definition of currently open
    projects.

            $PTREE_OPEN_PROJECTS_LREF = [
                    'project1', .., 'projectN'
            ];

    This is a simple list of the project identifiers.

  quickaccess

    This file lists the items of the quick access list.

            $PTREE_QUICK_ACCESS_LREF = [
              {
                'name'  => '/full/filename',        # path to file
                'exec'  => 'nc -noask %s',          # file action
                'color' => 'black'                  # item color
              },
              ...
            ];

  projects/$PROJECT

    This is for project specific configuration. The file has the
    same name as the project and must be present for each open
    project.

            $PTREE_PROJECT_DEFINITION_HREF = {

                desc => 'CGI Perl Preprocessor',            # description
                root_dir => '/home/joern/projects/CIPP',    # root path

                dir_include => [    # list of regexs for dir inclusion
                    undef           # undef means "include all"
                ],

                dir_exclude => [    # list of regexs for dir exclusion
                    'CVS$',         # undef means "exclude nothing"
                    ...
                ],

                file_include => [
                    {
                        re => '\\.(cipp|pl|pm)$',   # regex for file incl.
                        color => 'red',             # color of this files
                        exec => 'nc'                # action of this files
                                                    # (defined below)
                    },
                    {
                        re => undef,                # undef = all files
                        color => 'black',           # color
                        exec => 'nc'                # action (defined below)
                    },
                    ...

                ],

                file_exclude => [
                    '.bck$',                # regex for file exclusion
                    '.pdf$',
                    ...
                ],

                exec => {                   # definition of file actions
                    nc => 'nc -noask %s'    # system call for actions 'nc'
                }
            };

    The include regexes are computed before the exclude regexes. So
    the set of included objects will be reduced by the exclude
    filters.

BUGS / TODO
    This version of the module is based on my first Gtk hack. So the
    design is slightly messed up (e.g. use of global variables at
    some points). I want to clean up this in future releases. My
    main concern is to realize a pure object oriented interface
    which lets you inherit from this class to add extra funtionality
    easily.

    I release this software at this time to evaluate if such a thing
    is of interest for the public. For me this tool is very
    interesting, because I want to pick up my files in a second
    instead of crawling by hand through my filesystems for hours.

    So I'm very happy about every response of everyone who either
    downloaded or even use this module. Don't hesitate to send me an
    email!

THANKS TO
    Kenneth Albanowski for his great job: the Gtk module!

AUTHOR
    Joern Reder, joern@dimedis.de

COPYRIGHT
    Copyright 1999 Joern Reder, All Rights Reserved

    This library is free software; you can redistribute it and/or
    modify it under the same terms as Perl itself.

SEE ALSO
    perl(1), Gtk (3pm).



$Id: Changes,v 1.2 1999/02/21 01:01:37 joern Exp $

Revision history for Perl extension Project::Tree.

0.02  Sun Feb 28 13:36:35 MET 1999
	- "Refresh Browser" function added

0.01  Sat Feb 20 14:15:33 MET 1999
	- original version; created by h2xs 1.18
	- based on my first Gtk experience, a simple script for
	  the project tree view with hardcoded file actions,
	  transformed to this module
	- user configuration file support added
	- documentation added
	  

