diff options
Diffstat (limited to 'ranger/gui')
-rw-r--r-- | ranger/gui/colorscheme.py | 1 | ||||
-rw-r--r-- | ranger/gui/defaultui.py | 5 | ||||
-rw-r--r-- | ranger/gui/ui.py | 15 | ||||
-rw-r--r-- | ranger/gui/widgets/console.py | 1 | ||||
-rw-r--r-- | ranger/gui/widgets/statusbar.py | 31 |
5 files changed, 44 insertions, 9 deletions
diff --git a/ranger/gui/colorscheme.py b/ranger/gui/colorscheme.py index 386c0f85..4fdcaad2 100644 --- a/ranger/gui/colorscheme.py +++ b/ranger/gui/colorscheme.py @@ -9,6 +9,7 @@ CONTEXT_KEYS = [ 'reset', 'error', 'space', 'permissions', 'owner', 'group', 'mtime', 'nlink', 'scroll', 'all', 'bot', 'top', 'percentage', 'marked', + 'text', 'highlight', 'keybuffer'] # colorscheme specification: diff --git a/ranger/gui/defaultui.py b/ranger/gui/defaultui.py index ba3f79c9..2b1fa188 100644 --- a/ranger/gui/defaultui.py +++ b/ranger/gui/defaultui.py @@ -68,5 +68,8 @@ class DefaultUI(UI): self.titlebar.throbber = type(self.titlebar).throbber else: self.titlebar.throbber = string - + # self.win.addnstr(0, self.env.termsize[1]-1, string, 1) + + def hint(self, text=None): + self.status.override = text diff --git a/ranger/gui/ui.py b/ranger/gui/ui.py index 8134231e..07c2de6f 100644 --- a/ranger/gui/ui.py +++ b/ranger/gui/ui.py @@ -105,6 +105,10 @@ class UI(DisplayableContainer): def handle_key(self, key): """Handles key input""" + + if hasattr(self, 'hint'): + self.hint() + self.env.key_append(key) if DisplayableContainer.press(self, key): @@ -121,11 +125,12 @@ class UI(DisplayableContainer): self.env.key_clear() return - if cmd == self.commandlist.dummy_object: - return - - cmd.execute(self.fm, self.env.keybuffer.number) - self.env.key_clear() + if hasattr(cmd, 'text'): + if hasattr(self, 'hint'): + self.hint(cmd.text) + elif hasattr(cmd, 'execute'): + cmd.execute(self.fm, self.env.keybuffer.number) + self.env.key_clear() def get_next_key(self): """Waits for key input and returns the pressed key""" diff --git a/ranger/gui/widgets/console.py b/ranger/gui/widgets/console.py index 1512b763..ee80e639 100644 --- a/ranger/gui/widgets/console.py +++ b/ranger/gui/widgets/console.py @@ -20,6 +20,7 @@ class Console(Widget): original_line = None history = None histories = None + override = None def __init__(self, win): from ranger.container import CommandList, History diff --git a/ranger/gui/widgets/statusbar.py b/ranger/gui/widgets/statusbar.py index 17a5348b..c3c5e74e 100644 --- a/ranger/gui/widgets/statusbar.py +++ b/ranger/gui/widgets/statusbar.py @@ -15,6 +15,7 @@ class StatusBar(Widget): owners = {} groups = {} timeformat = '%Y-%m-%d %H:%M' + override = None def __init__(self, win, filelist=None): Widget.__init__(self, win) @@ -26,9 +27,33 @@ class StatusBar(Widget): # each item in the returned array looks like: # [ list_with_color_tags, string ] # [ ['permissions', 'allowed'], '-rwxr-xr-x' ] - left = self._get_left_part() - right = self._get_right_part() - self._print_result(self._combine_parts(left, right)) + + if self.override and isinstance(self.override, str): + self._draw_message() + else: + left = self._get_left_part() + right = self._get_right_part() + self._print_result(self._combine_parts(left, right)) + + def _draw_message(self): + highlight = True + space_left = self.wid + starting_point = self.x + for string in self.override.split('//'): + highlight = not highlight + if highlight: + self.color('in_statusbar', 'text', 'highlight') + else: + self.color('in_statusbar', 'text') + + try: + self.win.addnstr(self.y, starting_point, string, space_left) + except: + break + space_left -= len(string) + starting_point += len(string) +# if starting_point >= self.wid: +# break def _get_left_part(self): part = [] |