Changelog for PythonCard

SPECIAL NOTE: at least as of wxPython 2.5.2.8 you must still
use a GTK1 build of wxWidgets/wxPython on Linux in order for
component dragging to work in the resourceEditor. You can track
the following bug report to be notified when this issue is fixed.
http://sourceforge.net/tracker/?func=detail&aid=1024777&group_id=9863&atid=109863


Release 0.8.2 2006-05-18
added minimized and maximized attributes to Background class
created documentation.py module to hold code previously in widgets.py
  for automatically generating component and background docs
added getTextExtent and getFullTextExtent methods to BitmapCanvas
revised internationalResourceName to support platform-specific resources
added UK <-> US to conversions.py and simplified SOAP.py module check
updated turtle.py and bitmapcanvas.py component to force update on Mac
renamed samples.py to samples.pyw
added work-in-progress version of multiresourceEditor 
  (tools/resourceEditor/multiresourceEditor)
  renamed to layoutEditor
support customizable window styles in backgroundInfo of resourceEditor
added convenience wrappers for pop-up menus, multiple check-box dialogs,
  multiple button dialogs (helpful.py and samples/helpfulWrappers)
added sample for sudoku solver/helper (samples/sudoku)
replaced StringType with StringTypes to handle Unicode better
Major update standaloneBuilder, including support for py2exe
allow for Python2.4 or Python 2.5 on Mac 


Release 0.8.1 2004-10-19
added fileMode, fillColor, logicalCopyMode attributes to BitmapCanvas
  removed setFillMode, setFillColor, setCopyMode methods
the resourceEditor property editor now updates attributes automatically
  but you can still click the Update button (this is mostly useful
  on the Mac when editing text)
resourceEditor (resourceOutput module) no longer saves background
  position in resource files
added work-in-progress version of tabbed code editor (tools/oneEditor)
renamed ver to VERSION_STRING in __version__.py and added VERSION tuple
added horizontalScrollbar flag to TextArea component
added appendText ScrollLines workaround to TextArea component on Windows
added lexicon and pattern files downloading to life sample
added time alias to util.py to use time.time() on Windows, time.clock() on *nix
added gravity sample
minimum requirement changed to wxPython 2.5.2.8
added passwordTextEntryDialog and multilineTextEntryDialog to dialog.py
many minor bug fixes
reworked dialogs sample interface
added Show Grid Lines option to resourceEditor
added cursor key support in resourceEditor for moving components
added FloatCanvas component and sample
added Notebook component, PageBackground, and testNotebook sample
added relativePath to util.py
added colorFromString to util.py 
added main_is_frozen workaround for bundlebuilder standalones on Mac
added csv support to dbBrowser sample


Release 0.8 2004-08-18
getCommandLineArgs moved to util.py
runOptionsDialog moved to templates.dialogs.runOptionsDialog.py
dialog.py is now a thin wrapper around wx.lib.dialogs.py
  all dialog results now use DialogResults class instead of dictionary
  e.g. result.accepted instead of result['accepted']
  see dialogs sample and other samples and tools for examples of change
menuDialog changed to insert in place, added default naming based on label
changed Calendar component to CAL_SEQUENTIAL_MONTH_SELECTION style
added mp3player sample
switched to using wx.lib.statbmp.GenStaticBitmap on GTK for Image component
Created unit-test facility.
  defined ignore files for files that should not be imported to check for tests.
  runAllTests.py runs all tests from the current working directory down, minus ignored.
  added sample unit test class, in UnitTestSample.py
Added two unit tests for LSystem.  Pulled out drawAbstractFractal() to allow this.
Changed console_server.py and minimalTest.py so that importing the file didn't run code.
updated childWindow resource loading to better support standalones
refactored resourceEditor to query component spec for default 
  set of attributes in on_componentAdd_command
refactored resourceEditor to dynamically build list of 
  available Components instead of using static list
converted turtle sample to use Python modules for the script
  examples
fixed resourceEditor so it saves on Run and validates
  component names
changed all occurances of stack in resources to application
removed Stack class
  the application is now the "parent" of the main Background
  changed __init__ for Background and CustomDialog so they
    don't take a stack parameter
  changed childWindow function
  self.stack.app references are now self.application
added lsystem sample
added ToggleButton component
fixed enableCommand and disableCommand for components & menus
added ataxx sample
codeEditor now persists all View menu settings
added reversi (Othello) sample
made spirographInteractive its own sample
added restore (inverse of minimize) background window event
added twistedEchoClient sample
added twistedModel.py module to hold TwistedApplication
added redraw method to Widget to simplify immediate redraws
added event.target workaround for timer events
moved getStyleConfigPath to configuration module
renamed stc-styles.rc.cfg to stc-styles.cfg
removed unneeded WXMAC code blocks
removed get/set methods for position, size, foregroundColor,
  backgroundColor in Background and CustomDialog and 
  replaced with properties
added removeListener method to EventQueue to enable the
  clean removal of the Message Watcher window when closing app
changed codeEditor file dialog default from *.py to *.*
fixed Windows border offset in resourceEditor by 
  querying SystemSettings.GetMetric
added Bruce Eckel's moderator sample
updated Choice, ComboBox, List, RadioGroup to use
  'selection' and 'stringSelection' attributes instead of
  mixed-capability 'selected' and 'selection' attribute
  see migration guide for more info
added templates sub-package to hold common backgrounds
  and dialogs
updated all samples and tools to use lowercase skip()
removed CamelCase methods from BitmapCanvas (Draw -> draw)
changed Component __init__ 
  init underlying control before Widget class
  added makeNewId function
  removed postInit
  event binding is now part of component init
removed getId() from Widget, using GetId() calls in framework
*ROWLAND describe binding and spec changes here*
added SetValue workaround for TextArea component on Windows
removed dispatch.py and moved classes to event.py
SetFocus -> setFocus
Hide/Show -> visible attribute
added visible, position, and size properties to tool windows
added Tom Jacobs' montyhall sample
added about.py module
  added About PythonCard dialog to codeEditor and resourceEditor
added singleton.py module
  used by configuration.py, log.py, registry.py, and resource.py
removed Ptr classes from isinstance checks
removed old addresses052.py sample
renamed res.py to resource.py
replaced the use of __getattr__ and __setattr__ in Font,
  StatusBar, and Widget classes with property(), so those
  classes and components no longer have restrictive
  attribute access
  this change also eliminated the need for the 
  _createAttributes and _getAttributeNames methods
changed to wx.Frame for runtime tools on Windows to make
  them the same across platforms
removed conditional code check PyCrust since PyCrust
  is a standard part of wxPython now
added createStatusBar method to Background and 
  CustomDialog classes so applications can override that 
  method if they want to use a more complex StatusBar
made statusbar.StatusBar a direct subclass of wx.StatusBar
renamed PythonCardApp to Application
refactored config.py to configuration.py
removed PythonCardObject and all references to it
removed ObjectMap and all references to it
removed ObjectLookup and all references to it
changed on_openBackground to on_initialize
renamed pom.py to component.py
added test.py
added timer.py module and simple Timer wrapper
added deactivate event to Background
updated sound.py to use wx.Sound
changed model.py to require Python >= 2.3 and wxPython >= 2.5
converted DC methods to use tuples instead of separate
  x, y and width, height args
changed wx.NULL to None
switched to wx package
  from wxPython import changed to import wx
  changed wx.wx style prefixes to wx. except 
    for wx.wxEVT constants
  changed wx.wxHtmlEasyPrinting to wx.html.HtmlEasyPrinting
changed default on Message Watcher to show unused events
PythonCardPrototype package renamed to PythonCard
  all references to Prototype updated in source and docs


Release 0.7.3.1 2004-04-09
added _getId back to widget.py
menu.py workaround for FindMenuItem and GTK exception
updated MANIFEST.in and setup.py for PyPI/distutils
added testevents sample for debugging cross-platform
  event order


Release 0.7.3 2004-04-03
changed py2exe scripts for version 0.5 syntax
dropped support of PyCrust in wxPython 2.4.0.7 and earlier
added check to avoid unneeded widget initialization 
added TextArea workaround for GetValue on the Mac
McPC and RanchBiz added to moreapplications.html
added lowercase skip alias for Skip to dispatch.py
switched to mixedCase style names for BitmapCanvas
added new-style class properties to Background and
  CustomDialog classes: position, size, etc.
added leading underscore to addEventListener and
  notifyEventListeners methods
changed _getAttributeNames to use inspect module
updated Windows installation docs for Python 2.3
  and wxPython 2.4.2.4
added explicit Stop() for timers when app is closed
added donations.html
fixed default Mac menubar handling
converted legacy class name comparisons to __class__.__name__
removed RightTextField component, use TextField with
      'alignment':'right' attribute instead
many modifications to support wxPython 2.5 and higher
  in general, just look for code starting with
    if wx.wxVERSION > (2, 5):
  to see the version specific changes
  also modified spacers for sizers to use tuples instead of
    separate w, h args
  some items are marked with a "wxPython 2.5 change" comment
all changes are being done so that release 0.7.3 will work
  with wxPython 2.4.x or wxPython 2.5.x or higher
  future releases may drop support for wxPython 2.4.x
EXIF.py updated to remove Python 2.3 warnings
added support for Python 2.3 .chm file on Windows


Release 0.7.2 2003-09-08
ranamed MultiColumnList 'border' attribute to 'rules'
enabled MultiColumnList and Tree in the resourceEditor
added minimalList and minimalTree samples as tests of the 
  MultiColumList and Tree components
added multicolumnexample by William Volkman
replaced older MultiColumnList component with version
  by William Volkman
added workaround for wxMSW GetFont() bug in MultiColumnList
switched to Raise() in fixComponentOrder to deal with
  wxPython 2.4.x change with Hide/Show
added shell.autoCompleteWxMethods = False to pycrustrc.py
  to hide CamelCase wxPython methods of components and
  other wxPython classes by default
added source.encode('iso-8859-1') to textToHtml to avoid
  print/print preview exceptions in codeEditor; this will
  probably require a more sophisticated solution
added workaround for wxWindows AppendText bug in jabberChat
  sample. This might need to be added to TextArea appendText
  if wxWindows isn't fixed soon
fixed popItems handling of RadioGroup and other components
  with an 'items' attribute in resourcEditor propertyEditor.py
updated classes in menu.py to be direct wxPython subclasses
added source file support to templates in resourceEditor
  updated File->New... process to save new files
added moreapplications.html page to highlight other apps
  built with PythonCard
added wx.wxDEFAULT_DIALOG_STYLE to singleChoiceDialog
  to workaround wxPython 2.4.1.2 bug
fixed samples launcher selection and added double-click support
added int(round()) conversions to fix Python 2.3 deprecation
  warnings
added '' back to sys.path in pycrustrc.py for shell work
changed default font size for findfiles tool on Mac and GTK
added autoSetEOL to codeEditor to automatically use the line
  endings already in a document
replaced \xa0 characters in source files with spaces
added macbuild.py to the minimalStandalone sample to show
  how to build standalones on Mac OS X
fixed double loading of pycrustrc.py files in loadShell
fixed config directory creation
fixed image rotation in slideshow sample for files in zips
updated fixed getStyleConfigPath in colorizer
fixed PILtoBitmap typo in graphic.py
PythonCard now requires a minimum Python 2.2.1 or higher
  and wxPython 2.4.x or higher


Release 0.7.1 2003-07-16
dbBrowser now supports PostgreSQL using the psycopg interface
An alternative dbBrowser using a wxGrid to display query results 
  has been added. Its called dbBrowser2 and it re-uses much of
  the code from the original
changed wx.wxc.__version__ check to wx.__version__
added Save Configuration menu item to Scriptlet menu in
  the codeEditor
fixed config.py for standalone usage
added Thomas Heller's main_is_frozen function to util.py
added GetPixel method to BitmapCanvas
added userdata attribute to Widget so all components
  added support for userdata in the resourceEditor
changed resourceEditor to use a drag rect so dragging
  works the same on all platforms and no longer
  requires the use of CaptureMouse on Linux
added WMAvailable check for Mac OS X so the top frame
  appears in front when app starts
fixed pycrustrc.py loading on Linux/GTK
added Grid component and simpleGrid sample
fixed script launching in samples.py, findfiles,
  codeEditor, and resourceEditor
added spinUp and spinDown events to Spinner component
added dirname() function to util module to use instead
  of os.path.dirname()
  updated model.py to use the new function
changed true/false to True/False in STCStyleEditor.py
  to avoid wxPython 2.4.0.4 deprecation warning
changed 'items' attribute in resourceEditor to use
  TextArea instead of TextField for editing
fixed 'icon' handling in resourceOutput.py
Phil Edwards' started making Linux RPMs for PythonCard
added Phil Edwards Linux installation instructions
added Mac OS X (Jaguar) installation instructions
fixed font attribute in BitmapCanvas
added David McNab's walkthrough
  Increasing Usefulness with Timers and Threads
fixed order of wx imports so wx always comes first
added jabberChat options for conferencing and Show/Raise
slideshow sample changes
  added Goto Slide dialog
  changed F8 key to act as a Pause/Continue toggle
  added zip file support
fixed relative directory reference in webserver sample


Release 0.7 2003-01-15
added "Create Component Docs..." menu item to widgets
  sample for creating "component_documentation" directory
added home directory config support, so user configs
  are no longer stored in PythonCardPrototype
added numericArrayToImage function to graphic module
  BitmapCanvas can now draw numpy arrays
renamed all variables named list and dict to
  listX and dictX to avoid built-in type name confusion
numerous conversions to conform to PEP 290
  replaced use of types module for type checks with
    built-in type factory - isinstance(i, int)
  replaced string module functions with string methods
  replaced '== None' with 'is None'
    and '!= None' with 'is not None'
added many features to jabberChat sample
added additional *. wildcards for Linux like *.TXT
  *.JPG, *.JPEG since Unix filenames are case-sensitive
fixed stack in rpn calculator (Randy Lea)
added CodeEditor component to resourceEditor
added caseinsensitive_listKeySort function to util.py module
  used by flatfileDatabase for sorting list of dictionaries
added caseinsensitive_sort function to util.py module
added wordwrap function to util.py module
fixed command event in slider component
added new samples pages to main web site
added code folding to CodeEditor component
added openFileDialog and saveFileDialog wrappers to dialog.py
added clipboard module
added life sample
added spirograph sample
added wxNO_FULL_REPAINT_ON_RESIZE style to 
  TextArea and CodeEditor components
added dirwalk generator function to utils.py
  changed findfiles to use dirwalk
fixed closeField event in RightTextField component
fixed script launching to handle spaces in directory names
added Phil Edwards' PySSHed sample
added simpleIEBrowser sample to test IEHtmlWindow component
added IEHtmlWindow component
fixed default backgroundColor handling in resourceOutput.py


Release 0.6.9 2002-10-23
added Thomas Heller's install-pythoncard.py script
  to create links under Windows
added columnClick event to MultiColumnList
added line and column display to statusbar in codeEditor
added methods to graphic.Bitmap and BitmapCanvas classes
  to better support wxBimtap, wxImage and PIL
updated webserver sample to run CGIs on Linux
  and Mac OS X; CGIs are no longer run as user 'nobody'
added font utility functions to font.py module
made resource argument optional for CustomDialog class
added strings to dialog resources
switched RadioGroup vertical and horizontal orientation
added childWindow function to simplify loading windows
added file_upload to webserver sample
fixed label attribute in StaticBox
Thomas Heller refactored the resourceEditor widget resizing
runtime Property Editor fixes
added jabberChat sample
added code to disconnect wxEVT_KILL_FOCUS in WidgetDict
  to avoid hard crashes with wxPython 2.3.3
updated webserver.py with IE POST fixes and other Python
  lib changes
added Robin Dunn's stattext.py and replacement StaticText
  component to the resourceEditor appcomponents
fixed Scriptlets run code in textEditor to match codeEditor
added dialog docs
updated shell docs
appled Tim Peters suggestions for sorting in flatfileDatabase
  for a roughly 5x sort time improvement
added auto-rotation of images in pictureViewer and slideshow
  using EXIF.py and rotate90 method of the Bitmap class
added EXIF.py by Gene Cash
fixed typos in insertDialog.py scriptlet and scriptlet
  execution in textEditor
fixed wxTAB_TRAVERSAL in panel
switched back to a plain list in flatfileDatabase.py
fixed missing webbrowser import in companies sample


Release 0.6.8 2002-07-17
added keyDown event to Tree
added itemFocused, mouseContextClick and keyDown events
  to MultiColumnList
moved flatfileDatabase.py module into framework so that
  it can be used by both the companies and flatfileDatabase
  samples
added clipboard flush when background is destroyed to
  preserve the clipboard
revised flatfileDatabase sample, added pickle support
added findString to util.py
added hack in the resourceEditor for Unicode string attributes
  when using a wxPython unicode build
added Fred Pacquier's fpop sample (in cvs, not release)
added companies sample
added file history to findfiles, resourceEditor, and textEditor
fixed close event bug in binding.py
added text and html/xml style support to codeEditor
added links to PythonCard documentation in the Help menus
  of the codeEditor, findfiles, and resourceEditor tools
updated Run options dialog in codeEditor to support
  optional args
added insertDialog.py scriptlet to codeEditor tool
removed the auto-shell loading to speed startup of apps
  the shell can be loaded manually with self.loadShell()
  codeEditor and textEditor tools updated to use loadShell
added appcomponents sub-package support when loading components
fixed ComboBox init so text attribute is set after 'items'
  and 'selected' attributes are set; text will override 'selected'
added Sort menu item to flatfileDatabase
updated runScript in codeEditor so it changes to the directory
  of the script being run and then back to the current dir
added "Allow any machine to connect" menu item option to
  the webserver sample
added -d command-line option to show the debug menu
  without showing any of the runtime windows
added HTML file support to slideshow sample
changed CodeEditor component to auto-load 'python'
  style configuration if available
changed samples launcher to use CodeEditor component
  for source and resource files
added Tree component


Release 0.6.7 2002-06-14
added chat sample
changed findfiles and simpleBrowser to use ComboBox
changed ComboBox to use wxCB_DROPDOWN style
changed findfiles sample to use re instead of regex
added idle, move, size, close, activate, minimize, 
  and maximize events to the background
  renamed OnCloseWindow to on_close
moved webservices directory to avoid security hole
added slideshow sample
added pictureViewer sample
added webgrabber sample
added webserver sample
moved (promoted) the codeEditor, findfiles, resourceEditor, and 
  textEditor samples to the PythonCardPrototype/tools directory
fixed string handling of label, text, and toolTip attributes
  for runtime and resourceEditor Property Editors
added asterisks in the titlebar text to indicate
  when a document has changed
fixed STCStyleEditor.py config loading on the Mac
changed framework to support wxSTC on wxMac
updated find and find next in flatfileDatabase
added David Primmer's walkthrough:
  How to Add a Child Window to a PythonCard Application 
added Background 'style' attribute to resourceEditor for
  resizeable or static window size
added Dan Shafer's resourceEditor overview
added timer events to components
  timers are still created manually
changed logging default to go to stdout in pythoncard_config.py
changed runOptionDialog to use sizers
added 'strings' attribute to Background resources to simplify
  localization
updated resource output to escape strings correctly when
  string contains apostrophe and quotes
workaround for stc-styles.rc.cfg loading in standalones


Release 0.6.6 2002-05-09
added template.html
added MultiColumnList component
fixed position and size config saves in codeEditor, findfiles,
  textEditor, and resourceEditor
  the Background class now binds EVT_ICONIZE and saves the
  restoredPosition and restoredSize
added Riaan Booysen's STCStyleEditor to provide
  style editing for codeEditor and the shell
fixed missing 'label' attribute for CheckBox and RadioGroup
  (thanks Dan)
added rpn (reverse polish notation) calculator sample
  by Randy Lea
added CodeEditor component and codeEditor sample
changed the default SourceForgeTracker resource to
  SourceForgeTracker.original.rsrc.py, renamed the one
  that has been in use SourceForgeTracker.colorized.rsrc.py
  the sample should now look better on Linux and OS X
added File menu with a Quit (Exit) menu item for apps
  that wouldn't normally have a menubar on the Mac
disabled the shell in the turtle sample on Mac OS X
fixed findfiles to search sub-directories on Mac OS X
fixed findfiles launching on Mac OS X
modified findfiles to use a List rather than a TextArea on the Mac
disabled Go To in textEditor on Mac to avoid Mac OS X segfault
removed hard-coded window positioning such as (5, 5) so that
  windows wouldn't appear under Mac OS X menubar
changed HtmlWindow to be a direct subclass
fixed size handling in resourceEditor for BitmapCanvas and
  HtmlWindow
added HtmlWindow and BitmapCanvas to widgets sample
added workaround for missing wxComboBox SetStringSelection
  on Linux/GTK (thanks Andy)
added Dan Shafer's Shell documentation
switched to os.spawnv for script launching on all platforms
added 'style' attribute to background so a background window
  can be 'resizeable' or not (the default)
added 'visible' flag to background so a background window
  can be hidden until the user code calls self.Show(1)
added flatfileDatabase sample
updated sound.py and sounds sample with Richard Wolff's changes
  sound.py now uses the sndhdr standard library (thanks Richard)


Release 0.6.5 2002-04-18
switched to os.spawnv for Windows script launching
bound EVT_WINDOW_DESTROY in widget.py, image.py, imagebutton.py,
  and bitmapcanvas.py, and resourceEditor.py to do some memory
  leak cleanup for hybrid wxPython
removed TODO.txt, replaced with wiki page
  http://wiki.wxpython.org/index.cgi/PythonCardToDoList
added PythonCard wiki pages
  http://wiki.wxpython.org/index.cgi/PythonCard
added import os, import sys to pycrustrc.py
added closeField event for TextField, PasswordField, TextArea, and
  RightTextField components
fixed distutils to include components sub-package
  .pyc and .pyo files are no longer created in win32 .exe 
  and Linux tar.gz distributions (thanks Andy)
updated BitmapCanvas to follow the wxDC API
added noresource sample
added dictionary/resource option to PythonCardApp class so it
  is possible to create an app that has no resource file
switched to function calls for system dialogs
renamed GenericDialog to CustomDialog and moved the class to
  model.py and removed dialognew.py from the package
added minimalDialog to dialogs sample
added custdb sample by Juergen Rauch
fixed 'default' attribute handling in Button component including
  workaround for missing GetDefaultItem/SetDefaultItem in wxDialog
fixed controlDown, altDown, and shiftDown for mouse events
added Gauge component
added dialog editing support to the resourceEditor sample
added StaticBox component
added ComboBox component
added Spinner component
added RightTextField component
added Calendar component
updated FindDialog in dialog.py and textEditor.pyw
updated the license reference in index.html to Python 2.2


Release 0.6.4 2002-03-11
*** event handler argument change ***
  changed (self, target, event) to (self, event) arg list
  code written for PythonCard prior to release 0.6.4 will need to
    be updated
added htmlpreview window to radioclient
changed attribute binding where possible to use class methods
  if not hasattr(self.__class__, '_getPosition'):
      self.__class__._getPosition = self.__class__.GetPositionTuple
  Thanks to Patrick for that one!
renamed toc.html to documentation.html
commented out unused 'visible' lines in pythoncard_config.py
changed Save Configuration so that it doesn't save the visible
  state of the windows
added 'PythonCard Home Page' and 'Online Documentation' menu
  items to the Debug menu
added Page Setup, Print, Print Preview to textEditor sample using
  wxHtmlEasyPrinting class to start the exploration of printing
  in PythonCard
added simple Copy and Paste of the entire bitmap image in doodle
added Open and Save As so an image can be imported into the
  current bitmap and saved to disk in a variety of supported
  formats: BMP, GIF, JPG/JPEG, PCX, PNG, PNM, TIF/TIFF, XBM, and XPM
  Not all formats are supported on every platform and saving as
  GIF results in a zero length image.
added getBitmap to BitmapCanvas to support Copy and Save As in
  doodle sample
changed findfiles to use sizers and remember the last position and
  size of the window
added event to run pycrustrc.py files after the openBackground event
added Run with interpreter option to resourceEditor
  Thanks Neil
removed FAQ.txt and added FAQ.html
added Cut, Copy, and Paste to resourceEditor for copying components
  between layouts
changed from the runtime Property Editor window to a Property Editor
  window done as a PythonCard background so that the resourceEditor
  would be more intuitive
changed Property Editor to get attributes from the class _spec
added installation.html, walkthrough1.html, walkthrough2.html
  and learning_python.html
  Thanks to Dan Shafer for the docs work!
changed resourceEditor sample to use sub-directories to explore
  how we might use standard sub-directories for organizing
  PythonCard apps
changed dialog.py and samples to use single-line invocations of
  standard dialogs
fixed resourceEditor backgroundColor handling by changing
  wx.wxSYS_COLOUR_3DLIGHT to wx.wxSYS_COLOUR_3DFACE
  also fixed counter sample
switched components from using wxPython controls as delegates
  to direct subclasses of wxPython controls and the Widget class
  removed _createDelegate method and added _postInit method and
    restructured initialization
  removed some cached attributes such as _enabled, _position, 
  _size, _visible
  updated all samples to get rid of _delegate references
added stockprice SOAP sample
added radioclient sample
fixed typo in resourceEditor, so menu commands are
  saved correctly as 'command' rather than 'ommand'
fixed some old turtle sample documentation
added SourceForge logo to all HTML pages


Release 0.6.3.2 2002-01-28
restored loseFocus event

Release 0.6.3.1 2002-01-26
made sillywalk.gif and lrggumby.gif opaque to fix GTK drawing
fixed exception when locale.getdefaultlocale() is None

Release 0.6.3 2002-01-25
commented out stack info dialog in resourceEditor
added FAQ.txt, updated toc.html and other documentation
changed addEventListener so the MessageWatcher is always
  the first listener to be notified
added localization support for resource files
  added minimal.fr.rsrc.py for French users as an example
Linux fixes
  resourceEditor and samples file launching
  CaptureMouse() in resourceEditor
  fixed asserts in BitmapCanvas where OnSize event was
    called prior to __init__ finishing
added registry.py, updated framework to use registry
added quotes to path/filename in resourceEditor for launching


Release 0.6.2 2002-01-16
added counter sample by Dan Shafer
  Dan wrote a great tutorial.txt file that explains how
  to recreate the sample step-by-step
added wxMiniFrame support for Windows in debug.py
  GTK still uses wxFrame
added findnth string function to util.py
  helps textEditor to fix Go to line under Windows
added minimal.spec example for building standalones
  using Gordon McMillan's installer
changed 'isdefault' attribute to 'default'
added shell key bindings and usage link to toc.html
added support in resourceEditor.py for resizing widgets
  under Linux/GTK
updated setup.py and MANIFEST.in for distutils
changed positionToXY to handle tuple of len 2 or 3
changed textEditor.pyw to show the filename in the title bar
moved 'menubar' attribute from 'stack' to the background
  updated all sample .rsrc.py files
  updated Backround __init__ (model.py), menu.py, spec.py, and
    resourceEditor.py
changed launching code in samples.py, resourceEditor.py, and
  findfiles.py to
  os.system(python + ' ' + filename + args + ' &')
updated imagebutton.py component _setBitmap method to workaround
  setting the bitmap after initialization on GTK
added positionSize.rsrc.py and PositionSize class to resourceEditor
  this is an example use of multiple windows
added tentative multi-window support
  http://aspn.activestate.com/ASPN/Mail/Message/PythonCard/965583
updated SourceForgeTracker XML parsing
changed Message Watcher window to wxPython.stc.wxStyledTextCtrl
  Thanks Neil!
updated the _setIcon method in the Background class to support
  .xpm as well as .ico files for titlebar icons
fixed numerous bugs on Linux
  findfiles should now work on Windows and Linux
  file launching in samples.py, resourceEditor.py and findfiles.py
  now uses sys.executable to launch python programs
    thanks to Cliff Wells for these fixes
added htmlWindow component
  added simpleBrowser sample to experiment with htmlWindow
  http://aspn.activestate.com/ASPN/Mail/Message/PythonCard/962840
  the list of supported tags is at:
  http://aspn.activestate.com/ASPN/Mail/Message/PythonCard/964327
added check for whether a component is already loaded to avoid
  unnecessary imports in res.py
fixed addresses sample initialization when Outlook isn't installed


Release 0.6.1 2001-12-28
changed all menu shortcuts from using - to + (Ctrl+F instead of Ctrl-F)
changed GetSize to GetSizeTuple and GetPosition to GetPositionTuple
  hopefully this has fixed the selection bugs in resourceEditor
  using size or position attributes as a list will now result in
    a runtime error
added New, Save, Revert to resourceEditor and documentChanged
fixed default resource file loading


Release 0.6 2001-12-27
*** wxPython 2.3.2 or later is now required to use PythonCard ***
added assert wxc.__version__ >= "2.3.2" to model.py
  the move to wxPython 2.3.2 fixes the menu accelerator bugs
*** resourceEditor sample is now a fully functional layout editor ***
updated resourceEditor
  added Run command, Run Options, and dialogs for editing the stack,
  background, and menu for an application
  added commands to change the component order
    component order is shown in the Property Editor
  added a grid option, so components can be aligned to the grid
  this isn't a commercial-quality layout editor since it still uses
    the runtime Property Editor to edit component (widget) properties,
    lacks extensive error checking and field validation and has
    many missing features and some oddball bugs, but overall it works
    well enough to do a fixed position layout quickly and easily
    and there is no Undo!
changed wxPython imports from
  from wxPython.wx import *
  to the more explicit
  from wxPython import wx
  added missing imports such as 'import types' where needed
replaced occurences of wx.true and wx.false with 1 and 0
added a components directory
merged wxPython_binding.py into binding.py and moved widget-specific
  bindings to individual module files
moved spec.py descriptions for each widget to its respective widget
  module
split widget.py so each widget is in its own file in the components
  directory
  all widgets (components) are now self-contained modules in the
  components directory. each module includes the spec, event bindings,
  and attribute descriptions (formerly in spec.py) in addition to the
  widget class. when the module is imported it "registers" itself, so
  that the class is available for applications.
added drawPointList and drawLineList (2.3.2 feature) to the
  BitmapCanvas widget, switched to drawPointList in hopalong sample
  for a roughly 4x speed improvement
  also added Chaos1ScriptFastest.txt turtle script example
updated the setup.py script for minimal.py and provided some basic
  instructions in the readme.txt. It is necessary to uncomment the
  import in minimal.py prior to using py2exe due to how the dynamic
  imports are done for components
fixed _setFile bug in Image class
updated findfiles open/save code to automatically load and save
  the last grep parameters used to a 'findfiles.grep' file
updated log.py and config.py to use module-level functions in place
  of directly accessing the singleton classes from other modules
  log.info() instead of log.Log.getInstance().info() ...
  added logToStdout option to redirect log output to stdout
changed defaultStackPosition to defaultBackgroundPosition in
  pythoncard_config.py and pythoncard_user_config.py
moved title, position, size, statusBar, and icon attributes from
  the 'stack' to the 'background'
fixed alternative resource file loading
  added example of usage to SourceForgeTracker sample


Release 0.5.3 2001-11-30
*** wxPython 2.3.1 or later is now required to use PythonCard ***
added assert wxc.__version__ >= "2.3.1" to model.py
changed TextArea to use wxTE_RICH style
  modified getStringSelection, replaceSelection code
  updated samples that were counting newlines for find operations
fixed assertion error with FontDialog
added getString method to TextField and its subclasses
changed FindDialog so that it automatically selects the search text
  and sets the focus to the search field when the dialog comes up
numerous textEditor sample changes
  New and Save menu items
  reworked all the file operations so the user has a chance to save changes
  filename and line number arguments are accepted on the command-line
  Find Next and Go To
commented out 'file' reference in Pyker.hta
added setBackColor('white') to reset method in BitmapTurtle
modified turtle sample
  added a check to sync the auto refresh state after drawing with
  the turtle sample and removed the Refresh menu item
added more sample screen shots to web site
added a new documentation page
  http://pythoncard.sourceforge.net/toc.html
findfiles updated
  commented out the directory list, moved other widgets to the right
  added open and save as menu items
  fixed file launching using textEditor.pyw to do the launching
updated samples.py to properly launch textEditor.pyw
removed KillFocus from widget.py
added getStringSelection/setStringSelection to Choice widget
  and added check for type of selection in setSelection
changed all _getDelegate() references to _delegate
changed all _getParent() references to _parent
changed the default selection for Choice, List, and RadioButton to None
updated setSelection in Choice, List, and RadioButton to accept either
  an integer or a string or None
fixed some assertion bugs with the Property Editor


Release 0.5.2 2001-11-22 (the "turkey" release)
moved configOptions into the framework, so it is no longer needed
  in user code
removed 'file' and 'classname' attributes from all samples
updated all samples to use simpler import and startup
  model.PythonCardApp(Classname, [resource file])
  the Classname is the actual class you want to use, not a string
  the resource file is optional and will default to the base
  name of the main module file with an extension of '.rsrc.py'
  *** IMPORTANT NOTE ***
  if you have an app of your own, you must update it to follow
  the same style as used by the samples such as minimal.py
numerous textRouter sample updates
updated textEditor and searchexplorer samples Del key handling
added check for PyCrust in wxPython
  debug checks for PyCrust on the PYTHONPATH first
added (thanks Andy) icon support under Windows to framework
added applicationDirectory variable to PythonCardApp


Release 0.5.1 2001-11-18
framework changes to simplify building Windows executables using
  py2exe. source and resource files and any other files needed
  to be loaded at runtime must be included with the distribution
  files.
added setup.py example py2exe script to minimal sample
  complete documentation for using py2exe is still needed, see
  the mailing list
changed res.py to import spec.py
changed config loading to use import rather than readAndEvalFile
  renamed pythoncard.config.py to pythoncard_config.py
  user config is saved as pythoncard_user_config.py
added SingleChoiceDialog and MultipleChoiceDialog to dialog.py
added Simon Kittle's textRouter sample
updated replaceSelection for text fields and added getStringSelection
  TextField, PasswordField, TextArea
changed statusbar.py to use CreateStatusBar()
fixed TextArea event binding to check for unused events
dbBrowser sample supports Oracle 


Release 0.5 2001-11-09
added a method to preserve the status bar text when a menu
  is highlighted
changed all import statements in the framework to be explicit
  rather than using the import * style
removed loader.py
  moved configuration code to config.py
changed all samples to use
  from PythonCardPrototype.config import configOptions
  instead of
  from PythonCardPrototype.loader import configOptions
removed uniqueid.py
  uniqueid.UniqueIdFactory().createUniqueId() changed to wxNewId()
removed monitor.py and navigation.py
  changed getCurrentBackground() to refer to always refer to the
  first background in the list; removed all references to _iterator
default font size changed to self._size = wxNORMAL_FONT.GetPointSize()
changed wxMiniFrame to wxFrame on all debug windows
dbBrowser sample uses a modal dialog for login
  dbBrowser 0.3 also has an icon


Release 0.4.6 2001-10-30
added FindDialog to textEditor sample to show use of GenericDialog
  class for user-defined modal dialogs. the user-defined FindDialog
  mimics the look and behavior of the FindDialog in dialog.py
added GenericDialog class (dialognew.py)
fixed _translateFont bug that was returning the wrong font family
  when using the Font dialog
removed textEnter event
  pressing return in TextField or PasswordField should now be the
  same as pressing tab
  updated proof and searchexplorer samples
added modal FindDialog to dialog.py
  updated dialogs sample to show FindDialog
  updated addresses sample to use FindDialog, but didn't implement
  find logic to do the actual searching
added _used flag to Event class and associated methods to support
  proper use of skip with keyPress
added keyDown, keyUp, and keyPress events
added turtle.py module (AbstractTurtle and BitmapTurtle classes)
  updated turtle sample to use the new module
minor fixes to BitmapCanvas
added textEditor sample
converted samples launcher to use sizers
fixed CompactStack in textIndexer (thanks Patrick)


Release 0.4.5 2001-09-17
PyCrust is no longer included in the PythonCardPrototype
  distribution, please download PyCrust at:
  http://sourceforge.net/project/showfiles.php?group_id=31263
moved Bitmap class to graphic.py module
  added getPILBits and setPILBits to Bitmap class
    to simplify using PIL with PythonCard
added BitmapCanvas widget to widget.py
  added doodle and hopalong samples which use BitmapCanvas
  The BitmapCanvas is very experimental and will be
    enhanced and improved
Debug windows are now children of the app window
  Namespace Viewer, Property Editor, Shell
added 'Save Configuration' option to Debug menu
  this will create a pythoncard.user.config.py file
  with the current debug window position and sizes
changed Message Watcher to use sizers
renamed readDictionaryFile to readAndEvalFile
  updated addresses.py and searchexplorer.py to use the new function


Release 0.4.4.5 2001-09-08
posted Help Wanted on SourceForge
  http://sourceforge.net/people/?group_id=19015
posted Python Conference request for papers/tutorials
  http://aspn.activestate.com/ASPN/Mail/Message/PythonCard/767719
added addMethod to Scriptable class for dynamically adding
  handlers at runtime, see:
  http://aspn.activestate.com/ASPN/Mail/Message/PythonCard/770015
added 'openBackground' message to replace using __init__
changed background handlers to on_mouseClick form
modified SourceForgeTracker so that double-clicking on a topic
  launches the web page for that topic in a browser
Neil added Pyker.hta and PykerLaunch.hta
  see the following URL for more info
  http://aspn.activestate.com/ASPN/Mail/Message/PythonCard/766307
Andy added a TODO.txt to document short-term plans for PythonCard
  development
Property Editor and resourceEditor sample were changed to use
  default size (-1, -1) values
added enable and check menu items to menu.py
  see the url below and thread replies
  http://aspn.activestate.com/ASPN/Mail/Message/PythonCard/766371
started some documentation for the Button class
  http://aspn.activestate.com/ASPN/Mail/Message/PythonCard/764832
added display of .rsrc.py files in samples.py
Patrick added dot notation support to the Font class
Jeff and Neil provided some Unix screenshots
  These show we need to get sizers working to deal with variable
    size widgets and fonts on different platforms
  http://aspn.activestate.com/ASPN/Mail/Message/PythonCard/763602
  http://aspn.activestate.com/ASPN/Mail/Message/PythonCard/763659
res.py eval() changed to support using Windows-style line endings
  under Unix
added "Redirect stdout to Shell" option to Debug menu


Release 0.4.4.1 2001-08-31
added samples.py to launch the the various sample programs
  see samples\samples.py
  added readme.txt files to all samples that didn't already
    have one. the readme.txt is displayed as the
    'description' for a sample


Release 0.4.4 2001-08-30
added getting_started.html to docs\html
added basic status bar support
  statusbar.py module
  see test_turtle.py for an example
turtle sample updated
  test_turtle.py now uses a status bar and displays the
  time required to draw a design
  added line(x1, y1, x2, y2) method to turtle
added extra parametes to FileDialog to support saving files
  see resourceEditor for an example
  see dialog.py for complete list of options
added Namespace Viewer using PyFilling (part of PyCrust 0.6)
fixed numerous Property Editor edit/display bugs
  widgets are now displayed in the proper order
added Font support to all widgets
  Font class moved to font.py module
  the actual text descriptions of the fonts is going to
    change, so if you use them, just be aware that the format
    of the font descriptions will change by the next release
  a font can be passed to the Font dialog to set the initial
    font displayed
commented out 'import warnings' for Python 2.0 support
  but PyCrust usage still means that you need Python 2.1.x
  if any Debug windows like the shell will be used
fixed unitialized empty bitmaps on win98
added append method to Choice class
added setFocus method to Widget
dbBrowser sample updated to version 0.2
resourceEditor changes
  resourceEditor can now save .rsrc.py files
    make sure to only work on copies in case of bugs
    also some hand editing of .rsrc.py is still necessary
    depending on what you're trying to do
  Duplicate Widget menu item now causes the duplicate to
    be offset 10 pixels to make it easier to select
  added template.rsrc.py for defaults
worldclock sample demonstrates simple use of logging


Release 0.4.3 2001-08-23
Andy Todd converted worldclock so that it no longer requires
  an external JavaScript program to run
added samples.txt file to the docs directory to document the
  purpose of each sample application
fixed numerous display bugs in the Property Editor
  including the selection bug which was causing a KeyError
  when using the resourceEditor
resourceEditor changes
  added a Help menu, About resourceEditor... menu item
  View attributes display is now more complete
  Property Editor is shown by default
the Shell is now shown by default for the turtle sample
added addresses sample, which shows the conversion of an
  existing HyperCard stack background layout and data to
  PythonCard. addresses does transparent saves of data and can
  import contacts from Outlook as well.
disabled helpText attribute

Release 0.4.2.1 2001-08-21
Property Editor is now a listener of the WidgetDict class
  so the component list is automatically updated
  as widgets are added and deleted
resourceEditor sample changes
  added Duplicate Widget menu item
  fixed the selection code
  Property Editor now updates correctly
script added to dbBrowser sample to populate a mySQL test
  database

Release 0.4.2 2001-08-20
the PythonCard mailing list has moved to
  http://lists.sourceforge.net/lists/listinfo/pythoncard-users

the home page has been redesigned and the other HTML pages
  have been validated to make sure they conform to the HTML
  spec. the HTML pages in the docs\html directory can now
  be used locally, they will fetch the large JPEG images from
  the web.
the Property Editor can now edit widget attributes
added getPosition/setPosition and getSize/setSize to Background
added basic mouse events to StaticText, StaticLine, and Image
  widgets
converted Dan Winkler's original PythonCard demo app to
  the PythonCardPrototype framework, renamed it textIndexer
  and made it a sample. It currently requires ZODB to run
  You can use standalone ZODB or ZODB from Zope, see the
  readme.txt in the textIndexer directory for more info
Andy Todd added his dbBrowser sample which is able to browse
  mySQL databases. readme.txt in the dbBrowser directory for
  more info
added a resourceEditor sample, which is the beginnings of a GUI
  resource (.rsrc.py files) editor. see the readme.txt in the
  resourceEditor directory for more info


Release 0.4.1 2001-08-16
updated debug.py and pycrustrc.py to support PyCrust 0.5.2
  due to changes between PyCrust 0.5.2 and earlier versions you
  must use the latest version of Pycrust with PythonCard, which
  is included in the release .zip for convenience
added 'border' attribute to TextField and its subclasses to support
  a 'none' wxNO_BORDER option. updated worldclock and 
  test_widgets.py to show TextField with a border of 'none' used
  in place of StaticText
added empty bitmap support. Image and ImageButton now use
  the Bitmap class rather than an explicit wxBitmap. the convention
  is that if the file is '' then an empty bitmap is created.
  see SourceForgeTracker for an example of the use of empty bitmaps
  if the layout doesn't look right on Linux or Solaris, you can use
  the SourceForgeTracker.original.rsrc.py file by renaming it to
  SourceForgeTracker.rsrc.py
fixed worldclock and tictactoe samples to use Bitmap


Release 0.4 2001-08-14
added components dictionary
  find/findByName, createWidget, and deleteWidget were
  replaced by a dictionary, so that widgets on a background
  can be accessed as:
    self.components.button1
  see the samples for numerous examples of the new usage.
widgets now use dot notation to access their attributes
  print button1.label     # get
  button1.label = 'hello' # set
  This was a major revision to widget.py that also impacted
  many other parts of the framework, so if you have any samples
  of your own done with release 0.3.1 or earlier, you'll need
  to update your code.
updated all samples to use the new dot notation
all widget attributes that can only be set at initialization
  will now throw an AttributeError if you try and change
  them. for example button1.name = 'bob' is not legal
  so you get:
  'AttributeError: name attribute is read-only'
*** note that while updating all the widget attributes to dot
  notation I realized that we had never cleaned up the 'selected'
  attribute for List, RadioGroup, and Choice, so be aware that
  the name and behavior of 'selected' will probably change in
  the next release
PyCrust is now included as a separate package
  numerous changes were made to the PyCrust shell, see the
  PyCrust docs for more information.
fixed backgroundColor and foregroundColor in class Background
  the widgets sample has a button to change the backgroundColor
  to show off this fix.
added pycrustrc.py files
  whatever python code is in these files will be executed when the
  shell is first launched. there is a default pycrustrc.py in the
  package directory. there is another example in the turtle sample
  directory.
changed pythoncard.config.py
  added options to set the position and size of all the "debug"
  windows: Message Watcher, Property Editor, Shell
added pythoncard.user.config.py
  this file will override pythoncard.config.py if it exists
  you should copy pythoncard.user.config.py and
  update the position of each window for your own screen
  dimensions; you can update the shell size too
added defaultStackPosition option
  you can add a key:value line to pythoncard.user.config.py
  to override the stack position that a PythonCard app may or
  may not specify. The most common would be something like
  'defaultStackPosition':(5, 5),
  to force the window to the top-left of the screen (I prefer
  this over (0, 0) myself.
added 'Debug' menu
  if any of the 'debug' windows are requested when an application
  is started, then all of the windows will be created, but only
  the requested ones will be shown initially. you can choose
  the window name from the Debug menu to show/hide the window.
added an About PythonCard... menu item to the Debug menu
  displays version numbers and PythonCard project info
added SourceForgeTracker sample
  downloads XML from SourceForge tracker database to display
  Bug Reports and Feature Requests for the following projects:
  PyChecker, PyCrust, Python, PythonCard, wxPython. Additional
  projects can be added.
added conversions sample
  does Fahrenheit <-> Celsius and English <-> Morse Code
  conversions with a generic framework, so other conversions
  can be added
added tutorial.txt to docs
applications can now use the .pyw extension
  if you don't want an application to have a console window,
  then rename the application to .pyw, but don't change the
  file reference in the .rsrc.py file, leave that as .py
  as an example, you can change worldclock.py to worldclock.pyw


Release 0.3.1 2001-08-07
Fixed line ending problems with PyCrust files that causes 0.3 release to not work correctly on *nix systems. Also, removed the background.gif file from the proof sample which is not needed.

Release 0.3 2001-08-06
added changelog.txt and readme.txt files
menubar is now optional
    if a 'menubar' key is not found in a Stack's resource file then a menubar
    won't be created.
log.py documented
    proof.py updated to work with log.py changes
MessageEvent was removed from proof.py since message sending
    bewteen widgets is currently disabled
The working directory is changed to the directory of the main resource file
    such as minimal.rsrc.py when PythonCard starts up to avoid problems
    with filenames in the .rsrc.py files and any data files used by the
    application.
Property Editor and Shell windows can be overlapped by the main app window
    Due to a bug, the Message Watcher must still remain on top
added getCurrentBackground to PythonCardApp class
PythonCard now includes PyCrust (-s on command-line)
    interactivePrompt renamed to shell, all references changed
    PyCrustFrame class moved to debug.py along with test for PyCrust import
    PyCrust shell is version 0.3
PythonCard turned into PythonCardPrototype package
    All samples changed to use the new package naming
    All samples can now be run "standalone" so any _standalone.py
    files in the samples have been removed.
    __version__.py contains the current release number
    New cvs tree on SourceForge, the old proto tree is no longer used
PythonCard.py renamed to loader.py and loader.py overhauled
added deleteWidget method
added find, deprecated findByName
added turtle graphics sample
added a Property Editor (-p on command-line)
    due to time constraints, the Property Editor is only a property viewer
    in this release. You can use the set methods for widgets to change
    values inside the shell if you need to.
added gainFocus and loseFocus messages to all widgets
added StaticLine widget
ComponentSpec and AttributeSpec classes added to enhance parsing of spec.py



Release 0.2.1 2001-07-31
Added Edit menu with Cut, Copy, Paste, etc. to searchexplorer sample
Added replaceSelection method to TextField
Fixed setSize, setPosition
Added findFocus to Background
Fixed numerous functions that weren't returning values
Added classes ComponentSpec and AttributeSpec, enhanced parsing of spec.py
Added most of the remaining methods for TextField and List
Added minimal sample to use as a template
class_diagram_1.pdf removed from release to save space



Release 0.2 2001-07-29



Release 0.1 2001-07-26
Initial release

Revision: $Revision: 1.327 $
Date:     $Date: 2006/05/18 21:15:00 $
