Read Me
ScitePM - Copyright (C) 2006 by Roy Wood, rrwood@users.sourceforge.net
----
This software is OSI Certified Open Source Software.
OSI Certified is a certification mark of the Open Source Initiative.
----
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
See the COPYING file for a copy of the GNU General Public License.
----
ScitePM:
========
ScitePM is a lightweight, Gtk-based project manager for use with the SciTE editor.
ScitePM allows the user to organize a set of files as a project, like most IDEs, and
then open them within SciTE.
ScitePM uses the SciTE "Director" interface to communicate with SciTE.
Note that SciTE must be named "SciTE" or "scite" to allow ScitePM to correctly launch it.
If this is not the case on your system, create a symlink something like this:
ln -s /usr/local/bin/scite_executable_blah_blah_blah ~/bin/scite
(Obviously that assumes that SciTE is /usr/local/bin/scite_executable_blah_blah_blah on
your system)
ScitePM is very simple to use. Click the "Open Project," "Save Project," or "Add Files"
buttons to do the obvious things. Right-click on the main pane of the app to add files
or groups (i.e. folders). Drag and drop folders and files within the app to arrange to
your satisfaction.
To open a file, double-click it or highlight it and press return/enter. Note that the
SciTE executable must be named "SciTE" for ScitePM to launch it!
The command line syntax for scitepm is:
scitepm [-q|--quiet] [-v|--version] [-h|--help] [project-path]
-q | --quiet prevents the "About" dialog from being shown at startup.
-v | --version instructs ScitePM to print the application version to stdout at startup
-h | --help instructs ScitPM to print the usage (what you're reading now) to stdout
[project-path] specifies the path to a ScitePM project file
Installing:
===========
1) Unpack the tarball: tar -xvzf scitepm-X.Y.tar.gz
2) Build the executable: make (or use scons)
3) Install the executable as root: sudo make install
Note that ScitePM is installed in /usr/local/bin by default. If you want it installed
somewhere else, tweak the Makefile's "INSTALLDIR" setting.
Changelog:
==========
v1.6.8
rrwood - 2006/05/27 - Activate SciTE via "_NET_ACTIVE_WINDOW" message to ewmh-compliant window manager
v1.6.7
rrwood - 2006/05/27 - Set project status to dirty if row is expanded/collapsed
v1.6.6
rrwood - 2006/05/26 - Add changelog to docs
v1.6.5
rrwood - 2006/05/25 - Preserve expanded state of group nodes when saving/loading project
rrwood - 2006/05/25 - Preserve order of file nodes when loading project (broken by changes in earlier version)
v1.6.4
rrwood - 2006/05/25 - Add "Create Group" button and functionality
rrwood - 2006/05/25 - Make file paths relative to project path when saving project for the first time
rrwood - 2006/05/25 - Add simple "Help" button
rrwood - 2006/05/25 - Support SciTE executable name "scite" in addition to "SciTE"
rrwood - 2006/05/25 - Set window title whenever project file name is set
v1.6.3
rrwood - 2006/05/22 - Tweak Makefile to build better tarball
v1.6.2
rrwood - 2006/05/19 - Move project to Sourceforge
Hacking:
========
I've had to maintain lots of other people's code in the past, and understand the importance of making
things clear and simple, rather than clever, so I've tried very hard to make the ScitePM source as easy
to understand as possible. Whether I've succeeded or not remains to be seen, of course.
In general, the app is structured as an MVC application, with some blurring of the division of view and
controller, and some questionable direct access to the model (made the Gtk code a little cleaner).
The source is organized into the following files:
src/main.cc: The main() entry point for the app; it parses the command-line options, calls
setup_gui(), loads a project file if appropriate, then calls gtk_main() to run the app
src/gui.cc: All the code to create and run the GUI, including button callbacks, popup menu callbacks,
etc.; this is basically where all the "View" and "Controller" stuff lives
src/tree_manipulation.cc: The "Model" related code lives here, including functions to add/remove nodes
to/from the GtkTreeStore, set the "dirty" status of the tree, set the project
filepath, load/save the project file, etc.
src/xml_processing.cc: Project files are stored as XML, and the code in this file reads/writes these files
src/drag_drop.cc: Gtk drag-and-drop processing is handled by the code in this file
src/scite_utils.cc: This file contains the code used to launch and communicate with SciTE
src/string_utils.cc: Miscellaneous code used to manipulate strings (append strings, convert
relative/absolute file paths)
src/gfileutils_local.cc: This file implements g_file_set_contents( ), which is not available on older
versions of glib; if you have v2.8 or later of glib, this code is unnecessary
Rant:
=====
I'll take the opportunity to bitch about the fact that C programming is a whole lot more of a pain
in the ass than I remember. I had fond memories of all the C work I did years back, but haven't
really done anything significant for a while. Instead, I've been doing a lot of C++, and I was shocked
at how much I prefer C++ to C now. In particular, the error handling and resource management in C is
painfully labour-intensive. Oh well....