Presentation at Oct'06 FSG Printing Summit
Portland Print Dialog
- Print Dialog as a Platform Service
Print Dialogs on Linux The Problem
- Print dialog typically provided by GUI toolkit
- Different applications use different toolkits
- Different toolkits use different print dialogs
- Result: Variety in print dialogs on any given system
- Some dialogs better than other
- Inconsistency is bad for usability
- Hard to add printer specific features
- Some dialogs expose PPD options
Portland Print Dialog A Solution
- Transfer Print Dialog out of the Toolkit into the Platform
- Just like MSWindows, MacOS, OS X do
- Single programming interface to Print Dialog for Linux
- All applications on same system using same print dialog
- Possible to introduce Printer Specific extensions
- Multiple implementations can co-exist
RealPolitik: Gnome and KDE unlikely to agree on single implementation
- Dialog will depend on users' choice of desktop environment
- Not ideal
- Multiple implementations increase support cost
- But better than existing fragmentation
Portland Print Dialog and LSB
Portland Print Dialog - Requirements
- Runtime dependency for application
- Extensible by application
- Extensible by printer driver
- PPD Options + More
- Extension mechanism must be implementation independent
- Work with both Gtk and KDE version
- Non-binary format preferable
- some form of XML + scripting
- Smooth learning curve
- something that isn't entirely new
- SDK for defining driver extension
Let's get started
- Chose extension technology
- Define common UI elements in print dialog
- Compare Gtk and Q print dialog, take a glance at OS X.
- Define extension points for applications and drivers
- We can learn a lot from OS X
- Define application API
- We have Gtk+ print , QPrinter and KPrinter to start from
Use OpenOffice.org, Firefox and Gimp as guinea pig
- Code, code, code
Shortcuts for Cheapskates
- Limit extensions to checkboxes and simple selections
- Allow printer specific extensions through stand alone dialog and Options button
- Printer driver must provide LSB binary for dialog
- Don't provide platform API to print dialog
- All applications shall use Qt or Gtk+
- Add common extension mechanism to Qt and Gtk+


