Add new option ui->hide-statusbar to hide the bar.

Closes #486.
This commit is contained in:
Florian Bruhin 2015-01-25 22:41:19 +01:00
parent 8ffc1a3966
commit fe90b153ed
2 changed files with 26 additions and 2 deletions

View File

@ -237,6 +237,10 @@ DATA = collections.OrderedDict([
('remove-finished-downloads', ('remove-finished-downloads',
SettingValue(typ.Bool(), 'false'), SettingValue(typ.Bool(), 'false'),
"Whether to remove finished downloads automatically."), "Whether to remove finished downloads automatically."),
('hide-statusbar',
SettingValue(typ.Bool(), 'false'),
"Whether to hide the statusbar unless a message is shown."),
)), )),
('network', sect.KeyValue( ('network', sect.KeyValue(

View File

@ -21,7 +21,8 @@
import collections import collections
from PyQt5.QtCore import pyqtSignal, pyqtSlot, pyqtProperty, Qt, QTime, QSize from PyQt5.QtCore import (pyqtSignal, pyqtSlot, pyqtProperty, Qt, QTime, QSize,
QTimer)
from PyQt5.QtWidgets import QWidget, QHBoxLayout, QStackedLayout, QSizePolicy from PyQt5.QtWidgets import QWidget, QHBoxLayout, QStackedLayout, QSizePolicy
from qutebrowser.config import config, style from qutebrowser.config import config, style
@ -179,9 +180,21 @@ class StatusBar(QWidget):
self.prog = progress.Progress(self) self.prog = progress.Progress(self)
self._hbox.addWidget(self.prog) self._hbox.addWidget(self.prog)
objreg.get('config').changed.connect(self.maybe_hide)
QTimer.singleShot(0, self.maybe_hide)
def __repr__(self): def __repr__(self):
return utils.get_repr(self) return utils.get_repr(self)
@config.change_filter('ui', 'hide-statusbar')
def maybe_hide(self):
"""Hide the statusbar if it's configured to do so."""
hide = config.get('ui', 'hide-statusbar')
if hide:
self.hide()
else:
self.show()
@pyqtProperty(str) @pyqtProperty(str)
def severity(self): def severity(self):
"""Getter for self.severity, so it can be used as Qt property. """Getter for self.severity, so it can be used as Qt property.
@ -268,10 +281,11 @@ class StatusBar(QWidget):
elif self._previous_widget == PreviousWidget.command: elif self._previous_widget == PreviousWidget.command:
self._stack.setCurrentWidget(self.command) self._stack.setCurrentWidget(self.command)
elif self._previous_widget == PreviousWidget.none: elif self._previous_widget == PreviousWidget.none:
pass self.maybe_hide()
else: else:
raise AssertionError("Unknown _previous_widget!") raise AssertionError("Unknown _previous_widget!")
return return
self.show()
log.statusbar.debug("Displaying message: {} (severity {})".format( log.statusbar.debug("Displaying message: {} (severity {})".format(
text, severity)) text, severity))
log.statusbar.debug("Remaining: {}".format(self._text_queue)) log.statusbar.debug("Remaining: {}".format(self._text_queue))
@ -286,6 +300,7 @@ class StatusBar(QWidget):
self._timer_was_active = True self._timer_was_active = True
self._text_pop_timer.stop() self._text_pop_timer.stop()
self._stack.setCurrentWidget(self.cmd) self._stack.setCurrentWidget(self.cmd)
self.show()
def _hide_cmd_widget(self): def _hide_cmd_widget(self):
"""Show temporary text instead of command widget.""" """Show temporary text instead of command widget."""
@ -298,6 +313,7 @@ class StatusBar(QWidget):
self._text_pop_timer.start() self._text_pop_timer.start()
self._timer_was_active = False self._timer_was_active = False
self._stack.setCurrentWidget(self.txt) self._stack.setCurrentWidget(self.txt)
self.maybe_hide()
def _show_prompt_widget(self): def _show_prompt_widget(self):
"""Show prompt widget instead of temporary text.""" """Show prompt widget instead of temporary text."""
@ -310,6 +326,7 @@ class StatusBar(QWidget):
self._timer_was_active = True self._timer_was_active = True
self._text_pop_timer.stop() self._text_pop_timer.stop()
self._stack.setCurrentWidget(self.prompt) self._stack.setCurrentWidget(self.prompt)
self.show()
def _hide_prompt_widget(self): def _hide_prompt_widget(self):
"""Show temporary text instead of prompt widget.""" """Show temporary text instead of prompt widget."""
@ -323,6 +340,7 @@ class StatusBar(QWidget):
self._text_pop_timer.start() self._text_pop_timer.start()
self._timer_was_active = False self._timer_was_active = False
self._stack.setCurrentWidget(self.txt) self._stack.setCurrentWidget(self.txt)
self.maybe_hide()
def _disp_text(self, text, severity, immediately=False): def _disp_text(self, text, severity, immediately=False):
"""Inner logic for disp_error and disp_temp_text. """Inner logic for disp_error and disp_temp_text.
@ -350,6 +368,7 @@ class StatusBar(QWidget):
# normal state in 2 seconds. # normal state in 2 seconds.
log.statusbar.debug("Displaying immediately") log.statusbar.debug("Displaying immediately")
self._set_severity(severity) self._set_severity(severity)
self.show()
self.txt.set_text(self.txt.Text.temp, text) self.txt.set_text(self.txt.Text.temp, text)
self._text_pop_timer.start() self._text_pop_timer.start()
elif self._text_queue and self._text_queue[-1] == (severity, text): elif self._text_queue and self._text_queue[-1] == (severity, text):
@ -363,6 +382,7 @@ class StatusBar(QWidget):
# display the rest of the queue later. # display the rest of the queue later.
log.statusbar.debug("Moving to beginning of queue") log.statusbar.debug("Moving to beginning of queue")
self._set_severity(severity) self._set_severity(severity)
self.show()
self.txt.set_text(self.txt.Text.temp, text) self.txt.set_text(self.txt.Text.temp, text)
self._text_pop_timer.start() self._text_pop_timer.start()
else: else: