From a6443231e5644d204088c56b7bfdad436b2311d1 Mon Sep 17 00:00:00 2001 From: Artur Shaik Date: Mon, 13 Apr 2015 19:50:27 +0600 Subject: [PATCH] Add statusbar coloring for caret and visual modes --- qutebrowser/config/configdata.py | 8 +++++ qutebrowser/mainwindow/statusbar/bar.py | 45 ++++++++++++++++++++----- 2 files changed, 45 insertions(+), 8 deletions(-) diff --git a/qutebrowser/config/configdata.py b/qutebrowser/config/configdata.py index 0765727b5..d4b68cb34 100644 --- a/qutebrowser/config/configdata.py +++ b/qutebrowser/config/configdata.py @@ -758,6 +758,14 @@ DATA = collections.OrderedDict([ SettingValue(typ.QssColor(), 'darkgreen'), "Background color of the statusbar in insert mode."), + ('statusbar.bg.caret', + SettingValue(typ.QssColor(), 'purple'), + "Background color of the statusbar in caret mode."), + + ('statusbar.bg.visual', + SettingValue(typ.QssColor(), '#a12dff'), + "Background color of the statusbar in visual mode."), + ('statusbar.progress.bg', SettingValue(typ.QssColor(), 'white'), "Background color of the progress bar."), diff --git a/qutebrowser/mainwindow/statusbar/bar.py b/qutebrowser/mainwindow/statusbar/bar.py index a1c8aabd0..af33d3fe6 100644 --- a/qutebrowser/mainwindow/statusbar/bar.py +++ b/qutebrowser/mainwindow/statusbar/bar.py @@ -91,6 +91,8 @@ class StatusBar(QWidget): _severity = None _prompt_active = False _insert_active = False + _caret_active = False + _visual_active = False STYLESHEET = """ QWidget#StatusBar { @@ -101,6 +103,14 @@ class StatusBar(QWidget): {{ color['statusbar.bg.insert'] }} } + QWidget#StatusBar[caret_active="true"] { + {{ color['statusbar.bg.caret'] }} + } + + QWidget#StatusBar[visual_active="true"] { + {{ color['statusbar.bg.visual'] }} + } + QWidget#StatusBar[prompt_active="true"] { {{ color['statusbar.bg.prompt'] }} } @@ -253,14 +263,31 @@ class StatusBar(QWidget): """Getter for self.insert_active, so it can be used as Qt property.""" return self._insert_active - def _set_insert_active(self, val): - """Setter for self.insert_active. + @pyqtProperty(bool) + def caret_active(self): + """Getter for self.caret_active, so it can be used as Qt property.""" + return self._caret_active + + @pyqtProperty(bool) + def visual_active(self): + """Getter for self.visual_active, so it can be used as Qt property.""" + return self._visual_active + + def _set_mode_active(self, mode, val): + """Setter for self.insert_active, self.caret_active or self.visual_active. Re-set the stylesheet after setting the value, so everything gets updated by Qt properly. """ - log.statusbar.debug("Setting insert_active to {}".format(val)) - self._insert_active = val + if mode == usertypes.KeyMode.insert: + log.statusbar.debug("Setting insert_active to {}".format(val)) + self._insert_active = val + elif mode == usertypes.KeyMode.caret: + log.statusbar.debug("Setting caret_active to {}".format(val)) + self._caret_active = val + elif mode == usertypes.KeyMode.visual: + log.statusbar.debug("Setting visual_active to {}".format(val)) + self._visual_active = val self.setStyleSheet(style.get_stylesheet(self.STYLESHEET)) def _set_mode_text(self, mode): @@ -438,8 +465,9 @@ class StatusBar(QWidget): window=self._win_id) if mode in mode_manager.passthrough: self._set_mode_text(mode.name) - if mode == usertypes.KeyMode.insert: - self._set_insert_active(True) + if mode in (usertypes.KeyMode.insert, usertypes.KeyMode.caret, + usertypes.KeyMode.visual): + self._set_mode_active(mode, True) @pyqtSlot(usertypes.KeyMode, usertypes.KeyMode) def on_mode_left(self, old_mode, new_mode): @@ -451,8 +479,9 @@ class StatusBar(QWidget): self._set_mode_text(new_mode.name) else: self.txt.set_text(self.txt.Text.normal, '') - if old_mode == usertypes.KeyMode.insert: - self._set_insert_active(False) + if old_mode in (usertypes.KeyMode.insert, usertypes.KeyMode.caret, + usertypes.KeyMode.visual): + self._set_mode_active(old_mode, False) @config.change_filter('ui', 'message-timeout') def set_pop_timer_interval(self):