2013-12-01 12:29:22 +00:00
# Class things:
var parents = [SymbolLayer.Controller];
var __self__ = caller(0)[0];
SymbolLayer.Controller.add("VOR", __self__);
SymbolLayer.add("VOR", {
parents: [SymbolLayer],
type: "VOR", # Symbol type
df_controller: __self__, # controller to use by default -- this one
});
2014-01-10 03:04:36 +00:00
var a_instance = nil;
2013-12-01 12:29:22 +00:00
var new = func(layer) {
var m = {
parents: [__self__],
layer: layer,
active_vors: [],
navNs: props.globals.getNode("instrumentation").getChildren("nav"),
listeners: [],
2014-01-10 03:04:36 +00:00
query_type:'vor',
2013-12-01 12:29:22 +00:00
};
setsize(m.active_vors, size(m.navNs));
foreach (var navN; m.navNs) {
append(m.listeners, setlistener(
navN.getNode("frequencies/selected-mhz"),
func m.changed_freq()
));
}
#call(debug.dump, keys(layer));
m.changed_freq(update:0);
2014-01-10 03:04:36 +00:00
__self__.a_instance = m;
2013-12-01 12:29:22 +00:00
return m;
};
var del = func() {
2014-01-24 03:13:54 +00:00
printlog(_MP_dbg_lvl, "VOR.lcontroller.del()");
2013-12-01 12:29:22 +00:00
foreach (var l; me.listeners)
removelistener(l);
};
# Controller methods
var isActive = func(model) {
var my_freq = model.frequency/100;
foreach (var freq; me.active_vors)
if (freq == my_freq) return 1;
return 0;
};
var changed_freq = func(update=1) {
#debug.dump(me.active_vors);
foreach (var navN; me.navNs)
me.active_vors[ navN.getIndex() ] = navN.getValue("frequencies/selected-mhz");
if (update) me.layer.update();
};
var searchCmd = func {
2014-01-24 03:13:54 +00:00
printlog(_MP_dbg_lvl, "Running query:", me.query_type);
2014-01-10 03:04:36 +00:00
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
2013-12-01 12:29:22 +00:00
};