... | ... |
@@ -85,7 +85,7 @@ var deviceClass = { |
85 | 85 |
m.display.showInitProgress(m.role); |
86 | 86 |
m.buttons = buttonsClass.new(m.node); |
87 | 87 |
m.knobs = knobsClass.new(m.node); |
88 |
- m.softkeys = softkeysClass.new(m.node, m.role); |
|
88 |
+ m.softkeys = softkeysClass.new(m, m.node, m.role); |
|
89 | 89 |
m.display.loadsvg(); |
90 | 90 |
m.display.loadGroup({ |
91 | 91 |
hide : [ |
... | ... |
@@ -75,6 +75,10 @@ var displayClass = { |
75 | 75 |
hide : [ ], |
76 | 76 |
clip: [ ], |
77 | 77 |
}; |
78 |
+ |
|
79 |
+ for (var k = 0; k < 12; k += 1) |
|
80 |
+ append(groups.text, sprintf("SoftKey%02i-text", k)); |
|
81 |
+ |
|
78 | 82 |
if (me.role == 'PFD') { |
79 | 83 |
append(groups.show, |
80 | 84 |
'XPDR-TIME', |
... | ... |
@@ -156,6 +160,7 @@ var displayClass = { |
156 | 160 |
} |
157 | 161 |
me._updateRadio({auto:'nav'}); |
158 | 162 |
me._updateRadio({auto:'comm'}); |
163 |
+ me.updateSoftKeys(); |
|
159 | 164 |
me.progress.removeAllChildren(); |
160 | 165 |
me.progress = nil; |
161 | 166 |
me.showInitProgress = nil; |
... | ... |
@@ -280,6 +285,45 @@ var displayClass = { |
280 | 285 |
}, |
281 | 286 |
#}}} |
282 | 287 |
|
288 |
+ updateSoftKeys : func { |
|
289 |
+# update SoftKeys boxes {{{ |
|
290 |
+ # grey background code = #353939 |
|
291 |
+ # on PFD the last boxes are always BACK and ALERTS |
|
292 |
+ if (me.role == 'PFD') { |
|
293 |
+ me.screenElements[sprintf("SoftKey%02i-text", 11)] |
|
294 |
+ .setText('ALERTS'); |
|
295 |
+ if (size(me.device.softkeys.path) != 0) |
|
296 |
+ me.screenElements[sprintf("SoftKey%02i-text", 10)] |
|
297 |
+ .setText('BACK'); |
|
298 |
+ } |
|
299 |
+ |
|
300 |
+ var path = keyMap[me.role]; |
|
301 |
+ foreach (var p; me.device.softkeys.path) |
|
302 |
+ path = path[p]; |
|
303 |
+ |
|
304 |
+ # feeding with empty menus the first boxes |
|
305 |
+ var start = (contains(path, 'first')) ? path.first : 0; |
|
306 |
+ for (var k = 0; k < start; k+=1) { |
|
307 |
+ me.screenElements[sprintf("SoftKey%02i-text", k)] |
|
308 |
+ .setText(''); |
|
309 |
+ } |
|
310 |
+ # filling with the content the next boxes |
|
311 |
+ forindex (var k; path.texts) { |
|
312 |
+ var i = k + start; |
|
313 |
+ me.screenElements[sprintf("SoftKey%02i-text", i)] |
|
314 |
+ .setText(path.texts[k]); |
|
315 |
+ } |
|
316 |
+ # feeding the last boxes with empty string |
|
317 |
+ var end = (me.role == 'PFD') ? 10 : 12; |
|
318 |
+ if (size(path.texts) + start < end) { |
|
319 |
+ start = size(path.texts) + start; |
|
320 |
+ for (var k = start; k < end; k += 1) |
|
321 |
+ me.screenElements[sprintf("SoftKey%02i-text", k)] |
|
322 |
+ .setText(''); |
|
323 |
+ } |
|
324 |
+ }, |
|
325 |
+#}}} |
|
326 |
+ |
|
283 | 327 |
updateAI: func(roll,pitch){ |
284 | 328 |
#{{{ |
285 | 329 |
if (pitch > 80) |
... | ... |
@@ -651,3 +695,69 @@ var displayClass = { |
651 | 695 |
}, |
652 | 696 |
#}}} |
653 | 697 |
}; |
698 |
+ |
|
699 |
+var keyMap = { |
|
700 |
+ PFD : { |
|
701 |
+ first : 1, |
|
702 |
+ texts : ['INSET', 'SENSOR', 'PFD', 'OBS', 'CDI', 'DME', 'XPDR', 'IDENT', 'TMR/REF', 'NRST' ], |
|
703 |
+ INSET : { |
|
704 |
+ texts : ['OFF', 'DCLTR', 'WXLGND', 'TRAFFIC', 'TOPO', 'TERRAIN', 'STRMSCP', 'NEXRAD-C', 'XM LTNG', 'METAR'], |
|
705 |
+ }, |
|
706 |
+ SENSOR : { |
|
707 |
+ first : 2, |
|
708 |
+ texts : [ 'ADC1', 'ADC2', '', 'AHRS1', 'AHRS2'], |
|
709 |
+ }, |
|
710 |
+ PFD : { |
|
711 |
+ texts : [ 'SYN VIS', 'DFLTS', 'AOA/WIND', 'DME', 'BRG', 'HSI FMT', '', '', 'ALT UNIT', 'STD BARO' ], |
|
712 |
+ 'SYN VIS' : { |
|
713 |
+ texts : [ 'PATHWAY', 'SYN TERR', 'HR2NHDG', 'APTSIGNS', 'FPM'], |
|
714 |
+ }, |
|
715 |
+ 'AOA/WIND' : { |
|
716 |
+ first : 4, |
|
717 |
+ texts : ['AOA', 'WIND'], |
|
718 |
+ AOA : { |
|
719 |
+ first : 5, |
|
720 |
+ texts : ['AOA ON', 'AOA AUTO'], |
|
721 |
+ }, |
|
722 |
+ WIND : { |
|
723 |
+ first : 2, |
|
724 |
+ texts : ['OPTN1', 'OPTN2', '', 'OFF'], |
|
725 |
+ }, |
|
726 |
+ }, |
|
727 |
+ 'HSI FMT' : { |
|
728 |
+ first : 6, |
|
729 |
+ texts : ['360 HSI', 'ARC HSI'], |
|
730 |
+ }, |
|
731 |
+ 'ALT UNIT' : { |
|
732 |
+ first : 5, |
|
733 |
+ texts : ['METERS', '', 'IN', 'HPA'], |
|
734 |
+ }, |
|
735 |
+ }, |
|
736 |
+ XPDR : { |
|
737 |
+ first : 2, |
|
738 |
+ texts : ['STBY', 'ON', 'ALT', '', 'VFR', 'CODE', 'IDENT'], |
|
739 |
+ CODE : { |
|
740 |
+ texts : ['0', '1', '2', '3', '4', '5', '6', '7', 'IDENT', 'BKSP'], |
|
741 |
+ }, |
|
742 |
+ }, |
|
743 |
+ }, |
|
744 |
+ MFD : { |
|
745 |
+ texts : ['ENGINE', '', 'MAP', '', '', '', '', '', '', 'DCLTR', 'SHW CHRT', 'CHKLIST'], |
|
746 |
+ MAP : { |
|
747 |
+ texts: ['TRAFFIC', 'PROFILE', 'TOPO', 'TERRAIN', 'AIRWAYS', 'STRMSCP','NEXRAD-C', 'XM LTNG', 'METAR', 'LEGEND', 'BACK'], |
|
748 |
+ }, |
|
749 |
+ CHKLIST : { |
|
750 |
+ texts : ['ENGINE', '', '', '', '', 'DONE', '', '', '', '', 'EXIT', 'EMERGCY'], |
|
751 |
+ }, |
|
752 |
+ ENGINE : { |
|
753 |
+ texts : ['ENGINE', 'ANTI-ICE', '', 'DCLTR', '', 'ASSIST', '', '', '', '', 'FUEL'], |
|
754 |
+ 'ANTI-ICE' : { |
|
755 |
+ texts : ['LEFT', 'AUTO', 'RIGHT', '', '', '', '', '', '', '', '', 'BACK'], |
|
756 |
+ }, |
|
757 |
+ FUEL : { |
|
758 |
+ first : 1, |
|
759 |
+ texts : ['FULL', 'TABS', '', '', '', '', '', '', '', 'UNDO', 'ENTER'], |
|
760 |
+ }, |
|
761 |
+ }, |
|
762 |
+ }, |
|
763 |
+}; |
... | ... |
@@ -1,297 +1,104 @@ |
1 | 1 |
var softkeysClass = { |
2 |
- new : func (node, role) { |
|
2 |
+ new : func (device, node, role) { |
|
3 | 3 |
var m = { parents: [ softkeysClass ] }; |
4 | 4 |
m.node = node; |
5 |
+ m.device = device; |
|
5 | 6 |
m.role = role; |
6 |
- m.rootmenu = m.role == 'MFD' ? 16 : 0; |
|
7 |
- m.goto(m.rootmenu); |
|
7 |
+ m.path = []; |
|
8 | 8 |
return m; |
9 | 9 |
}, |
10 | 10 |
|
11 |
- SoftKey : func (n, a) { |
|
12 |
- printf("%s softkey %i (%s)", me.role, n, a == 1 ? "pushed" : "released"); |
|
13 |
-# me._SoftKey[me.rootlevel + me.level][n](a); |
|
14 |
- }, |
|
15 |
- |
|
16 |
- goto: func (l) { |
|
17 |
- me.level = l; |
|
18 |
- }, |
|
19 |
- |
|
20 |
- GPS: func { |
|
21 |
- nyi('GPS softkey'); |
|
22 |
- me.goto(me.rootmenu); |
|
11 |
+ clean : func { |
|
12 |
+ # deletes unsed bindings |
|
13 |
+ foreach (var b; me.bindings) |
|
14 |
+ if (b != role) |
|
15 |
+ delete(bindings, b); |
|
23 | 16 |
}, |
24 | 17 |
|
25 |
- CDIOFF: func { |
|
26 |
- cdi.getNode('visible').setBoolValue(0); |
|
27 |
- radios.getNode('nav1-selected').setIntValue(0); |
|
28 |
- radios.getNode('nav2-selected').setIntValue(0); |
|
29 |
- cdi.getNode('in-range').unalias(); |
|
30 |
- cdi.getNode('course').unalias(); |
|
31 |
- cdi.getNode('course-deflection').unalias(); |
|
32 |
- cdi.getNode('pointer-type').setIntValue(0); |
|
33 |
- cdi.getNode('from-flag').unalias(); |
|
34 |
- var mode = nil; |
|
35 |
- mode = getprop('/autopilot/locks/roll'); |
|
36 |
- if (mode == 'NAV' or mode == 'APR') |
|
37 |
- AFCS.ROLL(); |
|
38 |
- mode = getprop('/autopilot/locks/pitch'); |
|
39 |
- if (mode == 'GS' or mode == 'APR') |
|
40 |
- AFCS.PIT(); |
|
41 |
- me.goto(me.rootmenu); |
|
42 |
- }, |
|
43 |
- |
|
44 |
- VOR: func (n) { |
|
45 |
- radios.getNode('nav' ~ (2-n) ~ '-selected').setIntValue(0); |
|
46 |
- radios.getNode('nav' ~ (1+n) ~ '-selected').setIntValue(1); |
|
47 |
- CDIfromNAV(n); |
|
48 |
- me.goto(me.rootmenu); |
|
49 |
- }, |
|
50 |
- |
|
51 |
- NRST: func { |
|
52 |
- var title = me.mud.node.getNode('title').getValue(); |
|
53 |
- if (substr(title, 0, 8) == 'NEAREST ') { |
|
54 |
- me.mud.close(); |
|
55 |
- me.largeFMSknob = void; |
|
56 |
- me.smallFMSknob = void; |
|
57 |
- } |
|
58 |
- else { |
|
59 |
- lockSearches(); |
|
60 |
- searchNearestNavaid('airport', 10); |
|
61 |
- showSearchResults(me.mud, 'NEAREST AIRPORTS', 'mag-bearing-deg', |
|
62 |
- func { msg('set HDG to ' ~ arg[0][0]); |
|
63 |
- setprop('/instrumentation/zkv1000/afcs/heading-bug-deg', arg[0][0]) |
|
64 |
- } |
|
65 |
- ); |
|
66 |
- unlockSearches(); |
|
67 |
- me.smallFMSknob = func (dir) { selectSearchType(me.mud, dir) }; |
|
68 |
- me.largeFMSknob = func (dir) { me.mud.select(dir) }; |
|
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; |
|
69 | 33 |
} |
70 |
- }, |
|
71 | 34 |
|
72 |
- INSETOFF: func { |
|
73 |
- me.newstatus(1); |
|
74 |
- }, |
|
75 |
- |
|
76 |
- TRAFFIC: func { |
|
77 |
- if (props.globals.getNode('/instrumentation/radar/serviceable') != nil |
|
78 |
- and props.globals.getNode('/instrumentation/radar/display-controls/tcas') != nil) { |
|
79 |
- if (getprop('/instrumentation/radar/serviceable') |
|
80 |
- and getprop('/instrumentation/radar/display-controls/tcas')) { |
|
81 |
- me.newstatus(5); |
|
82 |
- } |
|
83 |
- } |
|
84 |
- else { |
|
85 |
- msg('unable to find TCAS config, no radar'); |
|
86 |
- me.goto(me.rootmenu); |
|
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; |
|
87 | 41 |
} |
88 |
- }, |
|
89 |
- |
|
90 |
- TOPO: func { |
|
91 |
- me.newstatus(2); |
|
92 |
- me.node.getNode('mfd-title').setValue('TOPO'); |
|
93 |
- setprop(me.map_path ~ '/longitude-deg', getprop('/position/longitude-deg')); |
|
94 |
- setprop(me.map_path ~ '/latitude-deg', getprop('/position/latitude-deg')); |
|
95 |
- me.map.getNode('latitude-deg').alias('/position/latitude-deg'); |
|
96 |
- me.map.getNode('longitude-deg').alias('/position/longitude-deg'); |
|
97 |
- }, |
|
98 |
- |
|
99 |
- TERRAIN: func { |
|
100 |
- me.newstatus(3); |
|
101 |
- me.node.getNode('mfd-title').setValue('TERR ' ~ mapRanges[getprop(me.map_path ~ '/range-index')]); |
|
102 |
- me.map.getNode('latitude-deg').unalias(); |
|
103 |
- me.map.getNode('longitude-deg').unalias(); |
|
104 |
- setprop(me.map_path ~ '/longitude-deg', getprop('/position/longitude-deg')); |
|
105 |
- setprop(me.map_path ~ '/latitude-deg', getprop('/position/latitude-deg')); |
|
106 |
- }, |
|
107 |
- |
|
108 |
- STRMSCP: func { |
|
109 |
- nyi('STRMSCP softkey'); |
|
110 |
- me.goto(me.rootmenu); |
|
111 |
- }, |
|
112 |
- |
|
113 |
- NEXRAD: func { |
|
114 |
- nyi('NEXRAD softkey'); |
|
115 |
- me.goto(me.rootmenu); |
|
116 |
- }, |
|
117 |
- |
|
118 |
- XMLTNG: func { |
|
119 |
- nyi('XMLTNG softkey'); |
|
120 |
- me.goto(me.rootmenu); |
|
121 |
- }, |
|
122 |
- |
|
123 |
- DCLTROFF: func { |
|
124 |
- nyi('DCLTROFF softkey'); |
|
125 |
- me.goto(me.rootmenu); |
|
126 |
- }, |
|
127 |
- |
|
128 |
- DCLTR: func (x) { |
|
129 |
- nyi('DCLTR' ~ x ~ ' softkey'); |
|
130 |
- me.goto(me.rootmenu); |
|
131 |
- }, |
|
132 |
- |
|
133 |
- DFLTS: func { |
|
134 |
- nyi('DEFAULTS softkey'); |
|
135 |
- me.goto(me.rootmenu); |
|
136 |
- }, |
|
137 |
- |
|
138 |
- DME: func { |
|
139 |
- nyi('DME softkey'); |
|
140 |
- me.goto(me.rootmenu); |
|
141 |
- }, |
|
142 |
- |
|
143 |
- STDBARO: func { |
|
144 |
- setprop('/instrumentation/altimeter/setting-inhg', 29.92); |
|
145 |
- me.goto(me.rootmenu); |
|
146 |
- }, |
|
147 |
- |
|
148 |
- BRG1: func (x) { |
|
149 |
- nyi('BRG1' ~ x ~ ' softkey'); |
|
150 |
- me.goto(me.rootmenu); |
|
151 |
- }, |
|
152 |
- |
|
153 |
- BRG2: func (x) { |
|
154 |
- nyi('BRG2' ~ x ~ ' softkey'); |
|
155 |
- me.goto(me.rootmenu); |
|
156 |
- }, |
|
157 |
- |
|
158 |
- BRGOFF: func (x) { |
|
159 |
- nyi('BRGOFF' ~ x ~ ' softkey'); |
|
160 |
- me.goto(me.rootmenu); |
|
161 |
- }, |
|
162 |
- |
|
163 |
- HSI360: func { |
|
164 |
- me.node.getNode('hsi-360').setBoolValue(1); |
|
165 |
- me.goto(me.rootmenu); |
|
166 |
- }, |
|
167 |
- |
|
168 |
- HSIARC: func { |
|
169 |
- me.node.getNode('hsi-360').setBoolValue(0); |
|
170 |
- me.goto(me.rootmenu); |
|
171 |
- }, |
|
172 |
- |
|
173 |
- OPTN: func (x) { |
|
174 |
- me.node.getNode('wind-data').setBoolValue(1); |
|
175 |
- wind_infos = zkv1000['wind_opt' ~ x]; |
|
176 |
- me.goto(me.rootmenu); |
|
177 |
- }, |
|
178 |
- |
|
179 |
- WINDOFF: func { |
|
180 |
- wind_infos = void; |
|
181 |
- me.node.getNode('wind-data').setBoolValue(1); |
|
182 |
- setprop('/instrumentation/zkv1000/infos/wind-line', ''); |
|
183 |
- setprop('/instrumentation/zkv1000/infos/wind-line[1]', ''); |
|
184 |
- me.goto(me.rootmenu); |
|
185 |
- }, |
|
186 |
- |
|
187 |
- METERS: func { |
|
188 |
- nyi('METERS softkey'); |
|
189 |
- me.goto(me.rootmenu); |
|
190 |
- }, |
|
191 |
- |
|
192 |
- IN: func { |
|
193 |
- nyi('IN softkey'); |
|
194 |
- me.goto(me.rootmenu); |
|
195 |
- }, |
|
196 |
- |
|
197 |
- HPA: func { |
|
198 |
- nyi('HPA softkey'); |
|
199 |
- me.goto(me.rootmenu); |
|
200 |
- }, |
|
201 | 42 |
|
202 |
- ON: func { |
|
203 |
- setprop('/instrumentation/zkv1000/radios/xpdr-mode', 'ON'); |
|
204 |
- setprop('/instrumentation/transponder/serviceable', 1); |
|
205 |
- me.goto(me.rootmenu); |
|
206 |
- }, |
|
207 |
- |
|
208 |
- ALT: func { |
|
209 |
- setprop('/instrumentation/zkv1000/radios/xpdr-mode', 'ALT'); |
|
210 |
- setprop('/instrumentation/transponder/serviceable', 1); |
|
211 |
- me.goto(me.rootmenu); |
|
212 |
- }, |
|
213 |
- |
|
214 |
- GND: func { |
|
215 |
- setprop('/instrumentation/zkv1000/radios/xpdr-mode', 'GND'); |
|
216 |
- setprop('/instrumentation/transponder/serviceable', 1); |
|
217 |
- me.goto(me.rootmenu); |
|
218 |
- }, |
|
219 |
- |
|
220 |
- VFR: func { |
|
221 |
- XPDR_old = getprop('/instrumentation/transponder/id-code'); |
|
222 |
- setprop('/instrumentation/zkv1000/radios/xpdr-mode', 'VFR'); |
|
223 |
- setprop('/instrumentation/transponder/serviceable', 0); |
|
224 |
- me.goto(me.rootmenu); |
|
225 |
- }, |
|
226 |
- |
|
227 |
- XPDR: func (x) { |
|
228 |
- if (x <= 7) { |
|
229 |
- if (XPDR_n == 3) { |
|
230 |
- XPDR_old = getprop('/instrumentation/transponder/id-code'); |
|
231 |
- } |
|
232 |
- elsif (XPDR_n < 0) { |
|
233 |
- me.goto(10); |
|
234 |
- XPDR_n = 3; |
|
235 |
- return; |
|
236 |
- } |
|
237 |
- else { |
|
238 |
- setprop('/instrumentation/transponder/id-code', x * math.pow(10, XPDR_n)); |
|
239 |
- XPDR_n -= 1; |
|
240 |
- } |
|
241 |
- } |
|
242 |
- else { |
|
243 |
- if (x == 9) setprop('/instrumentation/transponder/id-code', XPDR_old); |
|
244 |
- XPDR_n = 3; |
|
245 |
- me.goto(me.rootmenu); |
|
43 |
+ if (contains(path, key)) { |
|
44 |
+ append(me.path, key); |
|
45 |
+ me.device.display.updateSoftKeys(); |
|
246 | 46 |
} |
247 |
- }, |
|
248 |
- |
|
249 |
- CODE: func { |
|
250 |
- getprop('/instrumentation/zkv1000/radios/xpdr-mode') == 'STBY' or return; |
|
251 |
- me.largeFMSknob = func (x) { |
|
252 |
- XPDR_change_cursor_position(x); |
|
253 |
- settimer(func { me.ENTsoftkey(1) }, 10); |
|
47 |
+ elsif (contains(bindings, key)) { |
|
48 |
+ call(bindings[key], [], me); |
|
254 | 49 |
} |
255 |
- me.smallFMSknob = func (x) { |
|
256 |
- XPDR_enter_digits(x); |
|
257 |
- settimer(func { me.ENTsoftkey(1) }, 10); |
|
50 |
+ elsif (key == 'BACK') { |
|
51 |
+ pop(me.path); |
|
52 |
+ me.device.display.updateSoftKeys(); |
|
258 | 53 |
} |
259 |
- me.goto(11); |
|
54 |
+ else |
|
55 |
+ print(me.device.role ~ '/' ~ key ~ ' : not yet implemented'); |
|
56 |
+ }, |
|
57 |
+ |
|
58 |
+ bindings : { |
|
59 |
+ PFD : { |
|
60 |
+ INSET: { |
|
61 |
+ OFF: func { |
|
62 |
+ pop(me.path); |
|
63 |
+ me.device.display.updateSoftKeys(); |
|
64 |
+ }, |
|
65 |
+ }, |
|
66 |
+ PFD: { |
|
67 |
+ 'STD BARO': func { |
|
68 |
+ pop(me.path); |
|
69 |
+ me.device.display.updateSoftKeys(); |
|
70 |
+ }, |
|
71 |
+ }, |
|
72 |
+ XPDR: { |
|
73 |
+ CODE: { |
|
74 |
+ IDENT: func { |
|
75 |
+ me.path = []; |
|
76 |
+ me.device.display.updateSoftKeys(); |
|
77 |
+ }, |
|
78 |
+ BACK: func { |
|
79 |
+ me.path = []; |
|
80 |
+ me.device.display.updateSoftKeys(); |
|
81 |
+ }, |
|
82 |
+ }, |
|
83 |
+ }, |
|
84 |
+ }, |
|
85 |
+ MFD : { |
|
86 |
+ ENGINE: { |
|
87 |
+ FUEL: { |
|
88 |
+ UNDO: func { |
|
89 |
+ pop(me.path); |
|
90 |
+ me.device.display.updateSoftKeys(); |
|
91 |
+ }, |
|
92 |
+ ENTER: func { |
|
93 |
+ pop(me.path); |
|
94 |
+ me.device.display.updateSoftKeys(); |
|
95 |
+ }, |
|
96 |
+ }, |
|
97 |
+ ENGINE: func { |
|
98 |
+ me.path = []; |
|
99 |
+ me.device.display.updateSoftKeys(); |
|
100 |
+ }, |
|
101 |
+ }, |
|
102 |
+ }, |
|
260 | 103 |
}, |
261 |
- |
|
262 |
- TMRREF: func (ref) { |
|
263 |
- time = zkv1000['time' ~ ref]; |
|
264 |
- me.goto(me.rootmenu); |
|
265 |
- }, |
|
266 |
- |
|
267 |
- CHRON: func { |
|
268 |
- fgcommand('dialog-show', props.Node.new({ |
|
269 |
- 'dialog-name': 'stopwatch-dialog', |
|
270 |
- })); |
|
271 |
- me.goto(me.rootmenu); |
|
272 |
- }, |
|
273 |
- |
|
274 |
- set_softkeyActionTable: func { |
|
275 |
- me.softkeyActionTable = [ |
|
276 |
- [void, func{me.goto(2)},void, func{me.goto(4)}, void, func{me.goto(1)}, ADFDME, func{me.goto(10)},IDENT, func{me.goto(17)}, func{me.NRST()}], |
|
277 |
- [void, func{me.VOR(0)}, func{me.VOR(1)}, func{me.GPS()}, void, void, func{me.CDIOFF()}, void, void, void, func{me.goto(me.rootmenu)}], |
|
278 |
- [func{me.INSETOFF()},func{me.goto(3)},void, func{me.TRAFFIC()},func{me.TOPO()}, func{me.TERRAIN()},func{me.STRMSCP()},func{me.NEXRAD()},func{me.XMLTNG()},void, func{me.goto(me.rootmenu)}], |
|
279 |
- [func{me.DCLTROFF()},void, func{me.DCLTR(1)},func{me.DCLTR(2)}, func{me.DCLTR(3)}, void, void, void, void, void, func{me.goto(2)}], |
|
280 |
- [LIGHT, func{me.DFLTS()},func{me.goto(8)}, func{me.DME()}, func{me.goto(5)}, func{me.goto(7)}, func{me.goto(6)}, void, func{me.goto(9)}, func{me.STDBARO()},func{me.goto(me.rootmenu)}], |
|
281 |
- [func{me.BRG1(1)}, func{me.BRG1(2)},func{me.BRG1(3)}, void, func{me.BRGOFF(1)},void, void, void, void, void, func{me.goto(4)}], |
|
282 |
- [func{me.BRG2(1)}, func{me.BRG2(2)},func{me.BRG2(3)}, void, func{me.BRGOFF(2)},void, void, void, void, void, func{me.goto(4)}], |
|
283 |
- [void, void, void, void, void, func{me.HSI360()}, func{me.HSIARC()}, void, void, void, func{me.goto(4)}], |
|
284 |
- [void, void, func{me.OPTN(1)}, func{me.OPTN(2)}, func{me.OPTN(3)}, void, func{me.WINDOFF()},void, void, void, func{me.goto(4)}], |
|
285 |
- [void, void, void, void, void, func{me.METERS()}, void, func{me.IN()}, func{me.HPA()}, void, func{me.goto(4)}], |
|
286 |
- [void, void, STDBY, func{me.ON()}, func{me.ALT()}, func{me.GND()}, func{me.VFR()}, func{me.CODE()}, IDENT, void, func{me.goto(me.rootmenu)}], |
|
287 |
- [func{me.XPDR(0)}, func{me.XPDR(1)},func{me.XPDR(2)}, func{me.XPDR(3)}, func{me.XPDR(4)}, func{me.XPDR(5)}, func{me.XPDR(6)}, func{me.XPDR(7)}, func{me.XPDR(8)}, BKSP, func{me.XPDR(9)}], |
|
288 |
- [func{me.newstatus(1)},func{me.goto(15)},void, func{me.goto(14)}, void, func{me.goto(13)}, void, CHECKLIST, void, void, void], |
|
289 |
- [void, void, func{me.DCLTR(1)},void, func{me.DCLTR(2)}, void, func{me.DCLTR(3)}, void, void, void, func{me.goto(me.rootmenu)}], |
|
290 |
- [void, void, void, func{me.TRAFFIC()},func{me.TOPO()}, func{me.TERRAIN()},func{me.STRMSCP()},func{me.NEXRAD()},func{me.XMLTNG()},void, func{me.goto(me.rootmenu)}], |
|
291 |
- [func{me.goto(me.rootmenu)},void, LEAN, void, void, void, func{FUEL(1)}, func{FUEL(2)}, func{FUEL(3)}, void, void], |
|
292 |
- [func{me.newstatus(2)},func{me.goto(2)},void, func{me.goto(4)}, void, func{me.goto(1)}, ADFDME, func{me.goto(10)},IDENT, func{me.goto(17)}, func{me.NRST()}], |
|
293 |
- [func{me.TMRREF('LCL')},func{me.TMRREF('UTC')},void, func{me.TMRREF('RL')},void, func{me.CHRON()}, void, void, void, void, func{me.goto(me.rootmenu)}], |
|
294 |
- ]; |
|
295 |
- }, |
|
296 |
- |
|
297 | 104 |
}; |
... | ... |
@@ -7160,7 +7160,7 @@ |
7160 | 7160 |
height="24.000597" |
7161 | 7161 |
width="83.8013" |
7162 | 7162 |
id="SoftKey02-bg" |
7163 |
- style="display:inline;fill:#353939;fill-opacity:1;stroke:none" |
|
7163 |
+ style="display:inline;fill:#000000;fill-opacity:1;stroke:none" |
|
7164 | 7164 |
inkscape:label="SoftKey02-bg" /> |
7165 | 7165 |
<path |
7166 | 7166 |
inkscape:connector-curvature="0" |
... | ... |
@@ -7181,7 +7181,7 @@ |
7181 | 7181 |
sodipodi:role="line" |
7182 | 7182 |
style="font-size:17.5px;line-height:1.25">XXXXXXXX</tspan></text> |
7183 | 7183 |
<rect |
7184 |
- style="display:inline;fill:#353939;fill-opacity:1;stroke:none" |
|
7184 |
+ style="display:inline;fill:#000000;fill-opacity:1;stroke:none" |
|
7185 | 7185 |
id="SoftKey01-bg" |
7186 | 7186 |
width="83.8013" |
7187 | 7187 |
height="24.000597" |
... | ... |
@@ -7207,7 +7207,7 @@ |
7207 | 7207 |
y="711.67462" |
7208 | 7208 |
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:17.5px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow, Condensed';text-align:center;writing-mode:lr-tb;text-anchor:middle">XXXXXXXX</tspan></text> |
7209 | 7209 |
<rect |
7210 |
- style="display:inline;fill:#353939;fill-opacity:1;stroke:none" |
|
7210 |
+ style="display:inline;fill:#000000;fill-opacity:1;stroke:none" |
|
7211 | 7211 |
id="SoftKey03-bg" |
7212 | 7212 |
width="83.8013" |
7213 | 7213 |
height="24.000597" |
... | ... |
@@ -7234,7 +7234,7 @@ |
7234 | 7234 |
y="711.67462" |
7235 | 7235 |
style="font-size:17.5px;line-height:1.25">XXXXXXXX</tspan></text> |
7236 | 7236 |
<rect |
7237 |
- style="display:inline;fill:#353939;fill-opacity:1;stroke:none" |
|
7237 |
+ style="display:inline;fill:#000000;fill-opacity:1;stroke:none" |
|
7238 | 7238 |
id="SoftKey04-bg" |
7239 | 7239 |
width="83.8013" |
7240 | 7240 |
height="24.000597" |
... | ... |
@@ -7261,7 +7261,7 @@ |
7261 | 7261 |
y="711.67462" |
7262 | 7262 |
style="font-size:17.5px;line-height:1.25">XXXXXXXX</tspan></text> |
7263 | 7263 |
<rect |
7264 |
- style="display:inline;fill:#353939;fill-opacity:1;stroke:none" |
|
7264 |
+ style="display:inline;fill:#000000;fill-opacity:1;stroke:none" |
|
7265 | 7265 |
id="SoftKey06-bg" |
7266 | 7266 |
width="83.8013" |
7267 | 7267 |
height="24.000597" |
... | ... |
@@ -7292,7 +7292,7 @@ |
7292 | 7292 |
height="24.000597" |
7293 | 7293 |
width="83.8013" |
7294 | 7294 |
id="SoftKey05-bg" |
7295 |
- style="display:inline;fill:#353939;fill-opacity:1;stroke:none" |
|
7295 |
+ style="display:inline;fill:#000000;fill-opacity:1;stroke:none" |
|
7296 | 7296 |
inkscape:label="SoftKey05-bg" /> |
7297 | 7297 |
<path |
7298 | 7298 |
inkscape:connector-curvature="0" |
... | ... |
@@ -7318,7 +7318,7 @@ |
7318 | 7318 |
height="24.000597" |
7319 | 7319 |
width="83.8013" |
7320 | 7320 |
id="SoftKey07-bg" |
7321 |
- style="display:inline;fill:#353939;fill-opacity:1;stroke:none" |
|
7321 |
+ style="display:inline;fill:#000000;fill-opacity:1;stroke:none" |
|
7322 | 7322 |
inkscape:label="SoftKey07-bg" /> |
7323 | 7323 |
<path |
7324 | 7324 |
inkscape:connector-curvature="0" |
... | ... |
@@ -7344,7 +7344,7 @@ |
7344 | 7344 |
height="24.000597" |
7345 | 7345 |
width="83.8013" |
7346 | 7346 |
id="SoftKey08-bg" |
7347 |
- style="display:inline;fill:#353939;fill-opacity:1;stroke:none" |
|
7347 |
+ style="display:inline;fill:#000000;fill-opacity:1;stroke:none" |
|
7348 | 7348 |
inkscape:label="SoftKey08-bg" /> |
7349 | 7349 |
<path |
7350 | 7350 |
inkscape:connector-curvature="0" |
... | ... |
@@ -7370,7 +7370,7 @@ |
7370 | 7370 |
height="24.000597" |
7371 | 7371 |
width="83.8013" |
7372 | 7372 |
id="SoftKey10-bg" |
7373 |
- style="display:inline;fill:#353939;fill-opacity:1;stroke:none" |
|
7373 |
+ style="display:inline;fill:#000000;fill-opacity:1;stroke:none" |
|
7374 | 7374 |
inkscape:label="SoftKey10-bg" /> |
7375 | 7375 |
<path |
7376 | 7376 |
inkscape:connector-curvature="0" |
... | ... |
@@ -7391,7 +7391,7 @@ |
7391 | 7391 |
sodipodi:role="line" |
7392 | 7392 |
style="font-size:17.5px;line-height:1.25">XXXXXXXX</tspan></text> |
7393 | 7393 |
<rect |
7394 |
- style="display:inline;fill:#353939;fill-opacity:1;stroke:none" |
|
7394 |
+ style="display:inline;fill:#000000;fill-opacity:1;stroke:none" |
|
7395 | 7395 |
id="SoftKey09-bg" |
7396 | 7396 |
width="83.8013" |
7397 | 7397 |
height="24.000597" |
... | ... |
@@ -7417,7 +7417,7 @@ |
7417 | 7417 |
y="711.67462" |
7418 | 7418 |
style="font-size:17.5px;line-height:1.25">XXXXXXXX</tspan></text> |
7419 | 7419 |
<rect |
7420 |
- style="display:inline;fill:#353939;fill-opacity:1;stroke:none" |
|
7420 |
+ style="display:inline;fill:#000000;fill-opacity:1;stroke:none" |
|
7421 | 7421 |
id="SoftKey11-bg" |
7422 | 7422 |
width="83.8013" |
7423 | 7423 |
height="24.000597" |
... | ... |
@@ -7448,7 +7448,7 @@ |
7448 | 7448 |
height="24.000597" |
7449 | 7449 |
width="83.8013" |
7450 | 7450 |
id="SoftKey00-bg" |
7451 |
- style="display:inline;fill:#353939;fill-opacity:1;stroke:none" |
|
7451 |
+ style="display:inline;fill:#000000;fill-opacity:1;stroke:none" |
|
7452 | 7452 |
inkscape:label="SoftKey00-bg" /> |
7453 | 7453 |
<path |
7454 | 7454 |
inkscape:connector-curvature="0" |