Hex Artifact Content
Not logged in

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.