Currently, XPMP2 Remote Client has a menu item in the Plugins menu that shows "Active"/inactive state, but that also serves as a toggle (i.e., which users can click on to change the state to inactivate the concentrator, while leaving the plugin enabled).
In fact, the only way to toggle the plugin's "active" state, is to use the menu. (There is no command or other way to trigger this functionality otherwise.)
This results in several (albeit minor) problems:
utility: toggling this state is probably the most common action users will perform (if they know what's good for them; since toggling TCAS on/off really doesn't do much here and may just confuse users as it did me!);
usability: it's confusing to users to have some menu items be toggles, and others be just informational, with no UI treatment to distinguish them;
consistency: this feature is really equivalent to LiveTraffic's "Aircraft displayed" menu item (see below), which has a command associated with it, and which looks different in the menu as a result (not to mention the label itself being different)
integration/scripting: with the only mechanism here being a menu item (not a command), plugins such as ABC can't readily provide users with a one-click visual solution to toggle this state (which ABC has in its TCAS management menu); whereas, with a command, ABC could simply bind a menu item in ABC's visual control panel, to the command to toggle activation on/off (for example).
Suggested Solution
Refactor existing menu handler to pull out the Active-state toggle into its own XPLM command handler. (est. < 10 minutes of work)
Register a command handler for e.g. "XPMP2_Remote_Client/Aircrafts/Display" (analog to version in LT).
n.b.: "Aircrafts" is a misnomer, since it should be "Aircraft" (uncountable); however, this is proposed for consistency with LiveTraffic's command equivalent, but renaming commands such as "fixing" LiveTraffic is not worth the effort
Replace XPLMAppendMenuItem invocation for activate/deactivate toggle, with XPLMAppendMenuItemWithCommand referencing the new command registered above.
Alternatives
In addition to the above (which is a binary proposal; i.e., there's no better solution that would address this issue), the actual menu option title (in English) could be changed to: "Aircraft displayed (...)". (I.e., identical to LiveTraffic's equivalent menu-item label.)
This makes the UI consistent with LiveTraffic, but moreover reinforces with users that XPMP2 Remote Client is actually rendering the aircraft after concentrating them into a single TCAS list.
Additionally, the "TCAS" menu item could be changed to display-only, where it does not perform a toggle action, since that functionality is really subsumed by the active-status toggle behavior. (It's really an inconsistent state to have the plugin "active" with TCAS "off". So it's better to make TCAS just an informational line item, as with others below.)
Benefits
Utility:
With the proposed solution, users can define a keyboard or joystick shortcut to readily start/stop all traffic (and TCAS control) from the concentrator, in one fell swoop.
Usability:
Using the proposed solution (XPLMAppendMenuWithCommand()) provides a different visual treatment for menu items that effect behavior (such as "toggle"), by showing the user the command they've bound (if any); though this may not be helpful at the outset, it reinforces the distinction later.
This may also obviate the need for any toggle behavior for the TCAS menu item just after this, since it could just be to show status (and users would then be pushed to use the simpler traffic on/off feature).
Consistency:
This makes the menu and the command (if provided) match the pattern already established by LiveTraffic, increasing user understanding of the feature, especially if the label is made consistent with LiveTraffic's menu (additional proposal above).
Integration/Scripting:
This allows ABC (for example) to add a menu item to its TCAS control menu to replace e.g. "LiveTraffic TCAS on" when XPMP2 Remote Client is active, with "XPMP2 Remote Client Traffic On" since turning on LiveTraffic's TCAS doesn't make as much sense in that case. (But I still have it in, because I don't want to disable it without a way for users to do the same thing for Remote Client.) Note: I also have a separate "LiveTraffic Traffic on" that toggles on LiveTraffic's traffic display, but that would have a slightly different function here.
Additional context(None; this is scoped only to the XPMP2 Remote Client plugin.)
Understanding this is a slippery slope that could lead to extra work that I do not intend, such as persistent settings and other commands -- this is very low-hanging fruit and is really all I think users need. Therefore, I believe a lot could be accomplished using this suggested behavior, for very little work (registering a command, changing the current toggle to be inside a command handler, and changing XPLMAppendMenuItem to ...WithCommand.
Current Situation / Problem
Currently, XPMP2 Remote Client has a menu item in the Plugins menu that shows "Active"/inactive state, but that also serves as a toggle (i.e., which users can click on to change the state to inactivate the concentrator, while leaving the plugin enabled).
In fact, the only way to toggle the plugin's "active" state, is to use the menu. (There is no command or other way to trigger this functionality otherwise.)
This results in several (albeit minor) problems:
Suggested Solution
XPMP2_Remote_Client/Aircrafts/Display
" (analog to version in LT).XPLMAppendMenuItem
invocation for activate/deactivate toggle, withXPLMAppendMenuItemWithCommand
referencing the new command registered above.Alternatives
Benefits
Additional context (None; this is scoped only to the XPMP2 Remote Client plugin.)
Understanding this is a slippery slope that could lead to extra work that I do not intend, such as persistent settings and other commands -- this is very low-hanging fruit and is really all I think users need. Therefore, I believe a lot could be accomplished using this suggested behavior, for very little work (registering a command, changing the current toggle to be inside a command handler, and changing
XPLMAppendMenuItem
to ...WithCommand
.Thanks for considering this.