diff options
author | Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> | 2016-03-31 18:54:41 +0100 |
---|---|---|
committer | Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> | 2016-06-11 20:49:43 +0100 |
commit | 332a5c2553db41de777473a1e1be9cd1522c9496 (patch) | |
tree | 3ee06a59f147ccc4009b35cccfbe2461bcd18310 /poezio/windows/input_placeholders.py | |
parent | cf44cf7cdec9fdb35caa372563d57e7045dc29dd (diff) | |
download | poezio-332a5c2553db41de777473a1e1be9cd1522c9496.tar.gz poezio-332a5c2553db41de777473a1e1be9cd1522c9496.tar.bz2 poezio-332a5c2553db41de777473a1e1be9cd1522c9496.tar.xz poezio-332a5c2553db41de777473a1e1be9cd1522c9496.zip |
Move the src directory to poezio, for better cython compatibility.
Diffstat (limited to 'poezio/windows/input_placeholders.py')
-rw-r--r-- | poezio/windows/input_placeholders.py | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/poezio/windows/input_placeholders.py b/poezio/windows/input_placeholders.py new file mode 100644 index 00000000..496417d1 --- /dev/null +++ b/poezio/windows/input_placeholders.py @@ -0,0 +1,77 @@ +""" +Classes used to replace the input in some tabs or special situations, +but which are not inputs. +""" + +import logging +log = logging.getLogger(__name__) + + +from . import Win +from theming import get_theme, to_curses_attr + + +class HelpText(Win): + """ + A Window just displaying a read-only message. + Usually used to replace an Input when the tab is in + command mode. + """ + def __init__(self, text=''): + Win.__init__(self) + self.txt = text + + def refresh(self, txt=None): + log.debug('Refresh: %s', self.__class__.__name__) + if txt: + self.txt = txt + self._win.erase() + self.addstr(0, 0, self.txt[:self.width-1], to_curses_attr(get_theme().COLOR_INFORMATION_BAR)) + self.finish_line(get_theme().COLOR_INFORMATION_BAR) + self._refresh() + + def do_command(self, key, raw=False): + return False + + def on_delete(self): + return + +class YesNoInput(Win): + """ + A Window just displaying a Yes/No input + Used to ask a confirmation + """ + def __init__(self, text='', callback=None): + Win.__init__(self) + self.key_func = { + 'y' : self.on_yes, + 'n' : self.on_no, + } + self.txt = text + self.value = None + self.callback = callback + + def on_yes(self): + self.value = True + + def on_no(self): + self.value = False + + def refresh(self, txt=None): + log.debug('Refresh: %s', self.__class__.__name__) + if txt: + self.txt = txt + self._win.erase() + self.addstr(0, 0, self.txt[:self.width-1], to_curses_attr(get_theme().COLOR_WARNING_PROMPT)) + self.finish_line(get_theme().COLOR_WARNING_PROMPT) + self._refresh() + + def do_command(self, key, raw=False): + if key.lower() in self.key_func: + self.key_func[key]() + if self.value is not None and self.callback is not None: + return self.callback() + + def on_delete(self): + return + |