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).