example #2: events

GOAL: zero app-specific platform code for:

· EV_Keyboard

· EV_Menu

· EV_Mouse

· EV_Toolbar

· all events are table-driven from XP code

BENEFITS:

· flexible keybindings (default, emacs, vi)

· easy localizations (including icons)

· zero work to keep platform UIs consistent

<<     <     ^     >     >>
cover page
people ask: what is AbiWord?
Open Source? are you insane?
cross-platform? are you insane?
at one level, he's right...
but people do it anyway...
we take another approach...
quick jargon review
3 approaches for XP GUI software
approach #1: platform ignorance
approach #1: platform ignorance (pros)
approach #1: platform ignorance (cons)
approach #2: platform experts
approach #2: platform experts (pros)
approach #2: platform experts (cons)
approach #3: practical hybrid
approach #3: practical hybrid (pros)
approach #3: practical hybrid (cons)
OK, so how does it work?
head start: use existing libraries
tree structure
common build environment
products that build, ship
the donut rule
designing a practical hybrid
inside-out perspective
so, design it that way!
the framework mirrors the design
just a little C++
example #1: GR_Graphics
example #2: events
practicality test: dialogs
comparing the approaches
comparing the approaches, cont.
adding up the scorecard
scorecard: quality of the product
scorecard: platforms supported
scorecard: executable size
scorecard: % XP (framework)
scorecard: % XP (application)
scorecard: developer support
questions?