Artifact
3c68dc2b50686a01a3ccd6b0a7f0d07014e05a8a:
Wiki page
[
MIOGUI] by
aldo
2016-09-07 14:07:55.
0000: 44 20 32 30 31 36 2d 30 39 2d 30 37 54 31 34 3a D 2016-09-07T14:
0010: 30 37 3a 35 35 2e 34 38 33 0a 4c 20 4d 49 4f 47 07:55.483.L MIOG
0020: 55 49 0a 50 20 31 64 36 61 31 64 30 65 35 35 61 UI.P 1d6a1d0e55a
0030: 33 64 32 62 36 32 33 36 62 32 61 65 30 63 31 32 3d2b6236b2ae0c12
0040: 34 34 64 30 34 32 39 37 38 31 30 62 30 0a 55 20 44d04297810b0.U
0050: 61 6c 64 6f 0a 57 20 33 30 34 39 0a 3c 68 31 3e aldo.W 3049.<h1>
0060: 4d 49 4f 47 55 49 3c 2f 68 31 3e 0d 0a 0d 0a 4d MIOGUI</h1>....M
0070: 6f 72 65 20 49 6d 6d 65 64 69 61 74 65 20 4f 70 ore Immediate Op
0080: 65 72 61 74 69 6f 6e 20 47 55 49 20 2d 20 44 65 eration GUI - De
0090: 76 65 6c 6f 70 20 47 55 49 20 69 6e 20 73 63 68 velop GUI in sch
00a0: 65 6d 65 20 69 6e 20 69 6e 63 72 65 6d 65 6e 74 eme in increment
00b0: 61 6c 20 26 20 69 6d 6d 65 64 69 61 74 65 20 6d al & immediate m
00c0: 6f 64 65 21 0d 0a 0d 0a 41 6c 70 68 61 20 76 65 ode!....Alpha ve
00d0: 72 73 69 6f 6e 21 20 4e 65 65 64 20 73 6f 6d 65 rsion! Need some
00e0: 20 63 6c 65 61 6e 75 70 20 61 6e 64 20 73 6f 6d cleanup and som
00f0: 65 20 6d 6f 72 65 20 77 69 64 67 65 74 73 20 26 e more widgets &
0100: 20 64 65 6d 6f 73 2e 2e 2e 0d 0a 0d 0a 3c 68 32 demos.......<h2
0110: 3e 43 6f 6e 63 65 70 74 73 3c 68 32 3e 0d 0a 3c >Concepts<h2>..<
0120: 68 33 3e 49 6d 6d 65 64 69 61 74 65 20 4d 6f 64 h3>Immediate Mod
0130: 65 20 47 55 49 3c 2f 68 33 3e 0d 0a 54 68 69 73 e GUI</h3>..This
0140: 20 6d 65 61 6e 73 20 74 68 61 74 20 74 68 65 20 means that the
0150: 75 73 65 72 20 6e 65 76 65 72 20 68 61 73 20 74 user never has t
0160: 6f 20 64 65 61 6c 20 77 69 74 68 20 6f 62 6a 65 o deal with obje
0170: 63 74 73 20 28 61 6e 74 69 2d 6f 6f 70 20 77 61 cts (anti-oop wa
0180: 79 20 3b 29 2e 0d 0a 0d 0a 53 6f 6d 65 20 70 72 y ;).....Some pr
0190: 6f 6a 65 63 74 73 2c 20 77 72 69 74 74 65 6e 20 ojects, written
01a0: 69 6e 20 43 20 6f 72 20 43 2b 2b 0d 0a 20 20 2a in C or C++.. *
01b0: 20 20 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 [https://githu
01c0: 62 2e 63 6f 6d 2f 6f 63 6f 72 6e 75 74 2f 69 6d b.com/ocornut/im
01d0: 67 75 69 7c 64 65 61 72 20 69 6d 67 75 69 5d 0d gui|dear imgui].
01e0: 0a 20 20 2a 20 20 5b 68 74 74 70 3a 2f 2f 73 6f . * [http://so
01f0: 6c 2e 67 66 78 69 6c 65 2e 6e 65 74 2f 69 6d 67 l.gfxile.net/img
0200: 75 69 2f 7c 53 6f 6c 20 6f 6e 20 49 6d 6d 65 64 ui/|Sol on Immed
0210: 69 61 74 65 20 4d 6f 64 65 20 47 55 49 73 5d 0d iate Mode GUIs].
0220: 0a 20 20 2a 20 20 5b 68 74 74 70 3a 2f 2f 77 77 . * [http://ww
0230: 77 2e 6a 6f 68 6e 6f 2e 73 65 2f 62 6f 6f 6b 2f w.johno.se/book/
0240: 69 6d 67 75 69 2e 68 74 6d 6c 7c 49 4d 47 55 49 imgui.html|IMGUI
0250: 5d 0d 0a 20 20 2a 20 20 5b 68 74 74 70 3a 2f 2f ].. * [http://
0260: 70 65 72 73 6f 2e 75 6e 69 76 2d 6c 79 6f 6e 31 perso.univ-lyon1
0270: 2e 66 72 2f 74 68 69 65 72 72 79 2e 65 78 63 6f .fr/thierry.exco
0280: 66 66 69 65 72 2f 5a 4d 57 2f 7c 5a 65 72 6f 20 ffier/ZMW/|Zero
0290: 4d 65 6d 6f 72 79 20 57 69 64 67 65 74 5d 0d 0a Memory Widget]..
02a0: 20 0d 0a 41 20 4d 69 63 72 6f 73 6f 66 74 20 70 ..A Microsoft p
02b0: 61 70 65 72 20 6f 6e 20 74 68 65 20 73 75 62 6a aper on the subj
02c0: 65 63 74 3a 0d 0a 20 20 2a 20 20 5b 68 74 74 70 ect:.. * [http
02d0: 73 3a 2f 2f 77 77 77 2e 6d 69 63 72 6f 73 6f 66 s://www.microsof
02e0: 74 2e 63 6f 6d 2f 65 6e 2d 75 73 2f 72 65 73 65 t.com/en-us/rese
02f0: 61 72 63 68 2f 77 70 2d 63 6f 6e 74 65 6e 74 2f arch/wp-content/
0300: 75 70 6c 6f 61 64 73 2f 32 30 31 33 2f 30 36 2f uploads/2013/06/
0310: 70 6c 64 69 30 39 37 2d 62 75 72 63 6b 68 61 72 pldi097-burckhar
0320: 64 74 2e 70 64 66 7c 49 74 e2 80 99 73 20 41 6c dt.pdf|It...s Al
0330: 69 76 65 21 20 43 6f 6e 74 69 6e 75 6f 75 73 20 ive! Continuous
0340: 46 65 65 64 62 61 63 6b 20 69 6e 20 55 49 20 50 Feedback in UI P
0350: 72 6f 67 72 61 6d 6d 69 6e 67 5d 0d 0a 20 20 0d rogramming].. .
0360: 0a 0d 0a 3c 68 33 3e 43 61 73 63 61 64 69 6e 67 ...<h3>Cascading
0370: 20 53 74 79 6c 65 73 68 65 65 74 73 3c 2f 68 33 Stylesheets</h3
0380: 3e 0d 0a 20 20 2a 20 20 42 61 73 65 64 20 6f 6e >.. * Based on
0390: 20 5b 68 74 74 70 73 3a 2f 2f 77 77 77 2e 77 33 [https://www.w3
03a0: 2e 6f 72 67 2f 53 74 79 6c 65 2f 43 53 53 2f 7c .org/Style/CSS/|
03b0: 43 53 53 5d 3c 68 33 3e 0d 0a 20 20 2a 20 20 42 CSS]<h3>.. * B
03c0: 61 73 69 63 20 62 6f 78 20 6d 6f 64 65 6c 20 74 asic box model t
03d0: 68 69 6e 67 73 2c 20 54 4f 44 4f 3a 20 64 6f 63 hings, TODO: doc
03e0: 75 6d 65 6e 74 20 73 75 70 70 6f 72 74 65 64 20 ument supported
03f0: 61 74 74 72 69 62 75 74 65 73 20 61 6e 64 20 73 attributes and s
0400: 65 6c 65 63 74 6f 72 73 3c 68 32 3e 0d 0a 20 20 electors<h2>..
0410: 2a 20 20 54 72 61 6e 73 69 74 69 6f 6e 73 20 3b * Transitions ;
0420: 29 0d 0a 0d 0a 3c 68 33 3e 53 63 68 65 6d 65 3c )....<h3>Scheme<
0430: 2f 68 33 3e 0d 0a 20 20 2a 20 20 53 69 6d 70 6c /h3>.. * Simpl
0440: 65 20 62 75 74 20 70 6f 77 65 72 66 75 6c 20 6c e but powerful l
0450: 61 6e 67 75 61 67 65 0d 0a 20 20 2a 20 20 52 45 anguage.. * RE
0460: 50 4c 20 28 52 65 61 64 20 45 76 61 6c 20 50 72 PL (Read Eval Pr
0470: 69 6e 74 20 4c 6f 6f 70 29 20 6d 65 61 6e 73 20 int Loop) means
0480: 79 6f 75 20 64 6f 6e 27 74 20 6e 65 65 64 20 74 you don't need t
0490: 6f 20 72 65 73 74 61 72 74 20 74 68 65 20 70 72 o restart the pr
04a0: 6f 67 72 61 6d 20 66 6f 72 20 73 65 65 69 6e 67 ogram for seeing
04b0: 20 63 68 61 6e 67 65 73 20 6f 6e 20 79 6f 75 72 changes on your
04c0: 20 70 72 6f 67 72 61 6d 2e 0d 0a 20 20 2a 20 20 program... *
04d0: 57 65 20 61 63 74 75 61 6c 6c 79 20 73 75 70 70 We actually supp
04e0: 6f 72 74 20 63 68 65 7a 20 73 63 68 65 6d 65 20 ort chez scheme
04f0: 62 75 74 20 69 74 27 73 20 70 6f 73 73 69 62 6c but it's possibl
0500: 65 20 74 6f 20 70 6f 72 74 20 74 6f 20 6f 74 68 e to port to oth
0510: 65 72 73 20 73 63 68 65 6d 65 73 0d 0a 0d 0a 3c ers schemes....<
0520: 68 33 3e 4e 65 74 77 6f 72 6b 20 52 45 50 4c 3c h3>Network REPL<
0530: 2f 68 33 3e 0d 0a 20 20 2a 20 20 4e 61 6e 6f 6d /h3>.. * Nanom
0540: 73 67 20 6c 69 62 72 61 72 79 20 61 6c 6c 6f 77 sg library allow
0550: 73 20 74 6f 20 63 6f 6e 6e 65 63 74 20 61 74 20 s to connect at
0560: 61 6e 79 20 6d 6f 6d 65 6e 74 20 66 72 6f 6d 20 any moment from
0570: 61 6e 79 77 68 65 72 65 20 74 6f 20 74 68 65 20 anywhere to the
0580: 72 75 6e 74 69 6d 65 20 74 6f 20 6d 6f 64 69 66 runtime to modif
0590: 79 20 74 68 65 20 63 6f 64 65 20 6f 6e 20 74 68 y the code on th
05a0: 65 20 66 6c 79 20 77 69 74 68 6f 75 74 20 6c 6f e fly without lo
05b0: 6f 73 69 6e 67 20 73 74 61 74 65 2e 0d 0a 0d 0a osing state.....
05c0: 3c 68 33 3e 43 61 69 72 6f 3c 2f 68 33 3e 0d 0a <h3>Cairo</h3>..
05d0: 20 20 2a 20 20 4e 69 63 65 20 67 72 61 70 68 69 * Nice graphi
05e0: 63 73 20 77 69 74 68 20 73 69 6d 70 6c 65 20 61 cs with simple a
05f0: 6e 64 20 70 6f 77 65 72 66 75 6c 20 41 50 49 0d nd powerful API.
0600: 0a 20 20 2a 20 20 57 65 20 63 6f 75 6c 64 20 70 . * We could p
0610: 6f 72 74 20 74 68 65 20 74 68 69 6e 67 20 74 6f ort the thing to
0620: 20 6f 70 65 6e 67 6c 2c 20 47 44 49 2b 2c 20 58 opengl, GDI+, X
0630: 63 62 20 69 66 20 6e 65 65 64 65 64 0d 0a 0d 0a cb if needed....
0640: 3c 68 33 3e 53 44 4c 32 3c 2f 68 33 3e 0d 0a 20 <h3>SDL2</h3>..
0650: 20 2a 20 20 50 6f 77 65 72 66 75 6c 20 61 6e 64 * Powerful and
0660: 20 70 6f 72 74 61 62 6c 65 20 61 62 73 74 72 61 portable abstra
0670: 63 74 69 6f 6e 20 66 6f 72 20 68 61 6e 64 6c 69 ction for handli
0680: 6e 67 20 76 69 64 65 6f 20 61 6e 64 20 69 6e 70 ng video and inp
0690: 75 74 20 61 6e 64 20 6d 75 63 68 20 6d 6f 72 65 ut and much more
06a0: 0d 0a 20 20 2a 20 20 43 6f 75 6c 64 20 62 65 20 .. * Could be
06b0: 72 65 70 6c 61 63 65 64 20 77 69 74 68 20 73 6f replaced with so
06c0: 6d 65 20 6f 74 68 65 72 20 73 79 73 74 65 6d 20 me other system
06d0: 6c 69 6b 65 20 58 63 62 2c 20 57 69 6e 33 32 20 like Xcb, Win32
06e0: 41 50 49 2c 20 65 74 63 0d 0a 20 20 2a 20 20 57 API, etc.. * W
06f0: 68 79 20 6e 6f 74 20 73 65 6e 64 20 74 68 65 20 hy not send the
0700: 66 72 61 6d 65 20 74 6f 20 61 20 77 65 62 20 63 frame to a web c
0710: 6c 69 65 6e 74 20 61 6e 64 20 68 61 6e 64 6c 65 lient and handle
0720: 20 74 68 65 20 75 69 20 77 69 74 68 20 6a 61 76 the ui with jav
0730: 61 73 63 72 69 70 74 2e 20 54 68 69 73 20 63 6f ascript. This co
0740: 75 6c 64 20 62 65 20 64 6f 6e 65 20 77 69 74 68 uld be done with
0750: 20 63 61 69 72 6f 20 72 65 6e 64 65 72 69 6e 67 cairo rendering
0760: 20 61 6e 20 73 76 67 20 6f 72 20 73 65 6e 64 69 an svg or sendi
0770: 6e 67 20 64 69 72 65 63 74 79 20 73 6f 6d 65 20 ng directy some
0780: 68 74 6d 6c 2e 0d 0a 0d 0a 0d 0a 3c 68 32 3e 47 html.......<h2>G
0790: 65 74 20 26 20 49 6e 73 74 61 6c 6c 3c 2f 68 32 et & Install</h2
07a0: 3e 0d 0a 59 6f 75 27 6c 6c 20 6e 65 65 64 20 5b >..You'll need [
07b0: 68 74 74 70 3a 2f 2f 73 63 68 65 6d 65 2e 63 6f http://scheme.co
07c0: 6d 7c 63 68 65 7a 20 73 63 68 65 6d 65 5d 20 39 m|chez scheme] 9
07d0: 2e 34 20 61 6e 64 20 5b 68 74 74 70 73 3a 2f 2f .4 and [https://
07e0: 70 69 7a 7a 61 68 61 63 6b 2e 65 75 2f 66 6f 73 pizzahack.eu/fos
07f0: 73 69 6c 2f 74 68 75 6e 64 65 72 63 68 65 7a 7c sil/thunderchez|
0800: 74 68 75 6e 64 65 72 63 68 65 7a 5d 0d 0a 52 65 thunderchez]..Re
0810: 71 75 69 72 65 64 20 61 6c 73 6f 20 5b 68 74 74 quired also [htt
0820: 70 3a 2f 2f 6e 61 6e 6f 6d 73 67 2e 6f 72 67 7c p://nanomsg.org|
0830: 6e 61 6e 6f 6d 73 67 2d 31 2e 30 5d 2c 20 5b 68 nanomsg-1.0], [h
0840: 74 74 70 73 3a 2f 2f 6c 69 62 73 64 6c 2e 6f 72 ttps://libsdl.or
0850: 67 7c 73 64 6c 2d 32 2e 30 2e 34 5d 2c 20 5b 68 g|sdl-2.0.4], [h
0860: 74 74 70 73 3a 2f 2f 77 77 77 2e 63 61 69 72 6f ttps://www.cairo
0870: 67 72 61 70 68 69 63 73 2e 6f 72 67 7c 63 61 69 graphics.org|cai
0880: 72 6f 5d 0d 0a 0d 0a 43 68 65 63 6b 6f 75 74 3a ro]....Checkout:
0890: 20 59 6f 75 27 6c 6c 20 6e 65 65 64 20 5b 68 74 You'll need [ht
08a0: 74 70 73 3a 2f 2f 77 77 77 2e 66 6f 73 73 69 6c tps://www.fossil
08b0: 2d 73 63 6d 2e 6f 72 67 7c 66 6f 73 73 69 6c 5d -scm.org|fossil]
08c0: 0d 0a 0d 0a 3c 76 65 72 62 61 74 69 6d 3e 0d 0a ....<verbatim>..
08d0: 66 6f 73 73 69 6c 20 63 6c 6f 6e 65 20 68 74 74 fossil clone htt
08e0: 70 73 3a 2f 2f 70 69 7a 7a 61 68 61 63 6b 2e 65 ps://pizzahack.e
08f0: 75 2f 66 6f 73 73 69 6c 2f 6d 69 6f 67 75 69 20 u/fossil/miogui
0900: 6d 69 6f 67 75 69 2e 66 6f 73 73 69 6c 0d 0a 6d miogui.fossil..m
0910: 6b 64 69 72 20 6d 69 6f 67 75 69 20 26 26 20 63 kdir miogui && c
0920: 64 20 6d 69 6f 67 75 69 20 26 26 20 66 6f 73 73 d miogui && foss
0930: 69 6c 20 6f 70 65 6e 20 2e 2e 2f 6d 69 6f 67 75 il open ../miogu
0940: 69 2e 66 6f 73 73 69 6c 0d 0a 3c 2f 76 65 72 62 i.fossil..</verb
0950: 61 74 69 6d 3e 0d 0a 0d 0a 59 6f 75 20 63 61 6e atim>....You can
0960: 20 61 6c 73 6f 20 64 6f 77 6e 6c 6f 61 64 20 74 also download t
0970: 68 65 20 6c 61 74 65 73 74 20 63 6f 64 65 20 61 he latest code a
0980: 73 20 61 20 74 61 72 62 61 6c 6c 3a 20 5b 68 74 s a tarball: [ht
0990: 74 70 73 3a 2f 2f 70 69 7a 7a 61 68 61 63 6b 2e tps://pizzahack.
09a0: 65 75 2f 66 6f 73 73 69 6c 2f 6d 69 6f 67 75 69 eu/fossil/miogui
09b0: 2f 74 61 72 62 61 6c 6c 2f 6d 69 6f 67 75 69 2d /tarball/miogui-
09c0: 6c 61 74 65 73 74 2e 74 61 72 2e 67 7a 7c 6d 69 latest.tar.gz|mi
09d0: 6f 67 75 69 2d 6c 61 74 65 73 74 2e 74 61 72 2e ogui-latest.tar.
09e0: 67 7a 5d 0d 0a 0d 0a 52 65 6d 65 6d 62 65 72 20 gz]....Remember
09f0: 74 6f 20 73 65 74 75 70 20 74 68 75 6e 64 65 72 to setup thunder
0a00: 63 68 65 7a 20 70 72 6f 70 65 72 6c 79 2e 0d 0a chez properly...
0a10: 0d 0a 54 68 65 6e 20 72 75 6e 3a 0d 0a 3c 76 65 ..Then run:..<ve
0a20: 72 62 61 74 69 6d 3e 0d 0a 23 20 49 20 72 65 63 rbatim>..# I rec
0a30: 6f 6d 6d 65 6e 64 20 74 68 69 73 20 6c 69 6d 69 ommend this limi
0a40: 74 20 73 65 74 74 69 6e 67 20 62 65 63 61 75 73 t setting becaus
0a50: 65 20 6f 75 72 20 73 6f 66 77 61 72 65 20 69 73 e our sofware is
0a60: 20 61 6c 70 68 61 2e 20 49 66 20 79 6f 75 20 72 alpha. If you r
0a70: 75 6e 20 69 6e 74 6f 20 61 20 6e 6f 6e 2d 74 61 un into a non-ta
0a80: 69 6c 20 72 65 63 75 72 73 69 6f 6e 20 79 6f 75 il recursion you
0a90: 20 63 61 6e 20 6c 6f 63 6b 20 79 6f 75 72 20 73 can lock your s
0aa0: 79 73 74 65 6d 20 3a 29 0d 0a 75 6c 69 6d 69 74 ystem :)..ulimit
0ab0: 20 2d 53 76 20 35 30 30 30 30 30 20 20 0d 0a 73 -Sv 500000 ..s
0ac0: 63 68 65 6d 65 20 6d 69 6f 67 75 69 2e 73 73 0d cheme miogui.ss.
0ad0: 0a 3c 2f 76 65 72 62 61 74 69 6d 3e 0d 0a 0d 0a .</verbatim>....
0ae0: 4e 6f 77 20 73 77 69 74 63 68 20 74 6f 20 6f 74 Now switch to ot
0af0: 68 65 72 20 63 6f 6e 73 6f 6c 65 20 61 6e 64 20 her console and
0b00: 74 79 70 65 0d 0a 3c 76 65 72 62 61 74 69 6d 3e type..<verbatim>
0b10: 0d 0a 2f 70 61 74 68 2f 74 6f 2f 74 68 75 6e 64 ../path/to/thund
0b20: 65 72 63 68 65 7a 2f 6e 61 6e 6f 6d 73 67 2f 72 erchez/nanomsg/r
0b30: 65 6d 6f 74 65 2d 72 65 70 6c 20 74 63 70 3a 2f emote-repl tcp:/
0b40: 2f 6c 6f 63 61 6c 68 6f 73 74 3a 39 39 39 38 0d /localhost:9998.
0b50: 0a 3c 2f 76 65 72 62 61 74 69 6d 3e 0d 0a 46 72 .</verbatim>..Fr
0b60: 6f 6d 20 74 68 65 72 65 20 79 6f 75 20 63 61 6e om there you can
0b70: 20 6d 6f 64 69 66 79 20 74 68 65 20 63 6f 64 65 modify the code
0b80: 2e 0d 0a 59 6f 75 20 69 64 65 61 6c 6c 79 20 77 ...You ideally w
0b90: 61 6e 74 20 74 6f 20 72 75 6e 20 74 68 61 74 20 ant to run that
0ba0: 66 72 6f 6d 20 69 6e 73 69 64 65 20 65 6d 61 63 from inside emac
0bb0: 73 20 4d 2d 78 20 72 75 6e 2d 73 63 68 65 6d 65 s M-x run-scheme
0bc0: 3c 2f 65 6d 3e 20 61 6e 64 20 73 65 6e 64 20 63 </em> and send c
0bd0: 6f 64 65 20 77 69 74 68 20 43 2d 78 20 43 2d 65 ode with C-x C-e
0be0: 20 6f 72 20 43 2d 63 20 43 2d 65 0d 0a 0d 0a 54 or C-c C-e....T
0bf0: 6f 20 66 6f 6c 6c 6f 77 20 6e 65 77 73 20 73 75 o follow news su
0c00: 62 73 63 72 69 62 65 20 74 6f 20 5b 68 74 74 70 bscribe to [http
0c10: 73 3a 2f 2f 70 69 7a 7a 61 68 61 63 6b 2e 65 75 s://pizzahack.eu
0c20: 2f 66 6f 73 73 69 6c 2f 6d 69 6f 67 75 69 2f 74 /fossil/miogui/t
0c30: 69 6d 65 6c 69 6e 65 2e 72 73 73 7c 52 53 53 20 imeline.rss|RSS
0c40: 66 65 65 64 5d 0a 5a 20 34 30 63 30 36 64 62 33 feed].Z 40c06db3
0c50: 38 35 30 36 37 33 62 34 39 66 39 33 35 64 37 61 850673b49f935d7a
0c60: 35 66 62 33 64 61 61 39 0a 5fb3daa9.