[PATCH 4/4] Add model-view-control example showing synthesised (keypress) events.

Jan Nieuwenhuizen <[email protected]> Sat, 19 Jul 2014 15:41:02 +0200
Newsgroups gmane.lisp.guile.gtk
Message-ID <[email protected]>
CSogZ3RrL2V4YW1wbGVzL212Yy5zY206IEFkZC4KLS0tCiBndGsvZXhhbXBsZXMvbXZjLnNjbSB8
IDE3NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK
IDEgZmlsZSBjaGFuZ2VkLCAxNzYgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNzU1IGd0
ay9leGFtcGxlcy9tdmMuc2NtCgpkaWZmIC0tZ2l0IGEvZ3RrL2V4YW1wbGVzL212Yy5zY20gYi9n
dGsvZXhhbXBsZXMvbXZjLnNjbQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5k
Mjc3N2IwCi0tLSAvZGV2L251bGwKKysrIGIvZ3RrL2V4YW1wbGVzL212Yy5zY20KQEAgLTAsMCAr
MSwxNzYgQEAKKyMhIC9iaW4vc2gKKyMgLSotIHNjaGVtZSAtKi0KK2V4ZWMgZ3VpbGUtZ25vbWUt
MiAtZSB0ZXN0ICQwICIkQCIKKyEjCisKKzs7IGd1aWxlLWdub21lCis7OyBDb3B5cmlnaHQgKEMp
IDIwMTMsMjAxNCBKYW4gTmlldXdlbmh1aXplbiA8amFubmVrZUBnbnUub3JnPgorCis7OyBUaGlz
IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
ICAgIAorOzsgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgYXMgICAKKzs7IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mICAgCis7OyB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4gICAgICAgICAgICAgIAorOzsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK
Kzs7IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLCAgCis7OyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZiAgIAorOzsgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSAgICAKKzs7IEdOVSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgCis7OyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIAorOzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKzs7IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3Qs
IGNvbnRhY3Q6Cis7OworOzsgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uICAgICAgICAgICBWb2lj
ZTogICsxLTYxNy01NDItNTk0MgorOzsgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwICAgICAg
ICBGYXg6ICAgICsxLTYxNy01NDItMjY1MgorOzsgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNywgIFVT
QSAgICAgICBnbnVAZ251Lm9yZworCisKKzs7IFRoaXMgZXhhbXBsZSBzaG93cyBob3cgdG8gdXNl
IEd1aWxlIEdub21lIGluIGEgbW9kZWwtdmlldy1jb250b2wKKzs7IHNldHVwLgorCisocmVhZC1z
ZXQhIGtleXdvcmRzICdwcmVmaXgpCisKKyhkZWZpbmUgKHRlc3QgLiBhcmdzKQorICAoZXZhbCAn
KHRlc3QgKGNvbW1hbmQtbGluZSkpIChyZXNvbHZlLW1vZHVsZSAnKG12YykpKSkKKworKGRlZmlu
ZS1tb2R1bGUgKG12YykKKyAgOzsgYmFzZQorICA6dXNlLW1vZHVsZSAoaWNlLTkgYW5kLWxldC1z
dGFyKQorICA7OyBvb3BzCisgIDpkdXBsaWNhdGVzIChtZXJnZS1nZW5lcmljcyBsYXN0KQorICA6
dXNlLW1vZHVsZSAob29wIGdvb3BzKQorICA7OyBndGsKKyAgOnVzZS1tb2R1bGUgKGdub21lIGdv
YmplY3QpCisgIDp1c2UtbW9kdWxlIChnbm9tZSBnbGliKQorICA6dXNlLW1vZHVsZSAoZ25vbWUg
Z3RrIGdkay1ldmVudCkKKyAgOnVzZS1tb2R1bGUgKGdub21lIGd0aykpCisKKyhkZWZpbmUtY2xh
c3MgPHRleHQtbW9kZWw+ICg8Z29iamVjdD4pCisgIChidWZmZXIgOmFjY2Vzc29yIC5idWZmZXIg
OmluaXQtdmFsdWUgKG1ha2UgPGd0ay10ZXh0LWJ1ZmZlcj4pKQorICAodGV4dCA6YWNjZXNzb3Ig
LnRleHQgOmluaXQtdmFsdWUgI2YgOmluaXQta2V5d29yZCA6dGV4dCkKKworICA6Z3NpZ25hbCAn
KHF1aXQgI2YpCisgIDpnc2lnbmFsICcoc3BhY2UgI2YpKQorCisoZGVmaW5lLW1ldGhvZCAoaW5p
dGlhbGl6ZSAobyA8dGV4dC1tb2RlbD4pIC4gaW5pdGFyZ3MpCisgIChuZXh0LW1ldGhvZCkKKyAg
KGxldCAoKGJ1ZmZlciAoLmJ1ZmZlciBvKSkKKyAgICAgICAgKHRleHQgKC50ZXh0IG8pKSkKKyAg
ICAoaWYgdGV4dCAoc2V0LXRleHQgYnVmZmVyIHRleHQpKSkKKyAgOzsgS2V5IHNpZ25hbHMKKyAg
KGNvbm5lY3QgbyAnc3BhY2UgKGxhbWJkYSAobSkgKHNwYWNlIG8pKSkKKyAgKGNvbm5lY3QgbyAn
cXVpdCAobGFtYmRhIChtKSAocSBvKSkpKQorCisMCis7Ozs7IFNpZ25hbCBoYW5kbGVycworKGRl
ZmluZS1tZXRob2QgKGtleS1wcmVzcy1oYW5kbGVyIChvIDx0ZXh0LW1vZGVsPikgYmluZGluZ3Mp
CisgIChsYW1iZGEgKHcgZXZlbnQpCisgICAgKGFuZC1sZXQqICgoa2V5dmFsIChnZGstZXZlbnQt
a2V5OmtleXZhbCBldmVudCkpCisgICAgICAgICAgICAgICAoKGZvcm1hdCAoY3VycmVudC1lcnJv
ci1wb3J0KSAia2V5IHByZXNzZWQ6IH5hXG4iIGtleXZhbCkpCisgICAgICAgICAgICAgICAobW9k
cyAoZ2RrLWV2ZW50LWtleTptb2RpZmllcnMgZXZlbnQpKQorICAgICAgICAgICAgICAgKC1tb2Qy
LW1vZHMgKGZpbHRlciAobmVnYXRlIChsYW1iZGEgKHgpIChlcT8geCAnbW9kMi1tYXNrKSkpIG1v
ZHMpKQorICAgICAgICAgICAgICAgKChmb3JtYXQgKGN1cnJlbnQtZXJyb3ItcG9ydCkgIm1vZGlm
aWVyczogfmFcbiIgLW1vZDItbW9kcykpCisgICAgICAgICAgICAgICAoa2V5IChjb25zIGtleXZh
bCAobGlzdCAtbW9kMi1tb2RzKSkpCisgICAgICAgICAgICAgICAoYXJncyAoYXNzb2MtcmVmIGJp
bmRpbmdzIGtleSkpKQorICAgICAgICAgICAgICAoYXBwbHkgZW1pdCAoY29ucyogbyBhcmdzKSkK
KyAgICAgICAgICAgICAgI3QpKSkKKworKGRlZmluZSogKG1ha2Uta2V5LXByZXNzLWV2ZW50IDpr
ZXkKKwkJCSAgICAgICAod2luZG93ICNmKQorCQkJICAgICAgIChzZW5kICNmKQorCQkJICAgICAg
ICh0aW1lIDApCisJCQkgICAgICAgKHN0YXRlIDApCisJCQkgICAgICAgKGtleSAwKQorCQkJICAg
ICAgIChod2tleSAwKQorCQkJICAgICAgIChncm91cCAwKSkKKyAgKGxldCAoKHR5cGUgKG1ha2Ug
PGdkay1ldmVudC10eXBlPiA6dmFsdWUgJ2tleS1wcmVzcykpKQorICAgIChsaXN0LT52ZWN0b3Ig
KGxpc3QgdHlwZSB3aW5kb3cgc2VuZCB0aW1lIHN0YXRlIGtleSBod2tleSBncm91cCkpKSkKKwor
KGRlZmluZS1tZXRob2QgKHNwYWNlIChvIDx0ZXh0LW1vZGVsPikpCisgIChmb3JtYXQgKGN1cnJl
bnQtZXJyb3ItcG9ydCkgIjxzcGFjZT5cbiIpKQorCisoZGVmaW5lLW1ldGhvZCAocSAobyA8dGV4
dC1tb2RlbD4pKQorICAoZm9ybWF0IChjdXJyZW50LWVycm9yLXBvcnQpICI8cXVpdD5cbiIpCisg
IChndGstbWFpbi1xdWl0KSkKKworCisMCis7OzsgR05PTUUgdmlldworKGRlZmluZS1jbGFzcyA8
Z25vbWUtdGV4dC12aWV3PiAoPHRleHQtbW9kZWw+KQorICAobW9kZWwgOmFjY2Vzc29yIC5tb2Rl
bCA6aW5pdC12YWx1ZSAjZiA6aW5pdC1rZXl3b3JkIDptb2RlbCkKKyAgKHdpZGdldCA6YWNjZXNz
b3IgLndpZGdldCA6aW5pdC12YWx1ZSAobWFrZSA8Z3RrLXNjcm9sbGVkLXdpbmRvdz4pKQorICAo
dmlldyAgOmFjY2Vzc29yIC52aWV3IDppbml0LXZhbHVlICNmKSkKKworKGRlZmluZS1tZXRob2Qg
KGluaXRpYWxpemUgKG8gPGdub21lLXRleHQtdmlldz4pIC4gaW5pdGFyZ3MpCisgIChuZXh0LW1l
dGhvZCkKKyAgKGxldCogKCh3aWRnZXQgKC53aWRnZXQgbykpCisgICAgICAgICAobW9kZWwgKC5t
b2RlbCBvKSkKKyAgICAgICAgIChidWZmZXIgKC5idWZmZXIgbW9kZWwpKQorICAgICAgICAgKHZp
ZXcgIChtYWtlIDxndGstdGV4dC12aWV3PiA6YnVmZmVyIGJ1ZmZlciA6ZWRpdGFibGUgI2YpKQor
CShiaW5kaW5ncworCSBgKCgoLGdkazpzcGFjZSAoKSkgLiAoc3BhY2UpKQorCSAgICgoLGdkazpR
ICgpKSAuIChxdWl0KSkgOzsgU2hoLi4uIGRvbid0IHRlbGwsIHdlIHN5bnRoZXNpc2UgdGhpcwor
CSAgICgoLGdkazpxIChjb250cm9sLW1hc2spKSAuIChxdWl0KSkKKwkgICAoKCxnZGs6dyAoY29u
dHJvbC1tYXNrKSkgLiAocXVpdCkpKSkpCisgICAgKHNldCEgKC52aWV3IG8pIHZpZXcpCisgICAg
KGNvbm5lY3QgdmlldyAna2V5LXByZXNzLWV2ZW50IChrZXktcHJlc3MtaGFuZGxlciBvIGJpbmRp
bmdzKSkKKyAgICAoYWRkIHdpZGdldCB2aWV3KSkKKyAgKHNob3ctYWxsIG8pCisgIG8pCisKKzs7
IFRoaXMgaXMgYSBzb21ld2hhdCBjb250cml2ZWQgZXhhbXBsZSB0byBzaG93IHRoZSBvcGVyYXRp
b24gb2YKKzs7IG1ha2Uta2V5LXByZXNzLWV2ZW50LiAgT2YgY291cnNlLCBzeW50aGVzaXNpbmcg
ZXZlbnRzIHdpbGwKKzs7IHR5cGljYWxseSBiZSBkb25lIGJ5IG5vbi1HTk9NRSB2aWV3cywgZS5n
LiwgYSBXZWIgdmlldy4KKyhkZWZpbmUtbWV0aG9kIChzcGFjZSAobyA8Z25vbWUtdGV4dC12aWV3
PikpCisgIChuZXh0LW1ldGhvZCkKKyAgKGZvcm1hdCAoY3VycmVudC1lcnJvci1wb3J0KSAic3lu
dGhlc2lzaW5nOiBRXG4iKQorICAobGV0KiAoKHZpZXcgKC52aWV3IG8pKQorICAgICAgICAgKHdp
ZGdldCAoZ2V0LXBhcmVudCAoZ2V0LXdpbmRvdyB2aWV3KSkpCisgICAgICAgICAoZXZlbnQgKG1h
a2Uta2V5LXByZXNzLWV2ZW50IDprZXkgZ2RrOlEgOndpbmRvdyB3aWRnZXQpKSkKKyAgKGVtaXQg
dmlldyAna2V5LXByZXNzLWV2ZW50IGV2ZW50KSkpCisKKwwKKzs7OyBndGstd2lkZ2V0IHdyYXBw
ZXJzCisoZGVmaW5lLW1ldGhvZCAocGFjay1zdGFydCAodyA8Z3RrLWNvbnRhaW5lcj4pIChvIDxn
bm9tZS10ZXh0LXZpZXc+KSAuIHJlc3QpIChhcHBseSBwYWNrLXN0YXJ0IChjb25zKiB3ICgud2lk
Z2V0IG8pIHJlc3QpKSkKKyhkZWZpbmUtbWV0aG9kIChzaG93LWFsbCAobyA8Z25vbWUtdGV4dC12
aWV3PikpIChzaG93LWFsbCAoLndpZGdldCBvKSkpCisKKwwKKzs7OyBXZWIgdmlldyAtLSBpbXBs
ZW1lbnRhdGlvbiBsZWZ0IGFzIGFuIGV4ZXJjaXNlIGZvciB0aGUgcmVhZGVyCisKKyhkZWZpbmUt
Y2xhc3MgPHdlYi13aW5kb3c+ICg8Z2RrLXdpbmRvdz4pCisgIDpnc2lnbmFsIChsaXN0ICdleHBv
c2UtZXZlbnQgI2YgPGdkay1ldmVudC1leHBvc2U+KQorICA6Z3NpZ25hbCAobGlzdCAnaGVhZGxl
c3MtZXhwb3NlLWV2ZW50ICNmIDxnZGstcmVjdGFuZ2xlPikKKyAgOmdzaWduYWwgKGxpc3QgJ2tl
eS1wcmVzcy1ldmVudCAjZiA8Z2RrLWV2ZW50LWtleT4pCisgIDpnc2lnbmFsIChsaXN0ICdidXR0
b24tcHJlc3MtZXZlbnQgI2YgPGdkay1ldmVudC1idXR0b24+KQorICA6Z3NpZ25hbCAobGlzdCAn
YnV0dG9uLXJlbGVhc2UtZXZlbnQgI2YgPGdkay1ldmVudC1idXR0b24+KQorICA6Z3NpZ25hbCAo
bGlzdCAnc2Nyb2xsLWV2ZW50ICNmIDxnZGstZXZlbnQtc2Nyb2xsPikpCisKKyhkZWZpbmUtY2xh
c3MgPHdlYi1zY3JvbGxlZC13aW5kb3c+ICg8d2ViLXdpbmRvdz4pCisgIChvZmZzZXQgOmFjY2Vz
c29yIC5vZmZzZXQgOmluaXQtZm9ybSAobGlzdCAwIDApKSkKKworKGRlZmluZS1jbGFzcyA8d2Vi
LXRleHQtdmlldz4gKDx0ZXh0LW1vZGVsPikKKyAgKG1vZGVsIDphY2Nlc3NvciAubW9kZWwgOmlu
aXQtdmFsdWUgI2YgOmluaXQta2V5d29yZCA6bW9kZWwpCisgICh3aWRnZXQgOmFjY2Vzc29yIC53
aWRnZXQgOmluaXQtdmFsdWUgKG1ha2UgPHdlYi1zY3JvbGxlZC13aW5kb3c+KSkKKyAgKHZpZXcg
IDphY2Nlc3NvciAudmlldyA6aW5pdC12YWx1ZSAjZikpCisKKworDAorOzs7OyBUZXN0CisoZGVm
aW5lICh0ZXN0IC4gYXJncykKKyAgKGxldCogKChtYWluLXdpbmRvdyAobWFrZSA8Z3RrLXdpbmRv
dz4KKwkJCTp0aXRsZSAiTVZDIEV2ZW50LXN5bnRoZXNpc2UgRGVtbyIKKwkJCTp0eXBlICd0b3Bs
ZXZlbCkpCisJICh0ZXh0ICIKKworICAgIDxTUEM+ICBzeW50aGVzaXNlIGV2ZW50CisgICAgQy1x
ICAgIHF1aXQKKworIikKKyAgICAgICAgIChtb2RlbCAobWFrZSA8dGV4dC1tb2RlbD4gOnRleHQg
dGV4dCkpCisJICh2aWV3IChtYWtlIDxnbm9tZS10ZXh0LXZpZXc+IDptb2RlbCBtb2RlbCkpCisJ
ICh2Ym94IChtYWtlIDxndGstdmJveD4pKSkKKyAgICAoYWRkIG1haW4td2luZG93IHZib3gpCisg
ICAgKHBhY2stc3RhcnQgdmJveCB2aWV3ICN0ICN0IDApCisgICAgKHNldC1kZWZhdWx0LXNpemUg
bWFpbi13aW5kb3cgMzAwIDIwMCkKKyAgICAoY29ubmVjdCBtYWluLXdpbmRvdyAnZGVsZXRlLWV2
ZW50IChsYW1iZGEgKHcgZSkgKGd0ay1tYWluLXF1aXQpICNmKSkKKyAgICAoc2hvdy1hbGwgbWFp
bi13aW5kb3cpKQorICAoZ3RrLW1haW4pKQotLSAKSmFuIE5pZXV3ZW5odWl6ZW4gPGphbm5la2VA
Z251Lm9yZz4gfCBHTlUgTGlseVBvbmQgaHR0cDovL2xpbHlwb25kLm9yZwpGcmVlbGFuY2UgSVQg
aHR0cDovL0pveW9mU291cmNlLmNvbSB8IEF2YXRhcsKuICBodHRwOi8vQXZhdGFyQWNhZGVteS5u
bCAgCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZ3Vp
bGUtZ3RrLWdlbmVyYWwgbWFpbGluZyBsaXN0Cmd1aWxlLWd0ay1nZW5lcmFsQGdudS5vcmcKaHR0
cHM6Ly9saXN0cy5nbnUub3JnL21haWxtYW4vbGlzdGluZm8vZ3VpbGUtZ3RrLWdlbmVyYWwK