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

Include library of standard icons #2441

Open
buddha314 opened this issue Mar 3, 2024 · 1 comment
Open

Include library of standard icons #2441

buddha314 opened this issue Mar 3, 2024 · 1 comment
Labels
enhancement New features, or improvements to existing features.

Comments

@buddha314
Copy link

What is the problem or limitation you are having?

Libraries like Material Design include several platform specific icons. Things like un/filled stars for ratings. Toga only provides the default icon (which is adorable, btw)

Describe the solution you'd like

The ability to do something like icon=toga.Icon.star-filled

Describe alternatives you've considered

downloading entire libraries to my project folder

Additional context

briefly discussed on Discord

@buddha314 buddha314 added the enhancement New features, or improvements to existing features. label Mar 3, 2024
@freakboy3742
Copy link
Member

Agreed that this is a gap that Toga should fill.

I can see three approaches that could be taken.

The first is to only wrap the icons for which there is a common platform-specific representation. I've fairly sure all the platforms have "standard" icons for features like "home", "share", "download", "upload", and so on; we would work out what the lowest common subset of those icons are, and provide a guaranteed Toga representation for those icons. The question is whether there actually is a common subset that is large enough to be useful. In this approach, if one platform doesn't provide a "star" icon, then we wouldn't provide a "star" icon as part of Toga's set.

The second approach is the same as the first, but use a "highest common factor" approach - that is, work out a spanning set of icons that we could wrap, and when one platform provides that icon but another doesn't, backfill that missing icon with a Toga-provided one. For this, we'd need to find a source of good open-source compatible, platform-specific icons. If one of the platforms provides a "star" icon, then we backfill all the other platforms with a version that fits that platform's style guide.

The third approach would be to ignore platform icons entirely, and provide integration with a third-party icon set, like Icons8 or FontAwesome. There's 2 issues with this approach: licensing (good icon sets usually have commercial terms), and distribution size (why ship 1000 icons when your app only uses 3?). To do this, I suspect we'd need to ship "toga-icons8" (for example) as a standalone package, and then provide additional tooling to make it easy to install specific icons from the complete set, rather than ship all icons ready-to-use (or maybe there's a on-demand approach

We could possibly support multiple approaches - say, option 2 and 3, where we provide a healthy set of builtin icons, and an expansion path for other icon sets. We could even support multiple icon sets - either with different iconset-specfic packages, or by using a single "toga-iconset" package that can be configured to use different icons sets by configuration or plugin.

tl;dr - I agree this would be a useful feature; the next step will be for someone to research what icons are available by default, and what options exist for platform-specific icon sets - especially if they're platform specific, and/or freely licensed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New features, or improvements to existing features.
Projects
None yet
Development

No branches or pull requests

2 participants