diff --git a/preditor/gui/loggerwindow.py b/preditor/gui/loggerwindow.py index 1b63ef30..be9926dd 100644 --- a/preditor/gui/loggerwindow.py +++ b/preditor/gui/loggerwindow.py @@ -64,6 +64,7 @@ def __init__(self, parent, name=None, run_workbox=False, standalone=False): # Create timer to autohide status messages self.statusTimer = QTimer() self.statusTimer.setSingleShot(True) + self.statusTimer.timeout.connect(self.clearStatusText) # Store the previous time a font-resize wheel event was triggered to prevent # rapid-fire WheelEvents. Initialize to the current time. @@ -503,18 +504,12 @@ def wheelEvent(self, event): font = self.console().font() newSize = font.pointSize() + delta newSize = max(min(newSize, maxSize), minSize) + newSize = int(newSize) font.setPointSize(newSize) - self.console().setConsoleFont(font) - - for workbox in self.uiWorkboxTAB.all_widgets(): - marginsFont = workbox.__margins_font__() - marginsFont.setPointSize(newSize) - workbox.__set_margins_font__(marginsFont) - - workbox.__set_font__(font) + self.setFont(font, report=True) else: - Window.wheelEvent(self, event) + super(LoggerWindow, self).wheelEvent(event) def handleMenuHovered(self, action): """Qt4 doesn't have a ToolTipsVisible method, so we fake it""" @@ -559,11 +554,7 @@ def selectFont(self, action): family = action.text() font = self.console().font() font.setFamily(family) - self.console().setConsoleFont(font) - - for workbox in self.uiWorkboxTAB.all_widgets(): - workbox.__set_margins_font__(font) - workbox.__set_font__(font) + self.setFont(font) @classmethod def _genPrefName(cls, baseName, index): @@ -804,7 +795,7 @@ def restorePrefs(self): if _font: font = QFont() if font.fromString(_font): - self.console().setConsoleFont(font) + self.setFont(font) def restoreToolbars(self, pref=None): if pref is None: @@ -850,8 +841,7 @@ def autoHideStatusText(self): """Set timer to automatically clear status text""" if self.statusTimer.isActive(): self.statusTimer.stop() - self.statusTimer.singleShot(2000, self.clearStatusText) - self.statusTimer.start() + self.statusTimer.start(2000) def setStyleSheet(self, stylesheet, recordPrefs=True): """Accepts the name of a stylesheet included with blurdev, or a full @@ -976,6 +966,24 @@ def setFlashWindowInterval(self): if success: self.uiConsoleTXT.flash_time = value + def setFont(self, font, report=False): + """Set the same font for the console and all workbox's margins and text. + + Args: + font (QFont): The font to set. + report (bool, optional): Update status text with the font family and size. + """ + super(LoggerWindow, self).setFont(font) + self.console().setConsoleFont(font) + + for workbox in self.uiWorkboxTAB.all_widgets(): + workbox.__set_margins_font__(font) + workbox.__set_font__(font) + + if report: + self.setStatusText('Font: {}: {}'.format(font.family(), font.pointSize())) + self.autoHideStatusText() + def setWordWrap(self, state): if state: self.uiConsoleTXT.setLineWrapMode(self.uiConsoleTXT.WidgetWidth) diff --git a/preditor/gui/workbox_mixin.py b/preditor/gui/workbox_mixin.py index 27e79740..b1e1c5b9 100644 --- a/preditor/gui/workbox_mixin.py +++ b/preditor/gui/workbox_mixin.py @@ -24,6 +24,12 @@ def __init__( self._tempfile = tempfile self.core_name = core_name + # Ensure the new instance's font settings match the rest of the app. + if "LoggerWindow" in str(type(self.window())): + font = self.window().font() + self.__set_margins_font__(font) + self.__set_font__(font) + def __auto_complete_enabled__(self): raise NotImplementedError("Mixin method not overridden.")