|  | 
|  | 1 | +#!/usr/bin/env python | 
|  | 2 | +""" | 
|  | 3 | +Simple example of the layout options. | 
|  | 4 | +""" | 
|  | 5 | +from __future__ import unicode_literals | 
|  | 6 | + | 
|  | 7 | +from prompt_toolkit import CommandLineInterface | 
|  | 8 | +from prompt_toolkit.layout import Layout | 
|  | 9 | +from prompt_toolkit.layout.prompt import DefaultPrompt, Prompt | 
|  | 10 | +from prompt_toolkit.layout.margins import LeftMarginWithLineNumbers | 
|  | 11 | +from prompt_toolkit.layout.menus import CompletionMenu | 
|  | 12 | +from prompt_toolkit.layout.toolbars import TextToolbar, ArgToolbar, SearchToolbar, CompletionToolbar | 
|  | 13 | +from prompt_toolkit.line import Line | 
|  | 14 | +from prompt_toolkit.completion import Completion, Completer | 
|  | 15 | + | 
|  | 16 | +from pygments.token import Token | 
|  | 17 | +from pygments.style import Style | 
|  | 18 | + | 
|  | 19 | + | 
|  | 20 | +lipsum = """This is the input: | 
|  | 21 | +
 | 
|  | 22 | +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer blandit | 
|  | 23 | +elementum ante, vel fermentum massa fermentum vitae. Nulla ornare egestas | 
|  | 24 | +metus, ut molestie lacus sodales lacinia. Vivamus lacinia, lectus at laoreet | 
|  | 25 | +fermentum, quam ligula hendrerit massa, in vulputate velit lacus eu tortor. Sed | 
|  | 26 | +mi dui, iaculis nec odio iaculis, iaculis pellentesque velit. Duis consequat, | 
|  | 27 | +felis vitae hendrerit accumsan, lectus massa volutpat quam, quis scelerisque ex | 
|  | 28 | +urna eu neque. Phasellus vitae pharetra tellus, dapibus viverra lectus. Quisque | 
|  | 29 | +ornare risus sit amet auctor convallis. Ut vestibulum tincidunt orci vitae | 
|  | 30 | +tincidunt. Quisque ornare consectetur elementum.""" | 
|  | 31 | + | 
|  | 32 | + | 
|  | 33 | +class TestCompleter(Completer): | 
|  | 34 | + def get_completions(self, document): | 
|  | 35 | + word_before_cursor = document.get_word_before_cursor() | 
|  | 36 | + | 
|  | 37 | + for i in range(0, 20): | 
|  | 38 | + yield Completion('Completion %i' % i, -len(word_before_cursor)) | 
|  | 39 | + | 
|  | 40 | + | 
|  | 41 | +layout = Layout( | 
|  | 42 | + left_margin = LeftMarginWithLineNumbers(), | 
|  | 43 | + before_input = DefaultPrompt(text='Before input >> '), | 
|  | 44 | + after_input = Prompt(' << after input'), | 
|  | 45 | + top_toolbars = [ | 
|  | 46 | + TextToolbar('This is a top toolbar', token=Token.TopToolbar1), | 
|  | 47 | + TextToolbar('This is another top toolbar', token=Token.TopToolbar2), | 
|  | 48 | + ], | 
|  | 49 | + bottom_toolbars = [ | 
|  | 50 | + ArgToolbar(), | 
|  | 51 | + SearchToolbar(), | 
|  | 52 | + CompletionToolbar(), | 
|  | 53 | + TextToolbar('This is a bottom toolbar', token=Token.BottomToolbar1), | 
|  | 54 | + TextToolbar('This is another bottom toolbar', token=Token.BottomToolbar2), | 
|  | 55 | + ], | 
|  | 56 | + show_tildes=True, | 
|  | 57 | + menus=[CompletionMenu()]) | 
|  | 58 | + | 
|  | 59 | + | 
|  | 60 | +class TestStyle(Style): | 
|  | 61 | + styles = { | 
|  | 62 | + Token.Layout.LeftMargin: 'bg:#00aaaa #000000', | 
|  | 63 | + Token.Prompt.BeforeInput: 'bg:#aa2266 #ffffff', | 
|  | 64 | + Token.AfterInput: 'bg:#aa2266 #ffffff', | 
|  | 65 | + Token.BottomToolbar1: 'bg:#440044 #ffffff', | 
|  | 66 | + Token.BottomToolbar2: 'bg:#aa0088 #222222', | 
|  | 67 | + Token.TopToolbar1: 'bg:#aa0088 #222222', | 
|  | 68 | + Token.TopToolbar2: 'bg:#440044 #ffffff', | 
|  | 69 | + | 
|  | 70 | + Token.Layout.Toolbar.Arg: 'bg:#aaaaff #000088', | 
|  | 71 | + Token.Layout.Toolbar.Arg.Text: 'bg:#aaaaff #000088 bold', | 
|  | 72 | + | 
|  | 73 | + Token.CompletionMenu.Completion.Current: 'bg:#00aaaa #000000', | 
|  | 74 | + Token.CompletionMenu.Completion: 'bg:#008888 #ffffff', | 
|  | 75 | + Token.CompletionMenu.ProgressButton: 'bg:#003333', | 
|  | 76 | + Token.CompletionMenu.ProgressBar: 'bg:#00aaaa', | 
|  | 77 | + | 
|  | 78 | + Token.CompletionToolbar: 'bg:#888800 #000000', | 
|  | 79 | + Token.CompletionToolbar.Arrow: 'bg:#888800 #000000', | 
|  | 80 | + Token.CompletionToolbar.Completion: 'bg:#aaaa00 #000000', | 
|  | 81 | + Token.CompletionToolbar.Completion.Current: 'bg:#ffffaa #000000 bold', | 
|  | 82 | + | 
|  | 83 | + Token.SelectedText: 'bg:#000088 #ffffff', | 
|  | 84 | + } | 
|  | 85 | + | 
|  | 86 | + | 
|  | 87 | +def main(): | 
|  | 88 | + cli = CommandLineInterface(layout=layout, | 
|  | 89 | + style=TestStyle, | 
|  | 90 | + line=Line(is_multiline=True, completer=TestCompleter())) | 
|  | 91 | + | 
|  | 92 | + code_obj = cli.read_input(initial_value=lipsum) | 
|  | 93 | + print('You said: ' + code_obj.text) | 
|  | 94 | + | 
|  | 95 | + | 
|  | 96 | +if __name__ == '__main__': | 
|  | 97 | + main() | 
0 commit comments