- Prepare for Python 2.4:
- Update paxtkinter to deal with python's Tkinter changes
- The .sk file format is now the default file format in the File/Open
dialog. Patch by Frank Koormann
- The setup.py script works on HP-UX now. Shared libraries have a .sl
extension there. Patch by Olivier Mehani (Savannah patch #3709).
- Mouse-wheel support for the canvas. The mouse wheel scrolls up/down.
Savannah patch #3836 by cafeine
- Updated the FAQ a bit to better match the one on the web-page.
- Kinyarwanda translations by Steve Murphy. The translation seems
quote incomplete.
Bug Fixes:
- On some systems math.atan2 raises an exception when called with two
zeros. Fix one occurrence in the arrow module.
Reported by Joel Biddier
- Cancelling the drawing of a poly line or poly bezier with ESC
resulted in tracebacks until the next mouse click. Reported by
Antoon Pardon (Savannah bug #9378). Patch by Valentin Ungureanu
(Savannah patch #3141).
- The "Export Raster" script gives a better error message if
ghostscript can't be called. Bug reported by Eric Devost
- When importing EPS files, skencil didn't parse %%BeginData comments
correctly. Fixed by Savannah patch #3134 by Bernhard Reiter
- The svg export filter now sets the winding rule for all objects to
even-odd. Savannah patch #3103 by Philippe Blayo, fixes Savannah bug
#5756 by Simon Budig.
- The SVG filter handles ill-formed transform specifications a bit
better. The old version would hang in a regular expression match if
the triling closing parenthesis of e.g. a matrix specification was
missing. Bug report by Joel Biddier
- The svg import filter also accepts capital Z as closepath command of
a path specification as required by the SVG specification. Savannah
Patch #3587 by Bernhard Reiter.
- In the print dialog, when the user clicked on the file selection
button and cancelled the dialog, Skencil would give an exception.
This is now fixed.
- The usage messge printed when the --help option is given on the
command line now correctly refers to "skencil" not "sketch" anymore.
- The source URL in the spec file now refers to skencil as well. It
still points to sourceforge, though. Patch by Paul Dickson
- The setup.py script now finds the tcl/tk libraries on OpenBSD as
well (savannag bug #12046)
- Already in 0.6.16, but not mentioned before: Skencil's type1 font
parsing code could not cope with some type1 files -- files with no
subrs or with flexes. Now it can. Bug report by André Pascual
Skencil is the new name for the vector drawing program formerly known
as "Sketch".
This is only a superficial renaming. All places in the GUI are
changed and the main executable is now called skencil (for backwards
compatibility you can also start Skencil with "sketch" as before).
Internally nothing has changed in this regard. The main python
package is still called Sketch for instance and the userspecific
configuration is still stored in ~/.sketch
Thanks to Frank Koormann for coming up with the name "Skencil".
New icons including a new icon for Skencil itself contributed by
Taiabati (http://www.taiabati.it/). These icons were drawn with
Skencil and the raster versions were created with the help of Gimp.
The Skencil files can be found in the Examples directory.
The sk2ps.py script has a new option, --embed-fonts or -e to embed
the fonts used by a drawing in the postscript output. Patch by Otto
Tronarp
The print dialog also has a check box "Embed fonts" now. Patch by
Antoon Pardon
The sk2ppm.py script has a new option, --alpha-bits or -A, to make
ghostscript ase anti-aliasing. Patch by Tamito KAJIYAMA
The skshow.py script has a new option, --fit. If given it fits the
bounding box of the drawing rather than the page to the window size.
Patch by Antoon Pardon
The color dialog has RGB entry fields now. Patch by Bernhard Reiter
Updated German translations
Portuguese translations by Lopo Pizarro
Updated French translation by Michel Robitaille
Updated Swedish translations by Christian Rose
WMF export filter by Lukasz Pankowski
Antoon Pardon has updated the CGM filters
The CGM export filter supports path text now. Patch by Lukasz Pankowski
The script that reads GIMP paths is now in the Script subdirectory
and activated by default
The center of rectangles is now also a snap point. Based on a patch
by Valentin Ungureanu
The multi line text objects can deal with more variants of boldness
and other attributes in fonts. Patch by Antoon Pardon
Make Sketch work with Python 2.3 without warnings:
- Update paxtkinter so that it works with the new Tkinter
- Change hex literals so they don't trigger warnings about being
interpreted differently in future versions
- Make sure to use ints and not floats where some C-functions expect
ints
Bug Fixes:
- Make sktops.py work when drawing all visible layers and the grid
layer is marked as visible. Patch by Andy Thaller
- Sketch failed to load .sk files that contained very long lines
following a bezier curve. Patch by Andy Thaller
- Sketch failed to load .sk files that contained empty plugin objects.
These objects are now simply ignored when loading such files
- The SVG export filter makes sure now that text objects do not have
strokes. Bug reported by Peter Robins
- The SVG import filter now uses a black fill by default. Bug reported
by John Ellson
- Fixed the copyright notices which said LPGL but referred to the GPL
too. They now have the same license statement as all other LPGPLed
files
- When "Snap to Objects" was active and a new object was created the
points that Sketch snapped to were not updated properly. Reported by
Valentin Ungureanu
- Avoid attribute errors in the __del__ method of Font objects.
Reported by Antoon Pardon
- Updated CGM import/export filters from Antoon Pardon
Bug Fixes:
- Fix the order of the items in the changelog in the spec-file (Andy
Grimberg)
- When using setup.py install with the --dest-dir option make sure that
the correct filename is put into the bycompiled files (*.pyc). Patch
from Ralf Ahlbrink
- Make Sketch compile with tcl/tk 8.4. Problem noticed by Michael
Soibelman.
- In setup.py, handle the 'make' variable parameters (e.g. CC=gcc)
properly when they contain multiple equals signs. Patch by Sebastian
Stark
- Allow digits in the keys of format specifiers in the format strings
returned by the Info method of a GraphicsObject.
- The SVG import filter now handles the viewBox attribute of the svg
element (it doesn't handle the preserveAspectRatio attribute though).
The filter also makes sure that non-text object won't get a font
attribute and it understands more color names. Bugs reported by Keith
Hopper
- The CMX import filter handles poly-curves with a large number of
points better now. Reported by Tim Wright.
- Brasilian Portuguese translation by Wanderlei Antonio Cavassin
- Swedish translations by Christian Rose
- New French translation by Michel Robitaille.
- New Spanish translation by Esteban Manchado Velázquez
- Updated po/README to explain about the formatting templates (%-format
specifiers in strings)
- CGM import/export filters contributed by Antoon Pardon
- New example script Script/footprints.py which contains the code of
the footprints script demonstrated in the Sketch presentations at
LinuxTag and EuroPython 2002.
- Change the license statements of a few files to match those of other
modules (LGPL). The affected file are pdfgensaver.py, svgloader.py
and svgsaver.py in Plugins/Filters/ and Sketch/UI/plugindlg.py.
- Already in 0.6.13: The SVG export has some basic support for Text.
Based on a Patch by Paul Giotta
- Updated sketch.spec file based on the one Andy Grimberg used for
sketch-0.6.13-3.src.rpm
Internal Changes:
- The pdfexport filter can now output to an existing reportlab pdfgen
canvas.
- Remove the DEFS= lines from the Makefile.pre.in files. With them,
Sketch won't build with current CVS Python and probably won't with
2.3 either. The lines are not needed anyway for Sketch.
- Added encoding declarations to some files in preparation for Python
2.3 which gives warnings for files that contain non-ascii characters
and don't have an encoding declaration.
Bug Fixes:
- Applying Font settings when no object is selected (so that the
default settings are changed) now works again. Reported by Antoon
Pardon
- Nodes inserted into bezier segments are now 'smooth' instead of
'symmetric'. Reported by Antoon Pardon
- sk2ppm now works when the output filename is omitted. Bug reported by
Jan-Oliver Wagner
- With Tcl/Tk >= 8.1, filenames with non-ascii characters were not
handled correctly. This is better now, but it's probably not perfect.
Reported by Bernhard Reiter.
- The SVG export filter now escapes text properly. Bug reported by
Stefan Eilers (SF #545267).
- The extension modules in Sketch/Modules, Filter and Pax now use the
Python Memory API correctly as specified for Python 1.5.2 but it
should also be compatible with later versions including 2.3
(according to the discussion in April 2002)
- The postscript output handles writing to an EPS file that's also
referenced by the drawing itself. Previously, in such cases Sketch
would open the eps file it was writing to again and copy the file
into itself filling up the file system. Bug reported by Rodrigo
Benenson (SF #550917)
- The command Style->Update Style now works under Python 2.2 as well.
Bug reported by Juan Pablo Romero. Pieter Edelman pointed out that it
happens only under Python 2.2.
- The line dialog now updates when the selected object doesn't have an
outline. It just checks the "None" checkbox in this case. In earlier
versions it would just ignore the selection change when the newly
selected object didn't have an outline. Reported by Antoon Pardon.
- setup.py now looks for the tk header files in /usr/include/tclX.Y
(X.Y is the tcl version) as well.
- Each time the line dialog was opened an empty arrow head was added to
the list of arrow heads making the option menu grow by one entry each
time the line dialog was opened. Fixed now.
- Fix a typo in the simple_separation script. Spotted by Esteban
Manchado Velázquez
- skapp.py referenced the locale module's Error exception which didn't
exist in Python 1.5.2.
You can now assign font properties to multiple objects at once.
Suggested/reported/repeatedly whined about ;-) by Jeffrey Boser
A multi-line text object. You can create multiline text objects with
the menu item Edit->Create->Multiline Text. Contributed by Christof
Ecker
An import filter for the Acorn Drawfiles. Contributed by David
Boddie.
The gradient editor now has a button "Reverse" which reverses the
gradient in the editor. Patch from Aurelien Gateau
Updated translations: Spanish by Esteban Manchado Velázquez, Russian
by Andrey Kiselev, Italian by Mauro Colorio.
The wmf import filter supports a PolyPolylines now. Patch from Antoon
Pardon.
A new command line tool, skconvert.py that converts between vector
formats Sketch can read and write.
A new command line tool, sk2ppm to convert vector files to PPM
(portable pixmap)
Two new sample scripts in Script:
reload_image can reload external raster images or update the preview
images of EPS files.
simple_separation provides a very simple form of color separation by
creating one ps file for each color used in the drawing.
The Illustrator-import filter now gives a warning if the file looks
as if it's not generated by AI. Furthermore it understands text
alignment now.
The SVG import filter parses paths more correctly now. The old
version didn't accept numbers without delimiters in between, which is
legal in an SVG path if the second number starts with a sign.
Some of the scripts in the Script module are now loaded automatically
on startup. If you don't want that, put the line
preferences.standard_scripts = []
into ~/.sketch/preferences.py
The resolution of EPS images is configurable now. You can set it with
in ~/.sketch/preferences.py with a line like
preferences.eps_preview_resolution = 144
In this example the resolutioin is set ot 144 pixels per inch, which
is twice the default value.
Bug Fixes:
- Quote filenames of EPS files properly when rendering the preview.
The previous behavior was a security problem.
- The setup.py script omitted the -lX11 parameter for the paxtkinter
module when run under Python 2.1 or with the --tk-autoconf parameter.
Spotted by Grant Edwards.
- The PostScriptDevice's DrawLineXY method used the wrong y coordinate
for the end-point.
- The PostScriptDevice uses floats for font sizes now.
- Call setlocale to make the gettext functions work properly. There's
some strange interaction with tcl/tk for which Sketch/UI/skapp.py
contains a workaround. Reported by Gregor Hoffleit.
- Not really a bug-fix, perhaps, but in SafeScripts it's now allowed to
call a few of the special python methods, such as __cmp__. The spread
script ran into this problem in some cases.
- The reload panel lists the correct modules again.
- In the Pax module, the CopyPlane of the pixmap objects allows another
pixmap as the destination drawable too.
- Already done in 0.6.12: Fixed a bug in the stream filter module that
prevented Sketch from loading very small images embedded in Sketch
documents. Reported by Geoffrey T. Dairiki.
Internal Changes:
Plugins can now have plugin specific libraries. This is done with a
slightly incompatible way in how the plugin path is handled.
If A plugin has additional library modules, the library modules
should be put into a Lib direcory in the directory where the plugin
is placed. Sketch will automatically create a Lib package whose
__path__ contains that Lib directory so that the plugin can import
modules from there with "import Lib.module". How this works can be
seen in both new plugins (multi-line text and the drawfile input
filter).
Plugins may now have an additional configuration variable,
load_immediately. When set to true (default false) it will cause the
plugin management code to load the plugin module immediately after it
has been scanned.
The function Sketch.UI.prompt.get_sketch_modules once again correctly
determines which modules belong to Sketch.
- View->Load Palette... also supports Gimp palette files.
Bug fixes:
- The PostScript generator now handles RGBA images used as tiles
correctly. Reported by Andy Grimberg.
- Modifying objects that lay far outside the window could lead to X
Errors.
- Loading AI files sometimes raised exceptions with an AttributeError
"'None' object has no attribute 'guess_continuity'". This is now
fixed. Reported by Eric Faurot.
- The CMX import filter handles empty groups gracefully. Bug reported
by Yuri Shchedov.
- Fix some typos in skshow's doc-string. This is basically what's
already done with the Debian packages.
- Changing the paper format could lead to an inconsistent mapping
between document and window coordinates. Reported by Antoon Pardon.
Internal Changes:
- The TrafoPlugin objects have a Trafo method now that returns the
transformation.
- TrafoPlugin.__init__ now accepts a trafo object as the trafo kw-arg
and accepts the loading kw-arg.
- The Append* methods of curve objects now raise a TypeError exception
when the first segment appended to a curve is not a line segment. One
consequence of this change is that Sketch may not be able to load
some sk-files anymore when they contain curves that start with a
bezier segment. You can use the new script Misc/fix_broken_sk_file.py
to fix such files.
- Updated Spanish translation by Esteban Manchado Velázquez
- Add /usr/lib/ghostscript/fonts to the default list of font
directories (for debian).
- Include the .spec file in the tarball and distribute the Misc
directory with the RPMs as documentation.
Bug fixes:
- The find_include_dir function in setup.py now catches and ignores
OSError exceptions, too. Pointed out by Pierre HANSER.
- The russian translation are now properly contained in the archive as
*.mo files too.
- Drawings that contained non-ASCII characters in strings were not read
back correctly when saved under Python 2.1
- The import filters now remove empty curve objects. The implementation
of 0.6.9 didn't cover all special cases. The new one works
differently but shuld catch all cases.
Russian translation contributed by Andrey Kiselev
Fix setup.py so that Sketch can be compiled with Python 2.1. The main
change here is that in Python 2.1, the _tkinter configuration can't
be taken from the Setup file anymore because of Python's new build
process.
If setup.py is run by Python 2.1 or higher it now uses the distutils
and code pretty much like Python's setup.py to figure out which
compiler flags to use for the Tk-specific C-code.
This change also introduces two new command line options for the
configure command:
--tk-flags=flags |
| Compiler flags to use for building the tk-modules. E.g.
./setup.py configure --tk-flags="-L/opt/tk/lib -ltk8.2 -ltcl8.2"
|
--tk-autoconf |
Determine the compiler flags for Sketch's tk-modules without
referring to Python's Setup file as described above. When run
under Python 2.1 this will always be done. You can use this flag
to force this mode under older Python versions.
It only works if the distutils are installed. Beginning with
Python 1.6 the distutils are part of Python's standard library.
For Python 1.5.2 a separate package is available at
<http://www.python.org/sigs/distutils-sig/download.html>
|
"setup.py build" now stops when an error occurs. This should make
build problems more obvious.
setup.py now stops when an unknown command line flag is given.
Fix the point extension type to work with Python 2.1
In the print dialog, the "rotate ccw." checkbutton is automatically
set when the document uses landscape page orientation.
The SVG import filter now has basic support for text and images.
Contributed by John Shumway.
The SVG import filter now works with Python 2.1 (and probably 2.0 as
well).
The virtual size of the canvas is much larger now to accomodate large
paper sizes better.
The generator scripts in Pax/Generate create ANSI prototypes now
Bug fixes:
- In the SVG export filter, add a missing space in the radial gradients
SVG code, and set gradientUnits="userSpaceOnUse" in linear and radial
gradients. Pointed out by Laetitia MARIN.
- The warning module would throw exceptions instead of printing error
when plugin directories were not readable. Pointed out by Jonathan
Soons.
- The computation of the bounding rectangles of an ellipse threw
exceptions on some platforms in some cases. Pointed out by Damien
Chrisment
- Catch import errors for plugins better in mainwindow.py. In earlier
versions an import error in e.g. the SVG import filter would abort
the entire application.
- Fix a bug in the PDF export filter that gave filled arrows the wrong
color.
- Python 2.1 exposed a bug in the rect implementation that gave a
document an infinite bounding box in some cases.
- Changes in the paperformat have the proper effect now on the position
of the page on the virtual canvas.
- Fixed the _type1module to work with Python 2.0.
Italian translation contributed by Mauro Colorio.
Bernhard Reiter contributed an expanded version of the
export_raster.py script which lets you set more parameters in the
dialog. It is now in the Script package so that you can import it
with the line
import Script.export_raster
In your ~/.sketch/userhooks.py.
The sk2ps script now has a --rotate/-r option to rotate the drawing.
Useful to print landscape format drawings.
The line properties dialog no longer sets the color to None when a
group or other object is selected that doesn't have line properties
Slightly updated FAQ list.
Bug fixes:
- In some cases the PostScript generator rounded text-coordinates to
integers instead of using floats. Pointed out by Kai-Uwe Behrmann.
- The PDF-export filter supports arrow heads now and handles dash
patterns correctly.
- The XFig import filter supports dashes now
- Fix a small problem in the SVG inport filter's handling of
coordinates in %-units. Patch provided by Philipp Matthias Hahn
- Several fixes to make Sketch work with Python 2.0. Thomas Gellekum
contributed a patch for Sketch/Modules/skcolor.c and Ron Shonkwiler
pointed out problems in Pax when using PseudoColor visuals that are
also fixed now.
- In tk versions >= 8.1, key stroke events with non-ASCII characters
should work once more for Latin1 characters. Those tk-versions report
characters as UTF8 which confused Sketch. Reported by Armin Geisse
- Fixed a small name error in selection.py which could be triggered by
buggy user scripts
- Fix a bug in generating the warning message when keystrokes are
overridden by userhooks.py
- The import filters are a bit more robust. They ignore empty curve
objects automatically
Styles can now have explicitly empty fill and line properties.
<Ctrl-Space> now does the same as <Space> alone, that is, switch
between selection- and edit-mode. Unlike <Space>, <Ctrl-Space> also
works when editing text.
Pressing Ctrl when moving objects or Bezier-nodes now also constrains
to diagonals in addition to horizontal and vertical movement. Based
on a patch by Antoon Pardon.
You can now click and drag a bezier segment in edit mode. Based on
demo code by Simon Budig.
Sketch can write PDF files now. For this feature you need reportlab
from <http://www.reportlab.com>. This filter is quite complete, but
there are some limitations. It doesn't suport embedded EPS files,
tiled image fills, fonts that aren't among PDFs builtin fonts (it
will use Times-Roman instead), and some more esoteric features.
Note that reportlab 1.0 has some bugs that affect Sketch. They're
already fixed in CVS, so they should be in their next release.
The SVG export filter supports radial and axial gradients now.
Guide-lines no longer snap to other guide-lines when dragging them
but they still snap to guide-objects (i.e. objects on the guide layer
that are not guide-lines).
Bug fixes:
- Give a meaningful error message when trying to print a document that
has no printable layers. Previous versions would fail with a
traceback in that case. The bug affected both File->Save as
PostScript and the Print dialog. Reported by Michael Walton.
- In setup.py, use sys.exec_prefix to determine the location of
"Setup". Patch contributed by Tessa Lau
- Sometimes the allocation of a shared memory image fails even though
tests at startup showed that they're supported (a common problem on
Solaris due to a default configuration which only allows relatively
small shared memory images). This case is handled more gracefully
now.
- setup.py now also looks in Setup.local (in addition to Setup) for the
tkinter configuration. Pointed out by Daisuke Yabuki.
- In paxtkinter, initialize the Tcl interpreter properly. The old
incorrect way was causing problems with a japanese
internationalization patch. Pointed out by Daisuke Yabuki.
- The rectangle object used to print a lot of tracebacks in edit mode
when the user didn't select a handle. Fixed now.
- The information about the currently selected object in the status-bar
wasn't always updated correctly
Internal Changes:
- The stream-filter module includes ASCII85 encode and decode filters
and some bug-fixes.
- The missing import of the plugins module that prevented Sketch from
loading any vector files, including it's native sk-format, is fixed.
- Correction: The changes in the PIL import code in Sketch 0.6.6 do not
make it work with the PIL packages in SuSE Linux 6.2 and 6.3 out of
the box. Those packages are broken and have to be fixed as described
in INSTALL. The same applies to SuSE 6.4.
New or Changed Features:
French translations contributed by Yves Ceccone and Frédéric
Toussaint.
Updated Spanish translations provided by Esteban Manchado Velázquez.
A few new scripts in the Scripts package: average_points,
create_star_outline, inspect_beziers and create_spiral, contributed
by Tamito KAJIYAMA and spread which defines eight scripts to
distribute the selected objects in various ways, contributed by
Michael Loßin
A new command line option, --run-script <scriptfile>, which executes
the file scriptfile on startup after creating the widgets and either
creating an empty new document or loading a document from a file if a
document filename was supplied on the command line.
The script is executed by execfile() with a globals dictionary
containg a 'context' object just like a normal user script.
If a directory is given on the command line instead of a normal file,
Sketch now opens a file open dialog with that directory (suggested by
François Pinard).
A simple slideshow tool, skshow.py. It's installed together with
sketch.py and sk2ps.py. Run it with the --help option to get more
information on how it works. (originally written as an example for
Christof Ecker)
A new crosshairs style cursor, activated by the menu item
View->Crosshairs. If snapping is active, this cursor is warped to a
snap point if the mouse pointer is near one. (suggested by Rainer
Menzner)
The "Zoom Area" tool can also zoom out now by holding the control key
when releasing the mouse button.
New sections in the Developer's Guide about the connector module and
plugin objects.
A new file Misc/magic with an entry for your magic file, as used by
e.g. file(1). Contributed by Michael Loßin.
An FAQ list.
Bug Fixes:
- Updated the AI import filter a bit to deal with Illustrator 8 files.
(Reported by Fritz Heinrichmeyer).
- The Python Imaging Library is used as a package now. Some people want
to install PIL without the PIL.pth file because of name conflicts
with e.g. Zope. This change also makes Sketch work with the pil rpm
of SuSE Linux 6.2-6.3 out of the box.
- The PostScript generator now treats dashes for lines with widths less
than 1 point as the screen drawing routines. I.e. the lengths of the
dash are computed as if the line width was 1 pt.
- Fix the bug in the PostScript generator that produced incorrect
dashes if two lines with same logical dash-pattern but different line
widths were printed one immediately after the other.
- The View->Outline checkbox menu item now reflects the outline status
correctly
- The eval() security hole in the xfig import filter should be plugged
now.
- The "Update From..." button in the plugin object dialogs works now.
- Fixed a bug that caused objects to share fill patterns when assigning
fill properties to several objects at once. E.g. assigning an axial
gradient to two objects and then transforming one of the objects
would modify the gradient of he other object as well.
- Changed a few places where pointers were cast to ints to support
64bit systems properly (reported by Philipp Reisner).
- Fixed the AFM file parser to accept floating point numbers in various
places as the specification says (reported by Rainer Menzner).
- Fixed a bug where the selection info wasn't updated properly. To
reproduce it in 0.6.5: Select the text tool and click somewhere but
don't type anything. Select the text tool again and click somewhere
else, type something, go to selection mode and press DEL. (reported
by Darren Stalder)
- In mainwindow.py, bzip2 isn't called with the -c flag anymore. that
flag isn't necessary here anyway and some bzip2 versions didn't like
it. (reported by Michael Lossin)
- Cutting/copying and pasting path text objects works now. (reported by
Michael Lossin)
Internal Changes:
- In preparation for Python 1.6, checked for and corrected list appends
with more than one argument.
- Initialization is a bit simpler now. Programs that use Sketch as a
library no only require that the Sketch module is in sys.path and
they have to call Sketch.init_lib(). If they want to use the Tk part
of Sketch as well they have to call Sketch.init_ui() which implicitly
also calls init_lib().
- The default properties for Text-objects created by scripts have
changed. They used to have an empty fill pattern, but a black
outline, which doesn't make sense and really was a bug. Now they have
a black uniform fill and no outline.
- The po files are now created with xpot from po-utils. See po/README.
- The wrapper object for safe scripts doesn't complain about __cmp__
and __coerce__ anymore.
- "Snap To Objects" now also works for raster images and eps files.
They can even be used as guides by moving them onto the guide layer.
They behave just like rectangles in this regard.
- bzip2 compressed sk-files (and also ai and svg) can now be
uncompressed transparently if bzip2 is installed. The same
functionality for gzip was already present in 0.5.0.
- A new example script, Script/save_selection.py that saves the current
selection as an eps file.
- More accurate papersizes for the A<n> formats, contributed by Martin
Glaser. The sizes used to be derived from first principles, so to
speak, everytime on start up, but that does not yield exactly the
same values that the standard defines. The old code is still there in
Sketch/Graphics/papersize.py, if you're curious.
- The way paper formats are stored in the sk-files has changed
slightly. Only formats of a fixed list are stored by name now, for
all others only the dimensions are saved. This was done to prevent
problems if users add new formats in their userhooks.py.
- The 'layer up' button in the layer dialog works now.
- The DSC parser, used for e.g. extracting the bounding box of EPS
files, can cope with non-Unix line separator conventions.
- Fixed a bug in the code that draws axial (linear) gradients on the
screen. In some cases the direction of diagonal the gradients was
incorrect, most noticable for very large border values. Postscript
output was not affected.
- Removed .ps and .eps from the list of possible file name extensions.
They misled users to assume that File->Open was the way to load EPS
files.
- The --imaging-include option of setup.py should work properly with
relative filenames now.
- Removed the GPL copyright notices from Pax/clipmask.[ch] because they
shouldn't be there. Those files have the same license as the rest of
the code in Pax.
- Fixed a typo in Resources/Fontmetrics/gs.sfd. The font in line 2 is
URWGothicL-Book
- "Zoom Out" was translated incorrectly in de.po
- Added -lm to _sketchmodule in Sketch/Modules/Setup.config and
Sketch/Modules/Setup.in
Fixed a bug in Sketch's postscript procset
(Resources/Misc/sketch-proc.ps) that caused problems when a
sketch-eps that contains eps's that use showpage was embedded in a ps
file which was then run through psnup (got that? :) ) To reproduce
it, create an eps with dvips, embed it in a Sketch drawing, export as
eps, embed it in a tex-document, create a psfile from that with dvips
and 'psnup -2' it. The resulting psfile executes a superfluous
showpage at the end of the embedded tex-eps.
Blending of two path-text objects works now. In previous versions
attempting this would leave the document in an inconsistent state and
the user couldn't undo the operation or even save properly.
Fixed bugs in the type1 font file parser and the underlying
postscript tokenizer. Some type 1 font files caused segfaults in the
tokenizer (e.g. the UTB_____.pfa font that comes with X11).
Updated Spanish translation provided by Esteban Manchado Velázquez.
More color icons provided by Panos Katsaloulis. Again, if you want to
use them, put the line
preferences.color_icons = 1
into ~/.sketch/preferences.py .
Misc/export_raster.py: additional boolean parameter for the
export_raster and export_alpha functions, use_bbox. If use_bbox is
true only render the contents of the bounding rectangle, otherwise
render the entire page.
Added Misc/Symbolgroup/, a plugin-object that can be used to build a
simple symbol library. See Misc/Symbolgroup/README for more details.
setup.py: Give a more meaningful error message if _tkinter is not
configured in Python's Setup
The mkfontdb.py script can also generate ghostscript Fontmap files
now thanks to Jeffrey Boser. The script is now at version 1.3.
The default properties for new objects can be set now by pressing the
apply button in the fill-, line- and font-dialogs when no object is
selected. Sketch will ask whether graphics objects or text objects
should be affected. You can select both, of course.
If you don't like this behavior, you can switch it off by putting the
following line into your ~/.sketch/preferences.py:
preferences.set_default_properties = 0
A new button in the lower left corner of the main window (with an X
bitmap) that is equivalent to Style/No Fill when pressed with the
left mouse button and equivalent to Style/No Line when pressed with
the middle mouse button.
When editing bezier curves, the ctrl-key now restricts the movement
of nodes to horizontal and vertical and when dragging a control
point, the angle of the tangent is restricted to multiples of 15
degrees.
When drawing bezier curves the ctrl-key now restricts the slope of
the tangent to multiples of 15 degrees.
When drawing poly-lines, the ctrl-key now restricts the slopes of the
lines to multiples of 15 degrees.
Selecting a blend group works a little different now, so that
clicking on the interpolation selects the entire blend group. In
earlier versions only the interpolation object was selected in that
case. Clicking on a control object of a blend group still selects
just the control object. (The blend group object contains both the
control objects and the interpolation objects).
The reason for this change is that it makes it easier to select two
blend groups to create an interpolation betweem them.
The change also affects the blend dialog if the selected blend group
has more than one control object. To change the number of steps in an
interpolation you have to select the interpolation object by holding
Ctrl and Shift when clicking on the object, just like you would with
a normal group to select a contained object.
A small change in the way Sketch determines which handle to drag when
editing a bezier curve: When a node and one of its control points
coincide, it was impossible to drag the control point. Now Sketch
selects the control point in that case. Coinciding nodes and control
points can occur when gridding is on and they're often found
Illustrator files.
There's a new directory Misc/ that contains some scripts that I use
occasionally. These scripts are somewhat unpolished and will probably
need some tweaking to fit your needs.
I also consider them 'half-supported', that is I test and fix them
only as far as I actually use them.
There are two scripts at the moment. One lets you export raster
images via ghostscript, and the other reads paths exported by Gimp.
A small reorganization of the sfd files in Resources/Fontmetrics. The
Charter and Utopia fonts are now listed in a separate file gsopt.sfd.
The rationale behind this is that std.sfd contains the standard
postscript files--in as far as that can be defined--like Times-Roman
or Courier. gs.sfd lists the URW fonts that make up the standard
ghostscript fonts, which are basically clones of the standard
postscript fonts. gsopt.sfd lists optional ghostscript fonts.
The afm-file parser is more tolerant now. It had problems with empty
lines.
fixed a bug that made the context command 'Select Mask' fail.
fixed a bug that caused the first few characters of a path-text to be
misplaced if the start position coincided with a node (but not the
start-node) of the curve-object.
Fixed a small bug in the cmxfilter that flipped the orientation of
conical gradients.
The command line option --version works again.
There a new option for ~/.sketch/preferences.py, fallback_font. This
is the name of the font to use when a font or the corresponding
metrics can't be found. The default is 'Times-Roman'
Added a note about the slightly broken pyimglib package in SuSE Linux
6.2 to the INSTALL file.
Fixed a few typos in the German translation.
Updated Spanish translation provided by Esteban Manchado Velázquez.
Added a new section about export filters to the developer's guide.
setup.py parsed macro definitions in Setup incorrectly. This is fixed
now. I also documented the --python-setup option.
setup.py's build command accepts arguments of the form <KEY>=<VALUE>
now. These are passed through to make to let you override variables
like CC or OPT. See the generated Makefiles or Makefile.pre.in for
more details.
The mkfontdb.py script knows a few more foundries and has a new
commandline option '-f' to specify the foundry used when it can't be
determined from the afm-file. I also increased its version to 1.2
Import/Export filters for the proposed Web-standard for vector
graphics, SVG. For the import filter, but not for the export filter,
you need the Python xml-package; see the INSTALL file for details on
where to get it.
Both filters are very primitive at the moment and only handle some
simple shapes and fills/strokes. In particular, there's no support
for Text or gradient fills among others yet.
Cleaned up the documentation to have less practically empty
HTML-files and extended the section on font-configuration. It
contains information about Sketch's font-path and on how to add
fonts.
Converted the images in the docs to the PNG format.
When editing text objects, you can position the caret with the mouse
now.
The create_star script is now interactive. It pops up a modal dialog
asking for the parameters of the star as an example how to use
dialogs is user scripts.
The sample scripts select_same_line_color.py and
select_same_fill_color.py are substantially faster now if there's a
large number of objects to be selected.
The help message in setup.py is more compact now, thanks to Gregor
Hoffleit.
Fixed a bug in the XFig filter that lead to the rejection of files
with "Flush Left" justification (as generated by pstoedit, for
example).
The AI import filter handles text in ai-files generated by ps2ai
better now.
The AI filter understands font encodings now.
Fixed Sketch/Modules/skrect.c and Sketch/Modules/skcolor.c to avoid
Problems with GCC 2.95.
Fixed Sketch's font code to not require the EncodingScheme key in
afm-files. This key is optional and is not present in afm-files
generated by ttf2pfa, for instance.
Spanish messages contributed by Esteban Manchado Velázquez.
Color Icons contributed by Panos Katsaloulis. They're not used by
default because the set of icons is not complete yet. If you like,
you can switch them on by putting the line
preferences.color_icons = 1
into ~/.sketch/preferences.py .
The cursor now changes when the mouse is over a selected object or a
guide line. You can switch this feature off by adding the line
preferences.active_cursor = 0
to ~/.sketch/preferences.py .
The AI export filter handles axial and radial gradients now.
The AI import filter understands gradients better now. In particular,
it can handle AI files with gradients created by Corel Draw correctly
now (I hope).
The AI import filter knows about guides and places all guides in an
AI-file on the guide layer. In former versions the guide paths were
mixed with normal paths resulting in incorrect paths.
The CMX import filter also loads radial and conical gradients now (in
addition to axial gradients).
Fixed the bug that caused multiple handles at the same position to
become invisible in some situations.
Two new sample scripts, create_star and create_text.
I added a section to the user scripts documentation, covering 'common
tasks' like the creation of objects, manipulating objects and
manipulating the current selection.
The postscript file generated for a landscape drawing now has a
%%Orientation: Landscape comment, if the 'rotate ccw' button is
checked.
Updated paxtkinter to work with Tcl/Tk 8.1.
Support for non-english messages via gettext. Run setup.py with the
'--with-nls' option to activate this. So far there's only support for
German.
If you want to add support for a new language, have a look at
po/README.
The symbolic links created by `setup.py install' use relative
filenames now.
The Developer's Guide has some more documentation on how to implement
import filters
The Illustrator export filter handles embedded raster images and
some text.
The Illustrator import filter handles some embedded raster image formats.
Fixed a bug when placing objects (e.g. raster images) while in
creation mode.
Fixed a bug in the PostScript generator, that could lead to wrong
fill/stroke colors.
When drawing poly-lines and you start with just a mouse-click and no
drag, only only the starting point is defined. If you drag, the first
two points are defined.
The old behavior was to always create the first two points which
resulted in zero-length first segment if the mouse wasn't dragged.
The reset button in the align dialog has been removed. To switch off
alignment in one direction, click on the sunken button.
The Type1 font parser is smarter. The old parser had problems with
fonts using Mac line separators.
Improved import filters:
- AI import filter has some text support now for point text and path
text and it handles transformed gradients slightly better
- The WMF import filter is much more stable and complete now. The
version distributed with 0.5.4 was very incomplete and buggy.
- The CMX import filter is much more stable and complete now. The
version distributed with 0.5.4 was very incomplete. The new version
suports 32 bit files.
The rulers now obey the default unit settings.
The vertical rulers can display the text either horizontally,
vertically (similar to GTK) or rotated (my favourite). The default is
horizontally.
You configure this by appending
preferences.ruler_text_type = TYPE
to ~/.sketch/preferences.py (edit this file while Sketch is not
running). TYPE can be either 'horizontal', 'vertical' or 'rotated'
(including the quotes!).
The font for the rulers is determined by preferences.ruler_font for
normal horizontal characters and preferences.ruler_font_rotated for
rotated text. The default values are:
preferences.ruler_font = '--helvetica-medium-r---10------iso8859-1'
preferences.ruler_font_rotated = '--helvetica-medium-r---[0 10 ~10 0]------iso8859-1'
If you use rotated text, ruler_font_rotated must be compatible with
ruler_font, i.e. one must be a rotated version of the other.
The '[0 10 ~10 0]' is a transformation matrix which rotates the
characters by 90 degrees counter clockwise. This syntax was introduced
in X11R6, so to use this your X server must be compatible with that
X11 release.
Depending on the quality of your font renderer and your
X-configuration, the rotated fonts might look quite ugly, so you might
have to test a number of different fonts to get good results. On my
system, these settings are quite acceptable:
preferences.ruler_font = '--lucida-medium-r---11------iso8859-1'
preferences.ruler_font_rotated = '--lucida-medium-r---[0 11 ~11 0]------iso8859-1'
preferences.ruler_text_type = 'rotated'
The align dialog allows you to align the selected objects relative to
the lowermost one. It would probably be better to use the first
selected object instead, but that's not possible with Sketch at the
moment, due to its implementation.
Fixed a byte order bug that resulted in wrong colors for images on a
big-endian X-server.
Fixed some mask-group bugs: The Effects| Create Maskgroup entry is now
grayed out correctly again and ungrouping the mask group places the
mask on top of the objects now. Both bugs were introduced when I
changed the behaviour of Create Maskgroup for Sketch 0.5.3.
The AddFunction function of the script-registry has a new keyword
parameter 'args'. See the user's guide for more details.
If you delete all characters of a text object (with backspace or DEL)
and then select a different object or change into another mode, the
now empty text-object is removed from the drawing.
A user scripting facility. The user's guide has a new section about
user scripts to get you started. The mechanisms to hook user scripts
into Sketch are somewhat experimental, though and may change.
A new import filter for Corel's CMX format. The filter is incomplete
and only handles 16bit CMX files, because I only have sample files for
that CMX-version.
A new import filter for Windows Metafiles (WMF), again incomplete.
The tooltips are active by default now.
Setting the unit of the position indicator in the status bar (via its
context menu) also sets the default unit used else where in Sketch.
The dimensions of rectangles and ellipses are now given in the current
default unit.
When creating ellipses or rectangles the current dimensions are
displayed in the statusbar.
Similarly, when transforming an object, information about the current
transformation is displayed in the statusbar, such as scaling factors
and rotation angles.
The ellipse drawing mode has two new variations:
- When holding down Shift, the ellipse is centered at the start point.
- When holding down Shift+Ctrl, the ellipse is a circle centered at
the start point with the current pointer position on its periphery.
Similarly, holding down Shift while drawing a rectangle uses the
start point as the center of the rectangle.
Path-text has been improved, introducing a slight incompatibility:
Characters that don't fit on the path are simply not drawn, but they
are still there. In previous versions, these characters were all
drawn at the same position at the end of the path.
It is possible that path-text objects will look slightly different
in future versions due to improvements in the algorithms used. In
particular, multiple subpaths in a curve may be supported.
You can drag the start position of the text along the path by
dragging the small rectangular handle in edit mode. This is probably
not the best interface. Suggestions welcome.
In previous versions, the curve-like objects were automatically
converted to bezier objetcs before the path-text group was created.
Now, these objects remain as they are, i.e. rectangles will remain
rectangles and ellipses remain ellipses.
.sk files with rectangles or ellipses as the curves in path-text
objects will not be read correctly by earlier versions.
You can now insert nodes and cut curves at specific positions:
- Select a curve object in edit mode
- click on the outline where you want to insert the node or cut the
curve. A small filled circle appears.
- Select "Curve | Insert Nodes" or "Curve | Cut Curve" respectively.
This new method also affects Line->Curve and Curve->Line. They convert
the segment marked with the filled curve.
The old behaviour is still there.
The curve-object in a path-text object and the control-objects in a
blend-group can now be converted to a bezier object in place.
Added a few new key-strokes.
The .sk file version number was updated to "1 2" because of the
changes for path-text objects.
Bug fixes:
- In the font dialog, the sizes list is updated together with the entry
widget.
- "Update From..." in the font dialog works now.
- Images loaded from the same image file share the raster data again.
Renamed the script mkfontdir.py to mkfontdb.py. This new version
creates fonts.scale files by default now and is also distributed
separately from Sketch. It's now distributed under the GPL and not the
LGPL.
Sketch now has an experimental configure, build and install script.
This script is modelled after the proposed standard for Python
packages and applications currently discussed in the Python distutils
SIG, although it's not much more than a wrapper around the old
makefiles.
For details on its use, see the INSTALL file.
Python 1.5.2 compatibility:
I've run Sketch with the 1.5.2b1 release for more than two weeks now,
and almost everything works as before, with these exceptions:
The stricter syntax check for functions with default arguments
produced syntax errors in two places. These have been corrected.
The new sorting order for objects of different types revealed an error
in the example file line.sk. This file is fixed in the new release.
The skloader should really make more checks during import.
The Drawing modes are now permanent by default. They were mentioned as
permanent in the NEWS for Sketch 0.5.2, but this was not really true.
Whether they are permanent or temporary is configurable, and the
default was `temporary'. To make them temporary again append the line
preferences.creation_is_temporary = 1
to the file ~/.sketch/preferences.py. This file (and the directory)
will be created automatically by Sketch after it has run. Editing the
preferences file works only if Sketch is not running, because Sketch
always writes it on exit.
This option will be moved into the Options-dialog someday.
If you feel adventurous, you can try the tooltips feature, by adding
the line
preferences.activate_tooltips = 1
to ~/.sketch/preferences.py. I hacked the code recently to make it
work again, but it probably still has some bugs.
There's an Illustrator export filter. To save a file in this format,
select File|Save As... and supply a filename ending in '.ai'. Due to
limitations in the standard Tk file dialog, selecting the Illustrator
format in the file type option menu is not sufficient or even
necessary.
The current filter is incomplete.
Rectangles may have rounded corners now. To create rounded corners,
select a rectangle in edit mode and drag one of the corners.
The .sk file version number was updated because of the rounded corner
rectangles.
Bezier curves (including poly lines) can now be used as guides. Move
them to the guide layer and activate Arrange|Snap to guides. This
already worked for ellipses and rectangles.
When drawing polylines, the first click-drag-release creates the first
line and not just the staring point.
When creating a mask group, the topmost object becomes the mask. This
is more intuitive, I think, than the lower most used before.
To create guide lines, you can now simply drag from the rulers into
the canvas just as in Gimp or CorelDraw.
To delete a guide line just drag it and drop it somewhere outside of
the canvas.
A new command File|Insert Document lets you load a vector drawing in
any of the supported formats and insert it into the current document
as a group. You can then ungroup and edit it.
The default unit for lengths is now configurable via the options menu.
This does not affect the rulers yet.
The current position in the status bar shows the snapped position now
if snapping is active.
Blending of two closed curves with differing numbers of segments
produced ill-formed bezier curves. This is now fixed, but results in
sligthly different blend groups as before in this special case.
Converting a text object to curves results in a group with separate
bezier objects for the characters (instead of a single multi-path bezier
object).
Two new window commands. Windows|Hide Dialogs hides (withdraws) all
dialogs currently visible and Windows|Show Dialogs shows them again.
Added a few new commands to the context menu for fill and line
properties.
A new command to select all nodes of a bezier object. Available from
the Curve menu and from the context menu.
Snapping of guide lines works properly now.
If you want 'live' scrolling in the drawing area, where the display is
updated while the scrollbars are dragged, add this to your Xresources:
sketch*canvas_frame.Scrollbar.jump: 0
The current release is not optimized for this, though, so it might be
too slow.
various bug fixes
- Sketch contains a work-around for a bug in the Python 1.5.1 module
import code that affected Sketch's import filters.
- An improved AI import filter with a faster and better parser. It is
still not complete. See the comments in Plugins/Filters/ailoader.py
for more details about the implemented features and limitations.
- A new (and experimental) print dialog is available via 'File/Print...'
- The script sk2ps.py works.
- The return value of XClearArea is ignored now, because XClearArea is
declared void on SGIs.
- In the layer dialog, the context menu has been reorganized a bit and
contains some layer specific entries ('Grid...' for the grid layer
(the same as Arrange/Grid...) and 'Guide Lines...' for the guide layer
(the same as Arrange/Guide Lines...))
- In the layer dialog , some of the buttons are grayed out if the
corresponding layer attribute cannot be changed (e.g. the grid layer
is always locked).
- The test for X shared memory images should work properly now.
- fixed the bug where images rotated by exactly 90 degrees were not
drawn.
- the drawing modes (create curve, create rectangle, etc) are now
permanent. You have to switch to edit-mode or selection mode
explicitly.
- Switching between modes is now easier. The buttons for edit/select
mode and for drawing are now `radiobuttons' and provide both a means
to switch from one mode to another and an indicator for the current
mode.
- the button for snap to grid now changes its relief from flat to sunken
if snapping is active (instead of changing its bitmap).
- Added a label to the statusbar that indicates whether the drawing was
modified since the last save or since it was loaded/created.
- _sketchmodule.so doesn't use drem anymore. (drem is not available on
Solaris)
- The color allocation strategy for PseudoColor displays is
configurable. The option is not available from the dialog yet.
- The bezier related commands of the arrange menu are now in the curve
menu.
- Sketch now asks for confirmation (again) when the window is closed via
the window manager. File/Exit did work correctly.
- sketch will print more diagnostic messages by default.
- the code in Sketch/Modules has been rearranged to increase
portability. Interdependencies between compiled modules are now
handled in a portable way.
- The test for X shared memory images should work properly now.
Compiling the paxmodule without shared memory support is now possible.
- sketch used to hang in an infinite loop if a font was not available on
the X-server and a MessageBox was popped up with an error message.
- Ctrl + cursor keys scrolls the viewport
- the drag&drop bug, when dragging a color from the palette to the
pattern widget in the fill panel, has been fixed.
- fixed Doc/fonts.scale to agree with Doc/fonts.alias
|