yampa-gui
: Nested Dynamic Windowing System Library
#264
Replies: 3 comments 4 replies
-
It would be really cool to make this happen. Now, implementing a full GUI library is a big undertaking! There are some prior work that I think would be important to take into account. Some of it may offer insights of where pitfalls and opportunities may lie. Other may present tradeoffs:
|
Beta Was this translation helpful? Give feedback.
-
I'm turning this into a discussion for now. I think it's a better place to explore and propose ideas. Once we have a more concrete plan, we can create the issue or issues that will address the proposed change. |
Beta Was this translation helpful? Give feedback.
-
Some ideas around structuring GUIs with arrowised FRP (rewritten from an email sent to @ivanperez-keera):
|
Beta Was this translation helpful? Give feedback.
-
Inspired by windowing systems like Xmonad and the GUIs of the Yampa arcade, a robust, extensible, and dynamic windowing system would be a great addition to Yampa's capabilities.
I came up with a rough plan of capabilities a window must have along with a number of hurdles.
Capabilities:
When I was thinking it over, windows reminded me of dpSwitch. The hurdle I came across was routing and the nested nature of windows; how do we nest dpSwitches (child windows) inside another dpSwitch (the parent window)?
Another conceptual challenge i came across was data relevant to specific children. Here's a contrived but salient example:
This window can be described by the following tree:
In this example, the count is shared by all of the children of
window
(and all of its children too). When clicking the buttons, the count would be incremented or decremented, despite being nested so deeply in a child window. ButparentWindow
may not care about the statewindow
holds. And what ifwinCount
counted some other value alongsidecount
that neitherwin_l
norwin_r
needed to manage? What type would these windows have? How should the events of the children be routed in a clean and comprehensible (not to mention extensible and modifiable) manner?Once these issues related to the structure of the core systems are ironed out, a minimal working implementation could be written and features could be added from there (which all sounds like a lot of fun!).
I think Yampa has the capability to create an excellent interactive GUI system.
yampa-gloss
provides a great base to build this library off of.Beta Was this translation helpful? Give feedback.
All reactions