diff options
author | Eric Lin <anselor@gmail.com> | 2018-06-06 17:53:44 -0400 |
---|---|---|
committer | Eric Lin <anselor@gmail.com> | 2018-06-06 17:53:44 -0400 |
commit | 13bb0655d1ceddcce1fb17aa069dcbf079b3bda8 (patch) | |
tree | a621906a8921ad2d4357d495fc159d18c28d7363 /examples/tab_autocompletion.py | |
parent | 98522702b9131c41741af07f7acdf74b7f25d4d7 (diff) | |
download | cmd2-git-13bb0655d1ceddcce1fb17aa069dcbf079b3bda8.tar.gz |
Adds possible support for tabular tab completion results.
Diffstat (limited to 'examples/tab_autocompletion.py')
-rwxr-xr-x | examples/tab_autocompletion.py | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/examples/tab_autocompletion.py b/examples/tab_autocompletion.py index d1726841..817ceb72 100755 --- a/examples/tab_autocompletion.py +++ b/examples/tab_autocompletion.py @@ -109,6 +109,18 @@ class TabCompleteExample(cmd2.Cmd): """Simulating a function that queries and returns a completion values""" return actors + def instance_query_movie_ids(self) -> List[str]: + """Demonstrates showing tabular hinting of tab completion information""" + completions_with_desc = [] + + for movie_id, movie_entry in self.MOVIE_DATABASE.items(): + completions_with_desc.append(argparse_completer.CompletionItem(movie_id, movie_entry['title'])) + + setattr(self.vid_delete_movie_id, 'desc_header', 'Title') + setattr(self.movies_delete_movie_id, 'desc_header', 'Title') + + return completions_with_desc + # This demonstrates a number of customizations of the AutoCompleter version of ArgumentParser # - The help output will separately group required vs optional flags # - The help output for arguments with multiple flags or with append=True is more concise @@ -253,6 +265,8 @@ class TabCompleteExample(cmd2.Cmd): ('path_complete', [False, False])) vid_movies_delete_parser = vid_movies_commands_subparsers.add_parser('delete') + vid_delete_movie_id = vid_movies_delete_parser.add_argument('movie_id', help='Movie ID') + setattr(vid_delete_movie_id, argparse_completer.ACTION_ARG_CHOICES, instance_query_movie_ids) vid_shows_parser = video_types_subparsers.add_parser('shows') vid_shows_parser.set_defaults(func=_do_vid_media_shows) @@ -328,6 +342,8 @@ class TabCompleteExample(cmd2.Cmd): movies_add_parser.add_argument('actor', help='Actors', nargs='*') movies_delete_parser = movies_commands_subparsers.add_parser('delete') + movies_delete_movie_id = movies_delete_parser.add_argument('movie_id', help='Movie ID') + setattr(movies_delete_movie_id, argparse_completer.ACTION_ARG_CHOICES, 'instance_query_movie_ids') movies_load_parser = movies_commands_subparsers.add_parser('load') movie_file_action = movies_load_parser.add_argument('movie_file', help='Movie database') @@ -362,7 +378,7 @@ class TabCompleteExample(cmd2.Cmd): 'director': TabCompleteExample.static_list_directors, # static list 'movie_file': (self.path_complete, [False, False]) } - completer = argparse_completer.AutoCompleter(TabCompleteExample.media_parser, arg_choices=choices) + completer = argparse_completer.AutoCompleter(TabCompleteExample.media_parser, arg_choices=choices, cmd2_app=self) tokens, _ = self.tokens_for_completion(line, begidx, endidx) results = completer.complete_command(tokens, text, line, begidx, endidx) |