1 ! Copyright (C) 2006, 2009 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: kernel math math.functions math.parser models
4 models.arrow models.range models.product sequences ui
5 ui.gadgets ui.gadgets.tracks ui.gadgets.labels ui.gadgets.packs
6 ui.gadgets.sliders ui.pens.solid ui.render math.rectangles accessors
7 ui.gadgets.grids colors ;
10 ! Simple example demonstrating the use of models.
12 TUPLE: color-preview < gadget ;
14 : <color-preview> ( model -- gadget )
19 M: color-preview model-changed
20 swap value>> >>interior relayout-1 ;
22 : <color-model> ( model -- model )
23 [ first3 [ 256 /f ] tri@ 1 <rgba> <solid> ] <arrow> ;
25 : <color-slider> ( model -- gadget )
26 horizontal <slider> 1 >>line ;
28 : <color-sliders> ( -- gadget model )
29 3 [ 0 0 0 255 1 <range> ] replicate
30 [ <filled-pile> { 5 5 } >>gap [ <color-slider> add-gadget ] reduce ]
31 [ [ range-model ] map <product> ]
34 : <color-picker> ( -- gadget )
40 [ <color-model> <color-preview> 1 track-add ]
42 [ [ truncate number>string ] map " " join ]
43 <arrow> <label-control>
48 : color-picker-window ( -- )
49 [ <color-picker> "Color Picker" open-window ] with-ui ;
51 MAIN: color-picker-window