From bdade0a8c233e456030785e9bc38b7db0cf226b8 Mon Sep 17 00:00:00 2001 From: Kevin Cope Date: Sun, 16 May 2021 09:36:08 +0800 Subject: [PATCH] Moves button list into MIXIN instance --- basis/ui/gadgets/buttons/buttons.factor | 10 -------- .../button-list/button-list-tests.factor | 0 basis/ui/tools/button-list/button-list.factor | 23 +++++++++++++++++-- 3 files changed, 21 insertions(+), 12 deletions(-) delete mode 100644 basis/ui/tools/button-list/button-list-tests.factor diff --git a/basis/ui/gadgets/buttons/buttons.factor b/basis/ui/gadgets/buttons/buttons.factor index 4ced17e86c..c7609dbe06 100644 --- a/basis/ui/gadgets/buttons/buttons.factor +++ b/basis/ui/gadgets/buttons/buttons.factor @@ -11,16 +11,6 @@ IN: ui.gadgets.buttons TUPLE: button < border pressed? selected? quot tooltip ; -SYMBOL: active-buttons -active-buttons [ H{ } ] initialize - -: label-from-button ( button -- str ) - children>> [ label? ] find swap [ text>> ] [ drop "unknown" ] if ; - -M: button graft* dup label-from-button active-buttons get set-at ; - -M: button ungraft* label-from-button active-buttons get delete-at ; - wrapper ; IN: ui.tools.button-list TUPLE: button-list-popup < wrapper ; +MIXIN: clickable + +SYMBOL: active-buttons +active-buttons [ H{ } ] initialize + +: label-from-button ( button -- str/f ) + children>> [ label? ] find swap [ text>> ] [ drop f ] if ; + +: store-labelled-button ( button -- str/f ) + dup label-from-button [ [ active-buttons get set-at ] keep ] [ drop f ] if* ; + +: remove-labelled-button ( button -- str/f ) + label-from-button [ dup active-buttons get delete-at ] [ f ] if* ; + +M: clickable graft* [ store-labelled-button drop ] [ call-next-method ] bi ; +M: button ungraft* [ remove-labelled-button drop ] [ call-next-method ] bi ; + +INSTANCE: button clickable + : ( model -- table ) [ keys [ ">" swap 2array ] map ] trivial-renderer [ second ] dup table>> -- 2.34.1