D 2017-11-20T20:21:21.711 L MIOGUI P 555acacca4316e81342babbf37bdd8557b705ff1 U aldo W 3290

MIOGUI

More Immediate Operation GUI - Develop GUI in scheme in incremental & immediate mode! Alpha version! Need some cleanup and some more widgets & demos... [/doc/tip/demos/|Show me demos and screenshots!]

Concepts

Immediate Mode GUI

This means that the user never has to deal with objects (anti-oop way ;). Some projects, written in C or C++ * [https://github.com/ocornut/imgui|dear imgui] * [http://sol.gfxile.net/imgui/|Sol on Immediate Mode GUIs] * [http://www.johno.se/book/imgui.html|IMGUI] * [http://perso.univ-lyon1.fr/thierry.excoffier/ZMW/|Zero Memory Widget] A Microsoft paper on the subject: * [https://www.microsoft.com/en-us/research/wp-content/uploads/2013/06/pldi097-burckhardt.pdf|It’s Alive! Continuous Feedback in UI Programming]

Cascading Stylesheets

* Based on [https://www.w3.org/Style/CSS/|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 [http://scheme.com|chez scheme] 9.4 and [https://pizzahack.eu/fossil/thunderchez|thunderchez] Required also [http://nanomsg.org|nanomsg-1.0], [https://libsdl.org|sdl-2.0.4], [https://www.cairographics.org|cairo] Checkout: You'll need [https://www.fossil-scm.org|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: [https://pizzahack.eu/fossil/miogui/tarball/miogui-latest.tar.gz|miogui-latest.tar.gz] There is a also a mirror on [https://github.com/ovenpasta/miogui|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-repl From 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

Contact

Email me to ovenpasta (at) pizzahack (point) eu To follow news subscribe to [https://pizzahack.eu/fossil/miogui/timeline.rss|RSS feed] Z 242a7003086bcc493065308358513457