From 28b3b4b97abf11ee8cd13643b1780d84f5c84759 Mon Sep 17 00:00:00 2001 From: Doug Coleman <doug.coleman@gmail.com> Date: Thu, 18 Dec 2008 23:44:14 -0600 Subject: [PATCH 1/3] add a lot more to the using list --- basis/io/files/links/links-tests.factor | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/basis/io/files/links/links-tests.factor b/basis/io/files/links/links-tests.factor index 2d142ce900..bc03e42f92 100644 --- a/basis/io/files/links/links-tests.factor +++ b/basis/io/files/links/links-tests.factor @@ -1,5 +1,6 @@ -USING: io.directories io.files.links tools.test -io.files.unique tools.files fry ; +USING: io.directories io.files.links tools.test sequences +io.files.unique tools.files fry math kernel math.parser +io.pathnames namespaces ; IN: io.files.links.tests : make-test-links ( n path -- ) From 766fccaeccadeb3429f9ab0aaef2f9ab4d7df228 Mon Sep 17 00:00:00 2001 From: Slava Pestov <slava@slava-pestovs-macbook-pro.local> Date: Thu, 18 Dec 2008 23:56:16 -0600 Subject: [PATCH 2/3] Compose model fires less unnecessary notifications --- basis/models/compose/compose-tests.factor | 24 ++++++++++++++++++++++- basis/models/compose/compose.factor | 3 ++- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/basis/models/compose/compose-tests.factor b/basis/models/compose/compose-tests.factor index 16a5ab339c..0644bb6841 100644 --- a/basis/models/compose/compose-tests.factor +++ b/basis/models/compose/compose-tests.factor @@ -1,5 +1,5 @@ USING: arrays generic kernel math models namespaces sequences assocs -tools.test models.compose accessors ; +tools.test models.compose accessors locals ; IN: models.compose.tests ! Test compose @@ -22,3 +22,25 @@ IN: models.compose.tests [ { 4 5 } ] [ "c" get value>> ] unit-test [ ] [ "c" get deactivate-model ] unit-test + +TUPLE: an-observer { i integer } ; + +M: an-observer model-changed nip [ 1+ ] change-i drop ; + +[ 1 0 ] [ + [let* | m1 [ 1 <model> ] + m2 [ 2 <model> ] + c [ { m1 m2 } <compose> ] + o1 [ an-observer new ] + o2 [ an-observer new ] | + + o1 m1 add-connection + o2 m2 add-connection + + c activate-model + + "OH HAI" m1 set-model + o1 i>> + o2 i>> + ] +] unit-test \ No newline at end of file diff --git a/basis/models/compose/compose.factor b/basis/models/compose/compose.factor index a2c3385248..386a06781d 100644 --- a/basis/models/compose/compose.factor +++ b/basis/models/compose/compose.factor @@ -18,7 +18,8 @@ TUPLE: compose < model ; M: compose model-changed nip - [ [ value>> ] composed-value ] keep set-model ; + dup [ value>> ] composed-value >>value + notify-connections ; M: compose model-activated dup model-changed ; From 69c64ba803f8360182ccc42fec1132d843592351 Mon Sep 17 00:00:00 2001 From: Slava Pestov <slava@slava-pestovs-macbook-pro.local> Date: Thu, 18 Dec 2008 23:56:41 -0600 Subject: [PATCH 3/3] Refactor operations-menu code to make it independent of presentations --- basis/ui/gadgets/menus/menus.factor | 8 ++++++- .../presentations/presentations.factor | 21 +++++++------------ 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/basis/ui/gadgets/menus/menus.factor b/basis/ui/gadgets/menus/menus.factor index 2aef0b8417..c482f31896 100644 --- a/basis/ui/gadgets/menus/menus.factor +++ b/basis/ui/gadgets/menus/menus.factor @@ -1,6 +1,6 @@ ! Copyright (C) 2005, 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: locals accessors arrays ui.commands ui.gadgets +USING: locals accessors arrays ui.commands ui.operations ui.gadgets ui.gadgets.buttons ui.gadgets.worlds ui.gestures generic hashtables kernel math models namespaces opengl sequences math.vectors ui.gadgets.theme ui.gadgets.packs @@ -54,3 +54,9 @@ M: menu-glass layout* gadget-child prefer ; : show-commands-menu ( target commands -- ) [ dup [ ] ] dip <commands-menu> show-menu ; + +: <operations-menu> ( target hook -- menu ) + over object-operations <commands-menu> ; + +: show-operations-menu ( gadget target -- ) + [ ] <operations-menu> show-menu ; \ No newline at end of file diff --git a/basis/ui/gadgets/presentations/presentations.factor b/basis/ui/gadgets/presentations/presentations.factor index 61a55e926b..f05ea5ae5d 100644 --- a/basis/ui/gadgets/presentations/presentations.factor +++ b/basis/ui/gadgets/presentations/presentations.factor @@ -11,8 +11,8 @@ IN: ui.gadgets.presentations TUPLE: presentation < button object hook ; : invoke-presentation ( presentation command -- ) - over dup hook>> call - [ object>> ] dip invoke-command ; + [ [ dup hook>> call ] [ object>> ] bi ] dip + invoke-command ; : invoke-primary ( presentation -- ) dup object>> primary-operation @@ -23,7 +23,7 @@ TUPLE: presentation < button object hook ; invoke-presentation ; : show-mouse-help ( presentation -- ) - dup object>> over show-summary button-update ; + [ [ object>> ] keep show-summary ] [ button-update ] bi ; : <presentation> ( label object -- button ) swap [ invoke-primary ] presentation new-button @@ -35,18 +35,13 @@ M: presentation ungraft* dup hand-gadget get-global child? [ dup hide-status ] when call-next-method ; -: <operations-menu> ( presentation -- menu ) - [ object>> ] - [ dup hook>> curry ] - [ object>> object-operations ] - tri <commands-menu> ; - -: operations-menu ( presentation -- ) - dup <operations-menu> show-menu ; +: show-operations-menu ( presentation -- ) + [ ] [ object>> ] [ dup hook>> curry ] tri + <operations-menu> show-menu ; presentation H{ - { T{ button-down f f 3 } [ operations-menu ] } - { T{ mouse-leave } [ dup hide-status button-update ] } + { T{ button-down f f 3 } [ show-operations-menu ] } + { T{ mouse-leave } [ [ hide-status ] [ button-update ] bi ] } { T{ mouse-enter } [ show-mouse-help ] } ! Responding to motion too allows nested presentations to ! display status help properly, when the mouse leaves a