Adjust History icon and reorder toolbar items. Try to address checkbox/bullet size issues (again)
This commit is contained in:
parent
fdc72a1146
commit
576dc435ef
4 changed files with 56 additions and 16 deletions
|
|
@ -1,6 +1,8 @@
|
||||||
# 0.5.2
|
# 0.5.2
|
||||||
|
|
||||||
* Update icon again to remove background
|
* Update icon again to remove background
|
||||||
|
* Adjust History icon and reorder toolbar items
|
||||||
|
* Try to address checkbox/bullet size issues (again)
|
||||||
|
|
||||||
# 0.5.1
|
# 0.5.1
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -119,6 +119,22 @@ class MarkdownEditor(QTextEdit):
|
||||||
self._apply_code_block_spacing()
|
self._apply_code_block_spacing()
|
||||||
QTimer.singleShot(0, self._update_code_block_row_backgrounds)
|
QTimer.singleShot(0, self._update_code_block_row_backgrounds)
|
||||||
|
|
||||||
|
def setFont(self, font: QFont) -> None: # type: ignore[override]
|
||||||
|
"""
|
||||||
|
Ensure that whenever the base editor font changes, our highlighter
|
||||||
|
re-computes checkbox / bullet formats.
|
||||||
|
"""
|
||||||
|
# Keep qfont in sync
|
||||||
|
self.qfont = QFont(font)
|
||||||
|
super().setFont(self.qfont)
|
||||||
|
|
||||||
|
# If the highlighter is already attached, let it rebuild its formats
|
||||||
|
highlighter = getattr(self, "highlighter", None)
|
||||||
|
if highlighter is not None:
|
||||||
|
refresh = getattr(highlighter, "refresh_for_font_change", None)
|
||||||
|
if callable(refresh):
|
||||||
|
refresh()
|
||||||
|
|
||||||
def showEvent(self, e):
|
def showEvent(self, e):
|
||||||
super().showEvent(e)
|
super().showEvent(e)
|
||||||
# First time the widget is shown, Qt may rebuild layout once more.
|
# First time the widget is shown, Qt may rebuild layout once more.
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ from PySide6.QtGui import (
|
||||||
QColor,
|
QColor,
|
||||||
QFont,
|
QFont,
|
||||||
QFontDatabase,
|
QFontDatabase,
|
||||||
|
QFontMetrics,
|
||||||
QGuiApplication,
|
QGuiApplication,
|
||||||
QPalette,
|
QPalette,
|
||||||
QSyntaxHighlighter,
|
QSyntaxHighlighter,
|
||||||
|
|
@ -33,6 +34,14 @@ class MarkdownHighlighter(QSyntaxHighlighter):
|
||||||
self._setup_formats()
|
self._setup_formats()
|
||||||
self.rehighlight()
|
self.rehighlight()
|
||||||
|
|
||||||
|
def refresh_for_font_change(self) -> None:
|
||||||
|
"""
|
||||||
|
Called when the editor's base font changes (zoom / settings).
|
||||||
|
It rebuilds any formats that depend on the editor font metrics.
|
||||||
|
"""
|
||||||
|
self._setup_formats()
|
||||||
|
self.rehighlight()
|
||||||
|
|
||||||
def _setup_formats(self):
|
def _setup_formats(self):
|
||||||
"""Setup text formats for different markdown elements."""
|
"""Setup text formats for different markdown elements."""
|
||||||
|
|
||||||
|
|
@ -110,8 +119,21 @@ class MarkdownHighlighter(QSyntaxHighlighter):
|
||||||
|
|
||||||
# Use Symbols font for checkbox and bullet glyphs if present
|
# Use Symbols font for checkbox and bullet glyphs if present
|
||||||
if self._editor is not None and hasattr(self._editor, "symbols_font_family"):
|
if self._editor is not None and hasattr(self._editor, "symbols_font_family"):
|
||||||
base_size = self._editor.qfont.pointSize()
|
base_font = QFont(self._editor.qfont) # copy of editor font
|
||||||
symbols_font = QFont(self._editor.symbols_font_family, base_size)
|
symbols_font = QFont(self._editor.symbols_font_family)
|
||||||
|
symbols_font.setPointSizeF(base_font.pointSizeF())
|
||||||
|
|
||||||
|
base_metrics = QFontMetrics(base_font)
|
||||||
|
sym_metrics = QFontMetrics(symbols_font)
|
||||||
|
|
||||||
|
# If Symbols glyphs are noticeably shorter than the text,
|
||||||
|
# scale them up so the visual heights roughly match.
|
||||||
|
if sym_metrics.height() > 0:
|
||||||
|
ratio = base_metrics.height() / sym_metrics.height()
|
||||||
|
if ratio > 1.05: # more than ~5% smaller
|
||||||
|
ratio = min(ratio, 1.4) # Oh, Tod, Tod. Don't overdo it.
|
||||||
|
symbols_font.setPointSizeF(symbols_font.pointSizeF() * ratio)
|
||||||
|
|
||||||
self.checkbox_format.setFont(symbols_font)
|
self.checkbox_format.setFont(symbols_font)
|
||||||
self.bullet_format.setFont(symbols_font)
|
self.bullet_format.setFont(symbols_font)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -100,6 +100,17 @@ class ToolBar(QToolBar):
|
||||||
self.actCheckboxes.setToolTip(strings._("toolbar_toggle_checkboxes"))
|
self.actCheckboxes.setToolTip(strings._("toolbar_toggle_checkboxes"))
|
||||||
self.actCheckboxes.triggered.connect(self.checkboxesRequested)
|
self.actCheckboxes.triggered.connect(self.checkboxesRequested)
|
||||||
|
|
||||||
|
# Images
|
||||||
|
self.actInsertImg = QAction("📸", self)
|
||||||
|
self.actInsertImg.setToolTip(strings._("insert_images"))
|
||||||
|
self.actInsertImg.setShortcut("Ctrl+Shift+I")
|
||||||
|
self.actInsertImg.triggered.connect(self.insertImageRequested)
|
||||||
|
|
||||||
|
# History button
|
||||||
|
self.actHistory = QAction("🔁", self)
|
||||||
|
self.actHistory.setToolTip(strings._("history"))
|
||||||
|
self.actHistory.triggered.connect(self.historyRequested)
|
||||||
|
|
||||||
# Alarm / reminder
|
# Alarm / reminder
|
||||||
self.actAlarm = QAction("⏰", self)
|
self.actAlarm = QAction("⏰", self)
|
||||||
self.actAlarm.setToolTip(strings._("toolbar_alarm"))
|
self.actAlarm.setToolTip(strings._("toolbar_alarm"))
|
||||||
|
|
@ -115,17 +126,6 @@ class ToolBar(QToolBar):
|
||||||
self.actTable.setToolTip(strings._("toolbar_insert_table"))
|
self.actTable.setToolTip(strings._("toolbar_insert_table"))
|
||||||
self.actTable.triggered.connect(self.tableRequested)
|
self.actTable.triggered.connect(self.tableRequested)
|
||||||
|
|
||||||
# Images
|
|
||||||
self.actInsertImg = QAction("📸", self)
|
|
||||||
self.actInsertImg.setToolTip(strings._("insert_images"))
|
|
||||||
self.actInsertImg.setShortcut("Ctrl+Shift+I")
|
|
||||||
self.actInsertImg.triggered.connect(self.insertImageRequested)
|
|
||||||
|
|
||||||
# History button
|
|
||||||
self.actHistory = QAction("⎌", self)
|
|
||||||
self.actHistory.setToolTip(strings._("history"))
|
|
||||||
self.actHistory.triggered.connect(self.historyRequested)
|
|
||||||
|
|
||||||
# Set exclusive buttons in QActionGroups
|
# Set exclusive buttons in QActionGroups
|
||||||
self.grpHeadings = QActionGroup(self)
|
self.grpHeadings = QActionGroup(self)
|
||||||
self.grpHeadings.setExclusive(True)
|
self.grpHeadings.setExclusive(True)
|
||||||
|
|
@ -162,10 +162,10 @@ class ToolBar(QToolBar):
|
||||||
self.actBullets,
|
self.actBullets,
|
||||||
self.actNumbers,
|
self.actNumbers,
|
||||||
self.actCheckboxes,
|
self.actCheckboxes,
|
||||||
self.actAlarm,
|
|
||||||
self.actTimer,
|
|
||||||
self.actTable,
|
self.actTable,
|
||||||
self.actInsertImg,
|
self.actInsertImg,
|
||||||
|
self.actAlarm,
|
||||||
|
self.actTimer,
|
||||||
self.actHistory,
|
self.actHistory,
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
@ -195,7 +195,7 @@ class ToolBar(QToolBar):
|
||||||
self._style_letter_button(self.actTable, "⊞")
|
self._style_letter_button(self.actTable, "⊞")
|
||||||
|
|
||||||
# History
|
# History
|
||||||
self._style_letter_button(self.actHistory, "⎌")
|
self._style_letter_button(self.actHistory, "🔁")
|
||||||
|
|
||||||
def _style_letter_button(
|
def _style_letter_button(
|
||||||
self,
|
self,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue