Showing 11 changed files with 1290 additions and 1074 deletions
+1
.gitignore
... ...
@@ -1,2 +1,3 @@
1 1
 .*.swp
2 2
 *.pdf
3
+Docs/*
+45 -42
Nasal/EIS/single-prop.nas
... ...
@@ -14,48 +14,51 @@ displayClass.showEIS = func (groups) {
14 14
 
15 15
 displayClass.updateEIS = func {
16 16
 # displays Engine Informations System
17
-    var power = getprop('/controls/engines/engine/throttle') * getprop('/engines/engine/running');
18
-    me.screenElements['POWER-pointer']
19
-        .setRotation(D2R * 140 * power);
20
-    me.screenElements['POWER-PERCENT-text']
21
-        .setText(sprintf('% 3u', power * 100));
22
-    me.screenElements['RPM-text']
23
-        .setText(sprintf(math.round(getprop('/engines/engine/rpm'), 50)));
24
-    me.screenElements['MAN-Hg-text']
25
-        .setText(sprintf('%.1d', getprop('/engines/engine/mp-inhg')));
26
-    me.screenElements['FUEL-FLOW-text']
27
-        .setText(sprintf('%.1f', getprop('/engines/engine/fuel-flow-gph')));
28
-    if (math.mod(me._eis_count, 10) == 0) {
29
-        var psi = getprop('/engines/engine/oil-pressure-psi');
30
-        me.screenElements['PSI-text']
31
-            .setText(psi == nil ? '--' : sprintf('%u', psi));
32
-        me.screenElements['OIL-TEMP-text']
33
-            .setText(sprintf('%i', getprop('/engines/engine/oil-temperature-degf')));
34
-        var full = getprop('/instrumentation/zkv1000/eis/fuel-qty-at-start');
35
-        var right = getprop('/consumables/fuel/tank/level-gal_us');
36
-        var left = getprop('/consumables/fuel/tank[1]/level-gal_us');
37
-        var used_fuel = full - (right + left);
38
-        me.screenElements['FUEL-USED-text']
39
-            .setText(sprintf('%.1d', used_fuel > 0 ? used_fuel : 0));
40
-        me.screenElements['FUEL-RIGHT-pointer']
41
-            .setTranslation(
42
-                    0,
43
-                    (1 - right / (full/2)) * -80
44
-                );
45
-        me.screenElements['FUEL-LEFT-pointer']
46
-            .setTranslation(
47
-                    0,
48
-                    (1 - left / (full/2)) * -80
49
-                );
50
-        me.screenElements['BUS-V-text']
51
-            .setText(sprintf('%.1i', getprop('/systems/electrical/outputs/bus')));
52
-        me.screenElements['BATT-text']
53
-            .setText(sprintf('%+i', getprop('/systems/electrical/amps')));
54
-        var cht = getprop('/engines/engine/cht-degf');
55
-        me.screenElements['CHT-text']
56
-            .setText(cht == nil ? '--' : sprintf('%i', cht));
57
-        me.screenElements['EGT-text']
58
-            .setText(sprintf('%i', getprop('/engines/engine/egt-degf')));
17
+    var running = getprop('/engines/engine/running');
18
+    if (running != nil) {
19
+        var power = getprop('/controls/engines/engine/throttle') * running;
20
+        me.screenElements['POWER-pointer']
21
+            .setRotation(D2R * 140 * power);
22
+        me.screenElements['POWER-PERCENT-text']
23
+            .setText(sprintf('% 3u', power * 100));
24
+        me.screenElements['RPM-text']
25
+            .setText(sprintf(math.round(getprop('/engines/engine/rpm'), 50)));
26
+        me.screenElements['MAN-Hg-text']
27
+            .setText(sprintf('%.1d', getprop('/engines/engine/mp-inhg')));
28
+        me.screenElements['FUEL-FLOW-text']
29
+            .setText(sprintf('%.1f', getprop('/engines/engine/fuel-flow-gph')));
30
+        if (math.mod(me._eis_count, 10) == 0) {
31
+            var psi = getprop('/engines/engine/oil-pressure-psi');
32
+            me.screenElements['PSI-text']
33
+                .setText(psi == nil ? '--' : sprintf('%u', psi));
34
+            me.screenElements['OIL-TEMP-text']
35
+                .setText(sprintf('%i', getprop('/engines/engine/oil-temperature-degf')));
36
+            var full = getprop('/instrumentation/zkv1000/eis/fuel-qty-at-start');
37
+            var right = getprop('/consumables/fuel/tank/level-gal_us');
38
+            var left = getprop('/consumables/fuel/tank[1]/level-gal_us');
39
+            var used_fuel = full - (right + left);
40
+            me.screenElements['FUEL-USED-text']
41
+                .setText(sprintf('%.1d', used_fuel > 0 ? used_fuel : 0));
42
+            me.screenElements['FUEL-RIGHT-pointer']
43
+                .setTranslation(
44
+                        0,
45
+                        (1 - right / (full/2)) * -80
46
+                    );
47
+            me.screenElements['FUEL-LEFT-pointer']
48
+                .setTranslation(
49
+                        0,
50
+                        (1 - left / (full/2)) * -80
51
+                    );
52
+            me.screenElements['BUS-V-text']
53
+                .setText(sprintf('%.1i', getprop('/systems/electrical/outputs/bus')));
54
+            me.screenElements['BATT-text']
55
+                .setText(sprintf('%+i', getprop('/systems/electrical/amps')));
56
+            var cht = getprop('/engines/engine/cht-degf');
57
+            me.screenElements['CHT-text']
58
+                .setText(cht == nil ? '--' : sprintf('%i', cht));
59
+            me.screenElements['EGT-text']
60
+                .setText(sprintf('%i', getprop('/engines/engine/egt-degf')));
61
+        }
59 62
     }
60 63
     settimer(func me.updateEIS(), 0.2);
61 64
     me._eis_count += 1;
+65
Nasal/buttons.nas
... ...
@@ -94,6 +94,71 @@ var buttonsClass = {
94 94
         me.device.knobs.FmsInner = func;
95 95
     },
96 96
 
97
+    MapMenu : func (a = 0) {
98
+        if (a == 1)
99
+            return;
100
+        var menu_label = 'MAP MENU';
101
+        if (!contains(me.device.windows.window, menu_label ~ '-bg')) {
102
+            var level_min = 13;
103
+            var level_max = 7;
104
+            var levels = [ sprintf('  % 2u >', level_max) ];
105
+            for (var i = level_max + 1; i <= level_min; i += 1)
106
+                append(levels, sprintf(i < level_min ? '< % 2u >' : '< % 2u  ', i));
107
+            var orientation = [ '  NORTH UP >', '<  TRK UP  >' ];
108
+            if (getprop('/instrumentation/gps/route-distance-nm') != nil)
109
+                append(orientation, '<  DTK UP  >');
110
+            append(orientation, '<  HDG UP   ');
111
+            me.device.windows.draw(
112
+                    menu_label,
113
+                    {x: 720, y: 100, w: 300, l:3, sep: 1},
114
+                    [
115
+                        {text: menu_label, type: 'title'},
116
+                        {type: 'separator'},
117
+                        {text: 'ZOOM LEVEL', type: 'normal'},
118
+                        {text: sprintf('%s % 2u %s',
119
+                                me.device.data.zoom > level_max ? '<' : ' ',
120
+                                me.device.data.zoom,
121
+                                me.device.data.zoom < level_min ? '>' : ' '),
122
+                         type: 'selected|end-of-line',
123
+                         choices: levels,
124
+                         callback: func (id, selected) {
125
+                             var z = me.device.windows.state[id].objects[selected].text;
126
+                             foreach (var c; [' ', '<', '>'])
127
+                                 z = string.replace(z, c, '');
128
+                             me.device.data.zoom = z;
129
+                             me.device.map.changeZoom();
130
+                             me.device.map.update();
131
+                         }
132
+                        },
133
+                        {text: 'ORIENTATION', type: 'normal'},
134
+                        {text: (func foreach (var o; orientation) if (find(me.device.data.orientation.text, o) > -1) return o;)(),
135
+                         type: 'editable|end-of-line',
136
+                         choices: orientation,
137
+                         callback: func (id, selected) {
138
+                             var o = me.device.windows.state[id].objects[selected].text;
139
+                             o = substr(o, 2);
140
+                             o = substr(o, 0, size(o) - 2);
141
+                             o = string.trim(o);
142
+                             me.device.data.orientation.text = o;
143
+                             me.device.map.update();
144
+                         }
145
+                        },
146
+                    ]
147
+                );
148
+            me.device.knobs.FmsOuter = me.device.knobs.NavigateMenu;
149
+            me.device.knobs.FmsInner = me.device.knobs.MenuSettings;
150
+            me.device.buttons.CLR = me.device.buttons.MapMenu;
151
+            me.device.buttons.ENT = me.device.buttons.ValidateTMRREF;
152
+        }
153
+        else {
154
+            me.device.buttons.ENT = func;
155
+            me.device.buttons.CLR = func;
156
+            me.device.knobs.FmsInner = func;
157
+            me.device.knobs.FmsOuter = me.device.knobs.MFD_select_page_group;
158
+            me.device.windows.del(menu_label);
159
+        }
160
+    },
161
+
97 162
     DirectTo : void,
98 163
     MENU : void,
99 164
     FPL : void,
+21 -17
Nasal/core.nas
... ...
@@ -51,28 +51,32 @@ var deviceClass = {
51 51
             m.data[v ~ '-visible'] = 1;
52 52
         foreach (var v; ['screen-object', 'screen-view', 'screen-size'])
53 53
             m.data[v] = getprop('/instrumentation/zkv1000/' ~ name ~ '/' ~ v);
54
+
54 55
         m.display  = displayClass.new(m);
55
-        m.display.showInitProgress(m.name);
56 56
         m.softkeys = softkeysClass.new(m);
57 57
         m.buttons  = buttonsClass.new(m);
58 58
         m.knobs    = knobsClass.new(m);
59
-        m.display.loadsvg();
60
-        m.display.loadGroup({
61
-            hide : [
62
-                'Failures',
63
-                'SoftKeysTexts',
64
-                'PFD-Widgets', 
65
-                'COMM',
66
-                'XPDR-TIME', 
67
-                'NAV',
68
-                'FlightInstruments', 
69
-                'VDI',
70
-                'OMI',
71
-            ],
72
-            clip : 'PitchScale',
73
-        });
59
+        m.map = mapClass.new(m);
74 60
         m.windows  = pageClass.new(m);
75
-        zkv.getNode(m.name ~ '-init').setIntValue(0);
61
+
62
+        if (! contains(data.timers, 'map')) {
63
+            data.timers.map = maketimer(1, m, func {
64
+                    foreach (var d; keys(flightdeck))
65
+                        flightdeck[d].map.update();
66
+                    var gspd = getprop('/velocities/groundspeed-kt');
67
+                    if (gspd != 0)
68
+                        var next = (me.data['range-nm']/(gspd/3600))/(me.display.display.get('view[1]')/2);
69
+                    else
70
+                        var next = 10;
71
+                    if (next > 10)
72
+                        next = 10;
73
+                    data.timers.map.restart(next);
74
+                });
75
+            data.timers.map.singleShot = 1;
76
+            data.timers.map.start();
77
+        }
78
+        m.display.showInitProgress();
79
+
76 80
         setprop('/instrumentation/zkv1000/' ~ m.name ~ '/status', 1);
77 81
         msg(m.name ~ ' switched on!');
78 82
         return m;
+147 -274
Nasal/display.nas
... ...
@@ -6,66 +6,26 @@ var displayClass = {
6 6
 
7 7
         m.display = canvas.new({
8 8
                 "name"      : device.name,
9
-                "size"      : device.data['screen-size'] != nil ? split(',', device.data['screen-size']) : [1024, 768],
10
-                "view"      : device.data['screen-view'] != nil ? split(',', device.data['screen-view']) : [1024, 768],
9
+                "size"      : [1280, 1280],
10
+                "view"      : [1024, 768],
11 11
                 "mipmapping": 1
12 12
         });
13 13
         m.display.addPlacement({
14 14
                 "node": device.data['screen-object'] != nil ? device.data['screen-object'] : "Screen",
15 15
                 "parent": device.name
16
-        });
16
+            });
17 17
         m.display.setColorBackground(0,0,0);
18 18
         m.role = device.role;
19 19
         m.device = device;
20 20
         m.screenElements = {};
21
+        m.screen = m.display
22
+            .createGroup()
23
+            .show();
21 24
 
22 25
         m.timers2 = {}; # tho old timer implementation use already a named timer hash
23 26
         # Softkeys revert to the previous level after 45 seconds of inactivity.
24 27
         m.softkeys_inactivity_delay = 45;
25 28
 
26
-        return m;
27
-    },
28
-#}}}
29
-
30
-# timers stuff {{{
31
-    timers : {},
32
-
33
-    timerTrigger : func {
34
-        var now = systime();
35
-        foreach (var id; keys(me.timers)) {
36
-            if (me.timers[id] < now) {
37
-                me.screenElements[id].hide();
38
-                delete(me.timers, id);
39
-            }
40
-        }
41
-        settimer(func me.timerTrigger(), 1);
42
-    },
43
-
44
-    addTimer : func (duration, element) {
45
-        if (typeof(element) == 'scalar')
46
-            element = [ element ];
47
-        var end = systime() + duration;
48
-        foreach (var e; element)
49
-            me.timers[e] = end;
50
-    },
51
-#}}}
52
-
53
-    loadsvg : func () {
54
-        me.screen = me.display.createGroup();
55
-        me.screen.hide();
56
-        canvas.parsesvg(me.screen, data.zkv1000_reldir ~ 'Systems/screen.svg');
57
-    },
58
-
59
-    _showInitProgress : func (p,t) {
60
-#{{{
61
-        p.setText(t);
62
-        if (zkv.getNode(me.device.name ~ '-init').getValue() != 0) {
63
-            if (size(t) >= 10) t = '';
64
-            settimer(func { me._showInitProgress(p, t ~ '.'); }, 0.1);
65
-        }
66
-        else {
67
-            me.progress.hide();
68
-            me.screen.show();
69 29
             var groups = {
70 30
                 show : [
71 31
                     'Header',
... ...
@@ -81,7 +41,7 @@ var displayClass = {
81 41
                     'comm1-standby-freq', 'comm1-selected-freq',
82 42
                     'comm2-standby-freq', 'comm2-selected-freq',
83 43
                 ],
84
-                hide : [ ],
44
+                hide : [ 'Failures', 'NAV-COMM-Failures' ],
85 45
                 clip: [ ],
86 46
             };
87 47
 
... ...
@@ -90,7 +50,7 @@ var displayClass = {
90 50
                 append(groups.show, sprintf("SoftKey%02i-bg", k));
91 51
             }
92 52
 
93
-            if (me.device.role == 'PFD') {
53
+            if (m.device.role == 'PFD') {
94 54
                 append(groups.show,
95 55
 # {{{
96 56
                     'XPDR-TIME', 
... ...
@@ -118,6 +78,7 @@ var displayClass = {
118 78
                     'EIS',
119 79
                     'CDI',
120 80
                     'OMI', 'MarkerBG', 'MarkerText',
81
+                    'VDI',
121 82
                     'NAV1-pointer', 'NAV1-CDI', 'NAV1-FROM', 'NAV1-TO',
122 83
                     'NAV2-pointer', 'NAV2-CDI', 'NAV2-FROM', 'NAV2-TO',
123 84
                     'GPS-pointer', 'GPS-CDI', 'GPS-CTI', 'GPS-CTI-diamond', 'GPS-FROM', 'GPS-TO',
... ...
@@ -150,7 +111,8 @@ var displayClass = {
150 111
                     'SpeedLint1',
151 112
                     'SpeedTape',
152 113
                     'LintAlt',
153
-                    'AltLint00011'
114
+                    'AltLint00011',
115
+                    'PitchScale',
154 116
 # }}}
155 117
                 );
156 118
                 append(groups.text,
... ...
@@ -182,8 +144,7 @@ var displayClass = {
182 144
                         'AltSmallD' ~ place
183 145
                     );
184 146
                 }
185
-                me.device.data.aoa = 0;
186
-                me.device.data['aoa-auto'] = 0;
147
+                canvas.parsesvg(m.screen, data.zkv1000_reldir ~ 'Systems/PFD.svg');
187 148
             }
188 149
             else {
189 150
                 var eis_file = getprop('/instrumentation/zkv1000/eis/type');
... ...
@@ -212,174 +173,156 @@ var displayClass = {
212 173
                     eis_file = data.zkv1000_dir ~ 'Nasal/EIS/none.nas';
213 174
                 io.load_nasal(eis_file, 'zkv1000');
214 175
 
215
-                if (contains(me.parents[0], 'showEIS'))
216
-                    me.showEIS(groups);
176
+                if (contains(m.parents[0], 'showEIS'))
177
+                    m.showEIS(groups);
217 178
             }
218 179
 
219
-            me.loadGroup(groups);
180
+            canvas.parsesvg(m.screen, data.zkv1000_reldir ~ 'Systems/softkeys.svg');
181
+            canvas.parsesvg(m.screen, data.zkv1000_reldir ~ 'Systems/header-nav-comm.svg');
220 182
 
221
-            if (me.device.role == 'PFD') {
222
-                me.updateAI();
223
-                me.updateVSI();
224
-                me.updateIAS();
225
-                me.updateALT();
226
-                me.updateHSI();
227
-                me.updateTIME();
228
-                me.updateOAT();
229
-                me.updateTAS();
230
-                me.updateBRG();
231
-                me.updateXPDR();
232
-                me.updateBARO();
233
-                me.updateOMI();
234
-                me.timerTrigger();
235
-                me.device.data.mapclip = {
236
-                    top: math.ceil(me.screenElements['PFD-Map-bg'].getTransformedBounds()[1]) - 1,
237
-                    right: math.ceil(me.screenElements['PFD-Map-bg'].getTransformedBounds()[2]) - 1,
238
-                    bottom: math.ceil(me.screenElements['PFD-Map-bg'].getTransformedBounds()[3]) - 1,
239
-                    left: math.ceil(me.screenElements['PFD-Map-bg'].getTransformedBounds()[0]) - 1,
183
+            m.loadGroup(groups);
184
+
185
+            if (m.device.role == 'PFD') {
186
+                m.device.data.aoa = 0;
187
+                m.device.data['aoa-auto'] = 0;
188
+                m.device.data.mapclip = {
189
+                    top: math.ceil(m.screenElements['PFD-Map-bg'].getTransformedBounds()[1]) - 1,
190
+                    right: math.ceil(m.screenElements['PFD-Map-bg'].getTransformedBounds()[2]) - 1,
191
+                    bottom: math.ceil(m.screenElements['PFD-Map-bg'].getTransformedBounds()[3]) - 1,
192
+                    left: math.ceil(m.screenElements['PFD-Map-bg'].getTransformedBounds()[0]) - 1,
240 193
                 };
241
-                me.device.data.mapsize = [
242
-                    me.device.data.mapclip.right - me.device.data.mapclip.left,
243
-                    me.device.data.mapclip.bottom - me.device.data.mapclip.top,
244
-                ];
245 194
             }
246 195
             else {
247
-                me.updateEIS();
248
-                me.device.data.mapclip = {
249
-                    top: math.ceil(me.screenElements['Header'].getTransformedBounds()[3]),
250
-                    right: me.display.get('view[0]'),
251
-                    bottom: math.ceil(me.screenElements['SoftKeysTexts'].getTransformedBounds()[1]),
252
-                    left: contains(me.screenElements, 'EIS') ? math.ceil(me.screenElements['EIS'].getTransformedBounds()[2]) : 0,
196
+                m.device.data.mapclip = {
197
+                    top: math.ceil(m.screenElements['Header'].getTransformedBounds()[3]),
198
+                    right: m.display.get('view[0]'),
199
+                    bottom: math.ceil(m.screenElements['SoftKeysTexts'].getTransformedBounds()[1]),
200
+                    left: contains(m.screenElements, 'EIS') ? math.ceil(m.screenElements['EIS'].getTransformedBounds()[2]) : 0,
253 201
                 };
254
-                me.device.data.mapsize = [
255
-                    me.device.data.mapclip.right - me.device.data.mapclip.left,
256
-                    me.device.data.mapclip.bottom - me.device.data.mapclip.top,
257
-                ];
258
-                io.load_nasal(data.zkv1000_dir ~ 'Nasal/MFD.pages.nas', 'zkv1000');
259
-                me['page selected'] = 0;
260
-                me.device.data['page selection'] = [
261
-# {{{
262
-                    {
263
-                        name: 'MAP',
264
-                        objects: [
265
-                            {text: 'NAVIGATION MAP'},
266
-                            {text: 'TRAFFIC MAP'},
267
-                            {text: 'STORMSCOPE'},
268
-                            {text: 'WEATHER DATA LINK'},
269
-                            {text: 'TAWS-B'},
270
-                        ],
271
-                    },
272
-                    {
273
-                        name: 'WPT',
274
-                        objects: [
275
-                            {text: 'AIRPORT INFORMATION'},
276
-                            {text: 'AIRPORT DIRECTORY'},
277
-                            {text: 'DEPARTURE INFORMATION'},
278
-                            {text: 'ARRIVAL INFORMATION'},
279
-                            {text: 'APPROACH INFORMATION'},
280
-                            {text: 'WEATHER INFORMATION'},
281
-                            {text: 'INTERSECTION INFORMATION'},
282
-                            {text: 'NDB INFORMATION'},
283
-                            {text: 'VOR INFORMATION'},
284
-                            {text: 'USER WAYPOINT INFORMATION'},
285
-                        ],
286
-                    },
287
-                    {
288
-                        name: 'AUX',
289
-                        objects: [
290
-                            {text: 'TRIP PLANNING'},
291
-                            {text: 'UTILITY'},
292
-                            {text: 'GPS STATUS'},
293
-                            {text: 'SYSTEM SETUP'},
294
-                        ],
295
-                    },
296
-                    {
297
-                        name: 'FPL',
298
-                        objects: [
299
-                            {text: 'ACTIVE FLIGHT PLAN'},
300
-                            {text: 'WIDE VIEW, NARROW VIEW'},
301
-                            {text: 'FLIGHT PLAN CATALOG'},
302
-                        ],
303
-                    },
304
-                    {
305
-                        name: 'PROC',
306
-                        objects: [
307
-                            {text: 'DEPARTURE LOADING'},
308
-                            {text: 'ARRIVAL LOADING'},
309
-                            {text: 'APPROACH LOADING'},
310
-                        ],
311
-                    },
312
-                    {
313
-                        name: 'NRST',
314
-                        objects: [
315
-                            {text: 'NEAREST AIRPORTS'},
316
-                            {text: 'NEAREST INTERSECTIONS'},
317
-                            {text: 'NEAREST NDB'},
318
-                            {text: 'NEAREST VOR'},
319
-                            {text: 'NEAREST USER WAYPOINTS'},
320
-                            {text: 'NEAREST FREQUENCIES'},
321
-                            {text: 'NEAREST AIRSPACES'},
322
-                        ],
323
-                    },
324
-# }}}
325
-                ];
326
-                me.setMFDPages();
327
-            }
328
-            me.device.data.zoom = 10;
329
-            me.MapTiles = MapTiles.new(me.device);
330
-            me.MapNavaids = PositionedLayer.new(me.device);
331
-            if (! contains(data.timers, 'map')) {
332
-                data.timers.map = maketimer(1, me, func {
333
-                        foreach (var d; keys(flightdeck)) {
334
-                            flightdeck[d].display.MapTiles.update();
335
-                            flightdeck[d].display.MapNavaids.update();
336
-                        }
337
-                        var gspd = getprop('/velocities/groundspeed-kt');
338
-                        if (gspd != 0)
339
-                            var next = (me.device.data['range-nm']/(gspd/3600))/(me.display.get('view[1]')/2);
340
-                        else
341
-                            var next = 10;
342
-                        if (next > 10)
343
-                            next = 10;
344
-                        data.timers.map.restart(next);
345
-                    });
346
-                data.timers.map.singleShot = 1;
347
-                data.timers.map.start();
348 202
             }
203
+        return m;
204
+    },
205
+#}}}
349 206
 
350
-            me.updateNAV({auto:'nav', tune: radios.getNode('nav-tune').getValue()});
351
-            me.updateCOMM({auto:'comm', tune: radios.getNode('comm-tune').getValue()});
352
-            me.softkeys_inactivity();
353
-            me.updateSoftKeys();
354
-            me.progress.removeAllChildren();
355
-            me.progress = nil;
356
-            me.showInitProgress = nil;
357
-            me._showInitProgress = nil;
358
-            zkv.removeChild(me.device.role ~ 'init', 0);
207
+# timers stuff {{{
208
+    timers : {},
209
+
210
+    timerTrigger : func {
211
+        var now = systime();
212
+        foreach (var id; keys(me.timers)) {
213
+            if (me.timers[id] < now) {
214
+                me.screenElements[id].hide();
215
+                delete(me.timers, id);
216
+            }
359 217
         }
218
+        settimer(func me.timerTrigger(), 1);
219
+    },
220
+
221
+    addTimer : func (duration, element) {
222
+        if (typeof(element) == 'scalar')
223
+            element = [ element ];
224
+        var end = systime() + duration;
225
+        foreach (var e; element)
226
+            me.timers[e] = end;
360 227
     },
361 228
 #}}}
362 229
 
363
-    showInitProgress : func (name) {
230
+    showInitProgress : func {
364 231
 #{{{
365
-        me.progress = me.display.createGroup();
366
-        me.progress.show();
367
-        me.progress.createChild("text", name ~ " title")
368
-            .setTranslation(512, 384)
369
-            .setAlignment("center-center")
370
-            .setFont("LiberationFonts/LiberationSans-Italic.ttf")
371
-            .setFontSize(64, 1)
372
-            .setColor(1,1,1)
373
-            .setText("ZKV1000 " ~ name ~ " init");
374
-
375
-        zkv.getNode(name ~ '-init',1).setIntValue(1);
232
+        if (me.device.role == 'PFD') {
233
+            me.updateAI();
234
+            me.updateVSI();
235
+            me.updateIAS();
236
+            me.updateALT();
237
+            me.updateHSI();
238
+            me.updateTIME();
239
+            me.updateOAT();
240
+            me.updateTAS();
241
+            me.updateBRG();
242
+            me.updateXPDR();
243
+            me.updateBARO();
244
+            me.updateOMI();
245
+            me.timerTrigger();
246
+            me.screen.show();
247
+        }
248
+        else {
249
+            me.updateEIS();
250
+            io.load_nasal(data.zkv1000_dir ~ 'Nasal/MFD.pages.nas', 'zkv1000');
251
+            me['page selected'] = 0;
252
+            me.device.data['page selection'] = [
253
+# {{{
254
+                {
255
+                    name: 'MAP',
256
+                    objects: [
257
+                        {text: 'NAVIGATION MAP'},
258
+                        {text: 'TRAFFIC MAP'},
259
+                        {text: 'STORMSCOPE'},
260
+                        {text: 'WEATHER DATA LINK'},
261
+                        {text: 'TAWS-B'},
262
+                    ],
263
+                },
264
+                {
265
+                    name: 'WPT',
266
+                    objects: [
267
+                        {text: 'AIRPORT INFORMATION'},
268
+                        {text: 'AIRPORT DIRECTORY'},
269
+                        {text: 'DEPARTURE INFORMATION'},
270
+                        {text: 'ARRIVAL INFORMATION'},
271
+                        {text: 'APPROACH INFORMATION'},
272
+                        {text: 'WEATHER INFORMATION'},
273
+                        {text: 'INTERSECTION INFORMATION'},
274
+                        {text: 'NDB INFORMATION'},
275
+                        {text: 'VOR INFORMATION'},
276
+                        {text: 'USER WAYPOINT INFORMATION'},
277
+                    ],
278
+                },
279
+                {
280
+                    name: 'AUX',
281
+                    objects: [
282
+                        {text: 'TRIP PLANNING'},
283
+                        {text: 'UTILITY'},
284
+                        {text: 'GPS STATUS'},
285
+                        {text: 'SYSTEM SETUP'},
286
+                    ],
287
+                },
288
+                {
289
+                    name: 'FPL',
290
+                    objects: [
291
+                        {text: 'ACTIVE FLIGHT PLAN'},
292
+                        {text: 'WIDE VIEW, NARROW VIEW'},
293
+                        {text: 'FLIGHT PLAN CATALOG'},
294
+                    ],
295
+                },
296
+                {
297
+                    name: 'PROC',
298
+                    objects: [
299
+                        {text: 'DEPARTURE LOADING'},
300
+                        {text: 'ARRIVAL LOADING'},
301
+                        {text: 'APPROACH LOADING'},
302
+                    ],
303
+                },
304
+                {
305
+                    name: 'NRST',
306
+                    objects: [
307
+                        {text: 'NEAREST AIRPORTS'},
308
+                        {text: 'NEAREST INTERSECTIONS'},
309
+                        {text: 'NEAREST NDB'},
310
+                        {text: 'NEAREST VOR'},
311
+                        {text: 'NEAREST USER WAYPOINTS'},
312
+                        {text: 'NEAREST FREQUENCIES'},
313
+                        {text: 'NEAREST AIRSPACES'},
314
+                    ],
315
+                },
316
+# }}}
317
+            ];
318
+            me.setMFDPages();
319
+            me.device.buttons.MENU = me.device.buttons.MapMenu;
320
+        }
376 321
 
377
-        me._showInitProgress(me.progress.createChild("text", name ~ "progress")
378
-            .setTranslation(512, 484)
379
-            .setAlignment("center-center")
380
-            .setFont("LiberationFonts/LiberationSans-Bold.ttf")
381
-            .setFontSize(128, 1)
382
-            .setColor(1,0,0), '.');
322
+        me.updateNAV({auto:'nav', tune: radios.getNode('nav-tune').getValue()});
323
+        me.updateCOMM({auto:'comm', tune: radios.getNode('comm-tune').getValue()});
324
+        me.softkeys_inactivity();
325
+        me.updateSoftKeys();
383 326
     },
384 327
 #}}}
385 328
 
... ...
@@ -1331,73 +1274,3 @@ var displayClass = {
1331 1274
     },
1332 1275
 #}}}
1333 1276
 };
1334
-
1335
-var keyMap = {
1336
-# softkeys map for PFD and MFD {{{
1337
-    PFD : {
1338
-        first : 1,
1339
-        texts : ['INSET', 'SENSOR', 'PFD', 'OBS', 'CDI', 'DME', 'XPDR', 'IDENT', 'TMR/REF', 'NRST' ],
1340
-        INSET : {
1341
-            texts : ['OFF', 'DCLTR', 'WXLGND', 'TRAFFIC', 'TOPO', 'TERRAIN', 'STRMSCP', 'NEXRAD-C', 'XM LTNG', 'METAR'],
1342
-        },
1343
-        SENSOR : {
1344
-            first : 2,
1345
-            texts : [ 'ADC1', 'ADC2', '', 'AHRS1', 'AHRS2'],
1346
-        },
1347
-        PFD : {
1348
-            texts : [ 'SYN VIS', 'DFLTS', 'AOA/WIND', 'DME', 'BRG1', 'HSI FMT', 'BRG2', '', 'ALT UNIT', 'STD BARO' ],
1349
-            'SYN VIS' : {
1350
-                texts : [ 'PATHWAY', 'SYN TERR', 'HR2NHDG', 'APTSIGNS', 'FPM'],
1351
-            },
1352
-            'AOA/WIND' : {
1353
-                first : 4,
1354
-                texts : ['AOA', 'WIND'],
1355
-                AOA : {
1356
-                    first : 5,
1357
-                    texts : ['AOA ON', 'AOA AUTO'],
1358
-                },
1359
-                WIND : {
1360
-                    first : 2,
1361
-                    texts : ['OPTN1', 'OPTN2', '', 'OFF'],
1362
-                },
1363
-            },
1364
-            'HSI FMT' : {
1365
-                first : 6,
1366
-                texts : ['360 HSI', 'ARC HSI'],
1367
-            },
1368
-            'ALT UNIT' : {
1369
-                first : 5,
1370
-                texts : ['METERS', '', 'IN', 'HPA'],
1371
-            },
1372
-        },
1373
-        XPDR : {
1374
-            first : 2,
1375
-            texts : ['STBY', 'ON', 'ALT', '', 'VFR', 'CODE', 'IDENT'],
1376
-            CODE : {
1377
-                texts : ['0', '1', '2', '3', '4', '5', '6', '7', 'IDENT', 'BKSP'],
1378
-            },
1379
-        },
1380
-    },
1381
-    MFD : {
1382
-        texts : ['ENGINE', '', 'MAP', '', '', '', '', '', '', 'DCLTR', 'SHW CHRT', 'CHKLIST'],
1383
-        MAP : {
1384
-            texts: ['TRAFFIC', 'PROFILE', 'TOPO', 'TERRAIN', 'AIRWAYS', 'STRMSCP','NEXRAD-C', 'XM LTNG', 'METAR', 'LEGEND', 'BACK'],
1385
-        },
1386
-        CHKLIST : {
1387
-            texts : ['ENGINE', '', '', '', '', 'DONE', '', '', '', '', 'EXIT', 'EMERGCY'],
1388
-        },
1389
-        ENGINE : {
1390
-            texts : ['ENGINE', 'ANTI-ICE', '', 'DCLTR', '', 'ASSIST', '', '', '', '', 'FUEL'],
1391
-            'ANTI-ICE' : {
1392
-                texts : ['LEFT', 'AUTO', 'RIGHT', '', '', '', '', '', '', '', '', 'BACK'],
1393
-            },
1394
-            FUEL : {
1395
-                first : 1,
1396
-                texts : ['FULL', 'TABS', '', '', '', '', '', '', '', 'UNDO', 'ENTER'],
1397
-            },
1398
-        },
1399
-    },
1400
-};
1401
-if (data['stall-aoa'] == 9999)
1402
-    keyMap.PFD.PFD['AOA/WIND'].texts = ['', 'WIND'];
1403
-#}}}
+139 -58
Nasal/map.nas
... ...
@@ -1,8 +1,105 @@
1 1
 # vim: set foldmethod=marker foldmarker={{{,}}} :
2
+var mapClass = {
3
+# main class for maps {{{
4
+    new : func (device) {
5
+        var m = { parents : [ mapClass ] };
6
+        m.device = device;
7
+
8
+        m.device.data.mapview = [
9
+            m.device.display.display.get('view[0]'),
10
+            m.device.display.display.get('view[1]')
11
+        ];
12
+        m.device.data.mapsize = [
13
+            m.device.display.display.get('size[0]'),
14
+            m.device.display.display.get('size[1]')
15
+        ];
16
+        m.device.data.zoom = 10;
17
+        m.device.data.orientation = {
18
+            text: 'NORTH UP',
19
+            map: 0,
20
+            airplane: data.hdg,
21
+        };
22
+        m.changeZoom();
23
+        
24
+        m.group = m.device.display.display.createGroup()
25
+            .set('clip',
26
+                    'rect('
27
+                        ~ m.device.data.mapclip.top ~','
28
+                        ~ m.device.data.mapclip.right ~','
29
+                        ~ m.device.data.mapclip.bottom ~','
30
+                        ~ m.device.data.mapclip.left ~')')
31
+            .setCenter(
32
+                (m.device.data.mapclip.right + m.device.data.mapclip.left) / 2,
33
+                (m.device.data.mapclip.bottom + m.device.data.mapclip.top) / 2);
34
+
35
+        m.tiles = MapTiles.new(m.device, m.group);
36
+        m.navaids = MapNavaids.new(m.device, m.group);
37
+
38
+#        m.device.display.display.createGroup().createChild('path')
39
+#            .setColor(1,0,0)
40
+#            .setColorFill(1,0,0)
41
+#            .setStrokeLineWidth(2)
42
+#            .moveTo(
43
+#                m.device.data.mapclip.left + (m.device.data.mapclip.right-m.device.data.mapclip.left)/2,
44
+#                m.device.data.mapclip.top +50)
45
+#            .vertTo(
46
+#                m.device.data.mapclip.bottom -50)
47
+#            .close()
48
+#            .moveTo(
49
+#                m.device.data.mapclip.left +50,
50
+#                m.device.data.mapclip.top + (m.device.data.mapclip.bottom-m.device.data.mapclip.top)/2)
51
+#            .horizTo(
52
+#                m.device.data.mapclip.right-50)
53
+#            .close();
54
+
55
+        return m;
56
+    },
57
+    changeZoom : func (d = 0) {
58
+        me.device.data.zoom = math.max(2, math.min(19, me.device.data.zoom + d));
59
+        me.device.data['range-nm'] = me.device.display.display.get('view[1]') / 2 * 84.53 * math.cos(data.lat) / math.pow(2, me.device.data.zoom);
60
+        me.device.data['range-factor'] = math.pow(2,13 - me.device.data.zoom) * 1.6875;
61
+    },
62
+    update : func {
63
+        if (me.device.data.orientation.text == 'NORTH UP') {
64
+            me.device.data.orientation.map = 0;
65
+            me.device.data.orientation.airplane = data.hdg;
66
+        }
67
+        elsif (me.device.data.orientation.text == 'TRK UP') {
68
+            if (data.wow) {
69
+                me.device.data.orientation.map = -data.hdg;
70
+                me.device.data.orientation.airplane = data.hdg;
71
+            }
72
+            else {
73
+                var track = getprop('/orientation/track-deg');
74
+                me.device.data.orientation.map = -track;
75
+                me.device.data.orientation.airplane = data.hdg;
76
+            }
77
+        }
78
+        elsif (me.device.data.orientation.text == 'DTK UP') {
79
+            me.device.data.orientation.map = 0;
80
+            me.device.data.orientation.airplane = 0;
81
+        }
82
+        elsif (me.device.data.orientation.text == 'HDG UP') {
83
+            me.device.data.orientation.map = -data.hdg;
84
+            me.device.data.orientation.airplane = data.hdg;
85
+        }
86
+
87
+        me.group.setRotation(me.device.data.orientation.map * D2R);
88
+
89
+        me.tiles.update();
90
+        me.navaids.update();
91
+    },
92
+    setVisible : func (v) {
93
+        me.tiles.setVisible(v);
94
+        me.navaids.setVisible(v);
95
+    },
96
+};
97
+# }}}
98
+
2 99
 var MapTiles = {
3 100
 # displays maps background from web tiles {{{
4 101
 # code from http://wiki.flightgear.org/Canvas_Snippets#A_simple_tile_map
5
-    new : func (device) {
102
+    new : func (device, group) {
6 103
         var m = { parents: [MapTiles] };
7 104
         m.device = device;
8 105
         m.display = m.device.display.display;
... ...
@@ -19,37 +116,18 @@ var MapTiles = {
19 116
             (m.num_tiles[1] - 1) / 2
20 117
         ];
21 118
         m.visibility = m.device.role == 'MFD';
22
-        m.group = m.display.createGroup()
23
-            .setCenter(
24
-                    m.device.data.mapsize[0] / 2 + m.device.data.mapclip.left,
25
-                    m.device.data.mapsize[1] / 2 + m.device.data.mapclip.top
26
-                )
119
+        m.group = group.createChild('group', 'tiles')
27 120
             .setTranslation(
28
-                    m.device.data.mapclip.left / 2,
29
-                    m.device.data.mapclip.top / 2
30
-                )
31
-            .set('clip',
32
-                    'rect('
33
-                        ~ m.device.data.mapclip.top ~','
34
-                        ~ m.device.data.mapclip.right ~','
35
-                        ~ m.device.data.mapclip.bottom ~','
36
-                        ~ m.device.data.mapclip.left ~')'
37
-                )
121
+                    m.device.role == 'MFD' ? (m.device.data.mapview[0] - m.device.data.mapsize[0] + m.device.data.mapclip.left)/2 : -520,
122
+                    m.device.role == 'MFD' ? -250 : -45)
38 123
             .setVisible(m.visibility);
39 124
         m.tiles = setsize([], m.num_tiles[0]);
40 125
         m.last_tile = [-1,-1];
41 126
         m.last_type = data['tiles-type'];
42
-        m.changeZoom(0);
43 127
         m.initialize_grid();
44 128
         return m;
45 129
     },
46 130
 
47
-# Simple user interface (Buttons for zoom and label for displaying it)
48
-    changeZoom : func (d) {
49
-        me.device.data.zoom = math.max(2, math.min(19, me.device.data.zoom + d));
50
-        me.device.data['range-nm'] = me.display.get('view[1]') / 2 * 84.53 * math.cos(data.lat) / math.pow(2, me.device.data.zoom);
51
-    },
52
-
53 131
     setVisible : func (v) {
54 132
         if (v != me.visibility) {
55 133
             me.visibility = v;
... ...
@@ -70,7 +148,6 @@ var MapTiles = {
70 148
     update : func {
71 149
          if (! me.visibility)
72 150
              return;
73
-#        me.group.setRotation(-data.hdg * D2R);
74 151
 
75 152
         var n = math.pow(2, me.device.data.zoom);
76 153
         var offset = [
... ...
@@ -82,14 +159,16 @@ var MapTiles = {
82 159
         var ox = tile_index[0] - offset[0];
83 160
         var oy = tile_index[1] - offset[1];
84 161
 
85
-        for(var x = 0; x < me.num_tiles[0]; x += 1)
162
+        for (var x = 0; x < me.num_tiles[0]; x += 1)
86 163
             for(var y = 0; y < me.num_tiles[1]; y += 1)
87 164
                 me.tiles[x][y]
88
-                    .setTranslation(int((ox + x) * me.tile_size + 0.5), int((oy + y) * me.tile_size + 0.5));
165
+                    .setTranslation(
166
+                        int((ox + x) * me.tile_size + 0.5),
167
+                        int((oy + y) * me.tile_size + 0.5));
89 168
 
90
-        if(    tile_index[0] != me.last_tile[0]
91
-                or tile_index[1] != me.last_tile[1]
92
-                or data['tiles-type'] != me.last_type ) {
169
+        if (tile_index[0] != me.last_tile[0]
170
+         or tile_index[1] != me.last_tile[1]
171
+         or data['tiles-type'] != me.last_type) {
93 172
             for(var x = 0; x < me.num_tiles[0]; x += 1)
94 173
                 for(var y = 0; y < me.num_tiles[1]; y += 1) {
95 174
                     var pos = {
... ...
@@ -106,7 +185,7 @@ var MapTiles = {
106 185
                         printlog('debug', 'img_path: ', img_path);
107 186
                         var tile = me.tiles[x][y];
108 187
 
109
-                        if( io.stat(img_path) == nil ) { # image not found, save in $FG_HOME
188
+                        if (io.stat(img_path) == nil) { # image not found, save in $FG_HOME
110 189
                             var img_url = me.makeUrl(pos);
111 190
                             printlog('debug', 'requesting ' ~ img_url);
112 191
                             http.save(img_url, img_path)
... ...
@@ -264,7 +343,7 @@ var MapAirportItem = {
264 343
         return me._can.group;
265 344
     },
266 345
     draw : func (apt, mapOptions) {
267
-        me._mapAirportIcon.near = mapOptions.range > 30 ? 0 : 1;
346
+        me._mapAirportIcon.near = mapOptions.range > 32 ? 0 : 1;
268 347
         me._mapAirportIcon.surface  = 0;
269 348
         me._mapAirportIcon.tower    = 0;
270 349
         me._mapAirportIcon.center   = 0;
... ...
@@ -298,7 +377,7 @@ var MapAirportItem = {
298 377
                         'N' ~ runway.reciprocal.lat, 'E' ~ runway.reciprocal.lon,
299 378
                     ]);
300 379
             }
301
-            elsif (mapOptions.range <= 30) {     #draw icon runways
380
+            elsif (mapOptions.range <= 32) {     #draw icon runways
302 381
                 me._can.layoutIcon.setGeoPosition(apt.lat, apt.lon);
303 382
                 me._can.layoutIcon.createChild('path', 'airport-runway-' ~ me._id ~ '-' ~ runway.id)
304 383
                     .setStrokeLineWidth(7)
... ...
@@ -322,13 +401,15 @@ var MapAirportItem = {
322 401
             ~ me._mapAirportIcon.center;
323 402
 
324 403
         if (me._mapAirportIcon.displayed) {
325
-            me._can.label.setText(apt.id);
404
+            me._can.label
405
+                .setText(apt.id)
406
+                .setRotation(-mapOptions.orientation * D2R);
326 407
             me._can.group.setGeoPosition(apt.lat, apt.lon);
327 408
             if (mapOptions.range <= 10) {
328 409
                 me._can.image.setVisible(0);
329 410
                 me._can.layout.setVisible(1);
330 411
             }
331
-            elsif (mapOptions.range <= 30) {
412
+            elsif (mapOptions.range <= 32) {
332 413
                 mapIconCache.boundIconToImage(me._mapAirportIcon.icon, me._can.image);
333 414
                 me._can.image.setVisible(1);
334 415
                 me._can.layout.setVisible(1);
... ...
@@ -344,7 +425,7 @@ var MapAirportItem = {
344 425
     },
345 426
     update : func (mapOptions) {
346 427
         if (mapOptions.range <= 10) { }
347
-        elsif (mapOptions.range <= 30)
428
+        elsif (mapOptions.range <= 32)
348 429
             me._can.layoutIcon.setRotation(-mapOptions.orientation * D2R);
349 430
         else { }
350 431
     },
... ...
@@ -390,9 +471,11 @@ var MapNavaidItem = {
390 471
 
391 472
         return me._can.group;
392 473
     },
393
-    setData : func (navaid, type) {
474
+    setData : func (navaid, type, mapOptions) {
394 475
         mapIconCache.boundIconToImage('Navaid_' ~ type, me._can.image);
395
-        me._can.label.setText(navaid.id);
476
+        me._can.label
477
+            .setText(navaid.id)
478
+            .setRotation(-mapOptions.orientation * D2R);
396 479
         me._can.group.setGeoPosition(navaid.lat, navaid.lon);
397 480
     },
398 481
     setVisible : func (visibility) {
... ...
@@ -402,6 +485,7 @@ var MapNavaidItem = {
402 485
 # }}}
403 486
 
404 487
 var MapAirplaneItem = {
488
+# set airplane on ND {{{
405 489
     new : func {
406 490
         var m = {parents:[MapAirplaneItem]};
407 491
         m._can = {
... ...
@@ -418,16 +502,17 @@ var MapAirplaneItem = {
418 502
             .setSourceRect(0,0,0,0,0);
419 503
         return me._can.group;
420 504
     },
421
-    setData : func {
505
+    setData : func (orientation) {
422 506
         mapIconCache.boundIconToImage('airplane', me._can.image);
423 507
         me._can.group
424 508
             .setGeoPosition(data.lat, data.lon)
425
-            .setRotation(data.hdg * D2R);
509
+            .setRotation(orientation * D2R);
426 510
     },
427 511
     setVisible : func (visibility) {
428 512
         me._can.group.setVisible(visibility);
429 513
     },
430 514
 };
515
+# }}}
431 516
 
432 517
 var MAP_RUNWAY_SURFACE =  {0:0, 1:1, 2:1, 3:0, 4:0, 5:0, 6:1, 7:1, 8:0, 9:0, 10:0, 11:0, 12:0};
433 518
 var MAP_RUNWAY_AT_RANGE = func (range) {
... ...
@@ -459,30 +544,22 @@ var MAP_TXRANGE_VOR = func (range) {
459 544
 #       2 : 'Obstacles'
460 545
 #       3 : 'Navaids'
461 546
 
462
-var PositionedLayer = {
547
+var MapNavaids = {
463 548
 # the layer to show navaids, airports and airplane symbol {{{
464
-    new : func (device) {
465
-        var m = {parents : [PositionedLayer]};
549
+    new : func (device, group) {
550
+        var m = {parents : [MapNavaids]};
466 551
 
467 552
         m._model = nil;
468 553
         m.device = device;
469 554
         m._visibility = m.device.role == 'MFD';
470 555
 
471
-        var display = m.device.display.display;
472
-        m._group = display.createGroup().createChild('map', 'MFD map')
473
-            .set('clip',
474
-                    'rect('
475
-                        ~ m.device.data.mapclip.top ~','
476
-                        ~ m.device.data.mapclip.right ~','
477
-                        ~ m.device.data.mapclip.bottom ~','
478
-                        ~ m.device.data.mapclip.left ~')')
556
+        m._group = group.createChild('map', 'MFD map')
479 557
             .setTranslation(
480
-                    m.device.data.mapsize[0] / 2 + m.device.data.mapclip.left,
481
-                    m.device.data.mapsize[1] / 2 + m.device.data.mapclip.top
482
-                )
558
+                m.device.role == 'MFD' ? (m.device.data.mapview[0] + m.device.data.mapclip.left)/2 : 120,
559
+                m.device.role == 'MFD' ? 400 : 600)
483 560
             .setVisible(m._visibility);
484 561
             m._group._node
485
-                .getNode('range', 1).setDoubleValue(13.5); # TODO find a far less esoteric way to get range value
562
+                .getNode('range', 1).setDoubleValue(m.device.data['range-factor']);
486 563
 
487 564
         m._can = {};
488 565
         m._cache = {};
... ...
@@ -509,7 +586,7 @@ var PositionedLayer = {
509 586
             range         : m.device.data['range-nm'],
510 587
             rangeLow      : m.device.data['range-nm'] / 2,
511 588
             runwayLength  : -1,
512
-            orientation   : 0,
589
+            orientation   : m.device.data.orientation.map,
513 590
         };
514 591
 
515 592
         m._results = nil;
... ...
@@ -520,6 +597,10 @@ var PositionedLayer = {
520 597
         me._group._node.getNode('ref-lat', 1).setDoubleValue(data.lat);
521 598
         me._group._node.getNode('ref-lon', 1).setDoubleValue(data.lon);
522 599
 
600
+        me._group._node
601
+            .getNode('range', 1).setDoubleValue(me.device.data['range-factor']);
602
+        me._mapOptions.orientation = me.device.data.orientation.map;
603
+
523 604
         if (me._visibility == 1) {
524 605
             me.loadAirport();
525 606
             foreach (var n; ['VOR', 'TACAN', 'NDB', 'DME'])
... ...
@@ -613,12 +694,12 @@ var PositionedLayer = {
613 694
 
614 695
                 if (size(me._cache[type].data) > me._cache[type].index) {
615 696
                     item = me._cache[type].data[me._cache[type].index];
616
-                    item.setData(n, type);
697
+                    item.setData(n, type, me._mapOptions);
617 698
                 }
618 699
                 else {
619 700
                     item = MapNavaidItem.new(me._cache[type].index, type);
620 701
                     item.create(me._can[type]);
621
-                    item.setData(n, type);
702
+                    item.setData(n, type, me._mapOptions);
622 703
                     append(me._cache[type].data, item);
623 704
                 }
624 705
                 item.setVisible(1);
... ...
@@ -636,7 +717,7 @@ var PositionedLayer = {
636 717
             me._cache.airplane.item.create(me._can['airplane']);
637 718
             me._cache.airplane.displayed = 1;
638 719
         }
639
-        me._cache.airplane.item.setData();
720
+        me._cache.airplane.item.setData(me.device.data.orientation.airplane);
640 721
         me._cache.airplane.item.setVisible(1);
641 722
     },
642 723
 };
+77 -6
Nasal/softkeys.nas
... ...
@@ -1,3 +1,4 @@
1
+# vim: set foldmethod=marker foldmarker={{{,}}} :
1 2
 var softkeysClass = {
2 3
     new : func (device) {
3 4
         var m = { parents: [ softkeysClass ] };
... ...
@@ -57,16 +58,16 @@ var softkeysClass = {
57 58
         PFD : {
58 59
             INSET: {
59 60
                 OFF: func {
60
-                    me.device.display.MapTiles.setVisible(0);
61
-                    me.device.display.MapNavaids.setVisible(0);
61
+                    me.device.map.tiles.setVisible(0);
62
+                    me.device.map.navaids.setVisible(0);
62 63
                     me.device.display.screenElements['PFD-Map-bg'].hide();
63 64
                 },
64 65
                 hook : func {
65 66
                     me.device.display.screenElements['PFD-Map-bg'].show();
66
-                    me.device.display.MapTiles.setVisible(1);
67
-                    me.device.display.MapNavaids.setVisible(1);
68
-                    me.device.display.MapTiles.update();
69
-                    me.device.display.MapNavaids.update();
67
+                    me.device.map.tiles.setVisible(1);
68
+                    me.device.map.navaids.setVisible(1);
69
+                    me.device.map.tiles.update();
70
+                    me.device.map.navaids.update();
70 71
                 },
71 72
             },
72 73
             PFD: {
... ...
@@ -497,3 +498,73 @@ var softkeysClass = {
497 498
         },
498 499
     },
499 500
 };
501
+
502
+var keyMap = {
503
+# softkeys map for PFD and MFD {{{
504
+    PFD : {
505
+        first : 1,
506
+        texts : ['INSET', 'SENSOR', 'PFD', 'OBS', 'CDI', 'DME', 'XPDR', 'IDENT', 'TMR/REF', 'NRST' ],
507
+        INSET : {
508
+            texts : ['OFF', 'DCLTR', 'WXLGND', 'TRAFFIC', 'TOPO', 'TERRAIN', 'STRMSCP', 'NEXRAD-C', 'XM LTNG', 'METAR'],
509
+        },
510
+        SENSOR : {
511
+            first : 2,
512
+            texts : [ 'ADC1', 'ADC2', '', 'AHRS1', 'AHRS2'],
513
+        },
514
+        PFD : {
515
+            texts : [ 'SYN VIS', 'DFLTS', 'AOA/WIND', 'DME', 'BRG1', 'HSI FMT', 'BRG2', '', 'ALT UNIT', 'STD BARO' ],
516
+            'SYN VIS' : {
517
+                texts : [ 'PATHWAY', 'SYN TERR', 'HR2NHDG', 'APTSIGNS', 'FPM'],
518
+            },
519
+            'AOA/WIND' : {
520
+                first : 4,
521
+                texts : ['AOA', 'WIND'],
522
+                AOA : {
523
+                    first : 5,
524
+                    texts : ['AOA ON', 'AOA AUTO'],
525
+                },
526
+                WIND : {
527
+                    first : 2,
528
+                    texts : ['OPTN1', 'OPTN2', '', 'OFF'],
529
+                },
530
+            },
531
+            'HSI FMT' : {
532
+                first : 6,
533
+                texts : ['360 HSI', 'ARC HSI'],
534
+            },
535
+            'ALT UNIT' : {
536
+                first : 5,
537
+                texts : ['METERS', '', 'IN', 'HPA'],
538
+            },
539
+        },
540
+        XPDR : {
541
+            first : 2,
542
+            texts : ['STBY', 'ON', 'ALT', '', 'VFR', 'CODE', 'IDENT'],
543
+            CODE : {
544
+                texts : ['0', '1', '2', '3', '4', '5', '6', '7', 'IDENT', 'BKSP'],
545
+            },
546
+        },
547
+    },
548
+    MFD : {
549
+        texts : ['ENGINE', '', 'MAP', '', '', '', '', '', '', 'DCLTR', 'SHW CHRT', 'CHKLIST'],
550
+        MAP : {
551
+            texts: ['TRAFFIC', 'PROFILE', 'TOPO', 'TERRAIN', 'AIRWAYS', 'STRMSCP','NEXRAD-C', 'XM LTNG', 'METAR', 'LEGEND', 'BACK'],
552
+        },
553
+        CHKLIST : {
554
+            texts : ['ENGINE', '', '', '', '', 'DONE', '', '', '', '', 'EXIT', 'EMERGCY'],
555
+        },
556
+        ENGINE : {
557
+            texts : ['ENGINE', 'ANTI-ICE', '', 'DCLTR', '', 'ASSIST', '', '', '', '', 'FUEL'],
558
+            'ANTI-ICE' : {
559
+                texts : ['LEFT', 'AUTO', 'RIGHT', '', '', '', '', '', '', '', '', 'BACK'],
560
+            },
561
+            FUEL : {
562
+                first : 1,
563
+                texts : ['FULL', 'TABS', '', '', '', '', '', '', '', 'UNDO', 'ENTER'],
564
+            },
565
+        },
566
+    },
567
+};
568
+if (data['stall-aoa'] == 9999)
569
+    keyMap.PFD.PFD['AOA/WIND'].texts = ['', 'WIND'];
570
+#}}}
+2
README.md
... ...
@@ -96,6 +96,7 @@ Please report bug at <seb.marque@free.fr>.
96 96
   * Setting pages (MFD): pages/sub-pages selection via FMS knob ![][done], pages content implementation ![][ongoing]
97 97
 * ![][10%]
98 98
   * multikey for every part of the device (actually only power on)
99
+  * Aircraft Maintainer's Guide
99 100
 * ![][0%] (TODO list, unsorted)
100 101
   * CDI/GPS: scale depending of the flight phase
101 102
   * Alerts
... ...
@@ -111,6 +112,7 @@ Please report bug at <seb.marque@free.fr>.
111 112
   * VNAV
112 113
   * scrolling lift in menus
113 114
   * tutorials
115
+  * User's Guide
114 116
   * make any Vspeed available (not only Vx, Vy, Vr and Vglide), depending of their presence in aircraft config
115 117
   * [touchable screen](http://wiki.flightgear.org/Canvas_Event_Handling)
116 118
   * many more...
+5 -677
Systems/screen.svg → Systems/PFD.svg
... ...
@@ -10,7 +10,7 @@
10 10
    xmlns:xlink="http://www.w3.org/1999/xlink"
11 11
    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
12 12
    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
13
-   sodipodi:docname="screen.svg"
13
+   sodipodi:docname="PFD.svg"
14 14
    inkscape:version="0.92.1 r15371"
15 15
    version="1.1"
16 16
    id="svg3140"
... ...
@@ -24,11 +24,11 @@
24 24
      borderopacity="1"
25 25
      inkscape:pageopacity="1"
26 26
      inkscape:pageshadow="2"
27
-     inkscape:zoom="5.259107"
28
-     inkscape:cx="701.99873"
29
-     inkscape:cy="619.42441"
27
+     inkscape:zoom="0.32869419"
28
+     inkscape:cx="320.83771"
29
+     inkscape:cy="302.5405"
30 30
      inkscape:document-units="px"
31
-     inkscape:current-layer="SelectedALT"
31
+     inkscape:current-layer="Failures"
32 32
      showgrid="false"
33 33
      showguides="false"
34 34
      inkscape:guide-bbox="true"
... ...
@@ -6490,205 +6490,6 @@
6490 6490
          style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
6491 6491
     </g>
6492 6492
   </g>
6493
-  <g
6494
-     id="Header"
6495
-     inkscape:label="Header"
6496
-     style="display:inline">
6497
-    <rect
6498
-       style="fill:#000000;fill-opacity:1;stroke:none"
6499
-       id="rect4259"
6500
-       width="1024"
6501
-       height="55.494141"
6502
-       x="0"
6503
-       y="0" />
6504
-    <path
6505
-       style="fill:none;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
6506
-       d="M 0,55.49414 H 1025.0039"
6507
-       id="path4083"
6508
-       inkscape:connector-curvature="0" />
6509
-    <path
6510
-       style="fill:none;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
6511
-       d="M 263.50196,27.49805 H 760.00391"
6512
-       id="path4089"
6513
-       inkscape:connector-curvature="0" />
6514
-    <text
6515
-       transform="scale(0.95985917,1.0418195)"
6516
-       id="text4261-5"
6517
-       y="47.036842"
6518
-       x="3.711482"
6519
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:0%;font-family:'Ubuntu Mono';-inkscape-font-specification:'Ubuntu Mono Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ffffff;fill-opacity:1;stroke:none"
6520
-       xml:space="preserve"><tspan
6521
-         style="font-size:19.44536018px;line-height:1.25"
6522
-         y="47.036842"
6523
-         x="3.711482"
6524
-         id="tspan4263-5"
6525
-         sodipodi:role="line">NAV2</tspan></text>
6526
-    <text
6527
-       transform="scale(0.95985919,1.0418195)"
6528
-       id="text4261"
6529
-       y="24.000223"
6530
-       x="3.7114818"
6531
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:0%;font-family:'Ubuntu Mono';-inkscape-font-specification:'Ubuntu Mono Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none"
6532
-       xml:space="preserve"><tspan
6533
-         style="font-size:19.44536018px;line-height:1.25"
6534
-         y="24.000223"
6535
-         x="3.7114818"
6536
-         id="tspan4263"
6537
-         sodipodi:role="line">NAV1</tspan></text>
6538
-    <path
6539
-       style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
6540
-       d="M 263.00638,55.49414 V 0"
6541
-       id="path4087"
6542
-       inkscape:connector-curvature="0" />
6543
-    <text
6544
-       transform="scale(0.98049433,1.0198937)"
6545
-       id="text4290-4"
6546
-       y="46.475105"
6547
-       x="979.46912"
6548
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:0%;font-family:'Ubuntu Mono';-inkscape-font-specification:'Ubuntu Mono Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ffffff;fill-opacity:1;stroke:none"
6549
-       xml:space="preserve"><tspan
6550
-         style="font-size:19.53494453px;line-height:1.25"
6551
-         y="46.475105"
6552
-         x="979.46912"
6553
-         id="tspan4292-0"
6554
-         sodipodi:role="line">COM2</tspan></text>
6555
-    <text
6556
-       transform="scale(0.98049433,1.0198937)"
6557
-       id="text4290"
6558
-       y="22.938923"
6559
-       x="979.48126"
6560
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:0%;font-family:'Ubuntu Mono';-inkscape-font-specification:'Ubuntu Mono Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none"
6561
-       xml:space="preserve"><tspan
6562
-         style="font-size:19.53494453px;line-height:1.25"
6563
-         y="22.938923"
6564
-         x="979.48126"
6565
-         id="tspan4292"
6566
-         sodipodi:role="line">COM1</tspan></text>
6567
-    <path
6568
-       style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
6569
-       d="M 760.00391,55.494139 V -6.8969723e-7 v 0"
6570
-       id="path4085"
6571
-       inkscape:connector-curvature="0" />
6572
-  </g>
6573
-  <g
6574
-     id="NAV"
6575
-     inkscape:label="NAV"
6576
-     style="display:inline">
6577
-    <rect
6578
-       y="28.10227"
6579
-       x="80.601486"
6580
-       height="22.993343"
6581
-       width="72.99334"
6582
-       id="nav2-standby-tuning"
6583
-       style="display:none;fill:none;fill-opacity:0;stroke:#9bd8d9;stroke-width:1.00665724;stroke-opacity:1"
6584
-       inkscape:label="nav2-standby-tuning" />
6585
-    <rect
6586
-       y="28.10227"
6587
-       x="181.57742"
6588
-       height="22.993343"
6589
-       width="72.99334"
6590
-       id="nav2-selected-tuning"
6591
-       style="display:none;fill:none;fill-opacity:0;stroke:#9bd8d9;stroke-width:1.00665724;stroke-opacity:1"
6592
-       inkscape:label="nav2-selected-tuning" />
6593
-    <rect
6594
-       y="4.1022692"
6595
-       x="80.577423"
6596
-       height="22.993343"
6597
-       width="72.99334"
6598
-       id="nav1-standby-tuning"
6599
-       style="display:none;fill:none;fill-opacity:0;stroke:#9bd8d9;stroke-width:1.00665724;stroke-opacity:1"
6600
-       inkscape:label="nav1-standby-tuning" />
6601
-    <rect
6602
-       y="4.1022692"
6603
-       x="181.57742"
6604
-       height="22.993343"
6605
-       width="72.99334"
6606
-       id="nav1-selected-tuning"
6607
-       style="display:none;fill:none;fill-opacity:0;stroke:#9bd8d9;stroke-width:1.00665724;stroke-opacity:1"
6608
-       inkscape:label="nav1-selected-tuning" />
6609
-    <text
6610
-       transform="scale(0.85708105,1.1667508)"
6611
-       id="nav1-selected-freq"
6612
-       y="20.658087"
6613
-       x="214.1853"
6614
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Bold';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none"
6615
-       xml:space="preserve"
6616
-       inkscape:label="nav1-selected-freq"><tspan
6617
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:20.95271873px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold'"
6618
-         y="20.658087"
6619
-         x="214.1853"
6620
-         id="tspan4111"
6621
-         sodipodi:role="line">123.45</tspan></text>
6622
-    <text
6623
-       transform="scale(0.85708105,1.1667508)"
6624
-       id="nav1-standby-freq"
6625
-       y="20.658087"
6626
-       x="112.3863"
6627
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ffffff;fill-opacity:1;stroke:none"
6628
-       xml:space="preserve"
6629
-       inkscape:label="nav1-standby-freq"><tspan
6630
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:20.95271873px;line-height:125%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1"
6631
-         y="20.658087"
6632
-         x="112.3863"
6633
-         id="tspan4111-8"
6634
-         sodipodi:role="line">123.45</tspan></text>
6635
-    <text
6636
-       transform="scale(0.85708105,1.1667508)"
6637
-       id="nav2-selected-freq"
6638
-       y="41.656574"
6639
-       x="214.76868"
6640
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Bold';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;display:inline;fill:#ffffff;fill-opacity:1;stroke:none"
6641
-       xml:space="preserve"
6642
-       inkscape:label="nav2-selected-freq"><tspan
6643
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:20.95271873px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold'"
6644
-         y="41.656574"
6645
-         x="214.76868"
6646
-         id="tspan4111-9"
6647
-         sodipodi:role="line">123.45</tspan></text>
6648
-    <text
6649
-       transform="scale(0.85708105,1.1667508)"
6650
-       id="nav2-standby-freq"
6651
-       y="41.656574"
6652
-       x="112.3863"
6653
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ffffff;fill-opacity:1;stroke:none"
6654
-       xml:space="preserve"
6655
-       inkscape:label="nav2-standby-freq"><tspan
6656
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:20.95271873px;line-height:125%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1"
6657
-         y="41.656574"
6658
-         x="112.3863"
6659
-         id="tspan4111-9-4"
6660
-         sodipodi:role="line">123.45</tspan></text>
6661
-    <text
6662
-       xml:space="preserve"
6663
-       style="font-style:normal;font-weight:normal;font-size:18.66666603px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
6664
-       x="219.32292"
6665
-       y="21.999998"
6666
-       id="nav1-id"
6667
-       inkscape:label="nav1-id"><tspan
6668
-         sodipodi:role="line"
6669
-         id="tspan4989"
6670
-         x="219.32292"
6671
-         y="21.999998"
6672
-         style="fill:#ffffff">XXX</tspan></text>
6673
-    <text
6674
-       xml:space="preserve"
6675
-       style="font-style:normal;font-weight:normal;font-size:18.66666603px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
6676
-       x="219.32292"
6677
-       y="47.054035"
6678
-       id="nav2-id"
6679
-       inkscape:label="nav2-id"><tspan
6680
-         sodipodi:role="line"
6681
-         id="tspan4989-6"
6682
-         x="219.32292"
6683
-         y="47.054035"
6684
-         style="fill:#ffffff">XXX</tspan></text>
6685
-    <path
6686
-       inkscape:connector-curvature="0"
6687
-       id="nav-freq-switch"
6688
-       d="m 134.82604,11.203026 -3.99804,3.998045 -6.2e-4,1.008425 3.99805,3.998055 -0.004,-2 -0.99547,-0.995475 v -1.00391 l 12.00453,-6.2e-4 -0.0202,2.015015 -0.97708,-0.01901 -0.005,2.00143 3.99938,-3.99938 -10e-4,-0.998665 -4.0025,-4.001955 0.004,1.999995 0.99805,0.99805 -0.004,1 h -11.99609 l 0.006,-0.99743 0.99608,-0.99609 z"
6689
-       style="fill:#9bd8d9;fill-opacity:1;stroke:#9bd8d9;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
6690
-       inkscape:label="nav-freq-switch" />
6691
-  </g>
6692 6493
   <g
6693 6494
      style="display:inline"
6694 6495
      id="XPDR-TIME"
... ...
@@ -6798,70 +6599,6 @@
6798 6599
          y="737.74677"
6799 6600
          style="fill:#ffffff">0</tspan></text>
6800 6601
   </g>
6801
-  <g
6802
-     transform="translate(-2.8722382e-6,1.8800354e-6)"
6803
-     id="COMM"
6804
-     inkscape:label="COMM"
6805
-     style="display:inline">
6806
-    <path
6807
-       inkscape:connector-curvature="0"
6808
-       id="comm-freq-switch"
6809
-       d="m 853.98671,12.608238 -3.99804,3.998045 -6.2e-4,1.008425 3.99805,3.998055 -0.004,-2 -0.99547,-0.995475 v -1.00391 l 12.00453,-6.2e-4 -0.0202,2.015015 -0.97708,-0.01901 -0.005,2.00143 3.99938,-3.99938 -10e-4,-0.998665 -4.0025,-4.001955 0.004,1.999995 0.99805,0.99805 -0.004,1 h -11.99609 l 0.006,-0.99743 0.99608,-0.99609 z"
6810
-       style="display:inline;fill:#9bd8d9;fill-opacity:1;stroke:#9bd8d9;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
6811
-       inkscape:label="comm-freq-switch" />
6812
-    <text
6813
-       transform="scale(0.85708105,1.1667508)"
6814
-       id="comm1-standby-freq"
6815
-       y="21.470406"
6816
-       x="1066.9291"
6817
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Bold';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;display:inline;fill:#ffffff;fill-opacity:1;stroke:none"
6818
-       xml:space="preserve"
6819
-       inkscape:label="comm1-standby-freq"><tspan
6820
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:20.95271873px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold'"
6821
-         y="21.470406"
6822
-         x="1066.9291"
6823
-         id="tspan4111-83"
6824
-         sodipodi:role="line">123.456</tspan></text>
6825
-    <text
6826
-       transform="scale(0.85708105,1.1667508)"
6827
-       id="comm1-selected-freq"
6828
-       y="21.470411"
6829
-       x="937.43207"
6830
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ffffff;fill-opacity:1;stroke:none"
6831
-       xml:space="preserve"
6832
-       inkscape:label="comm1-selected-freq"><tspan
6833
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:20.95271873px;line-height:125%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1"
6834
-         y="21.470411"
6835
-         x="937.43207"
6836
-         id="tspan4111-8-3"
6837
-         sodipodi:role="line">123.456</tspan></text>
6838
-    <text
6839
-       transform="scale(0.85708105,1.1667508)"
6840
-       id="comm2-standby-freq"
6841
-       y="42.040348"
6842
-       x="1066.9291"
6843
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Bold';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;display:inline;fill:#ffffff;fill-opacity:1;stroke:none"
6844
-       xml:space="preserve"
6845
-       inkscape:label="comm2-standby-freq"><tspan
6846
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:20.95271873px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold'"
6847
-         y="42.040348"
6848
-         x="1066.9291"
6849
-         id="tspan4111-9-0"
6850
-         sodipodi:role="line">123.456</tspan></text>
6851
-    <text
6852
-       transform="scale(0.85708105,1.1667508)"
6853
-       id="comm2-selected-freq"
6854
-       y="42.040352"
6855
-       x="937.43207"
6856
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ffffff;fill-opacity:1;stroke:none"
6857
-       xml:space="preserve"
6858
-       inkscape:label="comm2-selected-freq"><tspan
6859
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:20.95271873px;line-height:125%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1"
6860
-         y="42.040352"
6861
-         x="937.43207"
6862
-         id="tspan4111-9-4-9"
6863
-         sodipodi:role="line">123.456</tspan></text>
6864
-  </g>
6865 6602
   <g
6866 6603
      id="PFD-Widgets"
6867 6604
      inkscape:label="PFD-Widgets"
... ...
@@ -7573,326 +7310,6 @@
7573 7310
          inkscape:label="SelectedALT-symbol" />
7574 7311
     </g>
7575 7312
   </g>
7576
-  <g
7577
-     id="SoftKeysTexts"
7578
-     inkscape:label="SoftKeysTexts"
7579
-     style="display:inline"
7580
-     transform="matrix(1.0043796,0,0,0.99999999,-0.01052084,9.8311945e-6)">
7581
-    <rect
7582
-       y="743.99927"
7583
-       x="172.49872"
7584
-       height="24.000597"
7585
-       width="83.8013"
7586
-       id="SoftKey02-bg"
7587
-       style="display:inline;fill:#000000;fill-opacity:1;stroke:none"
7588
-       inkscape:label="SoftKey02-bg" />
7589
-    <path
7590
-       inkscape:connector-curvature="0"
7591
-       id="path4917"
7592
-       d="m 172.00229,768.00003 v -24.49098 h 84.29724"
7593
-       style="display:inline;fill:#585959;fill-opacity:0.01332003;stroke:#b6bcbe;stroke-width:1.0045768px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
7594
-    <text
7595
-       transform="scale(0.93272861,1.0721232)"
7596
-       id="SoftKey02-text"
7597
-       y="711.67462"
7598
-       x="229.78027"
7599
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;line-height:0%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow, Condensed';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;display:inline;fill:#ffffff;fill-opacity:1;stroke:none"
7600
-       xml:space="preserve"
7601
-       inkscape:label="SoftKey02-text"><tspan
7602
-         y="711.67462"
7603
-         x="229.78027"
7604
-         id="tspan4921"
7605
-         sodipodi:role="line"
7606
-         style="font-size:17.5px;line-height:1.25">XXXXXXXX</tspan></text>
7607
-    <rect
7608
-       style="display:inline;fill:#000000;fill-opacity:1;stroke:none"
7609
-       id="SoftKey01-bg"
7610
-       width="83.8013"
7611
-       height="24.000597"
7612
-       x="87.698715"
7613
-       y="743.99927"
7614
-       inkscape:label="SoftKey01-bg" />
7615
-    <path
7616
-       style="display:inline;fill:#585959;fill-opacity:0.01332003;stroke:#b6bcbe;stroke-width:1.0045768px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
7617
-       d="M 87.202289,768.00003 V 743.50905 H 171.49953"
7618
-       id="path5027"
7619
-       inkscape:connector-curvature="0" />
7620
-    <text
7621
-       xml:space="preserve"
7622
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;line-height:0%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow, Condensed';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;display:inline;fill:#ffffff;fill-opacity:1;stroke:none"
7623
-       x="138.86423"
7624
-       y="711.67462"
7625
-       id="SoftKey01-text"
7626
-       transform="scale(0.93272861,1.0721232)"
7627
-       inkscape:label="SoftKey01-text"><tspan
7628
-         sodipodi:role="line"
7629
-         id="tspan5031"
7630
-         x="138.86423"
7631
-         y="711.67462"
7632
-         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>
7633
-    <rect
7634
-       style="display:inline;fill:#000000;fill-opacity:1;stroke:none"
7635
-       id="SoftKey03-bg"
7636
-       width="83.8013"
7637
-       height="24.000597"
7638
-       x="257.29871"
7639
-       y="743.99927"
7640
-       inkscape:label="SoftKey03-bg" />
7641
-    <path
7642
-       style="display:inline;fill:#585959;fill-opacity:0.01332003;stroke:#b6bcbe;stroke-width:1.0045768px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
7643
-       d="m 256.80229,768.00003 v -24.49098 h 84.29724"
7644
-       id="path_unknownID2"
7645
-       inkscape:connector-curvature="0"
7646
-       inkscape:label="path_unknownID2" />
7647
-    <text
7648
-       xml:space="preserve"
7649
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;line-height:0%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow, Condensed';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;display:inline;fill:#ffffff;fill-opacity:1;stroke:none"
7650
-       x="320.69632"
7651
-       y="711.67462"
7652
-       id="SoftKey03-text"
7653
-       transform="scale(0.93272861,1.0721232)"
7654
-       inkscape:label="SoftKey03-text"><tspan
7655
-         sodipodi:role="line"
7656
-         id="tspan5051"
7657
-         x="320.69632"
7658
-         y="711.67462"
7659
-         style="font-size:17.5px;line-height:1.25">XXXXXXXX</tspan></text>
7660
-    <rect
7661
-       style="display:inline;fill:#000000;fill-opacity:1;stroke:none"
7662
-       id="SoftKey04-bg"
7663
-       width="83.8013"
7664
-       height="24.000597"
7665
-       x="342.09872"
7666
-       y="743.99927"
7667
-       inkscape:label="SoftKey04-bg" />
7668
-    <path
7669
-       style="display:inline;fill:#585959;fill-opacity:0.01332003;stroke:#b6bcbe;stroke-width:1.00480211;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
7670
-       d="m 341.60229,768.00003 v -24.49098 h 84.29724"
7671
-       id="path_inknownID1"
7672
-       inkscape:connector-curvature="0"
7673
-       inkscape:label="path_inknownID1" />
7674
-    <text
7675
-       xml:space="preserve"
7676
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;line-height:0%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow, Condensed';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;display:inline;fill:#ffffff;fill-opacity:1;stroke:none"
7677
-       x="411.61237"
7678
-       y="711.67462"
7679
-       id="SoftKey04-text"
7680
-       transform="scale(0.93272861,1.0721232)"
7681
-       inkscape:label="SoftKey04-text"><tspan
7682
-         sodipodi:role="line"
7683
-         id="tspan5061"
7684
-         x="411.61237"
7685
-         y="711.67462"
7686
-         style="font-size:17.5px;line-height:1.25">XXXXXXXX</tspan></text>
7687
-    <rect
7688
-       style="display:inline;fill:#000000;fill-opacity:1;stroke:none"
7689
-       id="SoftKey06-bg"
7690
-       width="83.8013"
7691
-       height="24.000597"
7692
-       x="511.69873"
7693
-       y="743.99927"
7694
-       inkscape:label="SoftKey06-bg" />
7695
-    <path
7696
-       style="display:inline;fill:#585959;fill-opacity:0.01332003;stroke:#b6bcbe;stroke-width:1.0045768px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
7697
-       d="m 511.20229,768.00003 v -24.49098 h 84.29724"
7698
-       id="path5067"
7699
-       inkscape:connector-curvature="0" />
7700
-    <text
7701
-       xml:space="preserve"
7702
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;line-height:0%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow, Condensed';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;display:inline;fill:#ffffff;fill-opacity:1;stroke:none"
7703
-       x="593.44446"
7704
-       y="711.67462"
7705
-       id="SoftKey06-text"
7706
-       transform="scale(0.93272861,1.0721232)"
7707
-       inkscape:label="SoftKey06-text"><tspan
7708
-         sodipodi:role="line"
7709
-         id="tspan5071"
7710
-         x="593.44446"
7711
-         y="711.67462"
7712
-         style="font-size:17.5px;line-height:1.25">XXXXXXXX</tspan></text>
7713
-    <rect
7714
-       y="743.99927"
7715
-       x="426.89871"
7716
-       height="24.000597"
7717
-       width="83.8013"
7718
-       id="SoftKey05-bg"
7719
-       style="display:inline;fill:#000000;fill-opacity:1;stroke:none"
7720
-       inkscape:label="SoftKey05-bg" />
7721
-    <path
7722
-       inkscape:connector-curvature="0"
7723
-       id="path5077"
7724
-       d="m 426.40229,768.00003 v -24.49098 h 84.29724"
7725
-       style="display:inline;fill:#585959;fill-opacity:0.01332003;stroke:#b6bcbe;stroke-width:1.0045768px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
7726
-    <text
7727
-       transform="scale(0.93272861,1.0721232)"
7728
-       id="SoftKey05-text"
7729
-       y="711.67462"
7730
-       x="502.52841"
7731
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;line-height:0%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow, Condensed';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;display:inline;fill:#ffffff;fill-opacity:1;stroke:none"
7732
-       xml:space="preserve"
7733
-       inkscape:label="SoftKey05-text"><tspan
7734
-         y="711.67462"
7735
-         x="502.52841"
7736
-         id="tspan5081"
7737
-         sodipodi:role="line"
7738
-         style="font-size:17.5px;line-height:1.25">XXXXXXXX</tspan></text>
7739
-    <rect
7740
-       y="743.99927"
7741
-       x="596.49872"
7742
-       height="24.000597"
7743
-       width="83.8013"
7744
-       id="SoftKey07-bg"
7745
-       style="display:inline;fill:#000000;fill-opacity:1;stroke:none"
7746
-       inkscape:label="SoftKey07-bg" />
7747
-    <path
7748
-       inkscape:connector-curvature="0"
7749
-       id="path5087"
7750
-       d="m 596.00229,768.00003 v -24.49098 h 84.29724"
7751
-       style="display:inline;fill:#585959;fill-opacity:0.01332003;stroke:#b6bcbe;stroke-width:1.0045768px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
7752
-    <text
7753
-       transform="scale(0.93272861,1.0721232)"
7754
-       id="SoftKey07-text"
7755
-       y="711.67462"
7756
-       x="684.36053"
7757
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;line-height:0%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow, Condensed';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;display:inline;fill:#ffffff;fill-opacity:1;stroke:none"
7758
-       xml:space="preserve"
7759
-       inkscape:label="SoftKey07-text"><tspan
7760
-         y="711.67462"
7761
-         x="684.36053"
7762
-         id="tspan5091"
7763
-         sodipodi:role="line"
7764
-         style="font-size:17.5px;line-height:1.25">XXXXXXXX</tspan></text>
7765
-    <rect
7766
-       y="743.99927"
7767
-       x="681.29871"
7768
-       height="24.000597"
7769
-       width="83.8013"
7770
-       id="SoftKey08-bg"
7771
-       style="display:inline;fill:#000000;fill-opacity:1;stroke:none"
7772
-       inkscape:label="SoftKey08-bg" />
7773
-    <path
7774
-       inkscape:connector-curvature="0"
7775
-       id="path5097"
7776
-       d="m 680.80229,768.00003 v -24.49098 h 84.29724"
7777
-       style="display:inline;fill:#585959;fill-opacity:0.01332003;stroke:#b6bcbe;stroke-width:1.0045768px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
7778
-    <text
7779
-       transform="scale(0.93272861,1.0721232)"
7780
-       id="SoftKey08-text"
7781
-       y="711.67462"
7782
-       x="775.27655"
7783
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;line-height:0%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow, Condensed';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;display:inline;fill:#ffffff;fill-opacity:1;stroke:none"
7784
-       xml:space="preserve"
7785
-       inkscape:label="SoftKey08-text"><tspan
7786
-         y="711.67462"
7787
-         x="775.27655"
7788
-         id="tspan5101-6"
7789
-         sodipodi:role="line"
7790
-         style="font-size:17.5px;line-height:1.25">XXXXXXXX</tspan></text>
7791
-    <rect
7792
-       y="743.99927"
7793
-       x="850.89874"
7794
-       height="24.000597"
7795
-       width="83.8013"
7796
-       id="SoftKey10-bg"
7797
-       style="display:inline;fill:#000000;fill-opacity:1;stroke:none"
7798
-       inkscape:label="SoftKey10-bg" />
7799
-    <path
7800
-       inkscape:connector-curvature="0"
7801
-       id="path5107"
7802
-       d="m 850.40229,768.00003 v -24.49098 h 84.29724"
7803
-       style="display:inline;fill:#585959;fill-opacity:0.01332003;stroke:#b6bcbe;stroke-width:1.0045768px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
7804
-    <text
7805
-       transform="scale(0.93272861,1.0721232)"
7806
-       id="SoftKey10-text"
7807
-       y="711.67462"
7808
-       x="957.10864"
7809
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;line-height:0%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow, Condensed';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;display:inline;fill:#ffffff;fill-opacity:1;stroke:none"
7810
-       xml:space="preserve"
7811
-       inkscape:label="SoftKey10-text"><tspan
7812
-         y="711.67462"
7813
-         x="957.10864"
7814
-         id="tspan5111-7"
7815
-         sodipodi:role="line"
7816
-         style="font-size:17.5px;line-height:1.25">XXXXXXXX</tspan></text>
7817
-    <rect
7818
-       style="display:inline;fill:#000000;fill-opacity:1;stroke:none"
7819
-       id="SoftKey09-bg"
7820
-       width="83.8013"
7821
-       height="24.000597"
7822
-       x="766.09869"
7823
-       y="743.99927"
7824
-       inkscape:label="SoftKey09-bg" />
7825
-    <path
7826
-       style="display:inline;fill:#585959;fill-opacity:0.01332003;stroke:#b6bcbe;stroke-width:1.0045768px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
7827
-       d="m 765.60229,768.00003 v -24.49098 h 84.29724"
7828
-       id="path5117"
7829
-       inkscape:connector-curvature="0" />
7830
-    <text
7831
-       xml:space="preserve"
7832
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;line-height:0%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow, Condensed';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;display:inline;fill:#ffffff;fill-opacity:1;stroke:none"
7833
-       x="866.19263"
7834
-       y="711.67462"
7835
-       id="SoftKey09-text"
7836
-       transform="scale(0.93272861,1.0721232)"
7837
-       inkscape:label="SoftKey09-text"><tspan
7838
-         sodipodi:role="line"
7839
-         id="tspan5121-5"
7840
-         x="866.19263"
7841
-         y="711.67462"
7842
-         style="font-size:17.5px;line-height:1.25">XXXXXXXX</tspan></text>
7843
-    <rect
7844
-       style="display:inline;fill:#000000;fill-opacity:1;stroke:none"
7845
-       id="SoftKey11-bg"
7846
-       width="83.8013"
7847
-       height="24.000597"
7848
-       x="935.69873"
7849
-       y="743.99927"
7850
-       inkscape:label="SoftKey11-bg" />
7851
-    <path
7852
-       style="display:inline;fill:#585959;fill-opacity:0.01332003;stroke:#b6bcbe;stroke-width:1.0045768px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
7853
-       d="m 935.20229,768.00003 v -24.49098 h 84.29721"
7854
-       id="path5127"
7855
-       inkscape:connector-curvature="0" />
7856
-    <text
7857
-       xml:space="preserve"
7858
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;line-height:0%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow, Condensed';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;display:inline;fill:#ffffff;fill-opacity:1;stroke:none"
7859
-       x="1048.0247"
7860
-       y="711.67462"
7861
-       id="SoftKey11-text"
7862
-       transform="scale(0.93272861,1.0721232)"
7863
-       inkscape:label="SoftKey11-text"><tspan
7864
-         sodipodi:role="line"
7865
-         id="tspan5131-3"
7866
-         x="1048.0247"
7867
-         y="711.67462"
7868
-         style="font-size:17.5px;line-height:1.25">XXXXXXXX</tspan></text>
7869
-    <rect
7870
-       y="743.99927"
7871
-       x="2.8987145"
7872
-       height="24.000597"
7873
-       width="83.8013"
7874
-       id="SoftKey00-bg"
7875
-       style="display:inline;fill:#000000;fill-opacity:1;stroke:none"
7876
-       inkscape:label="SoftKey00-bg" />
7877
-    <path
7878
-       inkscape:connector-curvature="0"
7879
-       id="path5361-5"
7880
-       d="M 2.402289,768.00003 V 743.50905 H 86.69953"
7881
-       style="display:inline;fill:#585959;fill-opacity:0.01332003;stroke:#b6bcbe;stroke-width:1.0045768px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
7882
-    <text
7883
-       transform="scale(0.93272862,1.0721232)"
7884
-       id="SoftKey00-text"
7885
-       y="711.67462"
7886
-       x="47.948124"
7887
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;line-height:0%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow, Condensed';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;display:inline;fill:#ffffff;fill-opacity:1;stroke:none"
7888
-       xml:space="preserve"
7889
-       inkscape:label="SoftKey00-text"><tspan
7890
-         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"
7891
-         y="711.67462"
7892
-         x="47.948124"
7893
-         id="tspan5365"
7894
-         sodipodi:role="line">XXXXXXXX</tspan></text>
7895
-  </g>
7896 7313
   <g
7897 7314
      id="Failures"
7898 7315
      inkscape:label="Failures"
... ...
@@ -8234,95 +7651,6 @@
8234 7651
            y="428.94635"
8235 7652
            style="font-size:32.03660965px;line-height:1.25;font-family:sans-serif">HDG</tspan></text>
8236 7653
     </g>
8237
-    <g
8238
-       transform="translate(761.6,54.8)"
8239
-       id="COMM2"
8240
-       style="display:inline"
8241
-       inkscape:label="COMM2">
8242
-      <g
8243
-         id="g4429"
8244
-         transform="translate(0,-28)"
8245
-         style="display:inline">
8246
-        <path
8247
-           sodipodi:nodetypes="cc"
8248
-           inkscape:connector-curvature="0"
8249
-           id="path4431"
8250
-           d="M -1,27.1 263,0.6"
8251
-           style="fill:none;stroke:#ff0000;stroke-width:1.20000005;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
8252
-      </g>
8253
-      <path
8254
-         sodipodi:nodetypes="cc"
8255
-         style="display:inline;fill:none;stroke:#ff0000;stroke-width:1.20000005;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
8256
-         d="M -1,-27.4 263,-0.9"
8257
-         id="path4433"
8258
-         inkscape:connector-curvature="0" />
8259
-    </g>
8260
-    <g
8261
-       style="display:inline"
8262
-       id="COMM1"
8263
-       transform="translate(761.6,28.3)"
8264
-       inkscape:label="COMM1">
8265
-      <g
8266
-         transform="translate(0,-28)"
8267
-         id="g4372-1">
8268
-        <path
8269
-           style="fill:none;stroke:#ff0000;stroke-width:1.20000005;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
8270
-           d="M -1,27.1 263,0.6"
8271
-           id="path4368-2"
8272
-           inkscape:connector-curvature="0"
8273
-           sodipodi:nodetypes="cc" />
8274
-      </g>
8275
-      <path
8276
-         inkscape:connector-curvature="0"
8277
-         id="path4370-2"
8278
-         d="M -1,-27.4 263,-0.9"
8279
-         style="fill:none;stroke:#ff0000;stroke-width:1.20000005;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
8280
-         sodipodi:nodetypes="cc" />
8281
-    </g>
8282
-    <g
8283
-       style="display:inline"
8284
-       transform="translate(0,54.8)"
8285
-       id="NAV2"
8286
-       inkscape:label="NAV2">
8287
-      <g
8288
-         id="g4394"
8289
-         transform="translate(0,-28)">
8290
-        <path
8291
-           sodipodi:nodetypes="cc"
8292
-           inkscape:connector-curvature="0"
8293
-           id="path4396"
8294
-           d="M -1,27.6 263,0.6"
8295
-           style="fill:none;stroke:#ff0000;stroke-width:1.20000005;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
8296
-      </g>
8297
-      <path
8298
-         sodipodi:nodetypes="cc"
8299
-         style="fill:none;stroke:#ff0000;stroke-width:1.20000005;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
8300
-         d="m -1,-27.4 264,27"
8301
-         id="path4398"
8302
-         inkscape:connector-curvature="0" />
8303
-    </g>
8304
-    <g
8305
-       style="display:inline"
8306
-       id="NAV1-2"
8307
-       transform="translate(0,28.4)"
8308
-       inkscape:label="NAV1">
8309
-      <g
8310
-         transform="translate(0,-28)"
8311
-         id="g4372">
8312
-        <path
8313
-           style="fill:none;stroke:#ff0000;stroke-width:1.20000005;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
8314
-           d="M -1,27.1 263,0.6"
8315
-           id="path4368"
8316
-           inkscape:connector-curvature="0"
8317
-           sodipodi:nodetypes="cc" />
8318
-      </g>
8319
-      <path
8320
-         inkscape:connector-curvature="0"
8321
-         id="path4370"
8322
-         d="M -1,-27.4 263,-0.9"
8323
-         style="fill:none;stroke:#ff0000;stroke-width:1.20000005;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
8324
-         sodipodi:nodetypes="cc" />
8325
-    </g>
8326 7654
     <g
8327 7655
        transform="matrix(0.52941177,0,0,0.52941177,-380.31765,288.50243)"
8328 7656
        id="L_NoGPS"
+412
Systems/header-nav-comm.svg
... ...
@@ -0,0 +1,412 @@
1
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
3
+
4
+<svg
5
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
6
+   xmlns:cc="http://creativecommons.org/ns#"
7
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
8
+   xmlns:svg="http://www.w3.org/2000/svg"
9
+   xmlns="http://www.w3.org/2000/svg"
10
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
11
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
12
+   width="1024px"
13
+   height="768px"
14
+   viewBox="0 0 1024 768"
15
+   version="1.1"
16
+   id="SVGRoot"
17
+   inkscape:version="0.92.1 r15371"
18
+   sodipodi:docname="header-nav-comm.svg">
19
+  <sodipodi:namedview
20
+     id="base"
21
+     pagecolor="#ffffff"
22
+     bordercolor="#ffffff"
23
+     borderopacity="0"
24
+     inkscape:pageopacity="0.0"
25
+     inkscape:pageshadow="2"
26
+     inkscape:zoom="0.5"
27
+     inkscape:cx="512"
28
+     inkscape:cy="384"
29
+     inkscape:document-units="px"
30
+     inkscape:current-layer="layer1"
31
+     showgrid="false"
32
+     inkscape:window-width="1600"
33
+     inkscape:window-height="836"
34
+     inkscape:window-x="0"
35
+     inkscape:window-y="27"
36
+     inkscape:window-maximized="1" />
37
+  <defs
38
+     id="defs7962" />
39
+  <metadata
40
+     id="metadata7965">
41
+    <rdf:RDF>
42
+      <cc:Work
43
+         rdf:about="">
44
+        <dc:format>image/svg+xml</dc:format>
45
+        <dc:type
46
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
47
+        <dc:title />
48
+      </cc:Work>
49
+    </rdf:RDF>
50
+  </metadata>
51
+  <g
52
+     id="layer1"
53
+     inkscape:groupmode="layer"
54
+     inkscape:label="Calque 1">
55
+    <g
56
+       id="Header"
57
+       inkscape:label="Header"
58
+       style="display:inline">
59
+      <rect
60
+         style="fill:#000000;fill-opacity:1;stroke:none"
61
+         id="rect4259"
62
+         width="1024"
63
+         height="55.494141"
64
+         x="0"
65
+         y="0" />
66
+      <path
67
+         style="fill:none;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
68
+         d="M 0,55.49414 H 1025.0039"
69
+         id="path4083"
70
+         inkscape:connector-curvature="0" />
71
+      <path
72
+         style="fill:none;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
73
+         d="M 263.50196,27.49805 H 760.00391"
74
+         id="path4089"
75
+         inkscape:connector-curvature="0" />
76
+      <text
77
+         transform="scale(0.95985917,1.0418195)"
78
+         id="text4261-5"
79
+         y="47.036842"
80
+         x="3.711482"
81
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:0%;font-family:'Ubuntu Mono';-inkscape-font-specification:'Ubuntu Mono Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ffffff;fill-opacity:1;stroke:none"
82
+         xml:space="preserve"><tspan
83
+           style="font-size:19.44536018px;line-height:1.25"
84
+           y="47.036842"
85
+           x="3.711482"
86
+           id="tspan4263-5"
87
+           sodipodi:role="line">NAV2</tspan></text>
88
+      <text
89
+         transform="scale(0.95985919,1.0418195)"
90
+         id="text4261"
91
+         y="24.000223"
92
+         x="3.7114818"
93
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:0%;font-family:'Ubuntu Mono';-inkscape-font-specification:'Ubuntu Mono Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none"
94
+         xml:space="preserve"><tspan
95
+           style="font-size:19.44536018px;line-height:1.25"
96
+           y="24.000223"
97
+           x="3.7114818"
98
+           id="tspan4263"
99
+           sodipodi:role="line">NAV1</tspan></text>
100
+      <path
101
+         style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
102
+         d="M 263.00638,55.49414 V 0"
103
+         id="path4087"
104
+         inkscape:connector-curvature="0" />
105
+      <text
106
+         transform="scale(0.98049433,1.0198937)"
107
+         id="text4290-4"
108
+         y="46.475105"
109
+         x="979.46912"
110
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:0%;font-family:'Ubuntu Mono';-inkscape-font-specification:'Ubuntu Mono Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ffffff;fill-opacity:1;stroke:none"
111
+         xml:space="preserve"><tspan
112
+           style="font-size:19.53494453px;line-height:1.25"
113
+           y="46.475105"
114
+           x="979.46912"
115
+           id="tspan4292-0"
116
+           sodipodi:role="line">COM2</tspan></text>
117
+      <text
118
+         transform="scale(0.98049433,1.0198937)"
119
+         id="text4290"
120
+         y="22.938923"
121
+         x="979.48126"
122
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:0%;font-family:'Ubuntu Mono';-inkscape-font-specification:'Ubuntu Mono Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none"
123
+         xml:space="preserve"><tspan
124
+           style="font-size:19.53494453px;line-height:1.25"
125
+           y="22.938923"
126
+           x="979.48126"
127
+           id="tspan4292"
128
+           sodipodi:role="line">COM1</tspan></text>
129
+      <path
130
+         style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
131
+         d="M 760.00391,55.494139 V -6.8969723e-7 v 0"
132
+         id="path4085"
133
+         inkscape:connector-curvature="0" />
134
+    </g>
135
+    <g
136
+       transform="translate(-7.0061333e-6,5.5155541e-6)"
137
+       id="COMM"
138
+       inkscape:label="COMM"
139
+       style="display:inline">
140
+      <path
141
+         inkscape:connector-curvature="0"
142
+         id="comm-freq-switch"
143
+         d="m 853.98671,12.608238 -3.99804,3.998045 -6.2e-4,1.008425 3.99805,3.998055 -0.004,-2 -0.99547,-0.995475 v -1.00391 l 12.00453,-6.2e-4 -0.0202,2.015015 -0.97708,-0.01901 -0.005,2.00143 3.99938,-3.99938 -10e-4,-0.998665 -4.0025,-4.001955 0.004,1.999995 0.99805,0.99805 -0.004,1 h -11.99609 l 0.006,-0.99743 0.99608,-0.99609 z"
144
+         style="display:inline;fill:#9bd8d9;fill-opacity:1;stroke:#9bd8d9;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
145
+         inkscape:label="comm-freq-switch" />
146
+      <text
147
+         transform="scale(0.85708105,1.1667508)"
148
+         id="comm1-standby-freq"
149
+         y="21.470406"
150
+         x="1066.9291"
151
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Bold';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;display:inline;fill:#ffffff;fill-opacity:1;stroke:none"
152
+         xml:space="preserve"
153
+         inkscape:label="comm1-standby-freq"><tspan
154
+           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:20.95271873px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold'"
155
+           y="21.470406"
156
+           x="1066.9291"
157
+           id="tspan4111-83"
158
+           sodipodi:role="line">123.456</tspan></text>
159
+      <text
160
+         transform="scale(0.85708105,1.1667508)"
161
+         id="comm1-selected-freq"
162
+         y="21.470411"
163
+         x="937.43207"
164
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ffffff;fill-opacity:1;stroke:none"
165
+         xml:space="preserve"
166
+         inkscape:label="comm1-selected-freq"><tspan
167
+           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:20.95271873px;line-height:125%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1"
168
+           y="21.470411"
169
+           x="937.43207"
170
+           id="tspan4111-8-3"
171
+           sodipodi:role="line">123.456</tspan></text>
172
+      <text
173
+         transform="scale(0.85708105,1.1667508)"
174
+         id="comm2-standby-freq"
175
+         y="42.040348"
176
+         x="1066.9291"
177
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Bold';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;display:inline;fill:#ffffff;fill-opacity:1;stroke:none"
178
+         xml:space="preserve"
179
+         inkscape:label="comm2-standby-freq"><tspan
180
+           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:20.95271873px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold'"
181
+           y="42.040348"
182
+           x="1066.9291"
183
+           id="tspan4111-9-0"
184
+           sodipodi:role="line">123.456</tspan></text>
185
+      <text
186
+         transform="scale(0.85708105,1.1667508)"
187
+         id="comm2-selected-freq"
188
+         y="42.040352"
189
+         x="937.43207"
190
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ffffff;fill-opacity:1;stroke:none"
191
+         xml:space="preserve"
192
+         inkscape:label="comm2-selected-freq"><tspan
193
+           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:20.95271873px;line-height:125%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1"
194
+           y="42.040352"
195
+           x="937.43207"
196
+           id="tspan4111-9-4-9"
197
+           sodipodi:role="line">123.456</tspan></text>
198
+    </g>
199
+    <g
200
+       id="NAV"
201
+       inkscape:label="NAV"
202
+       style="display:inline">
203
+      <rect
204
+         y="28.10227"
205
+         x="80.601486"
206
+         height="22.993343"
207
+         width="72.99334"
208
+         id="nav2-standby-tuning"
209
+         style="display:none;fill:none;fill-opacity:0;stroke:#9bd8d9;stroke-width:1.00665724;stroke-opacity:1"
210
+         inkscape:label="nav2-standby-tuning" />
211
+      <rect
212
+         y="28.10227"
213
+         x="181.57742"
214
+         height="22.993343"
215
+         width="72.99334"
216
+         id="nav2-selected-tuning"
217
+         style="display:none;fill:none;fill-opacity:0;stroke:#9bd8d9;stroke-width:1.00665724;stroke-opacity:1"
218
+         inkscape:label="nav2-selected-tuning" />
219
+      <rect
220
+         y="4.1022692"
221
+         x="80.577423"
222
+         height="22.993343"
223
+         width="72.99334"
224
+         id="nav1-standby-tuning"
225
+         style="display:none;fill:none;fill-opacity:0;stroke:#9bd8d9;stroke-width:1.00665724;stroke-opacity:1"
226
+         inkscape:label="nav1-standby-tuning" />
227
+      <rect
228
+         y="4.1022692"
229
+         x="181.57742"
230
+         height="22.993343"
231
+         width="72.99334"
232
+         id="nav1-selected-tuning"
233
+         style="display:none;fill:none;fill-opacity:0;stroke:#9bd8d9;stroke-width:1.00665724;stroke-opacity:1"
234
+         inkscape:label="nav1-selected-tuning" />
235
+      <text
236
+         transform="scale(0.85708105,1.1667508)"
237
+         id="nav1-selected-freq"
238
+         y="20.658087"
239
+         x="214.1853"
240
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Bold';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none"
241
+         xml:space="preserve"
242
+         inkscape:label="nav1-selected-freq"><tspan
243
+           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:20.95271873px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold'"
244
+           y="20.658087"
245
+           x="214.1853"
246
+           id="tspan4111"
247
+           sodipodi:role="line">123.45</tspan></text>
248
+      <text
249
+         transform="scale(0.85708105,1.1667508)"
250
+         id="nav1-standby-freq"
251
+         y="20.658087"
252
+         x="112.3863"
253
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ffffff;fill-opacity:1;stroke:none"
254
+         xml:space="preserve"
255
+         inkscape:label="nav1-standby-freq"><tspan
256
+           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:20.95271873px;line-height:125%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1"
257
+           y="20.658087"
258
+           x="112.3863"
259
+           id="tspan4111-8"
260
+           sodipodi:role="line">123.45</tspan></text>
261
+      <text
262
+         transform="scale(0.85708105,1.1667508)"
263
+         id="nav2-selected-freq"
264
+         y="41.656574"
265
+         x="214.76868"
266
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Bold';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;display:inline;fill:#ffffff;fill-opacity:1;stroke:none"
267
+         xml:space="preserve"
268
+         inkscape:label="nav2-selected-freq"><tspan
269
+           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:20.95271873px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold'"
270
+           y="41.656574"
271
+           x="214.76868"
272
+           id="tspan4111-9"
273
+           sodipodi:role="line">123.45</tspan></text>
274
+      <text
275
+         transform="scale(0.85708105,1.1667508)"
276
+         id="nav2-standby-freq"
277
+         y="41.656574"
278
+         x="112.3863"
279
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ffffff;fill-opacity:1;stroke:none"
280
+         xml:space="preserve"
281
+         inkscape:label="nav2-standby-freq"><tspan
282
+           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:20.95271873px;line-height:125%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1"
283
+           y="41.656574"
284
+           x="112.3863"
285
+           id="tspan4111-9-4"
286
+           sodipodi:role="line">123.45</tspan></text>
287
+      <text
288
+         xml:space="preserve"
289
+         style="font-style:normal;font-weight:normal;font-size:18.66666603px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
290
+         x="219.32292"
291
+         y="21.999998"
292
+         id="nav1-id"
293
+         inkscape:label="nav1-id"><tspan
294
+           sodipodi:role="line"
295
+           id="tspan4989"
296
+           x="219.32292"
297
+           y="21.999998"
298
+           style="fill:#ffffff">XXX</tspan></text>
299
+      <text
300
+         xml:space="preserve"
301
+         style="font-style:normal;font-weight:normal;font-size:18.66666603px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
302
+         x="219.32292"
303
+         y="47.054035"
304
+         id="nav2-id"
305
+         inkscape:label="nav2-id"><tspan
306
+           sodipodi:role="line"
307
+           id="tspan4989-6"
308
+           x="219.32292"
309
+           y="47.054035"
310
+           style="fill:#ffffff">XXX</tspan></text>
311
+      <path
312
+         inkscape:connector-curvature="0"
313
+         id="nav-freq-switch"
314
+         d="m 134.82604,11.203026 -3.99804,3.998045 -6.2e-4,1.008425 3.99805,3.998055 -0.004,-2 -0.99547,-0.995475 v -1.00391 l 12.00453,-6.2e-4 -0.0202,2.015015 -0.97708,-0.01901 -0.005,2.00143 3.99938,-3.99938 -10e-4,-0.998665 -4.0025,-4.001955 0.004,1.999995 0.99805,0.99805 -0.004,1 h -11.99609 l 0.006,-0.99743 0.99608,-0.99609 z"
315
+         style="fill:#9bd8d9;fill-opacity:1;stroke:#9bd8d9;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
316
+         inkscape:label="nav-freq-switch" />
317
+    </g>
318
+    <g
319
+       id="NAV-COMM-Failures"
320
+       inkscape:label="NAV-COMM-Failures">
321
+      <g
322
+         inkscape:label="COMM2"
323
+         style="display:inline"
324
+         id="COMM2"
325
+         transform="translate(761.6,54.8)">
326
+        <g
327
+           style="display:inline"
328
+           transform="translate(0,-28)"
329
+           id="g4429">
330
+          <path
331
+             style="fill:none;stroke:#ff0000;stroke-width:1.20000005;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
332
+             d="M -1,27.1 263,0.6"
333
+             id="path4431"
334
+             inkscape:connector-curvature="0"
335
+             sodipodi:nodetypes="cc" />
336
+        </g>
337
+        <path
338
+           inkscape:connector-curvature="0"
339
+           id="path4433"
340
+           d="M -1,-27.4 263,-0.9"
341
+           style="display:inline;fill:none;stroke:#ff0000;stroke-width:1.20000005;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
342
+           sodipodi:nodetypes="cc" />
343
+      </g>
344
+      <g
345
+         inkscape:label="COMM1"
346
+         transform="translate(761.6,28.3)"
347
+         id="COMM1"
348
+         style="display:inline">
349
+        <g
350
+           id="g4372-1"
351
+           transform="translate(0,-28)">
352
+          <path
353
+             sodipodi:nodetypes="cc"
354
+             inkscape:connector-curvature="0"
355
+             id="path4368-2"
356
+             d="M -1,27.1 263,0.6"
357
+             style="fill:none;stroke:#ff0000;stroke-width:1.20000005;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
358
+        </g>
359
+        <path
360
+           sodipodi:nodetypes="cc"
361
+           style="fill:none;stroke:#ff0000;stroke-width:1.20000005;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
362
+           d="M -1,-27.4 263,-0.9"
363
+           id="path4370-2"
364
+           inkscape:connector-curvature="0" />
365
+      </g>
366
+      <g
367
+         inkscape:label="NAV2"
368
+         id="NAV2"
369
+         transform="translate(1.1671695e-8,54.8)"
370
+         style="display:inline">
371
+        <g
372
+           transform="translate(0,-28)"
373
+           id="g4394">
374
+          <path
375
+             style="fill:none;stroke:#ff0000;stroke-width:1.20000005;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
376
+             d="M -1,27.6 263,0.6"
377
+             id="path4396"
378
+             inkscape:connector-curvature="0"
379
+             sodipodi:nodetypes="cc" />
380
+        </g>
381
+        <path
382
+           inkscape:connector-curvature="0"
383
+           id="path4398"
384
+           d="m -1,-27.4 264,27"
385
+           style="fill:none;stroke:#ff0000;stroke-width:1.20000005;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
386
+           sodipodi:nodetypes="cc" />
387
+      </g>
388
+      <g
389
+         inkscape:label="NAV1"
390
+         transform="translate(1.1671695e-8,28.4)"
391
+         id="NAV1-2"
392
+         style="display:inline">
393
+        <g
394
+           id="g4372"
395
+           transform="translate(0,-28)">
396
+          <path
397
+             sodipodi:nodetypes="cc"
398
+             inkscape:connector-curvature="0"
399
+             id="path4368"
400
+             d="M -1,27.1 263,0.6"
401
+             style="fill:none;stroke:#ff0000;stroke-width:1.20000005;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
402
+        </g>
403
+        <path
404
+           sodipodi:nodetypes="cc"
405
+           style="fill:none;stroke:#ff0000;stroke-width:1.20000005;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
406
+           d="M -1,-27.4 263,-0.9"
407
+           id="path4370"
408
+           inkscape:connector-curvature="0" />
409
+      </g>
410
+    </g>
411
+  </g>
412
+</svg>
+376
Systems/softkeys.svg
... ...
@@ -0,0 +1,376 @@
1
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
3
+
4
+<svg
5
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
6
+   xmlns:cc="http://creativecommons.org/ns#"
7
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
8
+   xmlns:svg="http://www.w3.org/2000/svg"
9
+   xmlns="http://www.w3.org/2000/svg"
10
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
11
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
12
+   width="1024px"
13
+   height="768px"
14
+   viewBox="0 0 1024 768"
15
+   version="1.1"
16
+   id="SVGRoot"
17
+   inkscape:version="0.92.1 r15371"
18
+   sodipodi:docname="softkeys.svg">
19
+  <sodipodi:namedview
20
+     id="base"
21
+     pagecolor="#ffffff"
22
+     bordercolor="#ffffff"
23
+     borderopacity="0"
24
+     inkscape:pageopacity="0.0"
25
+     inkscape:pageshadow="2"
26
+     inkscape:zoom="0.5"
27
+     inkscape:cx="512"
28
+     inkscape:cy="384"
29
+     inkscape:document-units="px"
30
+     inkscape:current-layer="layer1"
31
+     showgrid="false"
32
+     inkscape:window-width="1600"
33
+     inkscape:window-height="836"
34
+     inkscape:window-x="0"
35
+     inkscape:window-y="27"
36
+     inkscape:window-maximized="1" />
37
+  <defs
38
+     id="defs8797" />
39
+  <metadata
40
+     id="metadata8800">
41
+    <rdf:RDF>
42
+      <cc:Work
43
+         rdf:about="">
44
+        <dc:format>image/svg+xml</dc:format>
45
+        <dc:type
46
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
47
+        <dc:title></dc:title>
48
+      </cc:Work>
49
+    </rdf:RDF>
50
+  </metadata>
51
+  <g
52
+     id="layer1"
53
+     inkscape:groupmode="layer"
54
+     inkscape:label="Calque 1">
55
+    <g
56
+       id="SoftKeysTexts"
57
+       inkscape:label="SoftKeysTexts"
58
+       style="display:inline"
59
+       transform="matrix(1.0043796,0,0,0.99999999,-0.01052084,9.483972e-6)">
60
+      <rect
61
+         y="743.99927"
62
+         x="172.49872"
63
+         height="24.000597"
64
+         width="83.8013"
65
+         id="SoftKey02-bg"
66
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:none"
67
+         inkscape:label="SoftKey02-bg" />
68
+      <path
69
+         inkscape:connector-curvature="0"
70
+         id="path4917"
71
+         d="m 172.00229,768.00003 v -24.49098 h 84.29724"
72
+         style="display:inline;fill:#585959;fill-opacity:0.01332003;stroke:#b6bcbe;stroke-width:1.0045768px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
73
+      <text
74
+         transform="scale(0.93272861,1.0721232)"
75
+         id="SoftKey02-text"
76
+         y="711.67462"
77
+         x="229.78027"
78
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;line-height:0%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow, Condensed';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;display:inline;fill:#ffffff;fill-opacity:1;stroke:none"
79
+         xml:space="preserve"
80
+         inkscape:label="SoftKey02-text"><tspan
81
+           y="711.67462"
82
+           x="229.78027"
83
+           id="tspan4921"
84
+           sodipodi:role="line"
85
+           style="font-size:17.5px;line-height:1.25">XXXXXXXX</tspan></text>
86
+      <rect
87
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:none"
88
+         id="SoftKey01-bg"
89
+         width="83.8013"
90
+         height="24.000597"
91
+         x="87.698715"
92
+         y="743.99927"
93
+         inkscape:label="SoftKey01-bg" />
94
+      <path
95
+         style="display:inline;fill:#585959;fill-opacity:0.01332003;stroke:#b6bcbe;stroke-width:1.0045768px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
96
+         d="M 87.202289,768.00003 V 743.50905 H 171.49953"
97
+         id="path5027"
98
+         inkscape:connector-curvature="0" />
99
+      <text
100
+         xml:space="preserve"
101
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;line-height:0%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow, Condensed';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;display:inline;fill:#ffffff;fill-opacity:1;stroke:none"
102
+         x="138.86423"
103
+         y="711.67462"
104
+         id="SoftKey01-text"
105
+         transform="scale(0.93272861,1.0721232)"
106
+         inkscape:label="SoftKey01-text"><tspan
107
+           sodipodi:role="line"
108
+           id="tspan5031"
109
+           x="138.86423"
110
+           y="711.67462"
111
+           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>
112
+      <rect
113
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:none"
114
+         id="SoftKey03-bg"
115
+         width="83.8013"
116
+         height="24.000597"
117
+         x="257.29871"
118
+         y="743.99927"
119
+         inkscape:label="SoftKey03-bg" />
120
+      <path
121
+         style="display:inline;fill:#585959;fill-opacity:0.01332003;stroke:#b6bcbe;stroke-width:1.0045768px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
122
+         d="m 256.80229,768.00003 v -24.49098 h 84.29724"
123
+         id="path_unknownID2"
124
+         inkscape:connector-curvature="0"
125
+         inkscape:label="path_unknownID2" />
126
+      <text
127
+         xml:space="preserve"
128
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;line-height:0%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow, Condensed';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;display:inline;fill:#ffffff;fill-opacity:1;stroke:none"
129
+         x="320.69632"
130
+         y="711.67462"
131
+         id="SoftKey03-text"
132
+         transform="scale(0.93272861,1.0721232)"
133
+         inkscape:label="SoftKey03-text"><tspan
134
+           sodipodi:role="line"
135
+           id="tspan5051"
136
+           x="320.69632"
137
+           y="711.67462"
138
+           style="font-size:17.5px;line-height:1.25">XXXXXXXX</tspan></text>
139
+      <rect
140
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:none"
141
+         id="SoftKey04-bg"
142
+         width="83.8013"
143
+         height="24.000597"
144
+         x="342.09872"
145
+         y="743.99927"
146
+         inkscape:label="SoftKey04-bg" />
147
+      <path
148
+         style="display:inline;fill:#585959;fill-opacity:0.01332003;stroke:#b6bcbe;stroke-width:1.00480211;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
149
+         d="m 341.60229,768.00003 v -24.49098 h 84.29724"
150
+         id="path_inknownID1"
151
+         inkscape:connector-curvature="0"
152
+         inkscape:label="path_inknownID1" />
153
+      <text
154
+         xml:space="preserve"
155
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;line-height:0%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow, Condensed';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;display:inline;fill:#ffffff;fill-opacity:1;stroke:none"
156
+         x="411.61237"
157
+         y="711.67462"
158
+         id="SoftKey04-text"
159
+         transform="scale(0.93272861,1.0721232)"
160
+         inkscape:label="SoftKey04-text"><tspan
161
+           sodipodi:role="line"
162
+           id="tspan5061"
163
+           x="411.61237"
164
+           y="711.67462"
165
+           style="font-size:17.5px;line-height:1.25">XXXXXXXX</tspan></text>
166
+      <rect
167
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:none"
168
+         id="SoftKey06-bg"
169
+         width="83.8013"
170
+         height="24.000597"
171
+         x="511.69873"
172
+         y="743.99927"
173
+         inkscape:label="SoftKey06-bg" />
174
+      <path
175
+         style="display:inline;fill:#585959;fill-opacity:0.01332003;stroke:#b6bcbe;stroke-width:1.0045768px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
176
+         d="m 511.20229,768.00003 v -24.49098 h 84.29724"
177
+         id="path5067"
178
+         inkscape:connector-curvature="0" />
179
+      <text
180
+         xml:space="preserve"
181
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;line-height:0%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow, Condensed';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;display:inline;fill:#ffffff;fill-opacity:1;stroke:none"
182
+         x="593.44446"
183
+         y="711.67462"
184
+         id="SoftKey06-text"
185
+         transform="scale(0.93272861,1.0721232)"
186
+         inkscape:label="SoftKey06-text"><tspan
187
+           sodipodi:role="line"
188
+           id="tspan5071"
189
+           x="593.44446"
190
+           y="711.67462"
191
+           style="font-size:17.5px;line-height:1.25">XXXXXXXX</tspan></text>
192
+      <rect
193
+         y="743.99927"
194
+         x="426.89871"
195
+         height="24.000597"
196
+         width="83.8013"
197
+         id="SoftKey05-bg"
198
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:none"
199
+         inkscape:label="SoftKey05-bg" />
200
+      <path
201
+         inkscape:connector-curvature="0"
202
+         id="path5077"
203
+         d="m 426.40229,768.00003 v -24.49098 h 84.29724"
204
+         style="display:inline;fill:#585959;fill-opacity:0.01332003;stroke:#b6bcbe;stroke-width:1.0045768px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
205
+      <text
206
+         transform="scale(0.93272861,1.0721232)"
207
+         id="SoftKey05-text"
208
+         y="711.67462"
209
+         x="502.52841"
210
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;line-height:0%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow, Condensed';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;display:inline;fill:#ffffff;fill-opacity:1;stroke:none"
211
+         xml:space="preserve"
212
+         inkscape:label="SoftKey05-text"><tspan
213
+           y="711.67462"
214
+           x="502.52841"
215
+           id="tspan5081"
216
+           sodipodi:role="line"
217
+           style="font-size:17.5px;line-height:1.25">XXXXXXXX</tspan></text>
218
+      <rect
219
+         y="743.99927"
220
+         x="596.49872"
221
+         height="24.000597"
222
+         width="83.8013"
223
+         id="SoftKey07-bg"
224
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:none"
225
+         inkscape:label="SoftKey07-bg" />
226
+      <path
227
+         inkscape:connector-curvature="0"
228
+         id="path5087"
229
+         d="m 596.00229,768.00003 v -24.49098 h 84.29724"
230
+         style="display:inline;fill:#585959;fill-opacity:0.01332003;stroke:#b6bcbe;stroke-width:1.0045768px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
231
+      <text
232
+         transform="scale(0.93272861,1.0721232)"
233
+         id="SoftKey07-text"
234
+         y="711.67462"
235
+         x="684.36053"
236
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;line-height:0%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow, Condensed';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;display:inline;fill:#ffffff;fill-opacity:1;stroke:none"
237
+         xml:space="preserve"
238
+         inkscape:label="SoftKey07-text"><tspan
239
+           y="711.67462"
240
+           x="684.36053"
241
+           id="tspan5091"
242
+           sodipodi:role="line"
243
+           style="font-size:17.5px;line-height:1.25">XXXXXXXX</tspan></text>
244
+      <rect
245
+         y="743.99927"
246
+         x="681.29871"
247
+         height="24.000597"
248
+         width="83.8013"
249
+         id="SoftKey08-bg"
250
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:none"
251
+         inkscape:label="SoftKey08-bg" />
252
+      <path
253
+         inkscape:connector-curvature="0"
254
+         id="path5097"
255
+         d="m 680.80229,768.00003 v -24.49098 h 84.29724"
256
+         style="display:inline;fill:#585959;fill-opacity:0.01332003;stroke:#b6bcbe;stroke-width:1.0045768px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
257
+      <text
258
+         transform="scale(0.93272861,1.0721232)"
259
+         id="SoftKey08-text"
260
+         y="711.67462"
261
+         x="775.27655"
262
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;line-height:0%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow, Condensed';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;display:inline;fill:#ffffff;fill-opacity:1;stroke:none"
263
+         xml:space="preserve"
264
+         inkscape:label="SoftKey08-text"><tspan
265
+           y="711.67462"
266
+           x="775.27655"
267
+           id="tspan5101-6"
268
+           sodipodi:role="line"
269
+           style="font-size:17.5px;line-height:1.25">XXXXXXXX</tspan></text>
270
+      <rect
271
+         y="743.99927"
272
+         x="850.89874"
273
+         height="24.000597"
274
+         width="83.8013"
275
+         id="SoftKey10-bg"
276
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:none"
277
+         inkscape:label="SoftKey10-bg" />
278
+      <path
279
+         inkscape:connector-curvature="0"
280
+         id="path5107"
281
+         d="m 850.40229,768.00003 v -24.49098 h 84.29724"
282
+         style="display:inline;fill:#585959;fill-opacity:0.01332003;stroke:#b6bcbe;stroke-width:1.0045768px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
283
+      <text
284
+         transform="scale(0.93272861,1.0721232)"
285
+         id="SoftKey10-text"
286
+         y="711.67462"
287
+         x="957.10864"
288
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;line-height:0%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow, Condensed';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;display:inline;fill:#ffffff;fill-opacity:1;stroke:none"
289
+         xml:space="preserve"
290
+         inkscape:label="SoftKey10-text"><tspan
291
+           y="711.67462"
292
+           x="957.10864"
293
+           id="tspan5111-7"
294
+           sodipodi:role="line"
295
+           style="font-size:17.5px;line-height:1.25">XXXXXXXX</tspan></text>
296
+      <rect
297
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:none"
298
+         id="SoftKey09-bg"
299
+         width="83.8013"
300
+         height="24.000597"
301
+         x="766.09869"
302
+         y="743.99927"
303
+         inkscape:label="SoftKey09-bg" />
304
+      <path
305
+         style="display:inline;fill:#585959;fill-opacity:0.01332003;stroke:#b6bcbe;stroke-width:1.0045768px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
306
+         d="m 765.60229,768.00003 v -24.49098 h 84.29724"
307
+         id="path5117"
308
+         inkscape:connector-curvature="0" />
309
+      <text
310
+         xml:space="preserve"
311
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;line-height:0%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow, Condensed';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;display:inline;fill:#ffffff;fill-opacity:1;stroke:none"
312
+         x="866.19263"
313
+         y="711.67462"
314
+         id="SoftKey09-text"
315
+         transform="scale(0.93272861,1.0721232)"
316
+         inkscape:label="SoftKey09-text"><tspan
317
+           sodipodi:role="line"
318
+           id="tspan5121-5"
319
+           x="866.19263"
320
+           y="711.67462"
321
+           style="font-size:17.5px;line-height:1.25">XXXXXXXX</tspan></text>
322
+      <rect
323
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:none"
324
+         id="SoftKey11-bg"
325
+         width="83.8013"
326
+         height="24.000597"
327
+         x="935.69873"
328
+         y="743.99927"
329
+         inkscape:label="SoftKey11-bg" />
330
+      <path
331
+         style="display:inline;fill:#585959;fill-opacity:0.01332003;stroke:#b6bcbe;stroke-width:1.0045768px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
332
+         d="m 935.20229,768.00003 v -24.49098 h 84.29721"
333
+         id="path5127"
334
+         inkscape:connector-curvature="0" />
335
+      <text
336
+         xml:space="preserve"
337
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;line-height:0%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow, Condensed';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;display:inline;fill:#ffffff;fill-opacity:1;stroke:none"
338
+         x="1048.0247"
339
+         y="711.67462"
340
+         id="SoftKey11-text"
341
+         transform="scale(0.93272861,1.0721232)"
342
+         inkscape:label="SoftKey11-text"><tspan
343
+           sodipodi:role="line"
344
+           id="tspan5131-3"
345
+           x="1048.0247"
346
+           y="711.67462"
347
+           style="font-size:17.5px;line-height:1.25">XXXXXXXX</tspan></text>
348
+      <rect
349
+         y="743.99927"
350
+         x="2.8987145"
351
+         height="24.000597"
352
+         width="83.8013"
353
+         id="SoftKey00-bg"
354
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:none"
355
+         inkscape:label="SoftKey00-bg" />
356
+      <path
357
+         inkscape:connector-curvature="0"
358
+         id="path5361-5"
359
+         d="M 2.402289,768.00003 V 743.50905 H 86.69953"
360
+         style="display:inline;fill:#585959;fill-opacity:0.01332003;stroke:#b6bcbe;stroke-width:1.0045768px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
361
+      <text
362
+         transform="scale(0.93272862,1.0721232)"
363
+         id="SoftKey00-text"
364
+         y="711.67462"
365
+         x="47.948124"
366
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;line-height:0%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow, Condensed';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;display:inline;fill:#ffffff;fill-opacity:1;stroke:none"
367
+         xml:space="preserve"
368
+         inkscape:label="SoftKey00-text"><tspan
369
+           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"
370
+           y="711.67462"
371
+           x="47.948124"
372
+           id="tspan5365"
373
+           sodipodi:role="line">XXXXXXXX</tspan></text>
374
+    </g>
375
+  </g>
376
+</svg>