Thematic.app is a theme editor for GNUstep.

Install and run Thematic.app, then read online help for details of
what it can do.
Alternatively, you can find the help file in Resources/ThematicHelp.rtf

The remainder of this file is intended for people wishing to help improve
Thematic.app itsself, rather than for people who merely with to use it to
create themes.

Theming has to be built into the GNUstep GUI in order for a theme editor
to be useful ... this will be an incremental process, with capabilities
being added to the editor as they are added to the gui library.

To work on Thematic, you also need Gorm.app and ProjectCenter.app,
and a copy of an rtf editor such as Ink.app if you wish to improve the
online help (Resources/ThematicHelp.rtf).

Building/using the current editor requires the *latest* version of
the GUI from SVN.  The major task in theming is now changing all the
control drawing code to be themable ... identifying a minimal set of
drawing methods for each control and defining the number of tile
images needed for each, and updating the code in the GUI library.

To help with developing Thematic itsself, we need to add code to deal
with assigning tiles for particular controls and overriding theme drawing
methods for particular controls.

For most controls, this means:
1. Editing ThemeDocument.gorm to add the control to the main document window.
2. Modify ControlElement.m or implement a subclass of ControlElement to
handle any special featurs needed for your control.
If you create a subclass, this will probably also involve creating
a new Gorm file for the inspector for the new control ...
see ControlElement.gorm for an example.
3. Edit ThemeDocument.m to integrate the changes.
4. Define any tile images to be used to draw the control by editing 
Resources/CodeInfo.plist
5. Define any special colors to be used to draw the control by editing 
Resources/CodeInfo.plist
5. Define any NSInterfaceStyle values or defaults settings which control
behavior fo the control by editing Resources/CodeInfo.plist
6. Define methods that can be overridden to draw the control differently ...
6a. Add the methods and a description of each to Resources/CodeInfo.plist
6b. Add template implementations for each method as a file whose name is
Resources/xxx.txt where xxx is the method name with any colons replaced by
underscores.


TO DO

We have more to do than just adding new controls to those we support.

For one thing, attempting to design an even better iuser interface is always
worthwhile.

The current ability for Thematic.app to always reflect the current state of
the theme under development is great, but it's not safe when you write code
which can crass, and in crashing can crash Thematic.app
It would be nice to come up with an alternative automatic mechanism for viewing the effects of changes which cannot crash Thematic itsself ... perhaps by
running some other example application using NSTask?

The code editor is currently glitchy ... which is strage since it's just
a textview.  This really needs to be improved, whether it's a case for
changes in Thematic or fixes in the NSTextView class in the GUI library
is not entirely clear.

The code editor currently rebuilds the theme after each change ... which can be slow on a slow system.  It would be better if, during an editing session,
it kept the code in a subdirectory and only rebuilt the source for any
methods actually changed.  This should actually be quite easy to implement.

