GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing wiki.wxpython.org — PythonCard08 - wxPyWiki Issues and To Do list for PythonCard release 0.8 Contents
IntroductionPythonCard Changes : 0.7.3.x -> 0.8 Release 0.8 is the first step towards making a 1.0 release. It is the release where we will do the most cleanup of old code that is no longer relevant and add the items that we must have for 1.0.
minimal requirements [DONE]
Python 2.3assert added to model.py
wxPython 2.5 to wxPython 2.6assert added to model.py
No abbreviationsPlease do not use abbreviations in module, class or method names. Fix all occurrences that exist now.
Fix all Singletons [PARTLY DONE]All singletons ( log.Log, config.Configuration, etc. ) must inherit from singleton.Singleton. This will require changing all usage of the singletons throughout the code.
Remove module functionsPythonCard should contain no module functions. Module functions, such as those currently found in log.py and config.py should be removed and all usage should be via the Singleton package.
Framework internal documentationCreate a script, PythonCard/docs/make.py, that will generate the api documentation for the PythonCard package and all subpackages/modules in PythonCard/docs/api.
package name change [DONE]Change
to
Change
to
Change to
Remove binding.py [DONE]
Remove dispatch.py [DONE]
Rename model.py -> application.py
Rename PythonCardApp -> Application [DONE]In PythonCardApp.init, get rid of temporary configuration option variables. - Assign self._config = config.Configuration.getInstance() - Use self._config.get<OptionName> to access configuration options.
Rename Background -> WindowNeed to decide if Window is the right name, is Frame, Form or Panel better? Don't forget to update all the .rsrc.py files, resourceEditor, and documentation once this change is in place. Need to discuss name change on the mailing list since this impacts a lot of stuff.
rename or remove stack references [DONE]In the rsrc.py files, maybe just remove it entirely or rename it to 'base' or something like that. We still need an overall container to hold the backgrounds (windows) list or do we just reduce that to a single background? There is also the list of strings.
revisit the resource file formatSee above. We could turn .rsrc.py into a normal Python module that we import rather than doing an eval. The module would have a variable = {...} format. We would have to drop the .rsrc.py form
Refactor config.py -> configuration.py [DONE]= Rewrite configuration.Configuration as a true Singleton = using the new-style 'class' methods, provide
Remove PythonCardObject and all references to it [DONE]
Remove ObjectMap and all references to it [DONE]
***replaced with array
Remove ObjectLookup and all references to it [DONE]
Change on_openBackground to initialize [DONE]
Rename pom.py -> component.py [DONE]
Unit TestsUnit tests fall into three categories: GUI Toolkit Tests - Using some (probably platform-specific) tool, test wxPython to ensure that wxWindows on platform X performs as expected. Framework Unit Tests - use 'unittest' to test the various classes and subsystems of the PythonCard framework - mostly non-gui stuff. Sample Tests - Use some combination of unittest and GUI test tools to ensure that the samples are well-behaved and perform as expected. Come up with a series of tests to verify everything is still working as expected as we make changes. This might be as simple as running a few specific samples and tools, but it would be great if we could implement unit tests for some types of tests.
ComponentLoader
Compound ComponentsMake Panel the basis for building custom, compound components.
blow away all old cruft code and comments [PARTLY DONE]
Wrap wxTimer [DONE]Wrap wxTimer as Timer class so we can be consistent with PythonCard naming conventions
rename idle event?Idle in wxWidgets is poorly named and quite misleading. It is the event that occurs when the event queue empties and has nothing to do with whether the machine is "idle". One typical place you will see a flurry of idle events is while moving the mouse and then beware if you have a long-running task called on idle. <wink> If a TextCtrl has focus then you will see idle events as the cursor blinks, but if the focus is on a control such as a Button you will only see one idle when the event queue empties and then no more until the user does something like move the mouse. If you are using wx.WakeUpIdle() then you will still want to use an idle event handler, but depending on the situation there might be better alternatives such as wx.CallAfter() or using a timer. A number of samples and tools use idle handlers and these should be reevaluated. I think that perhaps we should have a renamed method for WakeUpIdle or a special function to do CallAfter on whatever we rename idle too. I guess the event could be called eventQueueEmpty but I'm wary of using an event name with "Queue" in it since that is easy to misspell.
Enforce mixedCase method names [PARTLY DONE]find all CamelCase methods still in use in samples and tools and wrap as mixedCase and update the samples and tools
Document API Changes [ONGOING]make sure all API changes like this are explicitly called out in the changelog.txt file
Create a migration.html documentwe should adapt this document for a user migration.html guide. check that one into docs\html. The migration guide has to cover each change that will require users changing their code or environment to run PythonCard 0.8.
More mixedCase vs CamelCase [PARTLY DONE]decide whether to use class method aliases, instance var aliases, or wrap of CamelCase with mixedCase
Document all classes and methodsadd doc strings to methods
Document spec attributesadd document string to spec items, so attributes are documented
Switch to property() (wxPython 2.5) for attributes [DONE]
add property attributes to Background, CustomDialog, and Panel [PARTLY DONE]started for Background and CustomDialog in model.py - KEA 2004-04-13
Add MultipleSelectionList componentadd MultipleSelectionList for List components that supports multi-selection?!
Update changelog.txt [ONGOING]
Developers always provide initials in commentsthoroughly comment as RDS or KEA as we make changes
Horizontal whitespace
Update docs with stylesheets [PARTLY DONE]Andy Todd wants to update docs with style sheets http://www.halfcooked.com/pythoncard/
Change wxPython import statements [DONE]Change "from wxPython import wx" to "import wx" once we are on the 2.5.x track This should probably not be done as a global replace, but rather done file by file. see the wxPython migration guide. This is probably the single biggest amount of work that we will have to do. Most places will be a simple replace of "wx.wx" with "wx." and it will work with the new namespace. However certain files like turtle.py and bitmapcanvas.py or anything using DC methods has to go through the laborious change of x, y parameters to tuples (x, y). In fact, that is one of the API changes we have to decide to follow or not, but we probably will. I'm not positive, but some constants, most likely wxEVT kind of constants may still keep their wx prefix. Anyway, that's why we do this file by file, I suspect it will be difficult to track what we broke otherwise.
Remove irrelevant samples
Remove samples that we no longer want to highlight from the distribution, but leave them in cvs (proof?)
Create 'windows' sub-package [PARTLY DONE]add windows sub-package to PythonCard for standard "backgrounds" that people might want to import? same thing for common CustomDialogs this might be better to name templates with a sud-directory for windows and dialogs ? - KEA 2004-04-13
Rewrite samples as componentsRewrite the samples using the component model and composite components.
Rewrite the tools using componentsRewrite the tools using the component model and composite components.
update sound.py to use wx.Sound [PARTLY DONE]It looks like we can still only play sound files in .wav format. sound.py only supports playing sound from a file, so we might want to expand its capabilities.
decide whether turtle module should use tuplesshould the turtle.py module and sample use tuples like BitmapCanvas or keep logo-style x, y parameters? Right now I'm inclined to leave them as x, y to make it more like Logo turtle graphics, but it means when BitmapCanvas drawing is combined with turtle drawing calls it could get confusing, so maybe it would be better to always use tuples?
add additional Background events [PARTLY DONE]I've added a deactivate event. I was going to add events for when a window is restored from a minimize and reduced from a maximize but all I'm seeing are move and size events. I don't know if that is a wxWidgets bug or a problem with the PythonCard framework, so I'll have to make a minimal wxPython sample to test before proceeding further.
Revisit the old to do listrevisit the to do list and decide which items will and won't make it
Rename res.py -> resource.py [DONE]
cleanup except blocks where pass is usedMany try/except blocks in the framework just call pass in the except block and errors need better handling.
switch to built-in exceptions when appropriateWe have a error.py module with some custom exceptions, but in some cases these aren't needed and it would be better to use Python built-in exceptions instead.
adopt more structured version scheme?See wxPython version info. We could use a tuple for major and minor versions in addition or instead of a plain string.
make StatusBar a direct subclass [DONE]also added createStatusBar method to Background and CustomDialog to enable applications to create their own more complex StatusBars
add ToolBar support similar to StatusBar
remove Ptr classes from isinstance checks [DONE]
add About PythonCard dialog to codeEditor and resourceEditor [DONE]Put Debug About dialog in the codeEditor and resourceEditor to simplify users getting version info. Refactor the About dialog, maybe sticking it in its own module or in util.py
make a more elaborate About PythonCard dialog [CONTEST IN PROGRESS]
Perhaps we should even have a separate debug info tool that would list other useful info such the users PYTHONPATH, environment variables, and other system info that could provide clues.
refactor WidgetDict to a direct subclass of dict instead of UserDictThorougly test to make sure no functionality was lost.
figure out where extra Flush calls are coming from [DONE]I'm seeing this type of message way too often in the shell while using the codeEditor. Is it in PyCrust or something in PythonCard/debug.py?! It is getting triggered during the autoComplete list display, so you can just type os.getcwd() and after that sequence 2 debug messages will show up. 13:19:49: Debug: ..\..\src\msw\clipbrd.cpp(561): 'OleFlushClipboard' failed with
remove or fix command events for Image, BitmapCanvas, Static...?We have the 'command' event type bound to all components, but command doesn't work for components that don't have some form of wxPython Command event like mouseClick or select. mouse event are a bit tricky with these types of controls so that on GTK you might not even receive a mouse down if the underlying control isn't native. In that case, say Linux/GTK the mouse event will be seen by the underlying panel. I suppose we might be able to bind the panel events and then manually hook them up to the right component, but that still won't give us command events for those controls. I suppose we could use the mouseUp for command as long as we the mouse event binding right.
figure out if skip handlers can be removed from dialogs [DONE]There are a number of CustomDialogs that have handlers for the OK and Cancel buttons and do nothing more than call event.skip(). I think this requirement went away as soon as we started providing OK and Cancel ids for the dialogs, but I need to double-check and then update all the findDialogs...
standardize runScriptutil.py should contain the standard runScript used by the samples launcher, codeEditor, resourceEditor, findfiles, etc. Need to get the quoting right on all platforms.
add TwistedApplication and samples [DONE]
add statusbar subclass example
unit tests for util.py
add wxPythonBugs dir or cvs treeraw wxPython minimal samples to show particular bugs that impact PythonCard. Provide links to relevant bug reports and mailing list messages and remove bug sample once the issue is fixed.
fix memory leak in event dispatch [DONE]
Rewrite event subsystem [IN PROGRESS]
generalize resourceEditor component handling [PARTLY DONE]
various other resourceEditor fixes
fix drag and resize logic in resourceEditor
fix addMethodNeed to make sure a handler is bound to the right components after it is added. Maybe addMethod will take a list of objects to call _bindEvents on. See longer comment in addMethod source in model.py
Also seePythonCard08 (last edited 2008-03-11 10:50:22 by localhost) |
| You are visitor 01402520 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |