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

            
softkeys are available now
Sébastien MARQUE authored on 2017-03-14
10
    SoftKey : func (n, a) {
11
        # released key not yet managed
12
        if (a == 1)
13
            return;
14

            
15
        var key = me.device.display.screenElements[sprintf("SoftKey%02i-text",n)].get('text');
16
        if (key == '' or key == nil)
17
            return;
18

            
improves role/name variables...
Sébastien MARQUE authored on 2017-04-08
19
        var path = keyMap[me.device.role];
softkeys are available now
Sébastien MARQUE authored on 2017-03-14
20
        foreach(var p; me.path) {
21
            if (contains(path, p))
22
                path = path[p];
23
            else
24
                break;
commit initial
Sébastien MARQUE authored on 2017-03-07
25
        }
26

            
improves role/name variables...
Sébastien MARQUE authored on 2017-04-08
27
        var bindings = me.bindings[me.device.role];
softkeys are available now
Sébastien MARQUE authored on 2017-03-14
28
        foreach(var p; me.path) {
29
            if (contains(bindings, p))
30
                bindings = bindings[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
        if (contains(path, key)) {
36
            append(me.path, key);
fix issue with some menus
Sébastien MARQUE authored on 2017-03-20
37
            if (contains(bindings, key))
38
                if (contains(bindings[key], 'hook'))
39
                    call(bindings[key].hook, [], me);
softkeys are available now
Sébastien MARQUE authored on 2017-03-14
40
            me.device.display.updateSoftKeys();
commit initial
Sébastien MARQUE authored on 2017-03-07
41
        }
softkeys are available now
Sébastien MARQUE authored on 2017-03-14
42
        elsif (contains(bindings, key)) {
43
            call(bindings[key], [], me);
commit initial
Sébastien MARQUE authored on 2017-03-07
44
        }
softkeys are available now
Sébastien MARQUE authored on 2017-03-14
45
        elsif (key == 'BACK') {
46
            pop(me.path);
47
            me.device.display.updateSoftKeys();
commit initial
Sébastien MARQUE authored on 2017-03-07
48
        }
show the complete path menu ...
Sébastien MARQUE authored on 2017-03-20
49
        else {
50
            var list_path = '';
51
            foreach(var p; me.path) list_path ~= p ~ '/';
52
            print(me.device.role ~ ':' ~ list_path ~ key ~ ' : not yet implemented');
53
        }
softkeys are available now
Sébastien MARQUE authored on 2017-03-14
54
    },
55

            
56
    bindings : {
57
        PFD : {
58
            INSET: {
59
                OFF: func {
60
                    pop(me.path);
61
                    me.device.display.updateSoftKeys();
62
                },
63
            },
64
            PFD: {
adds OAT, TAS, GSPD, WindDat...
Sébastien MARQUE authored on 2017-03-15
65
                'AOA/WIND' : {
66
                    WIND : {
67
                        OPTN1 : func {
68
                            me.device.display._winddata_optn = 1;
69
                            me.device.display.screenElements['WindData'].show();
70
                            me.device.display.screenElements['WindData-OPTN1'].show();
71
                            me.device.display.screenElements['WindData-OPTN1-HDG'].show();
72
                            me.device.display.screenElements['WindData-OPTN2'].hide();
73
                            me.device.display.updateWindData();
74
                        },
75
                        OPTN2 : func {
76
                            me.device.display._winddata_optn = 2;
77
                            me.device.display.screenElements['WindData'].show();
78
                            me.device.display.screenElements['WindData-OPTN1'].hide();
79
                            me.device.display.screenElements['WindData-OPTN2'].show();
80
                            me.device.display.screenElements['WindData-OPTN2-symbol'].show();
81
                            me.device.display.screenElements['WindData-OPTN2-headwind'].show();
82
                            me.device.display.screenElements['WindData-OPTN2-crosswind'].show();
83
                            me.device.display.updateWindData();
84
                        },
85
                        OFF : func {
86
                            me.device.display._winddata_optn = 0;
87
                            me.device.display.screenElements['WindData'].hide();
88
                            me.device.display.screenElements['WindData-OPTN1'].hide();
89
                            me.device.display.screenElements['WindData-OPTN2'].hide();
90
                        },
91
                    },
92
                },
adds BRG1/2 animation
Sébastien MARQUE authored on 2017-03-16
93
                BRG1 : func (brg = 1){
94
                    var source = 'brg' ~ brg ~ '-source';
95
                    var list = ['NAV' ~ brg, 'GPS', 'ADF', 'OFF'];
96
                    var index = std.Vector
97
                                   .new(list)
98
                                   .index(radios.getNode(source).getValue());
99
                    var next = (index == size(list) -1) ?  0 : index + 1;
100
                    radios.getNode(source).setValue(list[next]);
101
                },
102
                BRG2 : func {
103
                    call(me.bindings.PFD.PFD.BRG1, [ 2 ], me);
104
                },
adds BARO settings
Sébastien MARQUE authored on 2017-03-20
105
                'STD BARO' : func {
106
                    setprop('/instrumentation/altimeter/setting-inhg', 29.92);
107
                    me.device.display.updateBARO();
108
                    pop(me.path);
109
                    me.device.display.updateSoftKeys();
110
                },
111
                IN :  func {
112
                    me.device.display._baro_unit = 'inhg';
113
                    me.device.display.updateBARO();
114
                },
115
                HPA : func {
116
                    me.device.display._baro_unit = 'hpa';
117
                    me.device.display.updateBARO();
118
                },
softkeys are available now
Sébastien MARQUE authored on 2017-03-14
119
            },
120
            XPDR: {
adds transponder
Sébastien MARQUE authored on 2017-03-17
121
                STBY : func {
122
                    setprop('/instrumentation/transponder/ident', 0);
123
                    setprop('/instrumentation/transponder/knob-mode', 1);
124
                    setprop('/instrumentation/zkv1000/radio/xpdr-mode', 'STBY');
125
                    me.device.display.updateXPDR();
126
                },
127
                ON : func {
128
                    setprop('/instrumentation/transponder/ident', 1);
129
                    setprop('/instrumentation/transponder/knob-mode', 4);
130
                    setprop('/instrumentation/zkv1000/radio/xpdr-mode', 'ON');
131
                    me.device.display.updateXPDR();
132
                },
133
                ALT : func {
134
                    setprop('/instrumentation/transponder/ident', 1);
135
                    setprop('/instrumentation/transponder/knob-mode', 5);
136
                    setprop('/instrumentation/zkv1000/radio/xpdr-mode', 'ALT');
137
                    me.device.display.updateXPDR();
138
                },
139
                VFR : func {
140
                    setprop('/instrumentation/transponder/id-code', '1200');
141
                    me.device.display.updateXPDR();
142
                },
143
                IDENT : func {
144
                    call(me.bindings.PFD.IDENT, [], me);
145
                },
146
                CODE : {
147
                    '0' : func (n = 0) {
XPDR settings via knob or so...
Sébastien MARQUE authored on 2017-03-22
148
                        if (getprop('/instrumentation/zkv1000/radios/xpdr-tuning-fms-method'))
149
                            return;
150
                        me.device.display.timers2.softkeys_inactivity.stop();
Softkeys revert to the previ...
Sébastien MARQUE authored on 2017-03-21
151
                        me.bindings.PFD.XPDR.CODE.inactivity.restart(me.device.display.softkeys_inactivity_delay);
XPDR settings via knob or so...
Sébastien MARQUE authored on 2017-03-22
152
                        # disable FMS knob entering method
153
                        me.device.knobs.FmsInner = void;
154
                        # When entering the code, the next softkey in sequence
155
                        # must be pressed within 10 seconds, or the entry is cancelled
156
                        # and restored to the previous code
157
                        if (!contains(me.bindings.PFD.XPDR.CODE, 'on_change_inactivity')) {
158
                            me.bindings.PFD.XPDR.CODE.on_change_inactivity = maketimer(10,
159
                                func {
160
                                    setprop('/instrumentation/zkv1000/radios/xpdr-tuning-digit', 3);
161
                                    me.device.knobs.FmsInner = me.device.knobs.XPDRCodeSetDigits;
162
                                    me.device.knobs.FmsOuter = me.device.knobs.XPDRCodeNextDigits;
163
                                    call(me.bindings.PFD.XPDR.CODE.restore, [], me);
164
                                });
165
                            me.bindings.PFD.XPDR.CODE.on_change_inactivity.singleShot = 1;
166
                            me.bindings.PFD.XPDR.CODE.on_change_inactivity.start();
167
                        }
168
                        else
169
                            me.bindings.PFD.XPDR.CODE.on_change_inactivity.restart(10);
adds transponder
Sébastien MARQUE authored on 2017-03-17
170
                        var tuning = radios.getNode('xpdr-tuning-digit');
171
                        var d = tuning.getValue();
172
                        setprop('/instrumentation/transponder/inputs/digit[' ~ d ~ ']', n);
XPDR settings via knob or so...
Sébastien MARQUE authored on 2017-03-22
173
                        if (d == 1) {
174
                            if (!contains(me.bindings.PFD.XPDR.CODE, 'on_change_auto_validation'))
175
                                me.bindings.PFD.XPDR.CODE.on_change_auto_validation = maketimer(5,
176
                                    func call(me.bindings.PFD.IDENT, [], me));
177
                            me.bindings.PFD.XPDR.CODE.on_change_auto_validation.singleShot = 1;
178
                            me.bindings.PFD.XPDR.CODE.on_change_auto_validation.start();
179
                        }
180
                        else {
181
                            d -= 1;
182
                            tuning.setValue(d);
183
                        }
adds transponder
Sébastien MARQUE authored on 2017-03-17
184
                        me.device.display.updateXPDR();
185
                    },
186
                    '1' : func {
187
                        call(me.bindings.PFD.XPDR.CODE['0'], [ 1 ], me);
188
                    },
189
                    '2' : func {
190
                        call(me.bindings.PFD.XPDR.CODE['0'], [ 2 ], me);
191
                    },
192
                    '3' : func {
193
                        call(me.bindings.PFD.XPDR.CODE['0'], [ 3 ], me);
194
                    },
195
                    '4' : func {
196
                        call(me.bindings.PFD.XPDR.CODE['0'], [ 4 ], me);
197
                    },
198
                    '5' : func {
199
                        call(me.bindings.PFD.XPDR.CODE['0'], [ 5 ], me);
200
                    },
201
                    '6' : func {
202
                        call(me.bindings.PFD.XPDR.CODE['0'], [ 6 ], me);
203
                    },
204
                    '7' : func {
205
                        call(me.bindings.PFD.XPDR.CODE['0'], [ 7 ], me);
206
                    },
softkeys are available now
Sébastien MARQUE authored on 2017-03-14
207
                    IDENT: func {
Softkeys revert to the previ...
Sébastien MARQUE authored on 2017-03-21
208
                        me.bindings.PFD.XPDR.CODE.inactivity.restart(me.device.display.softkeys_inactivity_delay);
209
                        me.device.display.timers2.softkeys_inactivity.restart(me.device.display.softkeys_inactivity_delay);
adds transponder
Sébastien MARQUE authored on 2017-03-17
210
                        call(me.bindings.PFD.IDENT, [], me);
211
                    },
212
                    BKSP: func {
XPDR settings via knob or so...
Sébastien MARQUE authored on 2017-03-22
213
                        if (getprop('/instrumentation/zkv1000/radios/xpdr-tuning-fms-method'))
214
                            return;
215
                        if (contains(me.bindings.PFD.XPDR.CODE, 'on_change_inactivity'))
216
                            me.bindings.PFD.XPDR.CODE.on_change_inactivity.restart(10);
217
                        if (contains(me.bindings.PFD.XPDR.CODE, 'on_change_auto_validation'))
218
                                me.bindings.PFD.XPDR.CODE.on_change_auto_validation.stop();
adds transponder
Sébastien MARQUE authored on 2017-03-17
219
                        var tuning = radios.getNode('xpdr-tuning-digit');
220
                        var d = tuning.getValue();
XPDR settings via knob or so...
Sébastien MARQUE authored on 2017-03-22
221
                        if (d < 3) {
222
                            d += 1;
223
                            tuning.setValue(d);
224
                        }
adds transponder
Sébastien MARQUE authored on 2017-03-17
225
                        me.device.display.updateXPDR();
softkeys are available now
Sébastien MARQUE authored on 2017-03-14
226
                    },
adds transponder
Sébastien MARQUE authored on 2017-03-17
227
                    BACK : func (inactive = 0) {
XPDR settings via knob or so...
Sébastien MARQUE authored on 2017-03-22
228
                        call(me.bindings.PFD.XPDR.CODE.restore, [], me);
adds transponder
Sébastien MARQUE authored on 2017-03-17
229
                        pop(me.path);
XPDR settings via knob or so...
Sébastien MARQUE authored on 2017-03-22
230
                        call(me.bindings.PFD.XPDR.CODE.exit, [me.path], me);
231
                    },
232
                    restore : func {
233
                        setprop('/instrumentation/transponder/id-code',
234
                            sprintf('%s', getprop('/instrumentation/zkv1000/radios/xpdr-backup-code')));
235
                        me.device.display.updateXPDR();
adds transponder
Sébastien MARQUE authored on 2017-03-17
236
                    },
237
                    exit : func (p) {
Softkeys revert to the previ...
Sébastien MARQUE authored on 2017-03-21
238
                        if (contains(me.bindings.PFD.XPDR.CODE, 'inactivity')) # does not exists if IDENT pressed from top-level
239
                            me.bindings.PFD.XPDR.CODE.inactivity.stop();
adds transponder
Sébastien MARQUE authored on 2017-03-17
240
                        radios.removeChild('xpdr-tuning-digit', 0);
241
                        radios.removeChild('xpdr-backup-code', 0);
XPDR settings via knob or so...
Sébastien MARQUE authored on 2017-03-22
242
                        radios.removeChild('xpdr-tuning-fms-method', 0);
adds transponder
Sébastien MARQUE authored on 2017-03-17
243
                        me.path = p;
244
                        me.device.display.updateXPDR();
softkeys are available now
Sébastien MARQUE authored on 2017-03-14
245
                        me.device.display.updateSoftKeys();
XPDR settings via knob or so...
Sébastien MARQUE authored on 2017-03-22
246
                        me.device.knobs.FmsInner = void;
247
                        me.device.knobs.FmsOuter = void;
248
                        me.device.display.timers2.softkeys_inactivity.restart(me.device.display.softkeys_inactivity_delay);
softkeys are available now
Sébastien MARQUE authored on 2017-03-14
249
                    },
adds transponder
Sébastien MARQUE authored on 2017-03-17
250
                    hook : func {
XPDR settings via knob or so...
Sébastien MARQUE authored on 2017-03-22
251
                        # this level has its own timer as we may need to revert changes, and got different timers
252
                        me.device.display.timers2.softkeys_inactivity.stop();
Softkeys revert to the previ...
Sébastien MARQUE authored on 2017-03-21
253
                        me.bindings.PFD.XPDR.CODE.inactivity = maketimer(
254
                            me.device.display.softkeys_inactivity_delay,
XPDR settings via knob or so...
Sébastien MARQUE authored on 2017-03-22
255
                            func call(me.bindings.PFD.XPDR.CODE.BACK, [], me));
Softkeys revert to the previ...
Sébastien MARQUE authored on 2017-03-21
256
                        me.bindings.PFD.XPDR.CODE.inactivity.singleShot = 1;
257
                        me.bindings.PFD.XPDR.CODE.inactivity.start();
adds transponder
Sébastien MARQUE authored on 2017-03-17
258
                        var tuning = getprop('/instrument/zkv1000/radios/xpdr-tuning-digit');
259
                        if (tuning == nil) {
260
                            radios.getNode('xpdr-tuning-digit', 1).setValue(3);
261
                            radios.getNode('xpdr-backup-code', 1).setValue(getprop('/instrumentation/transponder/id-code'));
XPDR settings via knob or so...
Sébastien MARQUE authored on 2017-03-22
262
                            radios.getNode('xpdr-tuning-fms-method', 1).setValue(0);
adds transponder
Sébastien MARQUE authored on 2017-03-17
263
                            me.device.display.updateXPDR();
264
                        }
XPDR settings via knob or so...
Sébastien MARQUE authored on 2017-03-22
265
                        me.device.knobs.FmsInner = me.device.knobs.XPDRCodeSetDigits;
266
                        me.device.knobs.FmsOuter = me.device.knobs.XPDRCodeNextDigits;
adds transponder
Sébastien MARQUE authored on 2017-03-17
267
                    },
softkeys are available now
Sébastien MARQUE authored on 2017-03-14
268
                },
adds transponder
Sébastien MARQUE authored on 2017-03-17
269
            },
270
            IDENT : func {
271
                if (getprop('/instrumentation/zkv1000/radio/xpdr-mode') == 'STBY')
272
                    return;
273
                setprop('/instrumentation/transponder/ident', 1);
274
                me.bindings.PFD.XPDR.ident = maketimer(18,
275
                        func {
276
                            setprop('/instrumentation/transponder/ident', 0);
277
                            me.device.display.updateXPDR();
278
                        });
279
                me.bindings.PFD.XPDR.ident.singleShot = 1;
280
                me.bindings.PFD.XPDR.ident.start();
XPDR settings via knob or so...
Sébastien MARQUE authored on 2017-03-22
281
                call(me.bindings.PFD.XPDR.CODE.exit, [], me);
softkeys are available now
Sébastien MARQUE authored on 2017-03-14
282
            },
adds CDI
Sébastien MARQUE authored on 2017-03-18
283
            CDI : func {
284
                var list = ['OFF'];
285
                if (getprop('/instrumentation/gps/route-distance-nm') != nil)
286
                    append(list, 'GPS');
287
                if (getprop('/instrumentation/nav/in-range') != nil)
288
                    append(list, 'NAV1');
289
                if (getprop('/instrumentation/nav[1]/in-range') != nil)
290
                    append(list, 'NAV2');
291
                var index = std.Vector
292
                               .new(list)
293
                               .index(cdi.getNode('source').getValue());
294
                var next = (index == size(list) -1) ?  0 : index + 1;
295
                cdi.getNode('source').setValue(list[next]);
296
                CDIfromSOURCE(list[next]);
297
                me.device.display.updateCDI();
298
            },
TMR/REF window
Sébastien MARQUE authored on 2017-03-28
299
            'TMR/REF' : func {
300
                if (!contains(me.device.windows.state, 'TMR/REF')) {
TMR/REF available
Sébastien MARQUE authored on 2017-04-10
301
                    var Vspeed_visiblity = func (id, selected, Vspeed)
302
                        me.device.data[Vspeed ~ '-visible'] =
303
                            me.device.windows.state[id].objects[selected].text
304
                            ==
305
                            me.device.windows.state[id].objects[selected].choices[0];
306
                    var GenericTimer = func (id, selected) {
307
                        var action = me.device.windows.state[id].objects[selected].text;
308
                        if (action == 'START?') {
309
                            me.device.data.TMRrevert = 0;
310
                            me.device.data.TMRlast = getprop('/sim/time/elapsed-sec') - 1;
311
                            me.device.data.TMRreset = me.device.windows.state[id].objects[selected - 2].text;
312
                            me.device.data.TMRtimer = maketimer(1, func {
313
                                    var (hh, mm, ss) = split(':',
314
                                            me.device.windows.state[id].objects[selected - 2].text);
315
                                    var direction = -1;
316
                                    if ((me.device.windows.state[id].objects[selected - 1].text
317
                                            ==
318
                                        me.device.windows.state[id].objects[selected - 1].choices[0])
319
                                    or me.device.data.TMRrevert)
320
                                        direction = 1;
321
                                    var now = getprop('/sim/time/elapsed-sec');
322
                                    var dt = int(now - me.device.data.TMRlast) * direction;
323
                                    me.device.data.TMRlast = now;
324
                                    var val = HMS(hh, mm, ss, dt);
325
                                    me.device.windows.state[id].objects[selected - 2].text = val;
326
                                    me.device.windows.window[id ~ '-' ~ (selected -2)]
327
                                        .setText(val);
328
                                    if (val == '00:00:00' and direction == -1)
329
                                        me.device.data.TMRrevert = 1;
330
                                }, me);
331
                            me.device.data.TMRtimer.start();
332
                            action = 'STOP?';
333
                        }
334
                        elsif (action == 'STOP?') {
335
                            me.device.data.TMRtimer.stop();
336
                            action = 'RESET?';
337
                        }
338
                        elsif (action == 'RESET?') {
339
                            action = 'START?';
340
                            if ((me.device.windows.state[id].objects[selected - 1].text
341
                                        ==
342
                                me.device.windows.state[id].objects[selected - 1].choices[1])
343
                            and !me.device.data.TMRrevert)
344
                                var val = me.device.data.TMRreset;
345
                            else
346
                                var val = '00:00:00';
347
                            me.device.windows.state[id].objects[selected - 2].text = val;
348
                            me.device.windows.window[id ~ '-' ~ (selected -2)]
349
                                .setText(val);
350
                        }
351
                        me.device.windows.window[me.device.windows.selected]
352
                            .setText(action);
353
                        me.device.windows.state[id].objects[selected].text = action;
354
                    };
TMR/REF window
Sébastien MARQUE authored on 2017-03-28
355
                    me.device.windows.draw(
356
                        'TMR/REF',
357
                        {x: 720, y: 535, w: 300, l: 5, sep: 3},
TMR/REF window adaptation
Sébastien MARQUE authored on 2017-04-02
358
                        [ # objects infos
TMR/REF window
Sébastien MARQUE authored on 2017-03-28
359
                            {text: 'REFERENCES', type: 'title'},
360
                            {type: 'separator'},
361
                            {text: 'TIMER', type: 'normal'},
362
                            {text: '00:00:00', type: 'selected|time', },
TMR/REF available
Sébastien MARQUE authored on 2017-04-10
363
                            {text: '  UP >', type: 'editable', choices: ['  UP >', '<DOWN ']},
364
                            {text: 'START?', type: 'editable|end-of-line', callback: func (id, selected) GenericTimer(id, selected)},
TMR/REF window
Sébastien MARQUE authored on 2017-03-28
365
                            {type: 'separator'},
TMR/REF available
Sébastien MARQUE authored on 2017-04-10
366
                            {text: sprintf('Vx     %3iKT', alerts.getNode('Vx').getValue()), type: 'normal', scrollgroup:0},
367
                            {text: me.device.data['Vx-visible'] ? '   ON >' : '< OFF  ', type: 'editable|immediate|end-of-line', choices: ['   ON >', '< OFF  '], scrollgroup:0, callback: func (id, selected) Vspeed_visiblity(id, selected, 'Vx')},
368
                            {text: sprintf('Vy     %3iKT', alerts.getNode('Vy').getValue()), type: 'normal', scrollgroup:1},
369
                            {text: me.device.data['Vy-visible'] ? '   ON >' : '< OFF  ', type: 'editable|immediate|end-of-line', choices: ['   ON >', '< OFF  '], scrollgroup:1, callback: func (id, selected) Vspeed_visiblity(id, selected, 'Vy')},
370
                            {text: sprintf('Vr     %3iKT', alerts.getNode('Vr').getValue()), type: 'normal', scrollgroup:2},
371
                            {text: me.device.data['Vr-visible'] ? '   ON >' : '< OFF  ', type: 'editable|immediate|end-of-line', choices: ['   ON >', '< OFF  '], scrollgroup:2, callback: func (id, selected) Vspeed_visiblity(id, selected, 'Vr')},
372
                            {text: sprintf('Vglide %3iKT', alerts.getNode('Vglide').getValue()), type: 'normal', scrollgroup:3},
373
                            {text: me.device.data['Vglide-visible'] ? '   ON >' : '< OFF  ', type: 'editable|immediate|end-of-line', choices: ['   ON >', '< OFF  '], scrollgroup:3, callback: func (id, selected) Vspeed_visiblity(id, selected, 'Vglide')},
TMR/REF window
Sébastien MARQUE authored on 2017-03-28
374
                            {type: 'separator'},
375
                            {text: 'MINIMUMS', type: 'normal'},
TMR/REF available
Sébastien MARQUE authored on 2017-04-10
376
                            {text: '   OFF   >', type: 'editable', choices: ['   OFF   >', '<  BARO  >','<TEMP COMP'], callback: func},
TMR/REF window adaptation
Sébastien MARQUE authored on 2017-04-02
377
                            {text: ' 1000FT', type: 'editable', format: '% 5iFT', factor: 100, callback: func},
378
                        ],
379
                        { # scrolling info, see menu.nas
380
                            lines : 3,
381
                            columns : 2,
382
                        }
TMR/REF window
Sébastien MARQUE authored on 2017-03-28
383
                    );
384
                    me.device.knobs.FmsInner = me.device.knobs.MenuSettings;
385
                    me.device.knobs.FmsOuter = me.device.knobs.NavigateMenu;
TMR/REF available
Sébastien MARQUE authored on 2017-04-10
386
                    me.device.buttons.ENT = me.device.buttons.ValidateTMRREF;
387
                    me.device.buttons.FMS = me.device.buttons.ValidateTMRREF;
388
                    me.device.buttons.CLR = me.device.buttons.ClearTMRREF;
TMR/REF window
Sébastien MARQUE authored on 2017-03-28
389
                }
390
                else {
TMR/REF available
Sébastien MARQUE authored on 2017-04-10
391
                    me.device.buttons.ClearTMRREF();
TMR/REF window
Sébastien MARQUE authored on 2017-03-28
392
                }
393
            },
softkeys are available now
Sébastien MARQUE authored on 2017-03-14
394
        },
395
        MFD : {
396
            ENGINE: {
397
                FUEL: {
398
                    UNDO: func {
399
                        pop(me.path);
400
                        me.device.display.updateSoftKeys();
401
                    },
402
                    ENTER: func {
403
                        pop(me.path);
404
                        me.device.display.updateSoftKeys();
405
                    },
406
                },
407
                ENGINE: func {
408
                    me.path = [];
409
                    me.device.display.updateSoftKeys();
410
                },
411
            },
add missing exit to MFD/CHKL...
Sébastien MARQUE authored on 2017-03-20
412
            CHKLIST : {
413
                EXIT: func {
414
                    me.path = [];
415
                    me.device.display.updateSoftKeys();
416
                },
417
            },
softkeys are available now
Sébastien MARQUE authored on 2017-03-14
418
        },
commit initial
Sébastien MARQUE authored on 2017-03-07
419
    },
420
};