! See http://factorcode.org/license.txt for BSD license.
USING: accessors arrays definitions kernel ui.commands
ui.gestures sequences strings math words generic namespaces
-hashtables help.markup quotations assocs fry call ;
+hashtables help.markup quotations assocs fry call linked-assocs ;
IN: ui.operations
SYMBOL: +keyboard+
SYMBOL: operations
+operations [ <linked-hash> ] initialize
+
: object-operations ( obj -- operations )
- operations get [ predicate>> call( obj -- ? ) ] with filter ;
+ operations get values
+ [ predicate>> call( obj -- ? ) ] with filter ;
: gesture>operation ( gesture object -- operation/f )
object-operations [ operation-gesture = ] with find nip ;
: default-flags ( -- assoc )
H{ { +keyboard+ f } { +primary+ f } { +secondary+ f } } ;
+: (define-operation) ( operation -- )
+ dup [ command>> ] [ predicate>> ] bi
+ 2array operations get set-at ;
+
: define-operation ( pred command flags -- )
default-flags swap assoc-union
dupd define-command <operation>
- operations get push ;
+ (define-operation) ;
: modify-operation ( translator operation -- operation )
clone