2000-03-25 Bernhard Herzog * README: Added section about CVS and some other smaller changes * Sketch/VERSION: increased to 0.7.6 2000-03-24 Bernhard Herzog * Sketch/UI/tree.py (SketchTree.__init__): (SketchTree.transaction_start): (SketchTree.transaction_end): Subscribe the new methods transaction_start and transaction_end to the context's TRANSACTION_START and TRANSACTION_END channels respectively and in the methods freeze and thaw the tree view. * Sketch/Editor/context.py (document_channels): Added the TRANSACTION_START and TRANSACTION_END channels * Sketch/Graphics/document.py (EditDocument.begin_transaction): Issue a TRANSACTION_START message for the first call to begin_transaction (EditDocument.end_transaction): Issue a TRANSACTION_END message for the last call to end_transaction regardless of whether it's a normal end of transaction or an aborted transaction * Sketch/Base/const.py (TRANSACTION_END): (TRANSACTION_START): Two new message channels for the document objects 2000-03-23 Bernhard Herzog * Doc/arrows: * Doc/styles: Fixed a few typos 2000-03-22 Bernhard Herzog * Sketch/UI/__init__.py: Set default color_cube to (5, 5, 5, 5) which seems to work quite well on my system. * Sketch/UI/gtkdevice.py (InitFromWidget): Use the color_cube preference after all 2000-03-21 Bernhard Herzog * Sketch/UI/gtkdevice.py (InitFromWidget): Hardwire a 5x5x5 color cube. That seems to produce good looking results on my machine. The proper solution would require to information not provided by gdkrgb. (fill_colormap): Add shades_r, shades_g, shades_b parameters and don't take them from config. * Sketch/UI/toolbox.py (SketchToolbox.build_window): * Sketch/UI/skapp.py (SketchApplication.__init__): Move the initialization of structures that depend on a valid window from SketchApplication.__init__ to SketchToolbox.build_window, and add push_rgb_visual and pop_visual calls to make sure, the colormap initialization uses the gdkrgb colormap. * Sketch/UI/gtkdevice.py (fill_colormap): don't allocate a private colormap for now, because we want to use the gdkrgb colormap * Sketch/Graphics/properties.py (Style.SetProperty): Copy fill_pattern and line_pattern properties to make sure they're not shared between styles * Sketch/Base/configutil.py (Preferences._save): Remove the superfluous space char at the end of the first line of the output file 2000-03-18 Bernhard Herzog * Sketch/UI/gtkdevice.py (fill_colormap): Take the reduce_color_flashing attribute from Sketch.UI.preferences * Sketch/Modules/_skgtkmodule.c (skgtk_colormap_alloc_color): New function that uses gdk_colormap_alloc_color to allocate colors because pygtk still uses the deprecated gdk_color_alloc. (skgtk_functions): add skgtk_colormap_alloc_color to skgtk_functions as "allocate_color". Use METH_VARARGS in skgtk_functions instead of the literal 1 (skgtk_copy_colormap): (skgtk_widget_visual_type): (skgtk_window_set_colormap): (skgtk_set_foreground_and_fill): (skgtk_set_clip_mask): (get_pixel): Use the PyG[dt]k*_Get macros instead of accessing the obj filed directly 2000-03-17 Bernhard Herzog * Sketch/Modules/skvisual.c (skvisual_pseudocolor_get_pixel): Added a \n at the end of the error message * Sketch/UI/gtkdevice.py (fill_colormap): (InitFromWidget): Take the color_cube attribute from Sketch.UI.preferences 2000-03-16 Bernhard Herzog * Sketch/Modules/_libartmodule.c (SKSVP_FromSKCurveStroke): * Sketch/UI/gtkdevice.py (SimpleGC.SetLineAttributes): * Sketch/Graphics/psdevice.py (PostScriptDevice.SetLineAttributes): Treat dashes for lines thinner than 1pt as if the line were 1pt thick. None of the devices actually did that and all handled very thin line differently. * Sketch/Graphics/psdevice.py (PostScriptDevice.SetLineAttributes): Introduced the width_changed local variable to make sure the dash pattern is written again if either the logical dash pattern or the line width changes. * Sketch/Graphics/font.py (_number): New function for the 'number' data type of Adobe's AFM-spec. (converters): Use _number to parse 'Ascender' and 'Descender' (_bb): Accept floating point numbers as well, but round them to ints (read_char_metrics): Accept floating point numbers as well for the values of the 'WX', and 'B' keys, but round them to ints. 2000-03-14 Bernhard Herzog * Sketch/Editor/document.py (InteractiveDocument.SelectObject): Dont't select empty layers. This is a bit of a hack. There should be a better solution. * Sketch/Graphics/layer.py (Layer.SelectionInfo): Add a default value of None to the child arg and handle the case where SelectionInfo is called without it to make it possible to select the layer object itself. * Sketch/UI/tree.py (SketchTree.build_tree): Make the special layers unselectable. 2000-03-11 Bernhard Herzog * Sketch/UI/libartdevice.py (LibartDevice.DrawObjects): Added some kludge with self.line to make text visible in outline mode and fix the problem that in outline mode, objects above a text object wouldn't be rendered at all * Sketch/Graphics/text.py (InternalPathText.__init__): Use FactoryTextStyle() instead of getting the font from config. 2000-03-09 Bernhard Herzog * Sketch/UI/skapp.py (SketchApplication.TreeView): Use TreeViewPanel instead of SketchTree (printargs): removed this silly function * Sketch/UI/tree.py: Split the SketchTree class in two new classes, SketchTree(GtkCTree) just for the tree view and TreeViewPanel for the whole dialog widget which uses SketchTree instead of CTree * Sketch/Base/connector.py (Connector.Issue): added a \n at the end of the warning message * Sketch/UI/tree.py: Further extensive changes, most to allow the user to select objects with both the tree view and the canvas. 2000-03-08 Bernhard Herzog * Sketch/UI/libartdevice.py (LibartDevice.get_pattern_image): Check for an empty region, i.e. l == r or t == b, to avoid creating empty images which may cause segfaults * Sketch/UI/gtkdevice.py (PatternDevice.get_pattern_image): Check for an empty region, i.e. l == r or t == b, to avoid creating empty images which may cause segfaults 2000-03-07 Bernhard Herzog * Sketch/UI/tree.py: Almost complete rewrite of the tree panel to make updates more efficient using the new OBJECT_CHANGED messages * Sketch/Editor/document.py: import Group from Sketch * Sketch/Graphics/layer.py (Layer.Info): Override base class method to produce meaningful information for the tree widget. * Sketch/UI/properties.py (PropertyPanel.__init__): * Sketch/UI/skpanel.py (SketchPanel.close): Don't subscribe to/unsubscribe from context's EDITED channel * Sketch/UI/skpanel.py (SketchPanel.__init__): Remove the subscription to EDITED. * Sketch/UI/tree.py (SketchTree.object_changed): (SketchTree.__init__): subscribe the new method object_changed to the context's OBJECT_CHANGED signal in __init__ * Sketch/Graphics/text.py (CommonText.SetText): (SimpleText.SetAlignment): (InternalPathText.PathChanged): (InternalPathText.SetStartPos): (InternalPathText.set_transformation): added SHAPE parameter to _changed call * Sketch/Graphics/rectangle.py (Rectangle.SetTrafoAndRadii): added SHAPE parameter to _changed call * Sketch/Graphics/plugobj.py (UnknownPlugin._changed): add what and detail args and pass them on to the base class * Sketch/Graphics/ellipse.py (Ellipse.SetAngles): (Ellipse.SetArcType): added SHAPE parameter to _changed call * Sketch/Graphics/compound.py (Compound.set_objects): (EditableCompound.Insert): (EditableCompound.do_remove_child): (EditableCompound.RemoveSlice): (EditableCompound.ReplaceChild): (EditableCompound.permute_objects): added CHILDREN parameter to _changed call * Sketch/Graphics/blendgroup.py (BlendInterpolation.set_objects): (BlendGroup.insert): (BlendGroup.remove): added CHILDREN parameter to _changed call * Sketch/Graphics/bezier.py (PolyBezier.do_undo): (PolyBezier.Translate): (PolyBezier.Transform): (PolyBezier.set_paths): added SHAPE parameter to _changed call * Sketch/Graphics/base.py (Primitive.properties_changed): (Primitive.ObjectChanged): added PROPERTIES parameter to _changed call (RectangularObject.set_transformation): added SHAPE parameter to _changed call * Sketch/Editor/editbezier.py (PolyBezierEditor.ButtonUp): (PolyBezierEditor.CloseNodes): added SHAPE parameter to _changed call * Sketch/Editor/context.py (Context.document_channels): added OBJECT_CHANGED * Sketch/Graphics/document.py (EditDocument.object_changed): new args what and detail (the same meaning as in the new GraphicsObject._changed). Queue a message (OBJECT_CHANGED, object, what, detail) * Sketch/Base/const.py (OBJECT_CHANGED): new channel (SHAPE): (PROPERTIES): (CHILDREN): "what" parameters for OBJECT_CHANGED messages * Sketch/Graphics/base.py (GraphicsObject._changed): Two new args: what to hold a string describing what has changed and a tuple called detail for details. what and details are passed through to the document's object_changed method. * Sketch/Graphics/document.py (EditDocument.AddClearRect): Removed this method completely. (EditDocument.begin_transaction): get rid of the no_selection kwarg as well. It's also not used anywhere. (EditDocument.end_transaction): Delete the branch for self.transaction_sel_ignore being true. it's always false now that begin_transaction's no_selection has been removed (EditDocument.reset_transaction): Remove resetting transaction_sel_ignore (EditDocument.Insert): Changed undo_text's default value to None and replace it with an i18n'ed string at run time. * Sketch/Graphics/compound.py (Compound.set_objects): removed the commented out AddClearRect code completely * Sketch/Graphics/document.py (EditDocument.begin_transaction): (EditDocument.reset_transaction): removed the last bits referring to the old redraw region scheme (i.e. self.transaction_clear) (EditDocument.begin_transaction): removed the clear_selection_rect kw-arg. updated all callers. 2000-03-06 Bernhard Herzog * Sketch/Graphics/document.py (EditDocument.__init__): removed the connector instance variable (EditDocument.Destroy): removed the self.connector stuff * Sketch/Graphics/base.py (Primitive.LineWidth): Removed because it's not used anywhere (HierarchyNode.issue_changed): removed the self.Issue(CHANGED, self) (HierarchyNode.Subscribe): (HierarchyNode.Unsubscribe): (HierarchyNode.Issue): Removed as they're not used and object change notifications will be sent through the document object. Subscribe/Unsubscribe are used by the clone object, but that's not working at the moment anyway. (HierarchyNode.__del__): removed as well as all it did was related to self being a Publisher 2000-03-05 Bernhard Herzog * Sketch/Graphics/document.py (EditDocument.AddClearRect): (EditDocument.add_clear_rect): add_clear_rect is now the actual implementation of AddClearRect which now prints a message that AddClearRect is deprecated and calls add_clear_rect. add_clear_rect should be considered protected now. * Sketch/Graphics/text.py (InternalPathText.PathChanged): call self._changed() instead of self.del_lazy_attrs() because _changed also takes care of redrawing (PathText.ChildChanged): Don't call self.document.AddClearRect(). The changes in InternalPathText.PathChanged should take care of redrawing the correct region 2000-03-04 Bernhard Herzog * sketch.py: * Sketch/__init__.py: Move the sys.path manipulation to put the Filter (resp. Lib) directories into the path from sketch.py to Sketch/__init__.py * Sketch/Graphics/maskgroup.py: removed the commented out commands stuff (a holdover from Sketch 0.6) (MaskGroup.ChildChanged): Removed this method. It's unnecessary now to override the base class version. The AddClearRect part is taken care of automatically * Sketch/Graphics/document.py (EditDocument.end_transaction): Remove the commented out code that implemented the old update region stuff that relied on self.transaction_clear. (EditDocument.begin_transaction): (EditDocument.reset_transaction): commented out the transaction_clear code * Sketch/Graphics/compound.py (Compound.set_objects): use self._changed instead of using AddClearRect and del_lazy_attrs directly * Sketch/Graphics/blendgroup.py: don't import SelectAdd as it's unused (BlendInterpolation.set_objects): (BlendGroup.do_remove_child): removed the old AddClearRect code completely. * Sketch/Graphics/base.py (GraphicsObject.Editor): Removed this method as it's unused now. 2000-03-03 Bernhard Herzog * Sketch/Graphics/base.py: don't import UnionRects as it's now unused * Sketch/Graphics/base.py (Primitive.ObjectChanged): removed the old AddClearRect code completely. * Sketch/Base/load.py: don't import config as it's unused * Sketch/UI/skapp.py (SketchApplication.SavePreferences): issue SAVE_PREFERENCES instead of calling each preferemce object's _save() method explicitly * Sketch/Base/configutil.py (save_user_preferences): removed because it's not used anymore. * Sketch/__init__.py: import connector earlier to make sure Subscribe is defined when Base/config.py is imported * Sketch/Base/const.py (SAVE_PREFERENCES): new global message channel. the various save preferences methods should be subscribed to this channel. Just before Sketch exits, a message is issued on this channel so that the prefs are saved. * Sketch/Base/config.py (BasePreferences): removed warn_method. Unneded because of yesterday's changes in warning/error reporting * Sketch/Graphics/compound.py: don't import CHANGED as it's unnecessary * Sketch/UI/skapp.py (SketchApplication.print_warning): (SketchApplication.print_traceback): (SketchApplication.__init__): new methods to subscribe to the new PRINT_WARNING and PRINT_TRACEBACK channesl in __init__ 2000-03-02 Bernhard Herzog * Sketch/Base/main.py: Removed this file because it not needed anymore * Sketch/Base/warn.py: Don't import main module. * Sketch/Base/warn.py (warn): (warn_tb): Change the way errors and warnings are reported. They're always printed to stderr and inf they're not INTERNAL, issued as global messages on the PRINT_WARNING or PRINT_TRACEBACK channels * Sketch/Base/connector.py (Connector.Issue): use stderr directly to report errors. Don't use the warn module * Sketch/Base/const.py: Two new message channels, PRINT_WARNING and PRINT_TRACEBACK * Sketch/UI/__init__.py (_process_args): new function to parse the command line args (main): parse command line arguments * Sketch/Modules/skrender.c (skrender_grid): fix off by one errors * Sketch/UI/libartdevice.py (LibartDevice.DrawDocument): add grid support (LibartDevice.DrawGrid): new method to draw the grid (LibartDevice.DrawGrid): use outline color (LibartDevice.DrawGuideLine): use outline color * Sketch/Modules/skrender.h (skrender_grid): add prototype * Sketch/Modules/skrender.c (skrender_grid): new function to render the grid * Sketch/Modules/_libartmodule.c (convert_image_or_pixbuf): new functin to "convert" PIL images and SKArtPixBufObjects to SKPixbufs (sksvp_render_rgb): (sksvp_render_scaled_image): (sksvp_render_transformed_image): (render_guide_line): use the new function convert_image_or_pixbuf 2000-03-01 Bernhard Herzog * Sketch/UI/libartdevice.py (LibartDevice.draw_image): take the PIL image and the transformation as arguments and not just the GraphicsObject (LibartDevice.DrawObjects): added support for EPS objects * Sketch/Graphics/eps.py (EpsData.__init__): Don't render the preview here since it's not always needed (EpsData.UpdatePreview): New method called by EpsImage to render/update the preview image. (EpsImage.DrawShape): call self.data.UpdatePreview before rendering (EpsImage.Preview): New method. Return the preview image or None if it doesn't exist, which normally means that it can't be rendered for some reason. 2000-02-29 Bernhard Herzog * Sketch/UI/canvas.py (SketchCanvas.set_handles): * Sketch/Graphics/ellipse.py (snap_to_line): (Ellipse.Snap): * Sketch/Graphics/document.py (EditDocument._move_layer_up): (EditDocument._move_layer_down): (EditDocument._remove_layer): * Sketch/Graphics/bezier.py (PolyBezier.Snap): * Sketch/Editor/registry.py (MenuTree.AddItem): * Sketch/Editor/editbezier.py (PolyBezierEditor.SelectPoint): In preparation for Python 1.6, call list append methods with exactly one argument. 2000-02-27 Bernhard Herzog * Sketch/UI/__init__.py (init): new function to initialize the UI subpackage. * Sketch/Graphics/__init__.py (init): new function to initialize the Graphics subpackage. * Sketch/Editor/__init__.py (init): new function to initialize the Editor subpackage. * Sketch/UI/skapp.py (AppContext.__init__): also forward CHANGED messages from Sketch.UI.preferences * Sketch/Editor/context.py (Context.__init__): also forward CHANGED messages from Sketch.Graphics.preferences and Sketch.Editor.preferences * Sketch/UI/canvas.py: * Sketch/Editor/document.py: removed unnecessary imports * Sketch/Graphics/pagelayout.py (PageLayout.__init__): take default_paper_format and default_page_orientation from Sketch.Graphics.preferences * Sketch/Graphics/font.py (read_metric): (GetFont): take fallback_font from Sketch.Graphics.preferences * Sketch/Graphics/layer.py (GridLayer.__init__): take grid_geometry, grid_visible and grid_color from Sketch.Graphics.preferences (GuideLayer.__init__): take guide_color from Sketch.Graphics.preferences * Sketch/Graphics/__init__.py: added preferences * Sketch/UI/gtkdevice.py (InvertingDevice.init_gc): Take editor_line_width from Sketch.UI.preferences * Sketch/Graphics/properties.py (FactoryTextStyle): Take default_font from Sketch.Graphics.preferences * Sketch/Editor/document.py (InteractiveDocument.CreateMaskGroup): always use the topmost object as mask * Sketch/UI/mainwindow.py (SketchMainWindow.set_window_title): take window_title_template from Sketch.UI.preferences * Sketch/UI/viewport.py (Viewport.save_viewport): take viewport_ring_length from Sketch.UI.preferences * Sketch/UI/toolbox.py (SketchToolbox.build_file_menu): (load_mru_file): (mru_text): take mru_files from Sketch.UI.preferences * Sketch/UI/skapp.py (SketchApplication.add_mru_file): take mru_files and mru_files_length from Sketch.UI.preferences (SketchApplication.remove_mru_file): take mru_files from Sketch.UI.preferences * Sketch/UI/canvas.py (SketchCanvas.max_snap_distance): take max_snap_distance from Sketch.UI.preferences (SketchCanvas.set_current_pos): take snap_current_pos from Sketch.UI.preferences * Sketch/UI/gtkdevice.py (GraphicsDevice.draw_text_on_gc): take greek_threshold from Sketch.UI.preferences * Sketch/Editor/document.py (InteractiveDocument.DuplicateSelected): take duplicate_offset from Sketch.Editor.preferences * Sketch/UI/poslabel.py (PositionLabel.SetUnit): (PositionLabel.__init__): * Sketch/UI/converters.py (conv_length): take default unit from Sketch.UI.preferences * Sketch/Editor/__init__.py: Added editor specific config * Sketch/Base/configutil.py (Preferences): new base class for user preferences 2000-02-24 Bernhard Herzog * Sketch/Modules/pstokenize.c (pslex): add support for hex-encoded string literals (read_hex_string): new function to parse hex-encoded string literals * Sketch/UI/view.py (SketchView.IsAntialiasedSupported): New method to determine whether antialiased drawing is supported at all. * Sketch/UI/canvas.py (SketchCanvas.IsUsingLibart): (SketchCanvas.ToggleUseLibart): * Sketch/UI/view.py (SketchView.ToggleAntialiased): (SketchView.IsAntialiased): Moved to the canvas like the rest of the libart specific methods and renamed to use the more generic "Antialiased" instead of "Libart" * Sketch/UI/view.py (SketchView.redraw_libart): (SketchView.set_gc_transforms): (SketchView.init_gcs): * Sketch/UI/canvas.py (SketchCanvas.redraw_with_libart): (SketchCanvas.ResizedMethod): (SketchCanvas.__init__): (SketchCanvas.init_gcs): (SketchCanvas.set_gc_transforms): moved the libart rendering support from SketchCanvas to SketchView * Sketch/UI/view.py (SketchView.__init__): added new keyword argument antialiased. If 1 draw antialiased if libart is supported, if 0 don't. 2000-02-23 Bernhard Herzog * Sketch/UI/view.py (SketchView.__init__): initialize hadjust and vadjust to None * Sketch/Base/configutil.py (save_repr): unnecessary because point objects aren't stored in the prefs anymore. All prefs are standard Python objects and can be converted to strings via repr(). * Sketch/Base/config.py: don't import add_program_default, get_preference, remove_mru_file and add_mru_file from configutil * Sketch/Base/configutil.py (add_program_default): (get_preference): (remove_mru_file): (add_mru_file): removed because they're unused * Sketch/UI/skapp.py (SketchApplication.build_window): (SketchApplication.__init__): self.filename is now called filenames and is a list of filename to allow multiple files to be opened from the command line * Sketch/Base/config.py (ProgramDefaults): removed some of the preferences that are not needed anymore: show_special_menu, show_advanced_snap_commands, creation_is_temporary * Sketch/Base/configutil.py (add_options): removed because its not used in the gtk based versions 2000-02-22 Bernhard Herzog * Sketch/UI/__init__.py (main): new entry point to use for Sketch as an interactive program. * sketch.py: use the new entry point Sketch.UI.main() * Sketch/__init__.py: Determine the package directory always from __path__ and not also from __file__ (init_base): new function to initialize the base part of Sketch. Removed unnecessary import sys 2000-02-14 Bernhard Herzog * Sketch/UI/libartdevice.py (LibartDevice.create_image): don't create ximage as it's not needed anymore * Sketch/Graphics/image.py: removed superfluous config import 2000-02-13 Bernhard Herzog * Sketch/UI/skpixmaps.py: Removed superfluous import Image * Sketch/UI/libartdevice.py (LibartDevice.get_pattern_image): * Sketch/UI/gtkdevice.py (PatternDevice.get_pattern_image): * Sketch/Graphics/image.py (load_image): (ImageData.Invert): * Sketch/Graphics/eps.py (render_preview): use PIL as a package, therefore change "import Image" to "from PIL import Image" or use "import PIL.Image" and refer to PIL.Image 2000-02-11 Bernhard Herzog * Sketch/Modules/curveobject.c (curve_compare): * Sketch/Modules/sktrafo.c (sktrafo_compare): Removed the cast to int in the pointer comparison. It's better to compare the points directly and avoids problems on 64 bit systems. 2000-01-30 Bernhard Herzog * Sketch/Modules/_libartmodule.c (SKSVP_FromLine): Check properly whether the optional dashtuple was actually passed in. * Sketch/UI/libartdevice.py (LibartDevice.SetLineAttributes): (LibartDevice.DrawLineXY): removed the code that ensures a minimum line width as that is now handled completely in _libartmodule. The code was only needed because libart doesn't like zero line widths. * Sketch/Modules/_libartmodule.c (SKSVP_FromLine): Make sure line width is at least 1.0 * Sketch/Editor/__init__.py (standard_menu): new menu entry View->Outlined * Sketch/UI/canvas.py: Added the implementation of the new menu command view_outlined * Sketch/UI/libartdevice.py (LibartDevice.DrawDocument): Activate outline mode for layers with outlined flag set (LibartDevice.get_svps): Change cache strategy for svps slightly to allow for outline mode (LibartDevice.StartOutlineMode): (LibartDevice.EndOutlineMode): (LibartDevice.IsOutlineActive): New methods overriding the no-op defaults to implement outline mode in anti-aliased rendering as well. (LibartDevice.SetProperties): Only change font properties in outline mode (LibartDevice.__init__): Initialize the new instance variables needed for outline mode, outline_style and outline_mode, and initialize properties with an empty PropertyStack. * Sketch/Editor/edittool.py (EditTool.ButtonPress): Special case clicking on a guide line so that the user can move them in the edit tool as well. 2000-01-29 Bernhard Herzog * Sketch/Modules/skrender.c (skrender_vertical_guide_line): (skrender_horizontal_guide_line): new functions to render guide horizontal and vertical guide lines * Sketch/Modules/skrender.h: added prototypes for skrender_vertical_guide_line and skrender_horizontal_guide_line * Sketch/Modules/_libartmodule.c (render_guide_line): Python interface for guide line rendering * Sketch/Graphics/guide.py: removed the commented out code that had already been moved to Sketch/Editors/editguide.py * Sketch/UI/libartdevice.py (LibartDevice.DrawGuideLine): new method (LibartDevice.DrawObjects): added support for guide lines * Sketch/Modules/_libartmodule.c (fill_art_dash): new function to convert tuples of numbers to ArtVpathDash structs. (SKSVP_FromSKCurveStroke): Use fill_art_dash to convert dashtuple to ArtVpathDash (SKSVP_FromLine): Added optional positional arg dashtuple. 2000-01-28 Bernhard Herzog * Sketch/Modules/.cvsignore: added config.c * Sketch/UI/libartdevice.py (LibartDevice.DrawDocument): new keyword arg draw_page_outline. if it's true, draw the page outline * Sketch/UI/canvas.py (SketchCanvas.redraw_with_libart): draw the page outline * Sketch/Modules/_libartmodule.c (SKSVP_FromFilledRectangle): added. * Sketch/UI/libartdevice.py (LibartDevice.DrawLine): actually implement it. (LibartDevice.DrawRectangle): (LibartDevice.DrawPageOutline): (LibartDevice.convert_color): added (LibartDevice.FillRectangle): (LibartDevice.FillCircle): (LibartDevice.FillPolygon): Intersect the svp with clip_region only if clip_region is not None (LibartDevice._set_color): implement in terms of convert_color * Sketch/UI/toolbox.py (FreeHandOptions.__init__): Changed label to "Tolerance" 2000-01-26 Bernhard Herzog * Sketch/Modules/_skgtkmodule.c: Removed redundant declaration of SKArtPixBufObject and added #include "_libartmodule.h" for the correct one. Renamed SKArtPixBufType to PSKArtPixBufType so that we can include _libart.h without name clashes. Made PSKArtPixBufType static. * Sketch/Modules/_skgtkmodule.h: Removed declaration of SKArtPixBufType * Sketch/Modules/Setup.config (_skgtkmodule): don't link against libart. 2000-01-25 Bernhard Herzog * Sketch/Modules/config.c: Removed from CVS because it's automatically created * Sketch/Modules/.cvsignore: ignore files automatically created by the python extension building process 2000-01-23 Bernhard Herzog * ChangeLog: created