Allow deleting code blocks
Some checks failed
CI / test (push) Failing after 5m30s
Lint / test (push) Successful in 33s
Trivy / test (push) Successful in 24s

This commit is contained in:
Miguel Jacq 2025-11-29 10:41:18 +11:00
parent 57f11abb99
commit dc1046632c
Signed by: mig5
GPG key ID: 59B3F0C24135C6A9
4 changed files with 90 additions and 3 deletions

View file

@ -13,7 +13,9 @@ from . import strings
class CodeBlockEditorDialog(QDialog):
def __init__(self, code: str, language: str | None, parent=None):
def __init__(
self, code: str, language: str | None, parent=None, allow_delete: bool = False
):
super().__init__(parent)
self.setWindowTitle(strings._("edit_code_block"))
@ -21,6 +23,9 @@ class CodeBlockEditorDialog(QDialog):
self._code_edit = QPlainTextEdit(self)
self._code_edit.setPlainText(code)
# Track whether the user clicked "Delete"
self._delete_requested = False
# Language selector (optional)
self._lang_combo = QComboBox(self)
languages = [
@ -44,12 +49,28 @@ class CodeBlockEditorDialog(QDialog):
buttons.accepted.connect(self.accept)
buttons.rejected.connect(self.reject)
if allow_delete:
delete_btn = buttons.addButton(
strings._("delete_code_block"),
QDialogButtonBox.ButtonRole.DestructiveRole,
)
delete_btn.clicked.connect(self._on_delete_clicked)
layout = QVBoxLayout(self)
layout.addWidget(QLabel(strings._("locale") + ":", self))
layout.addWidget(self._lang_combo)
layout.addWidget(self._code_edit)
layout.addWidget(buttons)
def _on_delete_clicked(self) -> None:
"""Mark this dialog as 'delete requested' and close as Accepted."""
self._delete_requested = True
self.accept()
def was_deleted(self) -> bool:
"""Return True if the user chose to delete the code block."""
return self._delete_requested
def code(self) -> str:
return self._code_edit.toPlainText()