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.filter models.range models.compose sequences ui
5 ui.gadgets ui.gadgets.frames ui.gadgets.labels ui.gadgets.packs
6 ui.gadgets.sliders 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 )
15 color-preview new-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> ] <filter> ;
25 : <color-slider> ( model -- gadget )
26 horizontal <slider> 1 >>line ;
28 : <color-sliders> ( -- gadget model )
29 3 [ 0 0 0 255 <range> ] replicate
30 [ <filled-pile> { 5 5 } >>gap [ <color-slider> add-gadget ] reduce ]
31 [ [ range-model ] map <compose> ]
34 : <color-picker> ( -- gadget )
40 [ <color-model> <color-preview> @center grid-add ]
42 [ [ truncate number>string ] map " " join ]
43 <filter> <label-control>
48 : color-picker-window ( -- )
49 [ <color-picker> "Color Picker" open-window ] with-ui ;
51 MAIN: color-picker-window