Toga Roadmap#
Toga is a new project - we have lots of things that we’d like to do. If you’d like to contribute, you can provide a patch for one of these features.
Widgets#
The core of Toga is its widget set. Modern GUI apps have lots of native controls that need to be represented. The following widgets have no representation at present, and need to be added.
There’s also the task of porting widgets available on one platform to another platform.
Input#
Inputs are mechanisms for displaying and editing input provided by the user.
ComboBox - A free entry TextField that provides options (e.g., text with past choices)
Cocoa: NSComboBox
GTK: Gtk.ComboBox.new_with_model_and_entry
iOS: ?
Winforms: ComboBox
Android: Spinner
DateTimeInput - A widget for selecting a date and a time.
Cocoa: NSDatePicker
GTK: Gtk.Calendar + ?
iOS: UIDatePicker
Winforms: DateTimePicker
Android: ?
ColorInput - A widget for selecting a color
Cocoa: NSColorWell
GTK: Gtk.ColorButton or Gtk.ColorSelection
iOS: ?
Winforms: ?
Android: ?
SliderInput (H & V) - A widget for selecting a value from a range.
Cocoa: NSSlider
GTK: Done
iOS: UISlider
Winforms: ?
Android: ?
SearchInput - A variant of TextField that is decorated as a search box.
Cocoa: NSSearchField
GTK: Gtk.Entry
iOS: UISearchBar?
Winforms: ?
Android: ?
Views#
Views are mechanisms for displaying rich content, usually in a read-only manner.
VideoView - Display a video
Cocoa: AVPlayerView
GTK: Custom Integrate with GStreamer
iOS: MPMoviePlayerController
Winforms: ?
Android: ?
PDFView - Display a PDF document
Cocoa: PDFView
GTK: ?
iOS: ? Integration with QuickLook?
Winforms: ?
Android: ?
MapView - Display a map
Cocoa: MKMapView
GTK: Probably a Webkit.WebView pointing at Google Maps/OpenStreetMap.org
iOS: MKMapView
Winforms: ?
Android: ?
Container widgets#
Containers are widgets that can contain other widgets.
ButtonContainer - A layout for a group of radio/checkbox options
Cocoa: NSMatrix, or NSView with pre-set constraints.
GTK: Gtk.ListBox
iOS:
Winforms: ?
Android: ?
FormContainer - A layout for a “key/value” or “label/widget” form
Cocoa: NSForm, or NSView with pre-set constraints.
GTK:
iOS:
Winforms: ?
Android: ?
SectionContainer - (suggestions for better name welcome)
A container view that holds a small number of subviews, only one of which is visible at any given time. Each “section” has a name and icon. Examples of use: top level navigation in Safari’s preferences panel.
Cocoa: NSTabView
GTK: ?
iOS: ?
Winforms: ?
Android: ?
NavigationContainer - A container view that holds a navigable tree of subviews
Essentially a view that has a “back” button to return to the previous view in a hierarchy. Example of use: Top level navigation in the macOS System Preferences panel.
Cocoa: No native control
GTK: No native control; Gtk.HeaderBar in 3.10+
iOS: UINavigationBar + NavigationController
Winforms: ?
Android: ?
Dialogs and windows#
GUIs aren’t all about widgets - sometimes you need to pop up a dialog to query the user. Info, Error, Question, Confirm, StackTrace and Save File Dialogs have been implemented.
File Open - a mechanism for finding and specifying a file on disk.
Cocoa:
GTK: Gtk.FileChooserDialog
iOS:
Winforms: ?
Android: ?
Miscellaneous#
One of the aims of Toga is to provide a rich, feature-driven approach to app development. This requires the development of APIs to support rich features.
Preferences - Support for saving app preferences, and visualizing them in a platform native way.
Notification when updates are available
Easy Licensing/registration of apps - Monetization is not a bad thing, and shouldn’t be mutually exclusive with open source.
Platforms#
Toga currently has good support for Cocoa on macOS, GTK on Linux, Winforms on Windows, iOS and Android. Proof-of-concept support exists for single page web apps. Support for a more modern Windows API would be desirable.