Information on older (pre-1.4) development
The primary site for chemtool is still http://www.uni-ulm.de/~s_tvolk/chemtool.html.
Please go there for screenshots, stable versions, etc.
Please contact me at
Development series for 1.4
The bug fixes from 1.3.pre-1 , plus :
Added two new bond types, the 'left' and 'right'
versions of a partial (dashed) double bond, to chemtool and cht.
In 'bondtype' mode, the type of the selected bond is now changed to the
current default type instead of the next type in the cyclic list.
Replaced the upper button row of the GUI by a more standard menu bar
Added the kerning and export fixes from 1.3.1. Added #ifdefs to simplify
switching between the 'old' and 'new' GUI style. Made copying a marked
object automatically invoke 'Move' mode instead of re-entering 'Mark'
mode to prevent accidental placement of the copy on top of other
geometry. Added function to draw square brackets around the marked
part of a structure (currently treated as 2x3 single bonds internally).
Added function to draw curves by specifying four control points - the
curve runs from the first to the last point and is bounded by the
other two (cubic bezier curve). Depending on the current bondtype at
the time of drawing, the curve can be dotted, have a half or full
arrowhead (bondtypes 12,8 or 9), be used to define a solid black
object (e.g. orbital lobes, 'wide' linetype) or a simple line (all
other bondtypes). This new object type is stored in a new section
'splines' in chemtool files, and converted to a xfig 'polyline' on
export. In this version, it can only be added, marked and deleted -
copying, moving or changing is not yet implemented.
Fixed erratic text placement when textmode was already active at the
time the text entry box was activated. Fixed broken dialog messages
for Latex output. (Both bugs introduced in 1.3.1-pre2).
Fixed miscalculation of spline curve, implemented copying, moving,
and mirroring of curves, moving a curves control points and changing
its type. Pressing the right mouse button in curve mode cancels the
incomplete curve now. Added correct 'radio button' behaviour for the
'curve' button. Corrected fill color and shape of curve arrowheads.
Replaced the simple export popup with an extended file selection
dialog that provides choice of filetype and automatically appends
appropriate suffixes. Changed xbm export to dump only the relevant
part of the drawing area if nothing is marked.
Unified the export dialog handling, clarified filetypes (LaTex
export was named XFig/Latex although it has no separate xfig
content, XBM was erroneously described as X pixmap instead of
bitmap on its tooltip).
Exporting to eps only claimed to use filename.eps, but actually
reused the name of the drawing file, potentially overwriting it.
Fill style for curves was not reset correctly on export, leading
to strange effects on subsequent curves. Curve control points were
not hidden in xbm output. 'Half arrow' curves had an extraneous
arc protruding behind the arrowhead. Added preliminary support for
'curve' objects to template system (maximum of 2 per template),
added 'orbital' page to template system (currently sporting one p
Implemented rotating and rescaling of spline curve objects.
Limited size of arrowhead on curved arrows, added code to ensure
that half arrowheads appear on the correct side of curved arrows.
Added shortcut for 'curved semiarrows' to bondtype menu. (This
creates a spline with two coinciding control points slightly offset
from the midpoint of the line, so converting existing bonds to or
from this type is not possible.)
Control points are now only shown in 'move' mode, they are larger
than before and displayed for 'circle' bonds as well.
Moving the center of a circle now moves that circle without resizing
it. Fixed missing break in case statement that caused label deletion
to also delete any marked fragments.
Fixed bugs in xfig output - compound boxes were too short, and simple
labels were exported as unterminated compound objects, leading to
Added a drawing of the citrate cycle to demonstrate the new arrow
types. Added an actual copy of the GPL to the tar archive as requested
by the FSF.
Added special treatment of wedges and greek characters in Latex export
mode to work around fig2devs apparent inability to translate filled
polygons and the X11 symbol font into pictex commands. Changed wavy
bond to change chirality depending on direction, so that they can be
linked to form longer patterns. Some documentation updates.
Added french localisation (by Jerome Pansanel, based on 1.3). Added
arbitrary scaling (via the -m ption of fig2dev) of eps and pictex
output (suggested by Jerome Kieffer). Added a few example drawings
provided by Michael Banck.
Added manual page for cht. Added menu code update by Michael Banck,
most menu options have Ctrl-(key) shortcuts now. Added experimental
(and not yet fully functional) automatic ring generation using Ctrl-3
to Ctrl-9 for 3- to 9-membered, Ctrl-0 to Ctrl-2 for 10-, 11-,
12-membered rings. Used fewer lines for the pictex representation of
wedges to avoid exceeding Latex' memory capacity even with small
Backed out the pictex wedge changes of a8, as the real solution is to
increase the value of extra_mem_bot in texmf.cnf (without it, Latex
will fail when there are even just a few simple drawings, with or
without wedges, in a file. This is a known feature of PicTeX).
Fixed output of regular characters in pictex - it was using italics
because of leftover $ characters from the earlier implementation.
Changed filenames of the examples added in a7 to reflect their contents.
Successful exporting is now reported in the status bar instead of the
popup window. Updated README and chemtool manpage. Rewrote ring
generating code (Michael Banck) so that rings are correctly attached
now. Ring drawing is initiated by holding the control key while drawing
a bond that serves as the first segment of the ring. Ring size is
governed by the current drawing mode (5, 6 or 8 sides), but it can
be preset on a per-ring basis by pressing Ctrl-3 to Ctrl-9 for 3 to
9 sides, Ctrl-0 to Ctrl2 for 10, 11 and 12-membered rings. Rings are
always drawn in clockwise direction based on the direction of the
initial bond, they are marked automatically and can be erased by
pressing Ctrl-mouse3 immediately after drawing.
Fixed bug that prevented the template menu from working in alpha9.
Fixed passing of pointers and added type casts to improve portability
on platforms with different default sizes of int and pointer.
Updated Makefiles (add declaration of $MAKE for building cht on systems
where the default make program is not GNU make; install cht manpage;
building cht does not require the math library). Prepared menu items
for localisation, updated german translation.
Tried a different approach to solve the portability issues in main.c.
Dashed wedges are now drawn without the final, widest line (M.Banck),
and filled wedges adapt to the width of an adjacent wide line.
Added filling of arrowheads in Pictex output.
Added polish translation (Nikodem Kuznik). Added several drawings
of antibiotics to the examples and several chiral auxiliaries to
the templates (files provided by M.Banck), moved some of the simple
examples to the templates. Added '-i / --interpret' flag to cht to
allow using it from the command line (e.g. cht -i C_6H_5OH). Added
a rough sketch of the citrate cycle to the examples. Added a Makefile
for compiling on 64bit SGI systems (provided by Michiel Kreutzer).
Fixed zoom bug introduced with alpha11 (zoom out did not work).
Fixed calculation of 'adaptive' wedge width in the export functions.
Added key sequence '@*' for the 'dot' symbol character (which is
not available with regular keyboard mappings), correspondingly
added '*' to the shortcuts available in drawing mode. (For radicals,
and to mark the atom positions in cumulenes, ketenes, etc.)
Added a new bond type, 'striped' single bond for diastereomers.
Drawing a ring with the 'circle' bond type now creates a polygon
with an aromatic ring inside, instead of a sequence of overlapping
circles. Updated Czech translations.
Made cht work again (the new interactive mode had an uninitialized
variable that prevented normal operation). Fixed a small typographical
error in the Czech translation. Added Michiel Kreutzers Makefile
for older 32bit SGI workstations. Holding the control button while
dragging the mouse in scale mode now does anisotropic scaling for
Fixed locale declarations to make language support work again with
new glibc. Moved declaration of locale path into the Makefile.
Transformed an ugly bunch of 'if' clauses into a switch() for
(slightly) faster screen drawing. Modified 'adaptive wedge'
drawing code to draw a regular wedge when the angle between the wedge
and the wide bond would make the wedge collapse into a thin line.
Fixed a typo in the german locale file, added the trivial updates
to the french localisation. Cleaned up the template menu code to
fix the problem with missing template icons reported for RedHat 7.1.
Added the updated polish translation provided by Nikodem Kuznik.
Updated the rpm spec file in preparation for the 1.4 release.
Modified locale path declaration in Makefile to improve portability.
Changed the font initialization code to attempt a fallback to the 'fixed'
font if the 'helvetica' font cannot be found. Changed export modes to
export only the selected portion when a selection has been made. Cleaned
up the furanose template. Clarified the section on label input in the
README file. Modified the ratio of cursor movement to rotation angle
to allow speedier rotation of structures.
Changes leading to 1.3 :
Fixed and restored XBM export.
Added an (almost empty) template menu (which was already hidden in 1.2a8).
Fixed kerning of mixed sub- and superscripts (as in SO_4^2^-).
Changed allocation of initial drawing area.
Changed 'Save' function to calculate the actual size of the drawing.
Added option menu for default bond type.
Added label support to template function.
Reduced the preallocated drawing area again, as the increase
in 1.3a1 caused a massive slowdown at startup.
Freed unneeded pixmaps in the button setup code.
Fragment rotation is now based on a stored copy of the initial coordinates -
this should fix the distortions caused by accumulated rounding errors.
Changed bond option menu to use small icons instead of longer and less
intuitive text labels. Removed test for 'cursor inside marked box'
condition in Move mode to allow smooth dragging. Started populating the
O and N heterocycle panels of the template menu. Fixed a duplicate bond
in the tcdd example, and removed some examples that have become templates.
Added keyboard shortcuts for some labels:
pressing c,n,o,s,p,i,h,d,b or r inserts the corresponding centered symbol at
the last drawing position, while 'l','1','2','3' translate to the left-
justified symbols 'Cl','CH','CH_2' and 'CH_3' respectively.
Fixed a GC leak in export_bitmap.
Moved the nucleoside examples to the template system. Made marker
position default to last drawing position, so that the 'Add' function
is now always active. Beginnings of internationalization (.mo file
for German locale added). Fixed naphthalene template, added dicyclo-
pentadiene. Changed Add_atom to automatically convert blanks in label
input to backslashes for storage. Prepared a few drawings for later
inclusion in the template system (camphor,pteridine,caffeine,glucose,
fructose,mannose,galactose,neuraminic acid, spiro[4.5]decane).
Template cleanup: porphine moved to heterocycle panel, spirodecane
added in its place. Glc,Fru,Man,Gal transfered to carbohydrate
templates, caffeine to heterocycles. Czech translation (by Radek
Liboska) added. Improved bounding box coordinates for xfig compound
object (used for sub/superscripted labels) Changed export functions
to remove the intermediate '.f2l' files. Changed orientation in xfig
header to Portrait. Adapted xfig (and xfig-based) export modes to
the new XFig default depth of 100. Changed depth of xfig text (labels)
to 90 and added filled white polygons at depth 95 to hide overlapping
line segments (experimental, used only for sub/superscripted text at
the moment). Reset default filename to 'unnamed' when the current
molecule is deleted.
Changed buttons mark/move/rotate/flip/delete/copy from text to icon
to reclaim space for the text entry box (icons created by Radek
Liboska). Added white polygon to clear area under normal text as well.
Added program icon. Added an interface for Radek Liboskas standalone
program CHT, which calculates sum formula and molecular weight from
a chemtool sketch. Corrected example drawing of brevetoxin.
Really reset mark flag when nothing was within the marker box.
Allow saving only the marked region (formula weight computation only).
Helper program CHT now parses those labels that are not in its
internal table of common substituents; exact mass is now returned
automatically. Added status line with message history.
Internationalization support made optional (define DISABLE_NLS in
the Imakefile if you do not want it) to allow compiling on systems
without GNU-style locale support again.
Improved ring size and position in the benzene and cyclopentadiene
templates (Michael Banck). Reset all marks before loading a template.
If the template menu is already open, pressing the Template button now
brings it to the front. Added templates (inden,biphenyl), removed the
ugly question mark placeholders.
Changed handling of windowmanager events, so that using the window
decorations' CLOSE button brings up the Yes/No dialog while the chemtool
window is still alive.
Changes in helper program CHT (cht011a): now recognizes Ac in complex
substituents; correctly handles aromatic 'ring' in formula input;
checks input file for identifier "Chemtool"; reads number of bonds
from "bonds" line (to handle label-only files gracefully); exits on
unattached labels instead of silently miscalculating formula and
mass. Subsequently updated to Radek Liboskas current version 0.19,
which already includes equivalent changes. Added list of abbreviations
supported by cht.
Reset all marks before 'adding' a sketch. Adding a label on top of an
existing one now replaces the old label as it should. Added a function
for rescaling objects (useful for drawing reagents above the reaction
arrow - but labels are not rescaled yet). Added linetype 13, a single
bond with opaque background (for crossing bonds - see the bicyclooctane
template). Updated the German translation.
Dropped the internal icon, as it was only causing trouble, especially
with KDE. Most window managers allow specification of an external icon
anyway (added chemtool.xpm for this purpose). Moved 'delete fragment'
button to the end of the button row. Updated Czech translation by
Radek Liboska. Added linetype 13 to the helper program CHT, made it
accept any Chemtool 1.x file, not only version 1.2. Updated the
'documentation', i.e. the README file, split out an INSTALL file. Set
version number in chemtool files to 1.3. Fixed bug that left a newly
'added' structure active but unable to move. Rewrote positioning
logic for subscripts and right-justified text in export modes again.
Changed screen display of molecule from 'fixed' fonts to helvetica
as used in the export modes - previously, labels that appeared fine
on screen could overlap in the final (postscript) output. Fixed
'mannose' template that showed exactly this. Added formatting option
'|' for slanted characters (as in iPr,tBu).
Fixed label shortcuts for CH_2 and CH_3 that could crash chemtool
(buffer overrun). Fixed scaling in export function, which had been
applied to labels only. Improved label size at smallest scale. Added
correction factor for sub/superscript after certain characters (the joys
of proportionally-spaced fonts :-( ). Handled reopening of template menu
after a close via the window manager. Updated 'About' window.
Changed canvas bitmap allocation to avoid uncovering garbled portions
when the sliders are used. Fixed fragment deletion code (deletion of
the marked fragment and redisplay of the modified drawing are now
performed immediately). This hopefully fixes the crashes some people
have been seeing with this function.
1.3, binary rpm
1.3, source rpm
1.3, debian package
(changes vs. 1.3.a15)
Check for no (or no selected) atoms before trying to delete a fragment.
Some code cleanup: removed dead code, fixed unnecessary parameter
passing between functions, tidied formatting with GNU indent. Removed
Imakefile and provided regular Makefile (the build process relies on
gtk-config, not xmkmf, since 1.2), added install targets for the
localization files and manpage.
1.3.1(mostly) a bugfix release for 1.3 :
1.3.1, i386 binary rpm
1.3.1, source rpm
1.3.1, i386 debian package
(debian packages for other architectures may be available at ftp.debian.org)
(changes vs. 1.3)
Updated src-cht to version 1.7, which now also outputs composition
in mass percentages and flags duplicate bonds with an exclamation mark.
Fixed string buffer overflow problem with returned values from cht.
Fixed some example files that contained duplicate bonds.
Added appropriate window titles for the file selection dialogues. Fixed
unit flag in xfig output (was 'Centimeters', should be 'Metric').
In eps export mode, fig2dev is now called with the '-L eps' option of
fig2dev-3.2.3 first, and if this fails for some reason, the old-style
'-Lps' option is tried (which would create non-encapsulated postscript
with more recent versions of fig2dev).
Modified the new Makefile (which was always recompiling all sources
even if only one was changed). Reduced height of chemtool window by
20 pixels to keep the status line (with cht output) visible on 800x600
(laptop) screens. Modified calculation of xfig bounding box for
labels - it was creating degenerate boxes (both x coordinates equal)
for labels like H^+ which sometimes confused xfig.
Chemtool now uses different cursor glyphs for the drawing and editing
modes (Radek Liboska). An 'Add' or a failed 'Load' no longer changes
the default filename. 'Delete marked fragment' is now performed by
clicking the right button in 'mark' mode, the corresponding menu button
is replaced by a function for cleaning up formula drawings (which
removes duplicate bonds and fuses closes contacts) . Chemtool no
longer draws a line from the top left corner to the first point set,
and does not show the 'unsaved changes' dialog when there are no bonds
or labels. Fixed button bar to correctly toggle from rotate to scale
mode. Added callback to suppress insertion of labels via the hotkey
function when the user wants to type into the text entry box. Fixed
Latex export to not use whiteout boxes (which were obscuring the labels
they were supposed to create space for), removed erroneous reference
to the temporary .f2l file in the popup message. Drawing size (but not
font size) was reversed in the two smallest zoom scales. Did another
round of label positioning and kerning fixes in both screen and export
modes. Updated alternate URL in documentation and About dialog, as the
tu-darmstadt system is about to be shutdown. Added russian localisation
(Michael Shigorin, based on 1.3). Updated czech localisation (Radek