close current deck only if user decides to download a new one

This commit is contained in:
Damien Elmes 2009-06-04 05:51:14 +09:00
parent 1899b3cca6
commit fb0a7da397
2 changed files with 7 additions and 10 deletions

View file

@ -31,7 +31,6 @@ class GetShared(QDialog):
restoreGeom(self, "getshared") restoreGeom(self, "getshared")
self.setupTable() self.setupTable()
self.onChangeType(type) self.onChangeType(type)
self.ok = False
if type == 0: if type == 0:
self.setWindowTitle(_("Download Shared Deck")) self.setWindowTitle(_("Download Shared Deck"))
else: else:
@ -163,6 +162,8 @@ class GetShared(QDialog):
self.form.table.setSelectionBehavior(QAbstractItemView.SelectRows) self.form.table.setSelectionBehavior(QAbstractItemView.SelectRows)
def accept(self): def accept(self):
if not self.parent.saveAndClose(hideWelcome=True, parent=self):
return QDialog.accept(self)
h = QHttp(self) h = QHttp(self)
h.connect(h, SIGNAL("requestFinished(int,bool)"), self.onReqFin2) h.connect(h, SIGNAL("requestFinished(int,bool)"), self.onReqFin2)
h.connect(h, SIGNAL("proxyAuthenticationRequired(QNetworkProxy," h.connect(h, SIGNAL("proxyAuthenticationRequired(QNetworkProxy,"
@ -216,7 +217,6 @@ class GetShared(QDialog):
open(os.path.join(dd, tit + ".media", open(os.path.join(dd, tit + ".media",
os.path.basename(l)),"wb").write(z.read(l)) os.path.basename(l)),"wb").write(z.read(l))
self.parent.loadDeck(dpath) self.parent.loadDeck(dpath)
self.ok = True
else: else:
pd = self.parent.pluginsFolder() pd = self.parent.pluginsFolder()
if z: if z:
@ -232,7 +232,6 @@ class GetShared(QDialog):
write(z.read(l.filename)) write(z.read(l.filename))
else: else:
open(os.path.join(pd, tit + ext), "wb").write(data) open(os.path.join(pd, tit + ext), "wb").write(data)
self.ok = True
showInfo(_("Plugin downloaded. Please restart Anki."), showInfo(_("Plugin downloaded. Please restart Anki."),
parent=self) parent=self)
return return

View file

@ -745,8 +745,10 @@ To upgrade an old deck, download Anki 0.9.8.7."""))
else: else:
self.app.activeWindow().close() self.app.activeWindow().close()
def saveAndClose(self, hideWelcome=False): def saveAndClose(self, hideWelcome=False, parent=None):
"(Auto)save and close. Prompt if necessary. True if okay to proceed." "(Auto)save and close. Prompt if necessary. True if okay to proceed."
if not parent:
parent = self
self.hideWelcome = hideWelcome self.hideWelcome = hideWelcome
self.closeAllDeckWindows() self.closeAllDeckWindows()
if self.deck is not None: if self.deck is not None:
@ -758,7 +760,7 @@ To upgrade an old deck, download Anki 0.9.8.7."""))
not self.config['syncOnClose'])): not self.config['syncOnClose'])):
# backed in memory or autosave/sync off, must confirm # backed in memory or autosave/sync off, must confirm
while 1: while 1:
res = ui.unsaved.ask(self) res = ui.unsaved.ask(parent)
if res == ui.unsaved.save: if res == ui.unsaved.save:
if self.save(required=True): if self.save(required=True):
break break
@ -856,11 +858,7 @@ To upgrade an old deck, download Anki 0.9.8.7."""))
def onGetSharedDeck(self): def onGetSharedDeck(self):
if not self.inMainWindow(): return if not self.inMainWindow(): return
if not self.saveAndClose(hideWelcome=True): return ui.getshared.GetShared(self, 0)
s = ui.getshared.GetShared(self, 0)
if not s.ok:
self.deck = None
self.moveToState("initial")
def onGetSharedPlugin(self): def onGetSharedPlugin(self):
if not self.inMainWindow(): return if not self.inMainWindow(): return