From d926606976ad027f1af6deb4be79dfc026c3bd0d Mon Sep 17 00:00:00 2001 From: Sebastian Lohff Date: Thu, 23 Jan 2020 09:59:55 +0100 Subject: [PATCH] Add shortcut function to quickly get a selection result cli_select_item() will instanciate a CliMenu and return a selection. If the selection is aborted an exception of the given class will be thrown. --- clintermission/__init__.py | 3 ++- clintermission/climenu.py | 9 +++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/clintermission/__init__.py b/clintermission/__init__.py index d001eb8..9d05b0d 100644 --- a/clintermission/__init__.py +++ b/clintermission/__init__.py @@ -1,11 +1,12 @@ # Written by Sebastian Lohff # Licensed under Apache License 2.0 -from clintermission.climenu import CliMenu, CliMenuStyle, CliMenuCursor, CliMenuTheme +from clintermission.climenu import CliMenu, CliMenuStyle, CliMenuCursor, CliMenuTheme, cli_select_item __all__ = [ CliMenu, CliMenuStyle, CliMenuCursor, CliMenuTheme, + cli_select_item, ] diff --git a/clintermission/climenu.py b/clintermission/climenu.py index 79ca9d8..96e71a5 100644 --- a/clintermission/climenu.py +++ b/clintermission/climenu.py @@ -293,3 +293,12 @@ class CliMenu: app.run() self._ran = True + + +def cli_select_item(options, header=None, abort_exc=ValueError, abort_text="Selection aborted.", style=None): + """Helper function to quickly get a selection with just a few arguments""" + menu = CliMenu(header=header, options=options, style=style) + if not menu.success: + raise abort_exc(abort_text) + + return menu.get_selection()