From 9fe596bc0126d5769fb3f85cd306db68beeb782c Mon Sep 17 00:00:00 2001 From: Sebastian Lohff Date: Wed, 11 Mar 2020 17:46:16 +0100 Subject: [PATCH] Add option to return instantly on single item in cli_select_item() cli_select_item() allows to quickly launch a menu from code, but if only a single item is given a selection is not necessary in most cases. Therefore we now instantly return the given value in these cases. This can be turned off by setting return_single=False --- clintermission/climenu.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/clintermission/climenu.py b/clintermission/climenu.py index 96e71a5..34af490 100644 --- a/clintermission/climenu.py +++ b/clintermission/climenu.py @@ -295,9 +295,15 @@ class CliMenu: self._ran = True -def cli_select_item(options, header=None, abort_exc=ValueError, abort_text="Selection aborted.", style=None): +def cli_select_item(options, header=None, abort_exc=ValueError, abort_text="Selection aborted.", style=None, + return_single=True): """Helper function to quickly get a selection with just a few arguments""" menu = CliMenu(header=header, options=options, style=style) + + if return_single and menu.num_options == 1: + item = menu.get_options()[0] + return item.num, item.item + if not menu.success: raise abort_exc(abort_text)