From b63c9d43ce295e4a02e849a1ea9366f74bb36ddf Mon Sep 17 00:00:00 2001 From: James O'Shannessy <12959316+joshanne@users.noreply.github.com> Date: Wed, 18 Dec 2024 07:41:03 +1100 Subject: [PATCH] mavproxy_mode: Allow for mode names to be tab completed Adds tab completion of mode names when changing mode using the command 'mode '. Also prettifies printing of available modes - this previously printed an array of 'dict_keys([..], ...)' --- MAVProxy/modules/mavproxy_mode.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/MAVProxy/modules/mavproxy_mode.py b/MAVProxy/modules/mavproxy_mode.py index 9a8ea388aa..f1a3a3efcf 100644 --- a/MAVProxy/modules/mavproxy_mode.py +++ b/MAVProxy/modules/mavproxy_mode.py @@ -14,9 +14,12 @@ class ModeModule(mp_module.MPModule): def __init__(self, mpstate): super(ModeModule, self).__init__(mpstate, "mode", public=True) - self.add_command('mode', self.cmd_mode, "mode change", self.available_modes()) + self.add_command('mode', self.cmd_mode, "mode change", [ + '(MODE)' + ]) self.add_command('guided', self.cmd_guided, "fly to a clicked location on map") self.add_command('confirm', self.cmd_confirm, "confirm a command") + self.add_completion_function('(MODE)', self.complete_available_modes) def cmd_mode(self, args): '''set arbitrary mode''' @@ -25,7 +28,7 @@ def cmd_mode(self, args): print('No mode mapping available') return if len(args) != 1: - print('Available modes: ', mode_mapping.keys()) + print('Available modes: ', ', '.join(self.available_modes())) return if args[0].isdigit(): modenum = int(args[0]) @@ -50,6 +53,9 @@ def cmd_confirm(self, args): from MAVProxy.modules.lib import mp_menu mp_menu.MPMenuConfirmDialog(question, callback=self.mpstate.functions.process_stdin, args=command) + def complete_available_modes(self, text): + return self.available_modes() + def available_modes(self): if self.master is None: print('No mode mapping available')