1
0
Fork 0

Fix handling of multiple MFDs

Found by chance during code read.  Untested, but surely correct.
This commit is contained in:
Stuart Buchanan 2017-11-17 15:53:26 +00:00
parent 8dafff9933
commit 1e69f3eb75

View file

@ -36,7 +36,7 @@ var PFD_MenuItem =
# #
# #
# Create a new PFD Page # Create a new PFD Page
# - related svg # - related svg
# - Title: Page title # - Title: Page title
# - SVG element for the page # - SVG element for the page
# - Device to attach the page to # - Device to attach the page to
@ -58,8 +58,8 @@ var PFD_Page =
}, },
# #
# Makes a page visible. # Makes a page visible.
# It is the responsibility of the caller to manage the visibility of pages - i.e. to # It is the responsibility of the caller to manage the visibility of pages - i.e. to
# make a page that is currenty visible not visible before making a new page visible, # make a page that is currenty visible not visible before making a new page visible,
# however more than one page could be visible - but only one set of menu buttons can be active # however more than one page could be visible - but only one set of menu buttons can be active
# so if two pages are visible (e.g. an overlay) then when the overlay removed it would be necessary # so if two pages are visible (e.g. an overlay) then when the overlay removed it would be necessary
@ -77,7 +77,7 @@ var PFD_Page =
# #
# Perform action when button is pushed # Perform action when button is pushed
notifyButton : func(button_id) notifyButton : func(button_id)
{ foreach(var mi; me.menus) { foreach(var mi; me.menus)
{ {
if (mi.menu_id == button_id) if (mi.menu_id == button_id)
@ -88,13 +88,13 @@ var PFD_Page =
} }
}, },
# #
# Add an item to a menu # Add an item to a menu
# Params: # Params:
# menu button id (that is set in controls/PFD/button-pressed by the model) # menu button id (that is set in controls/PFD/button-pressed by the model)
# title of the menu for the label # title of the menu for the label
# page that will be selected when pressed # page that will be selected when pressed
# #
# The corresponding menu for the selected page will automatically be loaded # The corresponding menu for the selected page will automatically be loaded
addMenuItem : func(menu_id, title, page) addMenuItem : func(menu_id, title, page)
{ {
@ -134,7 +134,7 @@ var PFD_Device =
# - button prefix (e.g MI_) is the prefix of the labels in the SVG for the menu boxes. # - button prefix (e.g MI_) is the prefix of the labels in the SVG for the menu boxes.
# - _canvas is the canvas group. # - _canvas is the canvas group.
#NOTE: #NOTE:
# This does not actually create the canvas elements, or parse the SVG, that would typically be done in # This does not actually create the canvas elements, or parse the SVG, that would typically be done in
# a higher level class that contains an instance of this class. # a higher level class that contains an instance of this class.
# see: http://wiki.flightgear.org/Canvas_MFD_Framework # see: http://wiki.flightgear.org/Canvas_MFD_Framework
new : func(svg, num_menu_buttons, button_prefix, _canvas, designation="MFD") new : func(svg, num_menu_buttons, button_prefix, _canvas, designation="MFD")
@ -149,7 +149,7 @@ var PFD_Device =
obj.transmitter = nil; obj.transmitter = nil;
# change after creation if required # change after creation if required
obj.device_id = 1; obj.device_id = 1;
obj.designation = designation; obj.designation = designation;
for(var idx = 0; idx < num_menu_buttons; idx += 1) for(var idx = 0; idx < num_menu_buttons; idx += 1)
@ -176,7 +176,7 @@ var PFD_Device =
# 1. setting menu text directly (after page has been loaded) # 1. setting menu text directly (after page has been loaded)
# notifications.PFDEventNotification.new(me.designation, 1, notifications.PFDEventNotification.ChangeMenuText, [{ Id: 1, Text: "NNN"}]); # notifications.PFDEventNotification.new(me.designation, 1, notifications.PFDEventNotification.ChangeMenuText, [{ Id: 1, Text: "NNN"}]);
# 2. SoftKey selection. # 2. SoftKey selection.
# #
# the device ID must match this device ID (to allow for multiple devices). # the device ID must match this device ID (to allow for multiple devices).
RegisterWithEmesary : func(transmitter = nil){ RegisterWithEmesary : func(transmitter = nil){
if (transmitter == nil) if (transmitter == nil)
@ -187,9 +187,9 @@ var PFD_Device =
var pfd_obj = me; var pfd_obj = me;
me.Recipient.Receive = func(notification) me.Recipient.Receive = func(notification)
{ {
if (notification.Device_id = pfd_obj.device_id if (notification.Device_id == pfd_obj.device_id
and notification.NotificationType == notifications.PFDEventNotification.DefaultType) { and notification.NotificationType == notifications.PFDEventNotification.DefaultType) {
if (notification.Event_Id == notifications.PFDEventNotification.SoftKeyPushed if (notification.Event_Id == notifications.PFDEventNotification.SoftKeyPushed
and notification.EventParameter != nil) and notification.EventParameter != nil)
{ {
pfd_obj.notifyButton(notification.EventParameter); pfd_obj.notifyButton(notification.EventParameter);
@ -353,9 +353,9 @@ var PFD_NavDisplay =
if (!me.nd_initialised) if (!me.nd_initialised)
{ {
me.nd_initialised = 1; me.nd_initialised = 1;
me.NDCpt = me.ND.new("instrumentation/"~me.nd_ident, me.switches,map_style); me.NDCpt = me.ND.new("instrumentation/"~me.nd_ident, me.switches,map_style);
me.group = me.pfd_device.svg.getElementById(me.nd_placeholder_ident); me.group = me.pfd_device.svg.getElementById(me.nd_placeholder_ident);
me.group.setScale(0.39,0.45); me.group.setScale(0.39,0.45);
me.group.setTranslation(45,0); me.group.setTranslation(45,0);
@ -379,7 +379,7 @@ var PFD_NavDisplay =
# most updates performed by the canvas nav display directly. # most updates performed by the canvas nav display directly.
obj.update = func obj.update = func
{ {
}; };
return obj; return obj;
}, },
}; };