zkv1000 / Nasal / softkeys.nas /
Newer Older
146 lines | 5.305kb
commit initial
Sébastien MARQUE authored on 2017-03-07
1
var softkeysClass = {
softkeys are available now
Sébastien MARQUE authored on 2017-03-14
2
    new : func (device, node, role) {
commit initial
Sébastien MARQUE authored on 2017-03-07
3
        var m = { parents: [ softkeysClass ] };
4
        m.node = node;
softkeys are available now
Sébastien MARQUE authored on 2017-03-14
5
        m.device = device;
commit initial
Sébastien MARQUE authored on 2017-03-07
6
        m.role = role;
softkeys are available now
Sébastien MARQUE authored on 2017-03-14
7
        m.path = [];
commit initial
Sébastien MARQUE authored on 2017-03-07
8
        return m;
9
    },
10

            
softkeys are available now
Sébastien MARQUE authored on 2017-03-14
11
    clean : func {
12
        # deletes unsed bindings
fix commit récédent un peu r...
Sébastien MARQUE authored on 2017-03-14
13
        foreach (var b; keys(me.bindings))
14
            if (b != me.role)
15
                delete(me.bindings, b);
commit initial
Sébastien MARQUE authored on 2017-03-07
16
    },
17

            
softkeys are available now
Sébastien MARQUE authored on 2017-03-14
18
    SoftKey : func (n, a) {
19
        # released key not yet managed
20
        if (a == 1)
21
            return;
22

            
23
        var key = me.device.display.screenElements[sprintf("SoftKey%02i-text",n)].get('text');
24
        if (key == '' or key == nil)
25
            return;
26

            
27
        var path = keyMap[me.role];
28
        foreach(var p; me.path) {
29
            if (contains(path, p))
30
                path = path[p];
31
            else
32
                break;
commit initial
Sébastien MARQUE authored on 2017-03-07
33
        }
34

            
softkeys are available now
Sébastien MARQUE authored on 2017-03-14
35
        var bindings = me.bindings[me.role];
36
        foreach(var p; me.path) {
37
            if (contains(bindings, p))
38
                bindings = bindings[p];
39
            else
40
                break;
commit initial
Sébastien MARQUE authored on 2017-03-07
41
        }
42

            
softkeys are available now
Sébastien MARQUE authored on 2017-03-14
43
        if (contains(path, key)) {
44
            append(me.path, key);
add the ability to exec hook...
Sébastien MARQUE authored on 2017-03-16
45
            if (contains(bindings[key], 'hook'))
46
                call(bindings[key].hook, [], me);
softkeys are available now
Sébastien MARQUE authored on 2017-03-14
47
            me.device.display.updateSoftKeys();
commit initial
Sébastien MARQUE authored on 2017-03-07
48
        }
softkeys are available now
Sébastien MARQUE authored on 2017-03-14
49
        elsif (contains(bindings, key)) {
50
            call(bindings[key], [], me);
commit initial
Sébastien MARQUE authored on 2017-03-07
51
        }
softkeys are available now
Sébastien MARQUE authored on 2017-03-14
52
        elsif (key == 'BACK') {
53
            pop(me.path);
54
            me.device.display.updateSoftKeys();
commit initial
Sébastien MARQUE authored on 2017-03-07
55
        }
softkeys are available now
Sébastien MARQUE authored on 2017-03-14
56
        else
57
            print(me.device.role ~ '/' ~ key ~ ' : not yet implemented');
58
    },
59

            
60
    bindings : {
61
        PFD : {
62
            INSET: {
63
                OFF: func {
64
                    pop(me.path);
65
                    me.device.display.updateSoftKeys();
66
                },
67
            },
68
            PFD: {
69
                'STD BARO': func {
70
                    pop(me.path);
71
                    me.device.display.updateSoftKeys();
72
                },
adds OAT, TAS, GSPD, WindDat...
Sébastien MARQUE authored on 2017-03-15
73
                'AOA/WIND' : {
74
                    WIND : {
75
                        OPTN1 : func {
76
                            me.device.display._winddata_optn = 1;
77
                            me.device.display.screenElements['WindData'].show();
78
                            me.device.display.screenElements['WindData-OPTN1'].show();
79
                            me.device.display.screenElements['WindData-OPTN1-HDG'].show();
80
                            me.device.display.screenElements['WindData-OPTN2'].hide();
81
                            me.device.display.updateWindData();
82
                        },
83
                        OPTN2 : func {
84
                            me.device.display._winddata_optn = 2;
85
                            me.device.display.screenElements['WindData'].show();
86
                            me.device.display.screenElements['WindData-OPTN1'].hide();
87
                            me.device.display.screenElements['WindData-OPTN2'].show();
88
                            me.device.display.screenElements['WindData-OPTN2-symbol'].show();
89
                            me.device.display.screenElements['WindData-OPTN2-headwind'].show();
90
                            me.device.display.screenElements['WindData-OPTN2-crosswind'].show();
91
                            me.device.display.updateWindData();
92
                        },
93
                        OFF : func {
94
                            me.device.display._winddata_optn = 0;
95
                            me.device.display.screenElements['WindData'].hide();
96
                            me.device.display.screenElements['WindData-OPTN1'].hide();
97
                            me.device.display.screenElements['WindData-OPTN2'].hide();
98
                        },
99
                    },
100
                },
adds BRG1/2 animation
Sébastien MARQUE authored on 2017-03-16
101
                BRG1 : func (brg = 1){
102
                    var source = 'brg' ~ brg ~ '-source';
103
                    var list = ['NAV' ~ brg, 'GPS', 'ADF', 'OFF'];
104
                    var index = std.Vector
105
                                   .new(list)
106
                                   .index(radios.getNode(source).getValue());
107
                    var next = (index == size(list) -1) ?  0 : index + 1;
108
                    radios.getNode(source).setValue(list[next]);
109
                },
110
                BRG2 : func {
111
                    call(me.bindings.PFD.PFD.BRG1, [ 2 ], me);
112
                },
softkeys are available now
Sébastien MARQUE authored on 2017-03-14
113
            },
114
            XPDR: {
115
                CODE: {
116
                    IDENT: func {
117
                        me.path = [];
118
                        me.device.display.updateSoftKeys();
119
                    },
120
                    BACK: func {
121
                        me.path = [];
122
                        me.device.display.updateSoftKeys();
123
                    },
124
                },
125
            },
126
        },
127
        MFD : {
128
            ENGINE: {
129
                FUEL: {
130
                    UNDO: func {
131
                        pop(me.path);
132
                        me.device.display.updateSoftKeys();
133
                    },
134
                    ENTER: func {
135
                        pop(me.path);
136
                        me.device.display.updateSoftKeys();
137
                    },
138
                },
139
                ENGINE: func {
140
                    me.path = [];
141
                    me.device.display.updateSoftKeys();
142
                },
143
            },
144
        },
commit initial
Sébastien MARQUE authored on 2017-03-07
145
    },
146
};