From 491c04440e61b2456e9159bb39746ecdf2bb8d0b Mon Sep 17 00:00:00 2001 From: Carlos Cordoba Date: Sun, 21 May 2023 12:14:07 -0500 Subject: [PATCH] Add SpyderFontMixin to easily get the different fonts used in Spyder --- spyder/api/widgets/mixins.py | 27 +++++++++++++++++++ .../languageserver/widgets/serversconfig.py | 6 ++--- .../snippets/widgets/snippetsconfig.py | 7 +++-- .../plugins/debugger/widgets/framesbrowser.py | 8 +++--- spyder/plugins/editor/widgets/base.py | 6 ++--- .../findinfiles/widgets/results_browser.py | 8 +++--- spyder/plugins/onlinehelp/pydoc_patch.py | 11 +++++--- .../variableexplorer/widgets/arrayeditor.py | 12 ++++++--- .../widgets/collectionsdelegate.py | 20 +++++++++----- .../widgets/dataframeeditor.py | 8 +++--- .../widgets/objectexplorer/objectexplorer.py | 10 +++---- .../widgets/objectexplorer/tree_model.py | 15 ++++++----- .../variableexplorer/widgets/texteditor.py | 9 +++---- spyder/widgets/collectionseditor.py | 8 +++--- spyder/widgets/reporterror.py | 10 +++---- 15 files changed, 105 insertions(+), 60 deletions(-) diff --git a/spyder/api/widgets/mixins.py b/spyder/api/widgets/mixins.py index e53f683f83c..96380f751eb 100644 --- a/spyder/api/widgets/mixins.py +++ b/spyder/api/widgets/mixins.py @@ -16,12 +16,15 @@ # Third party imports from qtpy.QtCore import Qt +from qtpy.QtGui import QFont from qtpy.QtWidgets import QSizePolicy, QToolBar, QWidget, QToolButton # Local imports from spyder.api.config.mixins import SpyderConfigurationObserver from spyder.api.exceptions import SpyderAPIError from spyder.api.widgets.menus import SpyderMenu +from spyder.config.gui import get_font +from spyder.config.fonts import SpyderFontType from spyder.config.manager import CONF from spyder.utils.icon_manager import ima from spyder.utils.qthelpers import create_action, create_toolbutton @@ -609,3 +612,27 @@ def update_translation(self): change. """ pass + + +class SpyderFontMixin: + """Mixin to get the different Spyder font types.""" + + @classmethod + def get_font( + cls, + font_type: Optional[str] = SpyderFontType.Plain, + font_size_delta: Optional[int] = 0 + ) -> QFont: + """ + Get a font type as a QFont object. + + Parameters + ---------- + font_type: str, optional + A Spyder font type. This must be one of the `SpyderFontType` enum + values. The default is `SpyderFontType.Plain`. + font_size_delta: int, optional + Small increase or decrease over the default font size. The default + is 0. + """ + return get_font(option=font_type, font_size_delta=font_size_delta) diff --git a/spyder/plugins/completion/providers/languageserver/widgets/serversconfig.py b/spyder/plugins/completion/providers/languageserver/widgets/serversconfig.py index d61db233c35..da3872d9d1b 100644 --- a/spyder/plugins/completion/providers/languageserver/widgets/serversconfig.py +++ b/spyder/plugins/completion/providers/languageserver/widgets/serversconfig.py @@ -22,8 +22,8 @@ QSpinBox, QTableView, QVBoxLayout) # Local imports +from spyder.api.widgets.mixins import SpyderFontMixin from spyder.config.base import _ -from spyder.config.gui import get_font from spyder.plugins.completion.api import SUPPORTED_LANGUAGES from spyder.utils.misc import check_connection_port from spyder.utils.programs import find_program @@ -107,7 +107,7 @@ def delete(self): self.remove_option(language) -class LSPServerEditor(QDialog): +class LSPServerEditor(QDialog, SpyderFontMixin): DEFAULT_HOST = '127.0.0.1' DEFAULT_PORT = 2084 DEFAULT_CMD = '' @@ -208,7 +208,7 @@ def __init__(self, parent, language=None, cmd='', host='127.0.0.1', color_scheme=get_option('selected', section='appearance'), wrap=False, highlight_current_line=True, - font=get_font() + font=self.get_font() ) self.conf_input.set_language('json') self.conf_input.setToolTip(_('Additional LSP server configuration ' diff --git a/spyder/plugins/completion/providers/snippets/widgets/snippetsconfig.py b/spyder/plugins/completion/providers/snippets/widgets/snippetsconfig.py index 37babadf85e..d6044f2a0e8 100644 --- a/spyder/plugins/completion/providers/snippets/widgets/snippetsconfig.py +++ b/spyder/plugins/completion/providers/snippets/widgets/snippetsconfig.py @@ -22,9 +22,8 @@ QLineEdit, QTableView, QVBoxLayout) # Local imports +from spyder.api.widgets.mixins import SpyderFontMixin from spyder.config.base import _ -from spyder.config.manager import CONF -from spyder.config.gui import get_font from spyder.plugins.completion.api import SUPPORTED_LANGUAGES from spyder.utils.snippets.ast import build_snippet_ast from spyder.widgets.helperwidgets import ItemDelegate @@ -215,7 +214,7 @@ def delete(self): recursive_notification=False) -class SnippetEditor(QDialog): +class SnippetEditor(QDialog, SpyderFontMixin): SNIPPET_VALID = _('Valid snippet') SNIPPET_INVALID = _('Invalid snippet') INVALID_CB_CSS = "QComboBox {border: 1px solid red;}" @@ -305,7 +304,7 @@ def __init__(self, parent, language=None, trigger_text='', description='', color_scheme=get_option('selected', section='appearance'), wrap=False, highlight_current_line=True, - font=get_font() + font=self.get_font() ) self.snippet_input.set_language(language) self.snippet_input.setToolTip(_('Snippet text completion to insert')) diff --git a/spyder/plugins/debugger/widgets/framesbrowser.py b/spyder/plugins/debugger/widgets/framesbrowser.py index 3cade99a62f..2f626cff83d 100644 --- a/spyder/plugins/debugger/widgets/framesbrowser.py +++ b/spyder/plugins/debugger/widgets/framesbrowser.py @@ -25,9 +25,8 @@ # Local imports from spyder.api.config.decorators import on_conf_change from spyder.api.config.mixins import SpyderConfigurationAccessor -from spyder.api.widgets.mixins import SpyderWidgetMixin +from spyder.api.widgets.mixins import SpyderFontMixin, SpyderWidgetMixin from spyder.api.translations import _ -from spyder.config.gui import get_font from spyder.widgets.helperwidgets import FinderWidget @@ -454,7 +453,8 @@ def sizeHint(self, option, index): return size -class ResultsBrowser(QTreeWidget, SpyderConfigurationAccessor): +class ResultsBrowser(QTreeWidget, SpyderConfigurationAccessor, + SpyderFontMixin): CONF_SECTION = 'debugger' sig_edit_goto = Signal(str, int, str) sig_activated = Signal(int) @@ -462,7 +462,7 @@ class ResultsBrowser(QTreeWidget, SpyderConfigurationAccessor): def __init__(self, parent, color_scheme): super().__init__(parent) - self.font = get_font() + self.font = self.get_font() self.data = None self.threads = None self.color_scheme = color_scheme diff --git a/spyder/plugins/editor/widgets/base.py b/spyder/plugins/editor/widgets/base.py index a27ef9b1a45..1331bc1c748 100644 --- a/spyder/plugins/editor/widgets/base.py +++ b/spyder/plugins/editor/widgets/base.py @@ -24,7 +24,7 @@ # Local imports from spyder.api.config.mixins import SpyderConfigurationAccessor -from spyder.config.gui import get_font +from spyder.api.widgets.mixins import SpyderFontMixin from spyder.plugins.editor.api.decoration import TextDecoration, DRAW_ORDERS from spyder.plugins.editor.utils.decoration import TextDecorationsManager from spyder.plugins.editor.widgets.completion import CompletionWidget @@ -37,7 +37,7 @@ class TextEditBaseWidget( - QPlainTextEdit, BaseEditMixin, SpyderConfigurationAccessor + QPlainTextEdit, BaseEditMixin, SpyderConfigurationAccessor, SpyderFontMixin ): """Text edit base widget""" BRACE_MATCHING_SCOPE = ('sof', 'eof') @@ -124,7 +124,7 @@ def reset_current_cell(): def setup_completion(self): size = self.get_conf('completion/size', section='main') - font = get_font() + font = self.get_font() self.completion_widget.setup_appearance(size, font) def set_indent_chars(self, indent_chars): diff --git a/spyder/plugins/findinfiles/widgets/results_browser.py b/spyder/plugins/findinfiles/widgets/results_browser.py index 74f44dd235c..47613cf05f7 100644 --- a/spyder/plugins/findinfiles/widgets/results_browser.py +++ b/spyder/plugins/findinfiles/widgets/results_browser.py @@ -18,7 +18,7 @@ # Local imports from spyder.api.translations import _ -from spyder.config.gui import get_font +from spyder.api.widgets.mixins import SpyderFontMixin from spyder.plugins.findinfiles.widgets.search_thread import ( ELLIPSIS, MAX_RESULT_LENGTH) from spyder.utils import icon_manager as ima @@ -176,7 +176,7 @@ def sizeHint(self, option, index): return size -class ResultsBrowser(OneColumnTree): +class ResultsBrowser(OneColumnTree, SpyderFontMixin): sig_edit_goto_requested = Signal(str, int, str, int, int) sig_max_results_reached = Signal() @@ -189,7 +189,7 @@ def __init__(self, parent, text_color, max_results=1000): self.error_flag = None self.completed = None self.sorting = {} - self.font = get_font() + self.font = self.get_font() self.data = None self.files = None self.root_items = None @@ -241,7 +241,7 @@ def clicked(self, item): self.activated(item) def clear_title(self, search_text): - self.font = get_font() + self.font = self.get_font() self.clear() self.setSortingEnabled(False) self.num_files = 0 diff --git a/spyder/plugins/onlinehelp/pydoc_patch.py b/spyder/plugins/onlinehelp/pydoc_patch.py index cb38bdd61a4..0d1521619cb 100644 --- a/spyder/plugins/onlinehelp/pydoc_patch.py +++ b/spyder/plugins/onlinehelp/pydoc_patch.py @@ -24,9 +24,10 @@ import warnings # Local imports +from spyder.api.widgets.mixins import SpyderFontMixin from spyder.config.base import _, DEV from spyder.config.fonts import SpyderFontType -from spyder.config.gui import is_dark_interface, get_font +from spyder.config.gui import is_dark_interface from spyder.py3compat import to_text_string @@ -628,12 +629,14 @@ def _url_handler(url, content_type="text/html"): See https://github.com/python/cpython/blob/master/Lib/pydoc.py """ - class _HTMLDoc(CustomHTMLDoc): + class _HTMLDoc(CustomHTMLDoc, SpyderFontMixin): def page(self, title, contents): """Format an HTML page.""" - rich_text_font = get_font(option=SpyderFontType.Rich).family() - plain_text_font = get_font(option=SpyderFontType.Plain).family() + rich_text_font = self.get_font( + font_type=SpyderFontType.Rich).family() + plain_text_font = self.get_font( + font_type=SpyderFontType.Plain).family() if is_dark_interface(): css_path = "static/css/dark_pydoc.css" diff --git a/spyder/plugins/variableexplorer/widgets/arrayeditor.py b/spyder/plugins/variableexplorer/widgets/arrayeditor.py index 14d0ad7bead..7dce72396f2 100644 --- a/spyder/plugins/variableexplorer/widgets/arrayeditor.py +++ b/spyder/plugins/variableexplorer/widgets/arrayeditor.py @@ -31,9 +31,9 @@ from spyder_kernels.utils.lazymodules import numpy as np # Local imports +from spyder.api.widgets.mixins import SpyderFontMixin from spyder.config.base import _ from spyder.config.fonts import DEFAULT_SMALL_DELTA -from spyder.config.gui import get_font from spyder.config.manager import CONF from spyder.py3compat import (is_binary_string, is_string, is_text_string, to_binary_string, to_text_string) @@ -307,7 +307,9 @@ def data(self, index, role=Qt.DisplayRole): except (TypeError, ValueError): return to_qvariant() elif role == Qt.FontRole: - return to_qvariant(get_font(font_size_delta=DEFAULT_SMALL_DELTA)) + return to_qvariant( + self.get_font(font_size_delta=DEFAULT_SMALL_DELTA) + ) return to_qvariant() def setData(self, index, value, role=Qt.EditRole): @@ -384,7 +386,7 @@ def reset(self): self.endResetModel() -class ArrayDelegate(QItemDelegate): +class ArrayDelegate(QItemDelegate, SpyderFontMixin): """Array Editor Item Delegate""" def __init__(self, dtype, parent=None): QItemDelegate.__init__(self, parent) @@ -403,7 +405,9 @@ def createEditor(self, parent, option, index): return elif value is not np.ma.masked: editor = QLineEdit(parent) - editor.setFont(get_font(font_size_delta=DEFAULT_SMALL_DELTA)) + editor.setFont( + self.get_font(font_size_delta=DEFAULT_SMALL_DELTA) + ) editor.setAlignment(Qt.AlignCenter) if is_number(self.dtype): validator = QDoubleValidator(editor) diff --git a/spyder/plugins/variableexplorer/widgets/collectionsdelegate.py b/spyder/plugins/variableexplorer/widgets/collectionsdelegate.py index 76837508a17..fa6413c48ee 100644 --- a/spyder/plugins/variableexplorer/widgets/collectionsdelegate.py +++ b/spyder/plugins/variableexplorer/widgets/collectionsdelegate.py @@ -24,9 +24,9 @@ is_known_type) # Local imports +from spyder.api.widgets.mixins import SpyderFontMixin from spyder.config.base import _, is_conda_based_app from spyder.config.fonts import DEFAULT_SMALL_DELTA -from spyder.config.gui import get_font from spyder.py3compat import is_binary_string, is_text_string, to_text_string from spyder.plugins.variableexplorer.widgets.arrayeditor import ArrayEditor from spyder.plugins.variableexplorer.widgets.dataframeeditor import ( @@ -38,7 +38,7 @@ LARGE_ARRAY = 5e6 -class CollectionsDelegate(QItemDelegate): +class CollectionsDelegate(QItemDelegate, SpyderFontMixin): """CollectionsEditor Item Delegate""" sig_free_memory_requested = Signal() sig_editor_creation_started = Signal() @@ -229,7 +229,9 @@ def createEditor(self, parent, option, index, object_explorer=False): else: editor = QDateEdit(value, parent=parent) editor.setCalendarPopup(True) - editor.setFont(get_font(font_size_delta=DEFAULT_SMALL_DELTA)) + editor.setFont( + self.get_font(font_size_delta=DEFAULT_SMALL_DELTA) + ) self.sig_editor_shown.emit() return editor # TextEditor for a long string @@ -249,7 +251,9 @@ def createEditor(self, parent, option, index, object_explorer=False): return None else: editor = QLineEdit(parent=parent) - editor.setFont(get_font(font_size_delta=DEFAULT_SMALL_DELTA)) + editor.setFont( + self.get_font(font_size_delta=DEFAULT_SMALL_DELTA) + ) editor.setAlignment(Qt.AlignLeft) # This is making Spyder crash because the QLineEdit that it's # been modified is removed and a new one is created after @@ -510,7 +514,9 @@ def createEditor(self, parent, option, index): else: editor = QDateEdit(value, parent=parent) editor.setCalendarPopup(True) - editor.setFont(get_font(font_size_delta=DEFAULT_SMALL_DELTA)) + editor.setFont( + self.get_font(font_size_delta=DEFAULT_SMALL_DELTA) + ) return editor # TextEditor for a long string elif is_text_string(value) and len(value) > 40: @@ -528,7 +534,9 @@ def createEditor(self, parent, option, index): return None else: editor = QLineEdit(parent=parent) - editor.setFont(get_font(font_size_delta=DEFAULT_SMALL_DELTA)) + editor.setFont( + self.get_font(font_size_delta=DEFAULT_SMALL_DELTA) + ) editor.setAlignment(Qt.AlignLeft) # This is making Spyder crash because the QLineEdit that it's # been modified is removed and a new one is created after diff --git a/spyder/plugins/variableexplorer/widgets/dataframeeditor.py b/spyder/plugins/variableexplorer/widgets/dataframeeditor.py index ac701651c45..384f52ba110 100644 --- a/spyder/plugins/variableexplorer/widgets/dataframeeditor.py +++ b/spyder/plugins/variableexplorer/widgets/dataframeeditor.py @@ -51,9 +51,9 @@ # Local imports from spyder.api.config.mixins import SpyderConfigurationAccessor +from spyder.api.widgets.mixins import SpyderFontMixin from spyder.config.base import _ from spyder.config.fonts import DEFAULT_SMALL_DELTA -from spyder.config.gui import get_font from spyder.py3compat import (is_text_string, is_type_text_string, to_text_string) from spyder.utils.icon_manager import ima @@ -108,7 +108,7 @@ def global_max(col_vals, index): return max(max_col), min(min_col) -class DataFrameModel(QAbstractTableModel): +class DataFrameModel(QAbstractTableModel, SpyderFontMixin): """ DataFrame Table Model. @@ -375,7 +375,9 @@ def data(self, index, role=Qt.DisplayRole): elif role == Qt.BackgroundColorRole: return to_qvariant(self.get_bgcolor(index)) elif role == Qt.FontRole: - return to_qvariant(get_font(font_size_delta=DEFAULT_SMALL_DELTA)) + return to_qvariant( + self.get_font(font_size_delta=DEFAULT_SMALL_DELTA) + ) elif role == Qt.ToolTipRole: if index in self.display_error_idxs: return _("It is not possible to display this value because\n" diff --git a/spyder/plugins/variableexplorer/widgets/objectexplorer/objectexplorer.py b/spyder/plugins/variableexplorer/widgets/objectexplorer/objectexplorer.py index 32c0821d2ed..0b4da7da117 100644 --- a/spyder/plugins/variableexplorer/widgets/objectexplorer/objectexplorer.py +++ b/spyder/plugins/variableexplorer/widgets/objectexplorer/objectexplorer.py @@ -13,18 +13,18 @@ import traceback # Third-party imports -from qtpy.QtCore import Slot, Signal, QModelIndex, QPoint, QSize, Qt +from qtpy.QtCore import Slot, QModelIndex, QPoint, QSize, Qt from qtpy.QtGui import QKeySequence, QTextOption from qtpy.QtWidgets import (QAbstractItemView, QAction, QButtonGroup, - QDialog, QGroupBox, QHBoxLayout, QHeaderView, + QGroupBox, QHBoxLayout, QHeaderView, QMenu, QPushButton, QRadioButton, QSplitter, QToolButton, QVBoxLayout, QWidget) # Local imports from spyder.api.config.mixins import SpyderConfigurationAccessor +from spyder.api.widgets.mixins import SpyderFontMixin from spyder.config.base import _ from spyder.config.fonts import DEFAULT_SMALL_DELTA -from spyder.config.gui import get_font from spyder.config.manager import CONF from spyder.plugins.variableexplorer.widgets.basedialog import BaseDialog from spyder.plugins.variableexplorer.widgets.objectexplorer import ( @@ -43,7 +43,7 @@ EDITOR_NAME = 'Object' -class ObjectExplorer(BaseDialog, SpyderConfigurationAccessor): +class ObjectExplorer(BaseDialog, SpyderConfigurationAccessor, SpyderFontMixin): """Object explorer main widget window.""" CONF_SECTION = 'variable_explorer' @@ -407,7 +407,7 @@ def _update_details_for_item(self, tree_item): self.editor.setPlainText(data) self.editor.setWordWrapMode(attr_details.line_wrap) self.editor.setup_editor( - font=get_font(font_size_delta=DEFAULT_SMALL_DELTA), + font=self.get_font(font_size_delta=DEFAULT_SMALL_DELTA), show_blanks=False, color_scheme=CONF.get('appearance', 'selected'), scroll_past_end=False, diff --git a/spyder/plugins/variableexplorer/widgets/objectexplorer/tree_model.py b/spyder/plugins/variableexplorer/widgets/objectexplorer/tree_model.py index a42ed2e96cd..007d8ac97a0 100644 --- a/spyder/plugins/variableexplorer/widgets/objectexplorer/tree_model.py +++ b/spyder/plugins/variableexplorer/widgets/objectexplorer/tree_model.py @@ -20,11 +20,10 @@ from qtpy.QtCore import (QAbstractItemModel, QModelIndex, Qt, QSortFilterProxyModel, Signal) from qtpy.QtGui import QBrush, QColor -from spyder_kernels.utils.nsview import is_editable_type # Local imports +from spyder.api.widgets.mixins import SpyderFontMixin from spyder.config.base import _ -from spyder.config.gui import get_font from spyder.plugins.variableexplorer.widgets.objectexplorer.utils import ( cut_off_str) from spyder.plugins.variableexplorer.widgets.objectexplorer.tree_item import ( @@ -45,7 +44,7 @@ # The main window inherits from a Qt class, therefore it has many # ancestors public methods and attributes. -class TreeModel(QAbstractItemModel): +class TreeModel(QAbstractItemModel, SpyderFontMixin): """ Model that provides an interface to an objectree that is build of TreeItems. @@ -70,11 +69,13 @@ def __init__(self, self._attr_cols = attr_cols # Font for members (non-functions) - self.regular_font = regular_font if regular_font else get_font() + self.regular_font = regular_font if regular_font else self.get_font() + # Font for __special_attributes__ - self.special_attribute_font = (special_attribute_font - if special_attribute_font - else get_font()) + self.special_attribute_font = ( + special_attribute_font if special_attribute_font + else self.get_font() + ) self.special_attribute_font.setItalic(False) self.regular_color = QBrush(QColor(ima.MAIN_FG_COLOR)) diff --git a/spyder/plugins/variableexplorer/widgets/texteditor.py b/spyder/plugins/variableexplorer/widgets/texteditor.py index fce9295f5fd..6ae04ba2b3a 100644 --- a/spyder/plugins/variableexplorer/widgets/texteditor.py +++ b/spyder/plugins/variableexplorer/widgets/texteditor.py @@ -13,19 +13,18 @@ # Third party imports from qtpy.QtCore import Qt, Slot -from qtpy.QtWidgets import (QDialog, QHBoxLayout, QPushButton, QTextEdit, - QVBoxLayout) +from qtpy.QtWidgets import QHBoxLayout, QPushButton, QTextEdit, QVBoxLayout # Local import +from spyder.api.widgets.mixins import SpyderFontMixin from spyder.config.base import _ -from spyder.config.gui import get_font from spyder.py3compat import (is_binary_string, to_binary_string, to_text_string) from spyder.utils.icon_manager import ima from spyder.plugins.variableexplorer.widgets.basedialog import BaseDialog -class TextEditor(BaseDialog): +class TextEditor(BaseDialog, SpyderFontMixin): """Array Editor Dialog""" def __init__(self, text, title='', font=None, parent=None, readonly=False): super().__init__(parent) @@ -56,7 +55,7 @@ def __init__(self, text, title='', font=None, parent=None, readonly=False): self.edit.textChanged.connect(self.text_changed) self.edit.setPlainText(text) if font is None: - font = get_font() + font = self.get_font() self.edit.setFont(font) self.layout.addWidget(self.edit) diff --git a/spyder/widgets/collectionseditor.py b/spyder/widgets/collectionseditor.py index 603b0d6f193..69f76ebfe36 100644 --- a/spyder/widgets/collectionseditor.py +++ b/spyder/widgets/collectionseditor.py @@ -44,10 +44,10 @@ # Local imports from spyder.api.config.mixins import SpyderConfigurationAccessor +from spyder.api.widgets.mixins import SpyderFontMixin from spyder.api.widgets.toolbars import SpyderToolbar from spyder.config.base import _, running_under_pytest from spyder.config.fonts import DEFAULT_SMALL_DELTA -from spyder.config.gui import get_font from spyder.py3compat import (is_binary_string, to_text_string, is_type_text_string) from spyder.utils.icon_manager import ima @@ -128,7 +128,7 @@ def __setitem__(self, key, value): raise -class ReadOnlyCollectionsModel(QAbstractTableModel): +class ReadOnlyCollectionsModel(QAbstractTableModel, SpyderFontMixin): """CollectionsEditor Read-Only Table Model""" sig_setting_data = Signal() @@ -440,7 +440,9 @@ def data(self, index, role=Qt.DisplayRole): elif role == Qt.BackgroundColorRole: return to_qvariant(self.get_bgcolor(index)) elif role == Qt.FontRole: - return to_qvariant(get_font(font_size_delta=DEFAULT_SMALL_DELTA)) + return to_qvariant( + self.get_font(font_size_delta=DEFAULT_SMALL_DELTA) + ) return to_qvariant() def headerData(self, section, orientation, role=Qt.DisplayRole): diff --git a/spyder/widgets/reporterror.py b/spyder/widgets/reporterror.py index 89a6120cb9e..efb2bc3aee4 100644 --- a/spyder/widgets/reporterror.py +++ b/spyder/widgets/reporterror.py @@ -23,8 +23,8 @@ from spyder import (__project_url__, __trouble_url__, dependencies, get_versions_text) from spyder.api.config.mixins import SpyderConfigurationAccessor +from spyder.api.widgets.mixins import SpyderFontMixin from spyder.config.base import _, is_conda_based_app -from spyder.config.gui import get_font from spyder.plugins.console.widgets.console import ConsoleBaseWidget from spyder.utils.conda import is_conda_env, get_conda_env_path, find_conda from spyder.utils.icon_manager import ima @@ -41,7 +41,7 @@ DESC_MIN_CHARS = 50 -class DescriptionWidget(SimpleCodeEditor): +class DescriptionWidget(SimpleCodeEditor, SpyderFontMixin): """Widget to enter error description.""" def __init__(self, parent=None): @@ -50,7 +50,7 @@ def __init__(self, parent=None): # Editor options self.setup_editor( language='md', - font=get_font(), + font=self.get_font(), wrap=True, linenumbers=False, highlight_current_line=False, @@ -124,7 +124,7 @@ def __init__(self, parent=None): self.setReadOnly(True) -class SpyderErrorDialog(QDialog, SpyderConfigurationAccessor): +class SpyderErrorDialog(QDialog, SpyderConfigurationAccessor, SpyderFontMixin): """Custom error dialog for error reporting.""" def __init__(self, parent=None, is_report=False): @@ -195,7 +195,7 @@ def __init__(self, parent=None, is_report=False): # Widget to show errors self.details = ShowErrorWidget(self) - self.details.set_pythonshell_font(get_font()) + self.details.set_pythonshell_font(self.get_font()) self.details.hide() self.description_minimum_length = DESC_MIN_CHARS