qutebrowser/qutebrowser/mainwindow/statusbar/text.py
Gyorgy Orban 98c6b49cde use enum module instead or usertypes.enum
Remove the usertypes.enum from the source and use
the standard enum module instead.
Enum start number is available since python 3.5
2017-11-02 18:56:11 +01:00

83 lines
2.6 KiB
Python

# vim: ft=python fileencoding=utf-8 sts=4 sw=4 et:
# Copyright 2014-2017 Florian Bruhin (The Compiler) <mail@qutebrowser.org>
#
# This file is part of qutebrowser.
#
# qutebrowser is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# qutebrowser is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with qutebrowser. If not, see <http://www.gnu.org/licenses/>.
"""Text displayed in the statusbar."""
import enum
from PyQt5.QtCore import pyqtSlot
from qutebrowser.mainwindow.statusbar import textbase
from qutebrowser.utils import log
class Text(textbase.TextBase):
"""Text displayed in the statusbar.
Attributes:
_normaltext: The "permanent" text. Never automatically cleared.
_temptext: The temporary text to display.
The temptext is shown from StatusBar when a temporary text or error is
available. If not, the permanent text is shown.
"""
Text = enum.Enum('Text', ['normal', 'temp'])
def __init__(self, parent=None):
super().__init__(parent)
self._normaltext = ''
self._temptext = ''
def set_text(self, which, text):
"""Set a text.
Args:
which: Which text to set, a self.Text instance.
text: The text to set.
"""
log.statusbar.debug("Setting {} text to '{}'.".format(
which.name, text))
if which is self.Text.normal:
self._normaltext = text
elif which is self.Text.temp:
self._temptext = text
else:
raise ValueError("Invalid value {} for which!".format(which))
self.update_text()
@pyqtSlot(str)
def maybe_reset_text(self, text):
"""Clear a normal text if it still matches an expected text."""
if self._normaltext == text:
log.statusbar.debug("Resetting: '{}'".format(text))
self.set_text(self.Text.normal, '')
else:
log.statusbar.debug("Ignoring reset: '{}'".format(text))
def update_text(self):
"""Update QLabel text when needed."""
if self._temptext:
self.setText(self._temptext)
elif self._normaltext:
self.setText(self._normaltext)
else:
self.setText('')