Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Restructure docs landing page and some docs ordering. #2463

Merged
merged 8 commits into from
Mar 24, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
File renamed without changes.
1 change: 1 addition & 0 deletions changes/2463.doc.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
The documentation landing page and some documentation sections were reorganized.
11 changes: 11 additions & 0 deletions docs/_static/custom.css
Original file line number Diff line number Diff line change
@@ -1,3 +1,14 @@
div.table {
clear: both;
display: flex;
flex-wrap: wrap;
column-gap: 2rem;
}

div.table > * {
width: 20rem;
}

/* Draw lines around table edges. */
table.docutils {
border: 1px solid var(--color-background-border);
Expand Down
18 changes: 18 additions & 0 deletions docs/background/community.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
=========
Community
=========

Toga is part of the `BeeWare suite`_. You can talk to the community through:

* `@beeware@fosstodon.org on Mastodon`_
* `Discord`_
* The Toga `GitHub Discussions forum`_

We foster a welcoming and respectful community as described in our
`BeeWare Community Code of Conduct`_.

.. _BeeWare suite: https://beeware.org/
.. _@beeware@fosstodon.org on Mastodon: https://fosstodon.org/@beeware
.. _Discord: https://beeware.org/bee/chat/
.. _GitHub Discussions forum: https://github.com/beeware/toga/discussions
.. _BeeWare Community Code of Conduct: https://beeware.org/community/behavior/
2 changes: 1 addition & 1 deletion docs/background/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,5 @@ Background
:maxdepth: 2

project/index
topics/index
community
internals/index
6 changes: 3 additions & 3 deletions docs/background/project/faq.rst
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
.. _togas-and-yaks:

========================
Why "Toga"? Why the Yak?
========================
===
FAQ
===

So... why the name Toga?
========================
Expand Down
10 changes: 5 additions & 5 deletions docs/background/project/index.rst
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
=================
About the project
=================
==========
About Toga
==========

.. toctree::
:maxdepth: 1

philosophy
faq
Project philosophy <philosophy>
FAQ <faq>
success
releases
roadmap
172 changes: 99 additions & 73 deletions docs/background/project/roadmap.rst
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
========
Road Map
========
===============
Toga's Road Map
===============

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.
Expand All @@ -20,37 +20,67 @@ Input

Inputs are mechanisms for displaying and editing input provided by the user.

* ``ComboBox`` - A free entry text field that provides options (e.g., text with past choices)
Partially implemented widgets
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

* ``Table``

Mobile platforms don't provide a native "Table" widget; however, table-like
data could be rendered by using a :class:`~toga.DetailedList`, where the
title and subtitle are the "important" columns selected by the user, and
selecting a row on the table navigates to a sub-page showing the full row
detail.

- Cocoa: ``NSComboBox``
- GTK: ``Gtk.ComboBox.new_with_model_and_entry``
- iOS: ?
- Winforms: ``ComboBox``
- Android: ``Spinner``
* ``Tree``

As with Table, mobile platforms don't provide a native "Tree" widget; however,
we could use a similar approach to Table.

On Windows, the native widget doesn't provide support for more than one column. This
means we either need to make a special case on Windows for a "simple" tree; or we need
to form a composite widget that pairs the scrolling of a table with a tree.

* ``DateTimeInput`` - A widget for selecting a date and a time.

- Cocoa: ``NSDatePicker``
- GTK: `Gtk.Calendar` + ?
- iOS: ``UIDatePicker``
- Winforms: ``DateTimePicker``
- Android: ?
- Cocoa: ``NSDatePicker``
- GTK: ``Gtk.Calendar`` + ?
- iOS: ``UIDatePicker``

New widgets
^^^^^^^^^^^

* ``RadioButton`` - a set of mutually exclusive options.

Functionally, the use case of "select one from a list of options" can be met with a
:class:`~toga.Selection`; however, from a UI design perspective, a radio button is a
common design pattern.

See `this issue <https://github.com/beeware/toga/issues/2225>`__ for discussion of how
this widget may be implemented in a way that compliments existing widgets.

* ``ComboBox`` - A free entry text field that provides options (e.g., text with past choices)

- Cocoa: ``NSComboBox``
- GTK: ``Gtk.ComboBox.new_with_model_and_entry``
- iOS: ?
- Winforms: ``ComboBox``
- Android: ``Spinner``

* ``ColorInput`` - A widget for selecting a color

- Cocoa: ``NSColorWell``
- GTK: ``Gtk.ColorButton`` or ``Gtk.ColorSelection``
- iOS: ?
- Winforms: ?
- Android: ?
- Cocoa: ``NSColorWell``
- GTK: ``Gtk.ColorButton`` or ``Gtk.ColorSelection``
- iOS: ?
- Winforms: ?
- Android: ?

* ``SearchInput`` - A variant of ``TextField`` that is decorated as a search box.

- Cocoa: ``NSSearchField``
- GTK: ``Gtk.Entry``
- iOS: ``UISearchBar``?
- Winforms: ?
- Android: ?
- Cocoa: ``NSSearchField``
- GTK: ``Gtk.Entry``
- iOS: ``UISearchBar``?
- Winforms: ?
- Android: ?

Views
~~~~~
Expand All @@ -60,80 +90,76 @@ usually in a read-only manner.

* ``VideoView`` - Display a video

- Cocoa: ``AVPlayerView``
- GTK: Custom integration with ``GStreamer``
- iOS: ``MPMoviePlayerController``
- Winforms: ?
- Android: ?
- Cocoa: ``AVPlayerView``
- GTK: Custom integration 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
- iOS: ``MKMapView``
- Winforms: ?
- Android: ?

- Cocoa: ``PDFView``
- GTK: ?
- iOS: Integration with QuickLook?
- 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: ?
- Cocoa: ``NSForm``, or ``NSView`` with pre-set constraints.
- GTK:
- iOS:
- Winforms: ?
- Android: ?

* ``NavigationContainer`` - A container view that holds a navigable tree of sub-views

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.
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: ?
- Cocoa: No native control
- GTK: No native control; ``Gtk.HeaderBar`` in 3.10+
- iOS: ``UINavigationBar`` + ``NavigationController``
- Winforms: ?
- Android: ?

Miscellaneous
~~~~~~~~~~~~~
Other capabilities
------------------

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
* **Preferences** - Support for saving app preferences, and visualizing them in a
platform native way.

* Notification when updates are available
* **Notification** - A mechanism to display popup "toast"-style notifications

* **System tray icons** - Presenting an icon and/or menu in the platform's system tray -
possibly without having a main app window at all.

* **Licensing/registration** - Monetization is not a bad thing, and shouldn't be
mutually exclusive with open source.

* **Audio** - The ability to play sound files, either once off, or on a loop.

* **Cloud data access** - Traditional apps store all their files locally; however,
using cloud services or network resources is increasingly common, especially in
mobile apps. However, accessing cloud-based files can be very complicated; Toga
is in a position to provide a file-like API that abstracts accessing these APIs.

* Easy Licensing/registration of apps - Monetization is not a bad thing, and
shouldn't be mutually exclusive with open source.
* **QR code scanning** - The ability to scan QR codes and bar codes in an app, and
return the encoded data.

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.
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 and consoles.
Support for a more modern Windows API would be desirable, as would support for Qt.
45 changes: 0 additions & 45 deletions docs/how-to/backends/android.rst

This file was deleted.

9 changes: 0 additions & 9 deletions docs/how-to/backends/cocoa.rst

This file was deleted.

8 changes: 0 additions & 8 deletions docs/how-to/backends/gtk.rst

This file was deleted.

8 changes: 0 additions & 8 deletions docs/how-to/backends/iOS.rst

This file was deleted.

27 changes: 0 additions & 27 deletions docs/how-to/backends/index.rst

This file was deleted.

Loading
Loading