GSoC 2008 - GridSizer Project

From Audacity Wiki
Revision as of 15:24, 14 June 2008 by James (talk | contribs) (Updates.)
Jump to: navigation, search



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

To Dos

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 for easier download.