mirror of
https://github.com/ankitects/anki.git
synced 2025-09-18 14:02:21 -04:00
Turn edit window into a QMainWindow (#2732)
* Turn edit window into a QMainWindow * Ensure dialog is garbage collected (dae)
This commit is contained in:
parent
fea1fc288b
commit
115f2a425e
2 changed files with 46 additions and 53 deletions
|
@ -7,18 +7,16 @@ from anki.collection import OpChanges
|
||||||
from anki.errors import NotFoundError
|
from anki.errors import NotFoundError
|
||||||
from aqt import gui_hooks
|
from aqt import gui_hooks
|
||||||
from aqt.qt import *
|
from aqt.qt import *
|
||||||
from aqt.utils import disable_help_button, restoreGeom, saveGeom, tr
|
from aqt.utils import restoreGeom, saveGeom, tr
|
||||||
|
|
||||||
|
|
||||||
class EditCurrent(QDialog):
|
class EditCurrent(QMainWindow):
|
||||||
def __init__(self, mw: aqt.AnkiQt) -> None:
|
def __init__(self, mw: aqt.AnkiQt) -> None:
|
||||||
QDialog.__init__(self, None, Qt.WindowType.Window)
|
super().__init__(None, Qt.WindowType.Window)
|
||||||
mw.garbage_collect_on_dialog_finish(self)
|
|
||||||
self.mw = mw
|
self.mw = mw
|
||||||
self.form = aqt.forms.editcurrent.Ui_Dialog()
|
self.form = aqt.forms.editcurrent.Ui_Dialog()
|
||||||
self.form.setupUi(self)
|
self.form.setupUi(self)
|
||||||
self.setWindowTitle(tr.editing_edit_current())
|
self.setWindowTitle(tr.editing_edit_current())
|
||||||
disable_help_button(self)
|
|
||||||
self.setMinimumHeight(400)
|
self.setMinimumHeight(400)
|
||||||
self.setMinimumWidth(250)
|
self.setMinimumWidth(250)
|
||||||
self.editor = aqt.editor.Editor(
|
self.editor = aqt.editor.Editor(
|
||||||
|
@ -46,30 +44,29 @@ class EditCurrent(QDialog):
|
||||||
note.load()
|
note.load()
|
||||||
except NotFoundError:
|
except NotFoundError:
|
||||||
# note's been deleted
|
# note's been deleted
|
||||||
self.cleanup_and_close()
|
self.cleanup()
|
||||||
|
self.close()
|
||||||
return
|
return
|
||||||
|
|
||||||
self.editor.set_note(note)
|
self.editor.set_note(note)
|
||||||
|
|
||||||
def cleanup_and_close(self) -> None:
|
def cleanup(self) -> None:
|
||||||
gui_hooks.operation_did_execute.remove(self.on_operation_did_execute)
|
gui_hooks.operation_did_execute.remove(self.on_operation_did_execute)
|
||||||
self.editor.cleanup()
|
self.editor.cleanup()
|
||||||
saveGeom(self, "editcurrent")
|
saveGeom(self, "editcurrent")
|
||||||
aqt.dialogs.markClosed("EditCurrent")
|
aqt.dialogs.markClosed("EditCurrent")
|
||||||
QDialog.reject(self)
|
|
||||||
|
|
||||||
def reopen(self, mw: aqt.AnkiQt) -> None:
|
def reopen(self, mw: aqt.AnkiQt) -> None:
|
||||||
if card := self.mw.reviewer.card:
|
if card := self.mw.reviewer.card:
|
||||||
self.editor.set_note(card.note())
|
self.editor.set_note(card.note())
|
||||||
|
|
||||||
def reject(self) -> None:
|
def closeEvent(self, evt: QCloseEvent) -> None:
|
||||||
self.saveAndClose()
|
self.editor.call_after_note_saved(self.cleanup)
|
||||||
|
|
||||||
def saveAndClose(self) -> None:
|
|
||||||
self.editor.call_after_note_saved(self._saveAndClose)
|
|
||||||
|
|
||||||
def _saveAndClose(self) -> None:
|
def _saveAndClose(self) -> None:
|
||||||
self.cleanup_and_close()
|
self.cleanup()
|
||||||
|
self.mw.deferred_delete_and_garbage_collect(self)
|
||||||
|
self.close()
|
||||||
|
|
||||||
def closeWithCallback(self, onsuccess: Callable[[], None]) -> None:
|
def closeWithCallback(self, onsuccess: Callable[[], None]) -> None:
|
||||||
def callback() -> None:
|
def callback() -> None:
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<ui version="4.0">
|
<ui version="4.0">
|
||||||
<class>Dialog</class>
|
<class>Dialog</class>
|
||||||
<widget class="QDialog" name="Dialog">
|
<widget class="QMainWindow" name="Dialog">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
|
@ -17,53 +17,49 @@
|
||||||
<iconset resource="icons.qrc">
|
<iconset resource="icons.qrc">
|
||||||
<normaloff>:/icons/anki.png</normaloff>:/icons/anki.png</iconset>
|
<normaloff>:/icons/anki.png</normaloff>:/icons/anki.png</iconset>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout">
|
<widget class="QWidget" name="centralwidget">
|
||||||
<property name="spacing">
|
<layout class="QVBoxLayout" name="verticalLayout">
|
||||||
<number>3</number>
|
<property name="spacing">
|
||||||
</property>
|
<number>3</number>
|
||||||
<property name="margin">
|
</property>
|
||||||
<number>12</number>
|
<property name="margin">
|
||||||
</property>
|
<number>12</number>
|
||||||
<item>
|
</property>
|
||||||
<widget class="QWidget" name="fieldsArea" native="true"/>
|
<item>
|
||||||
</item>
|
<widget class="QWidget" name="fieldsArea" native="true"/>
|
||||||
<item>
|
</item>
|
||||||
<widget class="QDialogButtonBox" name="buttonBox">
|
<item>
|
||||||
<property name="orientation">
|
<widget class="QDialogButtonBox" name="buttonBox">
|
||||||
<enum>Qt::Horizontal</enum>
|
<property name="orientation">
|
||||||
</property>
|
<enum>Qt::Horizontal</enum>
|
||||||
<property name="standardButtons">
|
</property>
|
||||||
<set>QDialogButtonBox::Close</set>
|
<property name="standardButtons">
|
||||||
</property>
|
<set>QDialogButtonBox::Close</set>
|
||||||
</widget>
|
</property>
|
||||||
</item>
|
</widget>
|
||||||
</layout>
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<widget class="QMenuBar" name="menubar">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>750</width>
|
||||||
|
<height>22</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
<resources>
|
<resources>
|
||||||
<include location="icons.qrc"/>
|
<include location="icons.qrc"/>
|
||||||
</resources>
|
</resources>
|
||||||
<connections>
|
<connections>
|
||||||
<connection>
|
|
||||||
<sender>buttonBox</sender>
|
|
||||||
<signal>accepted()</signal>
|
|
||||||
<receiver>Dialog</receiver>
|
|
||||||
<slot>accept()</slot>
|
|
||||||
<hints>
|
|
||||||
<hint type="sourcelabel">
|
|
||||||
<x>248</x>
|
|
||||||
<y>254</y>
|
|
||||||
</hint>
|
|
||||||
<hint type="destinationlabel">
|
|
||||||
<x>157</x>
|
|
||||||
<y>274</y>
|
|
||||||
</hint>
|
|
||||||
</hints>
|
|
||||||
</connection>
|
|
||||||
<connection>
|
<connection>
|
||||||
<sender>buttonBox</sender>
|
<sender>buttonBox</sender>
|
||||||
<signal>rejected()</signal>
|
<signal>rejected()</signal>
|
||||||
<receiver>Dialog</receiver>
|
<receiver>Dialog</receiver>
|
||||||
<slot>reject()</slot>
|
<slot>close()</slot>
|
||||||
<hints>
|
<hints>
|
||||||
<hint type="sourcelabel">
|
<hint type="sourcelabel">
|
||||||
<x>316</x>
|
<x>316</x>
|
||||||
|
|
Loading…
Reference in a new issue