factor/basis/ui/gadgets/toolbar/toolbar.factor

48 lines
1.4 KiB
Factor
Raw Normal View History

2015-07-24 15:16:42 -04:00
! Copyright (C) 2005, 2009 Slava Pestov, 2015 Nicolas Pénet.
2015-07-19 15:33:15 -04:00
! See http://factorcode.org/license.txt for BSD license.
2015-07-26 04:40:18 -04:00
USING: accessors assocs classes fry kernel locals ui.baseline-alignment ui.commands
2015-07-24 15:16:42 -04:00
ui.gadgets ui.gadgets.borders ui.gadgets.buttons
2016-05-08 04:09:44 -04:00
ui.gadgets.buttons.private ui.gadgets.packs ui.theme
2015-07-24 15:16:42 -04:00
ui.gadgets.tracks ui.pens ui.pens.solid ;
2015-07-19 15:33:15 -04:00
IN: ui.gadgets.toolbar
2015-07-24 15:16:42 -04:00
<PRIVATE
: <toolbar-button-pen> ( -- pen )
toolbar-background <solid> dup
2015-07-26 12:55:59 -04:00
toolbar-button-pressed-background <solid> dup dup
2015-07-24 15:16:42 -04:00
<button-pen> ;
2015-07-24 15:16:42 -04:00
: toolbar-button-theme ( gadget -- gadget )
dup gadget-child border-button-label-theme
horizontal >>orientation
<toolbar-button-pen> >>interior
dup dup interior>> pen-pref-dim >>min-dim
{ 10 6 } >>size ; inline
2015-07-24 15:16:42 -04:00
PRIVATE>
:: <toolbar-button> ( target gesture command -- button )
command command-name
target command command-button-quot
'[ drop @ ] <button> toolbar-button-theme
gesture gesture>tooltip >>tooltip ; inline
2015-07-19 15:33:15 -04:00
: <toolbar> ( target -- toolbar )
2015-07-25 14:10:26 -04:00
horizontal <track>
2015-07-26 04:40:18 -04:00
1 >>fill
+baseline+ >>align
2015-07-19 15:33:15 -04:00
{ 5 5 } >>gap
swap
[ [ "toolbar" ] dip class-of get-command-at commands>> ]
2015-07-25 14:10:26 -04:00
[ '[ [ _ ] 2dip <toolbar-button> f track-add ] ]
2015-07-19 15:33:15 -04:00
bi assoc-each ;
2015-07-23 13:24:25 -04:00
: format-toolbar ( toolbar -- toolbar )
{ 5 0 } <border>
2015-07-23 13:24:25 -04:00
toolbar-background <solid> >>interior
2015-07-24 10:23:41 -04:00
{ 1 0 } >>fill ;
2015-07-19 15:33:15 -04:00
: add-toolbar ( track -- track )
2015-07-23 13:24:25 -04:00
dup <toolbar> format-toolbar f track-add ;