mirror of
https://github.com/ankitects/anki.git
synced 2025-09-18 14:02:21 -04:00
Make dialogs non-blocking (#1650)
* Call StudyDeck with callback * StudyDeck w/ callback, remove redundant assignment * Replace exec() with show() for various dialogs * Update super init args for Models.__init__ * Make StudyDialog ApplicationModal
This commit is contained in:
parent
4653873db9
commit
4b9b923775
8 changed files with 47 additions and 36 deletions
|
@ -673,19 +673,22 @@ class Browser(QMainWindow):
|
|||
cids = self.table.get_selected_card_ids()
|
||||
did = self.mw.col.db.scalar("select did from cards where id = ?", cids[0])
|
||||
current = self.mw.col.decks.get(did)["name"]
|
||||
ret = StudyDeck(
|
||||
|
||||
def callback(ret: StudyDeck) -> None:
|
||||
if not ret.name:
|
||||
return
|
||||
did = self.col.decks.id(ret.name)
|
||||
set_card_deck(parent=self, card_ids=cids, deck_id=did).run_in_background()
|
||||
|
||||
StudyDeck(
|
||||
self.mw,
|
||||
current=current,
|
||||
accept=tr.browsing_move_cards(),
|
||||
title=tr.browsing_change_deck(),
|
||||
help=HelpPage.BROWSING,
|
||||
parent=self,
|
||||
callback=callback,
|
||||
)
|
||||
if not ret.name:
|
||||
return
|
||||
did = self.col.decks.id(ret.name)
|
||||
|
||||
set_card_deck(parent=self, card_ids=cids, deck_id=did).run_in_background()
|
||||
|
||||
# legacy
|
||||
|
||||
|
|
|
@ -32,10 +32,9 @@ class CustomStudy(QDialog):
|
|||
self.created_custom_study = False
|
||||
f.setupUi(self)
|
||||
disable_help_button(self)
|
||||
self.setWindowModality(Qt.WindowModality.WindowModal)
|
||||
self.setupSignals()
|
||||
f.radioNew.click()
|
||||
self.exec()
|
||||
self.open()
|
||||
|
||||
def setupSignals(self) -> None:
|
||||
f = self.form
|
||||
|
|
|
@ -91,23 +91,28 @@ class DeckChooser(QHBoxLayout):
|
|||
from aqt.studydeck import StudyDeck
|
||||
|
||||
current = self.selected_deck_name()
|
||||
ret = StudyDeck(
|
||||
self.mw,
|
||||
current=current,
|
||||
accept=tr.actions_choose(),
|
||||
title=tr.qt_misc_choose_deck(),
|
||||
help=HelpPage.EDITING,
|
||||
cancel=False,
|
||||
parent=self._widget,
|
||||
geomKey="selectDeck",
|
||||
)
|
||||
if ret.name:
|
||||
|
||||
def callback(ret: StudyDeck) -> None:
|
||||
if not ret.name:
|
||||
return
|
||||
new_selected_deck_id = self.mw.col.decks.by_name(ret.name)["id"]
|
||||
if self.selected_deck_id != new_selected_deck_id:
|
||||
self.selected_deck_id = new_selected_deck_id
|
||||
if func := self.on_deck_changed:
|
||||
func(new_selected_deck_id)
|
||||
|
||||
StudyDeck(
|
||||
self.mw,
|
||||
current=current,
|
||||
accept=tr.actions_choose(),
|
||||
title=tr.qt_misc_choose_deck(),
|
||||
help=HelpPage.EDITING,
|
||||
cancel=True,
|
||||
parent=self._widget,
|
||||
geomKey="selectDeck",
|
||||
callback=callback,
|
||||
)
|
||||
|
||||
def on_operation_did_execute(
|
||||
self, changes: OpChanges, handler: object | None
|
||||
) -> None:
|
||||
|
|
|
@ -40,7 +40,6 @@ class DeckConf(QDialog):
|
|||
self.mw.checkpoint(tr.actions_options())
|
||||
self.setupCombos()
|
||||
self.setupConfs()
|
||||
self.setWindowModality(Qt.WindowModality.WindowModal)
|
||||
qconnect(
|
||||
self.form.buttonBox.helpRequested, lambda: openHelp(HelpPage.DECK_OPTIONS)
|
||||
)
|
||||
|
@ -58,8 +57,7 @@ class DeckConf(QDialog):
|
|||
# qt doesn't size properly with altered fonts otherwise
|
||||
restoreGeom(self, "deckconf", adjustSize=True)
|
||||
gui_hooks.deck_conf_will_show(self)
|
||||
self.show()
|
||||
self.exec()
|
||||
self.open()
|
||||
saveGeom(self, "deckconf")
|
||||
|
||||
def setupCombos(self) -> None:
|
||||
|
|
|
@ -1439,14 +1439,18 @@ title="{}" {}>{}</button>""".format(
|
|||
def onStudyDeck(self) -> None:
|
||||
from aqt.studydeck import StudyDeck
|
||||
|
||||
ret = StudyDeck(self, dyn=True, current=self.col.decks.current()["name"])
|
||||
if ret.name:
|
||||
# fixme: this is silly, it should be returning an ID
|
||||
def callback(ret: StudyDeck) -> None:
|
||||
if not ret.name:
|
||||
return
|
||||
deck_id = self.col.decks.id(ret.name)
|
||||
set_current_deck(parent=self, deck_id=deck_id).success(
|
||||
lambda out: self.moveToState("overview")
|
||||
).run_in_background()
|
||||
|
||||
StudyDeck(
|
||||
self, dyn=True, current=self.col.decks.current()["name"], callback=callback
|
||||
)
|
||||
|
||||
def onEmptyCards(self) -> None:
|
||||
show_empty_cards(self)
|
||||
|
||||
|
|
|
@ -48,7 +48,7 @@ class Models(QDialog):
|
|||
parent = parent or mw
|
||||
self.fromMain = fromMain
|
||||
self.selected_notetype_id = selected_notetype_id
|
||||
QDialog.__init__(self, parent, Qt.WindowType.Window)
|
||||
QDialog.__init__(self, parent or mw)
|
||||
self.col = mw.col.weakref()
|
||||
assert self.col
|
||||
self.mm = self.col.models
|
||||
|
@ -61,7 +61,7 @@ class Models(QDialog):
|
|||
self.models: Sequence[NotetypeNameIdUseCount] = []
|
||||
self.setupModels()
|
||||
restoreGeom(self, "models")
|
||||
self.exec()
|
||||
self.show()
|
||||
|
||||
# Models
|
||||
##########################################################################
|
||||
|
|
|
@ -105,7 +105,14 @@ class NotetypeChooser(QHBoxLayout):
|
|||
def nameFunc() -> list[str]:
|
||||
return sorted(n.name for n in self.mw.col.models.all_names_and_ids())
|
||||
|
||||
ret = StudyDeck(
|
||||
def callback(ret: StudyDeck) -> None:
|
||||
if not ret.name:
|
||||
return
|
||||
notetype = self.mw.col.models.by_name(ret.name)
|
||||
if (id := notetype["id"]) != self._selected_notetype_id:
|
||||
self.selected_notetype_id = id
|
||||
|
||||
StudyDeck(
|
||||
self.mw,
|
||||
names=nameFunc,
|
||||
accept=tr.actions_choose(),
|
||||
|
@ -116,13 +123,8 @@ class NotetypeChooser(QHBoxLayout):
|
|||
buttons=[edit],
|
||||
cancel=True,
|
||||
geomKey="selectModel",
|
||||
callback=callback,
|
||||
)
|
||||
if not ret.name:
|
||||
return
|
||||
|
||||
notetype = self.mw.col.models.by_name(ret.name)
|
||||
if (id := notetype["id"]) != self._selected_notetype_id:
|
||||
self.selected_notetype_id = id
|
||||
|
||||
@property
|
||||
def selected_notetype_id(self) -> NotetypeId:
|
||||
|
|
|
@ -81,7 +81,7 @@ class StudyDeck(QDialog):
|
|||
self.ok = self.form.buttonBox.addButton(
|
||||
accept or tr.decks_study(), QDialogButtonBox.ButtonRole.AcceptRole
|
||||
)
|
||||
self.setWindowModality(Qt.WindowModality.WindowModal)
|
||||
self.setModal(True)
|
||||
qconnect(self.form.buttonBox.helpRequested, lambda: openHelp(help))
|
||||
qconnect(self.form.filter.textEdited, self.redraw)
|
||||
qconnect(self.form.list.itemDoubleClicked, self.accept)
|
||||
|
@ -90,7 +90,7 @@ class StudyDeck(QDialog):
|
|||
self.redraw("", current)
|
||||
self.callback = callback
|
||||
if callback:
|
||||
self.open()
|
||||
self.show()
|
||||
else:
|
||||
self.exec()
|
||||
|
||||
|
|
Loading…
Reference in a new issue