summaryrefslogtreecommitdiff
path: root/objectio/support_edit.icl
blob: 144e81bac303cb094aa6560f24fcbd0e6670b18d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
module support_edit

import StdEnv, StdIO

Start :: *World -> *World
Start world
# (id, world) = openId world 
# edits = let w = PixelWidth 200 in [
        EditControl "Activate"      w                3 [ControlActivate (count 1 id)],
        EditControl "Deactivate"    w                3 [ControlDeactivate (count -1 id)],
        EditControl "Hide"          w                3 [ControlHide],
        EditControl "Id"            (PixelWidth 500) 3 [ControlId id],
        EditControl "Keyboard"      w                3 [ControlKeyboard (\ks . getKeyboardStateKeyState ks <> KeyUp) Able (kbfunc id)],
        EditControl "Pos"           w                3 [ControlPos (Left, zero)],
        EditControl "Resize"        w                3 [], //todo
        EditControl "SelectState"   w                3 [ControlSelectState Able],
        EditControl "SelectState"   w                3 [ControlSelectState Unable],
        EditControl "Tip"           w                3 [ControlTip "Some tip"]
    ]
# controls = ListLS edits
# dialog = Dialog "Support - EditControl" controls [WindowClose (noLS closeProcess)]
= startIO NDI Void (initialise dialog) [] world
where
    initialise dialog pst
    # (error,pst)       = openDialog 0 dialog pst
    | error <> NoError  = closeProcess pst
    | otherwise         = pst

    count :: Int Id (Int, PSt .l) -> (Int, PSt .l)
    count dx id (count,pst=:{io}) = (count + dx, appPIO (setControlText id (toString (count+dx))) pst)

    modf :: Id Modifiers -> (Int, PSt .l) -> (Int, PSt .l)
    modf id mods = \(count,pst=:{io}) . (count, appPIO (setControlText id (toString mods)) pst)

    kbfunc :: Id KeyboardState -> (Int, PSt .l) -> (Int, PSt .l)
    kbfunc id st = \(c,pst) . (c, appPIO (setControlText id (toString st)) pst)