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

GUI Designer #2071

Open
eschan146 opened this issue Apr 23, 2024 · 2 comments
Open

GUI Designer #2071

eschan146 opened this issue Apr 23, 2024 · 2 comments
Labels
enhancement gui Related to arcade GUI (sub module arcade.gui)

Comments

@eschan146
Copy link

eschan146 commented Apr 23, 2024

Modern GUI toolkits such as Qt have an application that allows users to develop a user interface without code, such as Qt Creator.

It helps users quickly create a user interface without typing a lot of code, which can be very redundant.

Arcade's GUI library is missing this. Does anyone know if one is in progress? If not, I will begin development of such a tool.

One major problem in the development of this would be exporting the design. I am thinking implementing a parameter in UIManager that would accept a file that would contain details of the GUI.

(I am the same person that owns the account eschan145, but it was locked out from MFA)

@pushfoo
Copy link
Member

pushfoo commented Apr 24, 2024

TL;DR: I agree with the spirit of this issue, but it's not happening in 3.0

This project is a lot more complicated than it seems:

  1. Arcade's project goals do not include being a full GUI desktop framework
  2. For most full desktop applications, It would be easier to get PySide or other desktop framework bindings to work with Arcade-renderered code inset in a window:
    • There are many missing & broken features in pyglet's desktop integrations, including
      • Non-text clipboard interactions
      • Integrations of copy and paste with the UI
      • Multiple caret / text bugs
    • People have integrated PySide2 (LGPL Qt bindings) with pyglet before
    • The same ideas should apply with later PySide bindings if they still have a GL view widget
    • You could probably port this to arcade as well
    • The scheduling in Arcade might need tweaks
  3. The layout helpers we'd want in pyglet + arcade aren't there yet, but they might be in the future

However, this is a cool idea. It's worth prototyping as a separate repo since I think you'll have a much easier time controlling breaking changes as cameras continue to evolve.

One major problem in the development of this would be exporting the design.

The best solution (imo) for any UI building features would be to include the following:

  1. A core UI building function which takes a nested dictionary
  2. A file loader function which calls the above after processing these arguments:
    1. a path, filename, or file-like object to read
    2. an optional decoder Callable which specifies how to parse the file into a dict
  3. Use JSON or YAML as the default format, not XML

@eruvanos eruvanos added enhancement gui Related to arcade GUI (sub module arcade.gui) labels May 10, 2024
@eruvanos
Copy link
Member

I agree too @pushfoo:

  • Not planned for 3.0
  • Complex
  • Best option would be a prototype in a separate repo

Something which loads a file and returns a UIManager might be enough and does not require UIManager changes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement gui Related to arcade GUI (sub module arcade.gui)
Projects
None yet
Development

No branches or pull requests

3 participants