r4 - 01 May 2006 - 20:47:35 - PhilippeBossutYou are here: OSAF >  Projects Web  >  DevelopmentHome > ApplicationProject > GeekTalks > GeekTalk050106

CPIA Refactoring

  • Host: John
  • Date: Monday May 1st 2006 @ 2pm
  • Where: Whoville

Agenda and Notes

The objective of this Geek Talk session is to frame and focus the upcoming agenda for the CPIA rework.

What are the objectives of CPIA ?

The initial objectives (a general GUI block model usable for writting any kind of application) are certainly way too general. Right now, we are norrowing CPIA to work with Chandler and Chandler only. Within that new framework, the Chandler's team needs to restate what is expected of CPIA within Chandler.
  • CPIA is the GUI Framework of Chandler
  • CPIA is handling the MVC model for Chandler
  • CPIA is a thin layer on top of wxWidgets.

What are the objectives of restructuring CPIA ?

  • make easier for developers to contribute to Chandler
  • make easier for parcel writers to write parcels that integrate well in Chandler
  • make easy to swap out widgets with something else: consensus is that this is too ambitious because CPIA maps widgets pretty closely
  • clean up lots of loose ends that are making CPIA too complicated right now (suppress boilerplate from CPIA, have sensible default...)

What are the areas in need of an immediate rework ? What are the areas that need to be simplified ?

  • Overhaul the Event Dispatch [high priority]
  • Simplify the BranchPointBlocks [high priority]
  • Suppress blocks we don't use anymore (because replaced by Attribute Editor): [easy]
    • Button : used by Reid in toolbar!
    • Choice
    • ComboBox
    • EditText
    • HTML
    • RadioBox
    • StaticText : used for labelling!
  • MenuBar vs. Menu, looks like MenuBar could go away
  • Delete TabbedContainer and LayoutChooser [easy]
  • Make ScrolledContainer a BoxContainer with scroll style
  • ContextMenu should be a Menu
  • Brendan's hack simplification (see rev 6360) [take a look?]
  • Property sheet for block attributes [low priority]
    • would help drive multiple windows

  • Rename CPIA events --> commands [easy]
    • cpia events are identified by their block name, blockName --> eventName/commandName
  • rename childrenBlocks --> children childBlock [easy]
  • separate out Block <--> widget 1:1 mapping
    • BoxContainer wxPanel

  • Find block by name scoping (window scoped?)

  • Multiple windows
  • Copy UI/Delete UI
    • lingering pieces of code where we should be copying but are not
    • related to multiple windows
    • a task that could be finished off
    • would be used by schema evolution

What about documentation ?

  • More pictures associated with how things work would be helpful to understand the system

Frustrations

  • Propagating events, where an event is handled is mindboggling
    • Refresh code in particular
    • Lots of boilerplate
  • Painting and notification
    • Tools to help narrow down problems? xor tool for drawing
  • Too many cpia events happening
    • discovered by accident -- no easy ways of seeing that problem
  • Ramp is difficult
    • Could we be wrapping with defaults?
    • Structure the code so that it's easier to approach the code (vs dramatic refactorings of the architecture)

Next steps?

  • would like to brainstorm event dispatch: John, Alec, Bryan, Jeffrey (Thursday )
  • sanity check the UI, do a walk through and see if we are displaying the right things

Model View Controller

  • Two layers of MVC
    • domain model relationship to the rest of the system
      • model: collection/item
      • view: something that watches the model (onValueChanged)
    • CPIA layers have an mvc dynamic as well
      • model: block
      • view: widget
      • controller: widget
Edit | WYSIWYG | Attach | Printable | Raw View | Backlinks: Web, All Webs | History: r4 < r3 < r2 < r1 | More topic actions
 
Open Source Applications Foundation
Except where otherwise noted, this site and its content are licensed by OSAF under an Creative Commons License, Attribution Only 3.0.
See list of page contributors for attributions.