AndyObtiva / glimmer-dsl-libui

Glimmer DSL for LibUI - Prerequisite-Free Ruby Desktop Development Cross-Platform Native GUI Library - The Quickest Way From Zero To GUI - If You Liked Shoes, You'll Love Glimmer! - No need to pre-install any prerequisites. Just install the gem and have platform-independent GUI that just works on Mac, Windows, and Linux.
MIT License
497 stars 15 forks source link

Table overview for glimmer-dsl API, for libui? #1

Closed rubyFeedback closed 3 years ago

rubyFeedback commented 3 years ago

Hey there Andy,

I knew glimmer before already. Great project!

Recently kojix2 pointed out that you also support libui, which I think is great.

I also have a small hackish project, but mine is nowhere near as advanced as glimmer. Nonetheless, I would like to add support for the same DSL-like elements that glimmer uses, simply due to compatibility.

You already showcase some of them in the long README such as:

window('hello world', 300, 200, 1).show

Could you also add a HTML table to the same README here at https://github.com/AndyObtiva/glimmer-dsl-libui, to quickly show the API calls mapping from Libui to window? I don't strictly need the LibUI API (I can read it and adjust) but I would love to see which elements the glimmer-dsl-libui wrapper supports right now, so I can guarantee 1:1 mapping with my own project. For this a simple HTML table should suffice (really just a HTML table as overview, does not need any explanation, I would just love something visual to see what I still have to add).

Anyway, thanks for reading, and thanks for the good documentation - good documentation helps other folks out there a LOT!

AndyObtiva commented 3 years ago

Thank you for your inquiry. I am curious, what is your project's name and purpose?

What you asked for was already added yesterday to the API section as a bullet-point list. Still, if you insist on having a table, I'll look into reformatting as a table.

The Glimmer DSL is generally dynamic, meaning it does not hardcode every control supported. Instead, it translates syntax entered by the software engineer into the LibUI procedural equivalent. In other words, it supports all controls from the get-go minus control-specific details for controls that do not conform to the general conventions of libui (e.g. button works out of the box by relying on the general ControlProxy class because it follows all of the libui common conventions [its methods all start with button_), but vertical_box worked only after adding some specific logic that indicated its operations begin with box_ instead of vertical_box inside VerticalBoxProxy). In any case, I am adding explicitly supported controls to the bullet-point list mentioned above (or table once I reformat as per your inquiry).

Also, as stated in README.md, all keywords accept the same arguments that LibUI.new_keyword factory methods accept. In other words, window('hello world', 300, 200, 1) translates to LibUI.new_window('hello world', 300, 200, 1), which is why it has the same arguments. I will look into documenting those control creation arguments as well.

By the way, one reference you can refer to in the meantime (translating in your head to Glimmer syntax) is the Golang LibUI reference

Another reference, which is the highest authority is the libui C Header file.

That said, I do mention clearly that "Glimmer DSL for LibUI is in early alpha mode (only supports included examples)"

So, the most convenient Glimmer DSL for LibUI reference is actually the examples. You can simply copy and paste to your heart's content to build your own apps.

I hope that helps.

AndyObtiva commented 3 years ago

Done! API bullet-point list has been converted to a table.