Make add cards dialog a main window (#1486)

Closes #980.
This commit is contained in:
RumovZ 2021-11-14 02:33:59 +01:00 committed by GitHub
parent 5f05eeb922
commit 63316f763d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 458 additions and 85 deletions

View File

@ -19,9 +19,7 @@ from aqt.qt import *
from aqt.sound import av_player
from aqt.utils import (
HelpPage,
addCloseShortcut,
askUser,
disable_help_button,
downArrow,
openHelp,
restoreGeom,
@ -33,17 +31,16 @@ from aqt.utils import (
)
class AddCards(QDialog):
class AddCards(QMainWindow):
def __init__(self, mw: AnkiQt) -> None:
QDialog.__init__(self, None, Qt.WindowType.Window)
mw.garbage_collect_on_dialog_finish(self)
super().__init__(None, Qt.WindowType.Window)
self._close_event_has_cleaned_up = False
self.mw = mw
self.col = mw.col
form = aqt.forms.addcards.Ui_Dialog()
form.setupUi(self)
self.form = form
self.setWindowTitle(tr.actions_add())
disable_help_button(self)
self.setMinimumHeight(300)
self.setMinimumWidth(400)
self.setup_choosers()
@ -54,7 +51,6 @@ class AddCards(QDialog):
self._last_added_note: Optional[Note] = None
gui_hooks.operation_did_execute.append(self.on_operation_did_execute)
restoreGeom(self, "add")
addCloseShortcut(self)
gui_hooks.add_cards_did_init(self)
self.show()
@ -264,10 +260,20 @@ class AddCards(QDialog):
return True
def reject(self) -> None:
self.ifCanClose(self._reject)
def keyPressEvent(self, evt: QKeyEvent) -> None:
if evt.key() == Qt.Key.Key_Escape:
self.close()
else:
super().keyPressEvent(evt)
def _reject(self) -> None:
def closeEvent(self, evt: QCloseEvent) -> None:
if self._close_event_has_cleaned_up:
evt.accept()
return
self.ifCanClose(self._close)
evt.ignore()
def _close(self) -> None:
av_player.stop_and_clear_queue()
self.editor.cleanup()
self.notetype_chooser.cleanup()
@ -276,7 +282,9 @@ class AddCards(QDialog):
self.mw.maybeReset()
saveGeom(self, "add")
aqt.dialogs.markClosed("AddCards")
QDialog.reject(self)
self._close_event_has_cleaned_up = True
self.mw.deferred_delete_and_garbage_collect(self)
self.close()
def ifCanClose(self, onOk: Callable) -> None:
def afterSave() -> None:
@ -290,7 +298,7 @@ class AddCards(QDialog):
def closeWithCallback(self, cb: Callable[[], None]) -> None:
def doClose() -> None:
self._reject()
self._close()
cb()
self.ifCanClose(doClose)

View File

@ -1,25 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Dialog</class>
<widget class="QDialog" name="Dialog">
<widget class="QMainWindow" name="Dialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>453</width>
<height>366</height>
<width>750</width>
<height>493</height>
</rect>
</property>
<property name="windowTitle">
<string>actions_add</string>
<property name="minimumSize">
<size>
<width>400</width>
<height>400</height>
</size>
</property>
<property name="windowIcon">
<iconset resource="icons.qrc">
<iconset>
<normaloff>:/icons/anki.png</normaloff>:/icons/anki.png</iconset>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<widget class="QWidget" name="centralwidget">
<layout class="QVBoxLayout" name="verticalLayout_3">
<property name="spacing">
<number>3</number>
<number>12</number>
</property>
<property name="leftMargin">
<number>12</number>
@ -71,9 +75,6 @@
</item>
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::NoButton</set>
</property>
@ -81,26 +82,390 @@
</item>
</layout>
</widget>
<tabstops>
<tabstop>buttonBox</tabstop>
</tabstops>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>750</width>
<height>26</height>
</rect>
</property>
</widget>
<action name="actionReschedule">
<property name="text">
<string notr="true">QT_ACCEL_RESCHEDULE</string>
</property>
</action>
<action name="actionSelectAll">
<property name="text">
<string>qt_accel_select_all</string>
</property>
<property name="shortcut">
<string notr="true">Ctrl+Alt+A</string>
</property>
</action>
<action name="actionUndo">
<property name="text">
<string>qt_accel_undo</string>
</property>
<property name="shortcut">
<string notr="true">Ctrl+Z</string>
</property>
</action>
<action name="actionInvertSelection">
<property name="text">
<string>qt_accel_invert_selection</string>
</property>
<property name="shortcut">
<string notr="true">Ctrl+Alt+S</string>
</property>
</action>
<action name="actionFind">
<property name="text">
<string>qt_accel_find</string>
</property>
<property name="shortcut">
<string notr="true">Ctrl+F</string>
</property>
</action>
<action name="actionNote">
<property name="text">
<string>qt_accel_note</string>
</property>
<property name="shortcut">
<string notr="true">Ctrl+Shift+N</string>
</property>
</action>
<action name="actionNextCard">
<property name="text">
<string>qt_accel_next_card</string>
</property>
<property name="shortcut">
<string notr="true">Ctrl+N</string>
</property>
</action>
<action name="actionPreviousCard">
<property name="text">
<string>qt_accel_previous_card</string>
</property>
<property name="shortcut">
<string notr="true">Ctrl+P</string>
</property>
</action>
<action name="actionGuide">
<property name="text">
<string>qt_accel_guide</string>
</property>
<property name="shortcut">
<string notr="true">F1</string>
</property>
</action>
<action name="actionChangeModel">
<property name="text">
<string>browsing_change_note_type2</string>
</property>
<property name="shortcut">
<string notr="true">Ctrl+Shift+M</string>
</property>
</action>
<action name="actionSelectNotes">
<property name="text">
<string>qt_accel_select_notes</string>
</property>
</action>
<action name="actionFindReplace">
<property name="text">
<string>qt_accel_find_and_replace</string>
</property>
<property name="shortcut">
<string notr="true">Ctrl+Alt+F</string>
</property>
</action>
<action name="actionSidebarFilter">
<property name="text">
<string>qt_accel_filter</string>
</property>
<property name="shortcut">
<string notr="true">Ctrl+Shift+F</string>
</property>
</action>
<action name="actionCardList">
<property name="text">
<string>browsing_card_list</string>
</property>
<property name="shortcut">
<string notr="true">Ctrl+Shift+L</string>
</property>
</action>
<action name="actionFindDuplicates">
<property name="text">
<string>qt_accel_find_duplicates</string>
</property>
</action>
<action name="actionReposition">
<property name="text">
<string>browsing_reposition</string>
</property>
<property name="shortcut">
<string notr="true">Ctrl+Shift+S</string>
</property>
</action>
<action name="actionFirstCard">
<property name="text">
<string>browsing_first_card</string>
</property>
<property name="shortcut">
<string notr="true">Home</string>
</property>
</action>
<action name="actionLastCard">
<property name="text">
<string>browsing_last_card</string>
</property>
<property name="shortcut">
<string notr="true">End</string>
</property>
</action>
<action name="actionClose">
<property name="text">
<string>actions_close</string>
</property>
<property name="shortcut">
<string notr="true">Ctrl+W</string>
</property>
</action>
<action name="action_Info">
<property name="text">
<string>qt_accel_info</string>
</property>
<property name="shortcut">
<string notr="true">Ctrl+Shift+I</string>
</property>
</action>
<action name="actionAdd_Tags">
<property name="text">
<string>browsing_add_tags2</string>
</property>
<property name="shortcut">
<string notr="true">Ctrl+Shift+A</string>
</property>
</action>
<action name="actionRemove_Tags">
<property name="text">
<string>browsing_remove_tags</string>
</property>
<property name="shortcut">
<string notr="true">Ctrl+Alt+Shift+A</string>
</property>
</action>
<action name="actionToggle_Suspend">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>browsing_toggle_suspend</string>
</property>
<property name="shortcut">
<string notr="true">Ctrl+J</string>
</property>
</action>
<action name="actionDelete">
<property name="text">
<string>actions_delete</string>
</property>
<property name="shortcut">
<string notr="true">Ctrl+Del</string>
</property>
</action>
<action name="actionAdd">
<property name="text">
<string>browsing_add_notes</string>
</property>
<property name="shortcut">
<string notr="true">Ctrl+E</string>
</property>
</action>
<action name="actionChange_Deck">
<property name="text">
<string>browsing_change_deck2</string>
</property>
<property name="shortcut">
<string notr="true">Ctrl+D</string>
</property>
</action>
<action name="actionRed_Flag">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>actions_flag_red</string>
</property>
<property name="shortcut">
<string notr="true">Ctrl+1</string>
</property>
</action>
<action name="actionOrange_Flag">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>actions_flag_orange</string>
</property>
<property name="shortcut">
<string notr="true">Ctrl+2</string>
</property>
</action>
<action name="actionGreen_Flag">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>actions_flag_green</string>
</property>
<property name="shortcut">
<string notr="true">Ctrl+3</string>
</property>
</action>
<action name="actionBlue_Flag">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>actions_flag_blue</string>
</property>
<property name="shortcut">
<string notr="true">Ctrl+4</string>
</property>
</action>
<action name="actionSidebar">
<property name="text">
<string>browsing_sidebar</string>
</property>
<property name="shortcut">
<string notr="true">Ctrl+Shift+R</string>
</property>
</action>
<action name="actionClear_Unused_Tags">
<property name="text">
<string>browsing_clear_unused_tags</string>
</property>
</action>
<action name="actionManage_Note_Types">
<property name="text">
<string>browsing_manage_note_types</string>
</property>
</action>
<action name="actionToggle_Mark">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>browsing_toggle_mark</string>
</property>
<property name="shortcut">
<string notr="true">Ctrl+K</string>
</property>
</action>
<action name="actionExport">
<property name="text">
<string>qt_accel_export_notes</string>
</property>
<property name="shortcut">
<string notr="true">Ctrl+Shift+E</string>
</property>
</action>
<action name="actionCreateFilteredDeck">
<property name="text">
<string>qt_misc_create_filtered_deck</string>
</property>
<property name="shortcut">
<string notr="true">Ctrl+G</string>
</property>
</action>
<action name="action_set_due_date">
<property name="text">
<string>qt_accel_set_due_date</string>
</property>
<property name="shortcut">
<string notr="true">Ctrl+Shift+D</string>
</property>
</action>
<action name="action_forget">
<property name="text">
<string>qt_accel_forget</string>
</property>
<property name="shortcut">
<string notr="true">Ctrl+Alt+N</string>
</property>
</action>
<action name="action_toggle_mode">
<property name="text">
<string>browsing_toggle_showing_cards_notes</string>
</property>
<property name="shortcut">
<string notr="true">Alt+T</string>
</property>
</action>
<action name="actionRedo">
<property name="text">
<string>qt_accel_redo</string>
</property>
<property name="shortcut">
<string notr="true">Ctrl+Shift+Z</string>
</property>
</action>
<action name="actionPink_Flag">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>actions_flag_pink</string>
</property>
<property name="shortcut">
<string notr="true">Ctrl+5</string>
</property>
</action>
<action name="actionTurquoise_Flag">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>actions_flag_turquoise</string>
</property>
<property name="shortcut">
<string notr="true">Ctrl+6</string>
</property>
</action>
<action name="actionPurple_Flag">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>actions_flag_purple</string>
</property>
<property name="shortcut">
<string notr="true">Ctrl+7</string>
</property>
</action>
</widget>
<resources>
<include location="icons.qrc"/>
</resources>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<sender>actionClose</sender>
<signal>triggered()</signal>
<receiver>Dialog</receiver>
<slot>reject()</slot>
<slot>close()</slot>
<hints>
<hint type="sourcelabel">
<x>301</x>
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
<x>374</x>
<y>199</y>
</hint>
</hints>
</connection>