Skip to content

Instantly share code, notes, and snippets.

@superseed
Created October 11, 2018 13:37
Show Gist options
  • Save superseed/0ed76f0eb419c74269117c67aaa94297 to your computer and use it in GitHub Desktop.
Save superseed/0ed76f0eb419c74269117c67aaa94297 to your computer and use it in GitHub Desktop.
A simple POC of delegating paged container for prompt_toolkit
from prompt_toolkit.layout.containers import Container
class PagedContainer(Container):
def __init__(self, children, active):
self._children = children
self._active_child = active
for child in self._children.values():
assert isinstance(child, Container)
assert self._active_child in self._children
def get_children(self):
return [self.get_active_child()]
def get_all_children(self):
return [child for key, child in self._children.items()]
def get_active_child_name(self):
return self._active_child
def get_active_child(self):
return self._children[self._active_child]
def set_active_child(self, child_name):
if child_name not in self._children.keys():
raise ValueError(f'"{child_name}" child does not exist')
self._active_child = child_name
def reset(self):
self.get_active_child().reset()
def get_key_bindings(self):
return self.get_active_child().get_key_bindings()
def write_to_screen(self, *args, **kwargs):
return self.get_active_child().write_to_screen(*args, **kwargs)
def preferred_height(self, *args, **kwargs):
return self.get_active_child().preferred_height(*args, **kwargs)
def preferred_width(self, *args, **kwargs):
return self.get_active_child().preferred_width(*args, **kwargs)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment