HACKER Q&A
📣 ducktective

Is there an automatic GUI builder from structured data?


I'm looking for a tool or method to quickly bring-up a GUI based on incoming stream of structured data (JSON, MessagePack, etc).

Specifically, I'm looking for the `visualize` part of this pipeline:

`my | custom | data | feed | visualize`

Is there a method or a tool that does so? Such tool shall limit freedom and granularity of widget placement and instead, substitute it with ease-of-use and script-ability.

For plotting graphs, there is feedgnuplot [1]. Zenity [2] and yad [3] are kinda like this but for form generation.

[1]: https://github.com/dkogan/feedgnuplot

[2]: https://en.wikipedia.org/wiki/Zenity

[3]: https://github.com/v1cont/yad


  👤 greggirwin Accepted Answer ✓
I've done this quite a bit in Rebol and more recently in Red. The reason these languages work well for this is that you can dynamically build the GUI layout in their DSL for that, which is easy and concise. But you can also build the tree of faces directly (as the DSL does internally), if you need more control.

https://gitter.im/red/red/help is a good place to ask for ideas and examples.

Full disclosure, I'm on the Red team so my biases are pretty strong. ;^)


👤 austincheney
You can retool the GUI I wrote. The application is large but the GUI part is a single small file. It’s really just a single function with other supporting functions for events and a data model.

https://github.com/prettydiff/share-file-systems

No frameworks, dependencies, or other bullshit. The primary content is file system output but there are a bunch of different window types each supporting different content.

Documentation https://github.com/prettydiff/share-file-systems/blob/master...


👤 schwartzworld
Are you committed to a native gui? This feels like a great use case for ReactJS. React really shines with data-driven UIs, including charting. Plus then your output would be portable and easily shared.

👤 captn3m0
https://streamlit.io/ comes close?

👤 zerop
Are u looking for command line tool for your data?