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