prepare for adopting MapStructure
[fg:hoorays-fgdata.git] / Nasal / canvas / map / VOR.lcontroller
1 # Class things:
2 var parents = [SymbolLayer.Controller];
3 var __self__ = caller(0)[0];
4 SymbolLayer.Controller.add("VOR", __self__);
5 SymbolLayer.add("VOR", {
6         parents: [SymbolLayer],
7         type: "VOR", # Symbol type
8         df_controller: __self__, # controller to use by default -- this one
9 });
10 var new = func(layer) {
11         var m = {
12                 parents: [__self__],
13                 layer: layer,
14                 active_vors: [],
15                 navNs: props.globals.getNode("instrumentation").getChildren("nav"),
16                 listeners: [],
17                 query_type:'vor',
18         };
19         setsize(m.active_vors, size(m.navNs));
20         foreach (var navN; m.navNs) {
21                 append(m.listeners, setlistener(
22                         navN.getNode("frequencies/selected-mhz"),
23                         func m.changed_freq()
24                 ));
25         }
26         #call(debug.dump, keys(layer));
27         m.changed_freq(update:0);
28         return m;
29 };
30 var del = func() {
31         #print("VOR.lcontroller.del()");
32         foreach (var l; me.listeners)
33                 removelistener(l);
34 };
35
36 # Controller methods
37 var isActive = func(model) {
38         var my_freq = model.frequency/100;
39         foreach (var freq; me.active_vors)
40                 if (freq == my_freq) return 1;
41         return 0;
42 };
43 var changed_freq = func(update=1) {
44         #debug.dump(me.active_vors);
45         foreach (var navN; me.navNs)
46                 me.active_vors[ navN.getIndex() ] = navN.getValue("frequencies/selected-mhz");
47         if (update) me.layer.update();
48 };
49 var searchCmd = func {
50         print("Running query:", me.query_type);
51         return positioned.findWithinRange(100, me.query_type); # the range should also be exposed, it will typically be controlled via a GUI widget or NavDisplay switch
52 };
53