MIOGUI
More Immediate Operation GUI - Develop GUI in scheme in incremental & immediate mode!
Alpha version! Need some cleanup and some more widgets & demos...
Show me demos and screenshots!
Concepts
Immediate Mode GUI
This means that the user never has to deal with objects (anti-oop way ;).
Immediate Mode GUI
This means that the user never has to deal with objects (anti-oop way ;).Some projects, written in C or C++
A Microsoft paper on the subject:
Cascading Stylesheets
- Based on CSS
- CSS3 Flexbox layouts!
- CSS3 Transitions ;)
- CSS3 grid (planned)
Scheme
- Simple but powerful language
- REPL (Read Eval Print Loop) means you don't need to restart the program for seeing changes.
- We actually support chez scheme but it's possible to port to others schemes
Network REPL
- Nanomsg library allows to connect at any moment from anywhere to the runtime to modify the code on the fly without loosing state.
Cairo
- Nice graphics with simple and powerful API
- We could port the thing to opengl, GDI+, Xcb if needed
SDL2
- Powerful and portable abstraction for handling video and input and much more
- Could be replaced with some other system like Xcb, Win32 API, etc
- Why not send the frame to a web client and handle the ui with javascript. This could be done with cairo rendering an svg or sending directy some html.
Get & Install
You'll need chez scheme 9.4 and thunderchez Required also nanomsg-1.0, sdl-2.0.4, cairoCheckout: You'll need fossil
fossil clone https://pizzahack.eu/fossil/miogui miogui.fossil mkdir miogui && cd miogui && fossil open ../miogui.fossil
You can also download the latest code as a tarball: miogui-latest.tar.gz
There is a also a mirror on github.com
git clone https://github.com/ovenpasta/miogui.git
Remember to setup thunderchez properly.
Then run:
# I recommend this limit setting because our sofware is alpha. If you run into a non-tail recursion you can lock your system :) ulimit -Sv 1000000 scheme demos/demo1.ss # or scheme demos/demo2.ss ...
Now switch to other console and type
/path/to/miogui/remote-replFrom there you can modify the code. You ideally want to run that from inside emacs M-x run-scheme and send code with C-x C-e or C-c C-e