<h1>MIOGUI</h1>

More Immediate Operation GUI - Develop GUI in scheme in incremental & immediate mode!

Alpha version! Need some cleanup and some more widgets & demos...

<h2>Concepts<h2>
<h3>Immediate Mode GUI</h3>
This means that the user never has to deal with objects (anti-oop way ;).

Some projects, written in C or C++
  *  imgui]
  *  on Immediate Mode GUIs]
  *
  *  Memory Widget]

A Microsoft paper on the subject:
  *  Alive! Continuous Feedback in UI Programming]


<h3>Cascading Stylesheets</h3>
  *  Based on
  *  Basic box model things, TODO: document supported attributes and selectors<h2>
  *  Transitions ;)

<h3>Scheme</h3>
  *  Simple but powerful language
  *  REPL (Read Eval Print Loop) means you don't need to restart the program for seeing changes on your program.
  *  We actually support chez scheme but it's possible to port to others schemes

<h3>Network REPL</h3>
  *  Nanomsg library allows to connect at any moment from anywhere to the runtime to modify the code on the fly without loosing state.

<h3>Cairo</h3>
  *  Nice graphics with simple and powerful API
  *  We could port the thing to opengl, GDI+, Xcb if needed

<h3>SDL2</h3>
  *  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.


<h2>Get & Install</h2>
You'll need scheme] 9.4 and
Required also

Checkout: You'll need

<verbatim>
fossil clone miogui.fossil
mkdir miogui && cd miogui && fossil open ../miogui.fossil
</verbatim>

You can also download the latest code as a tarball:

Remember to setup thunderchez properly.

Then run:
<verbatim>
# 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 500000
scheme miogui.ss
</verbatim>

Now switch to other console and type
<verbatim>

</verbatim>
From there you can modify the code.
You ideally want to run that from inside emacs M-x run-scheme</em> and send code with C-x C-e or C-c C-e

To follow news subscribe to feed]