1.1.2 new bond types - wedge and dashed wedge 1.1.3 wedge and dashed wedge supported in xfig and latex export (oops) sub- and superscripted text drawn in smaller font sub- and superscripting preserved in standard xfig export postscript export mode added (relies on fig2dev) load dialog added using Robert McMullens ListTree widget Added a new example, the antibiotic tetracycline 1.1.4 Simple 'Add fragment' functionality added 1.1.5 updated README file improved dialog boxes text may now contain spaces (encoded as backslashes) 1.1.6 'Added' fragments can be flipped horizontally and/or vertically 1.1.7 Added symbol mode, use '@' in text to invoke it for a character 1.1.8 Added 'New' button to clear canvas. Added bond types 7 - 'wiggly' bond for uncertain stereochemistry, 8 - half arrow (use two of appropriate lengths for equilibrium reactions) and 9 - normal (reaction) arrow. Changed picking code to always return nearest object. ------------ gtk118 Version 1.1.8 with new GUI based on GTK toolkit Added 'Rotate' and 'Copy' functions for marked objects, Moved 'Flip H' and 'Flip V' from 'Add' dialog to general functions Improved marking method to allow dragging marked objects across other geometry ------------ 1.1.9 Button 2 in 'Bond type' mode reverses bond direction (e.g. for wedges) Centered double bond is now available at all angles Wide line for raised single bond (might need this for double as well?) Added example7, anabsinthin Correct initialization of drawing area, interconnection of 'radio buttons'. Fixed exporting of labels to xfig (right-justified labels had text backwards). Collect labels with special formatting (that are exported as individual characters) into XFig 'compound objects' for easier editing. ------------- 1.2a Renamed function round to round_coord to avoid name clash with glibc function. Cleaned up some code that provoked gcc warnings. Fixed gtk pointer chaos that barely worked on Linux libc5 and crashed on glibc. Canvas pixmap is now kept and cleared instead of recreated. File and Export Windows are now modal, Add button is greyed until a mark is set on the canvas. Marked fragments are now drawn in blue. 1.2a2 Improved font size and line width in xfig export (patch by Radek Liboska) Corrected positioning of sub/superscripts and handling of right-justified text in xfig export Increased width of 'wide' line from 4 to 6 units Treat command line parameter as name of file to load 1.2a3 Added pop-up message window for I/O operations (and fixed calls to I/O functions to always check the return value). Added check for "Chemtool Version" string in file header in load_mol and made version number mismatch non-fatal. Added redraw to make marked fragment immediately change color. Added experimental undo stack based on Matt Kimball's libundo library (set -DLIBUNDO in the Makefile to activate) - snapshots are saved with each 'mark' operation and may be recalled after a 'move' or 'rotate' by clicking the right mouse button. Restored yes/no dialog) for Load/Clear/Quit with unsaved changes. Restored xbm export function - though currently with reversed colors (???). Corrected label display - more whitespace around labels, vertical alignment of right-justified text was incorrect after subscript. 1.2a4 Fixed crashes caused by long message texts. Worked around pixmap inversion problem (by inverting the picture before exporting). Tried to make sure that the export pop-up does not leave traces in the xbm, set busy cursor for xbm export. Started commenting functions, removed dead code, formatted the sources with GNU indent. 1.2a5 Corrected spelling of Radek's name in ChangeLog. Changed XFIG (and PS) page format to European A4, fixed positioning of right-justified text with special characters (patch by Radek Liboska). Added bond type 11, circle (first point sets center, second radius). Increased drawing area size, added scrollbars. Added one more zoom step to either side. Improved arrowhead proportions. Added examples tcdd.cht and claisen.cht 1.2a6 Corrected scale of exported image, positioning of centered text and (dis-)appearance of vertical bonds near centered labels in XFig and Postscript export modes. Improved calculation of compound boxes around specially formatted labels in XFig mode. Added Del button to delete the marked fragment (user needs to klick in the marked area to confirm). Rewrote part of the export code for specially formatted labels. Sub/superscript position quality should be less dependent on drawing scale now. 1.2a7 Changed some line widths in export modes, modified arrowheads again, increased displacement and font size for superscript plus and minus signs. In text mode, mouse button 2 (middle) loads a label from the cursor position into the text entry box. Fixed claisen.cht (which had an arrow hidden in one bond) and added a new example, amp.cht (adenosine monophosphate, provided by Radek Liboska). 1.2a8 Updated Imakefile. Made fragment created by Copy function appear slightly offset from the original. Added redraw after a Delete. Added bond type 12, a dotted line. Added 'created by Chemtool 1.2' comment to XFig file header. Changed xbm export to always switch to zoom scale 1, as this appears to reduce the risk of a fatal Xlib error. Added several new molecule files provided by Radek Liboska (adamantane,cyclohexane,various nucleotides), moved all examples to subdirectory 'examples'. 1.2a9 Changed suffix of (encapsulated) postscript output files to .eps and fixed reporting of error codes in all export functions. Updated README file. Unless something serious comes up, this version will be released as 1.2. 1.2a10 Allow popups to be closed via the window manager without making the corresponding menu unavailable or even crashing chemtool. Corrected focus passing between submenus in the file dialog. Added sanity checks for >0 atoms in save and delete functions. Increased offset of copied fragment. 1.2 Re-release of 1.2a10 ---------------------------------------------------------------------------- 1.3a1 Fixed and restored XBM export. Added a (almost empty) template menu (the beginnings of which were already hidden in 1.2a8). Fixed kerning of mixed sub- and superscripts (as in SO_4^2^-). Changed allocation of initial drawing area, calculate actual size before saving. 1.3a2 Added option menu for default bond type , added label support to template function 1.3a3 Reduced preallocated drawing area to 'windowsize+100', as the increase in 1.3a1 (which used window+1000) caused a massive slowdown at startup. Freed unneeded pixmaps in the button setup code. Fragment rotation code now stores the initial coordinates and uses them as basis for the new positions - the previous, incremental calculation was severely plagued by accumulation of errors. 1.3a4 Changed bond option menu to use small icons instead of longer and less clear text labels. Removed check for 'cursor inside marked region' 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 those examples that have become templates. 1.3a5 Added shortcut for some labels - pressing c,n,o,s,p,r,i,h,d or b inserts the corresponding centered element symbol at the last drawing position, 'l','1','2','3' insert the left justified labels 'Cl','CH','CH_2','CH_3'. Fixed a GC leak in export_bitmap. 1.3a6 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). 1.3a7 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. 1.3a8 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. 1.3a9 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. 1.3a10 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. 1.3a11 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. 1.3a12 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. This - plus or minus some templates - is my release candidate for 1.3. 1.3a13 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). 1.3a14 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' menu (mention Radek Liboska as developer, add the tu-darmstadt webpage). 1.3a15 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 Added Check for no (or no selected) atoms before trying to delete a fragment, fixed bug that could deletion of a fragment to fail. Changed functions for horizontal and vertical flip to transform the atom(s) directly bonded to the marked fragment as well. Added current filename (if any) to window title. Use xfig's own arrow type in export of regular arrows (Michael Banck). 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. Updated cht to version 1.3. 1.3.1 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 Liboska). ------- New development branch based on 1.3: 1.4.a1 Most of the bug fixes from 1.3.1 except those related to label kerning and export functions. 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 (Michael Bancks). 1.4.a2 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. 1.4.a3 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). 1.4.a4 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 orbital only). 1.4.a5 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. 1.4.a6 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. 1.4.a7 Added french localisation (by Jerome Pansanel, based on 1.3). Added arbitrary scaling (via the -m option of fig2dev) of eps and pictex output (suggested by Jerome Kieffer). Added a few examples (Viagra and some antibiotics) provided by Michael Banck. 1.4.a8 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 molecules. 1.4.a9 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. 1.4.a10 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. 1.4.a11 Tried a different approach to solve the portability issues in main.c. Dashed wedges are now drawn without the final, widest line (M.Banck), filled wedges adapt to the width of an adjacent wide line. Corrected rendering 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). 1.4.a12 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. 1.4.a13 Made cht work again (the new interactive mode had an uninitialized variable that prevented normal operation). Fixed a small spelling 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 '3d' effects. 1.4.a14 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. 1.4.a15 Modified declaration of locale path in Makefile to make it immune to variations of shell, make and gcc. Changed the font initialization to attempt a fallback from 'helvetica' to 'fixed' font first instead of aborting immediately (though this should never happen at least with xfree86-based installations, as far as i know). Changed xfig and xfig-based export modes (ps,pictex) to export only the marked segment if a mark is set. Cleaned up furanose template. Clarified (?) the section on label editing in the README. Modified ratio of cursor movement to rotation angle to allow speedier rotation of structures. 1.4 Added updated russian translation (Michael Shigorin), updated the french translation (my french is horrible). Updated the usage instructions in the README and manual page. Changed rotation and inversion functions to act on the center of the marked fragment (Michael Banck). Reduced sensitivity of the scaling function. 1.4.1 Fixed a memory overflow bug in the move, rotate and scale functions. Fixed a bug in the centering function used for rotations and inversions.