GSoC 2008 - GridSizer Project
Drag and Drop roughly works for wxWindows and wxSizers. There is a test-application to have a look at the progress status. The code actually is sent http://www.hildensia.de/gsoc08
Edit Hint: This is a sketch, to be refined
- Get familiar with (a) wxAUI (b) Audacity toolbar and dragging behaviour. The wxAUI side will involve a small test app. Probably it makes sense to do this as an upgrade to the wave-page in the wxTable test app, i.e. add a dock for toolbars rather than as a totally new app. Overall aim is to identify any barriers to using wxAUI in place of existing toolbar docking in Audacity. May require liason with Leland around accessibility - if wxAUI kills accessibility for toolbars it means we can't use it in Audacity.
- Write report on wxAUI. [html format with screenshots preferred].
- Toolbar with draggable buttons in test app. Confirm that mouse-overs still work and that button clicks still can be acted on.
- wxTableCtrl in a scroller.
- wxTableCtrl in a wxTableCtrl.
- wxTableCtrl item-swap-without-releasing-mouse.
- Discuss and refine hooks for wxTableCtrl behaviour.
- Discuss and refine mouse-over behaviours to show that dragging is possible.
- Discuss similarities/differences between wxTableCtrl and existing wxListCtrl in report mode and wxDataViewCtrl.
- Discuss relation to wxAUI and to wxRL. After the mid-term a decision will be needed on whether to try to work closely with wxRL, wxWidgets, neither or both during GSoC.
- Make test app more polished - this is mainly about making nicer bitmaps for the cell contents, adding more buttons to switch and select modes of operation.
- Ensure we support both 'wxDragGridSizer' (rows all expand together) and 'wxFlexGridSizer' (only current row expands) modes. Ensure we can separately enable/disable swapping and sizing behaviour.
- Full wxWidgets grade documentation on wxTableCtrl and the testapp. This work may benefit from a prior investigation of what tools wxWidgets use in producing their documentation.
9th June 2008
Issues currently under discussion:
- It's probably going to be called TableCtrl, since it has qualities of both a sizer and a Window.
- Use of a global object (or static) for passing start of drag. Is this likely to cause a problem? Needs some investigation.
- Repaint not taking place when expected.
- Provision of standard methods such as swapping two items, so that the user of TableCtrl doesn't need to write them himself.
- Currently using drag-and-drop. Will we be able to get existing Audacity behaviour of swapping tracks without releasing the mouse button?
- Whether windows within windows within TableCtrl need to have the drag behavior, or just the first level?
- Behaviour of dragging when within a wxScrolledWindow.
14th June 2008
Latest source now addresses these issues:
- wx2.9 macro use made conditional so that can be built with wx2.8.7
- Some stub functions now return values, to compile under MSVC (only warnings under gcc).
- Copy constructors added to work around DECLARE_NO_COPY_CLASS().
- WXDLLEXPORT added so that library can be compiled as an intermediate between wx and application, rather than being built into wx (needed for early Audacity deployment).
- Style of function calls changed to match updated CodingStandards
- Now as a tar.zip for easier download.