if user is exporting verbatim, save to Desktop/collection.apkg

This commit is contained in:
Damien Elmes 2012-10-24 23:40:25 +09:00
parent b86351b57a
commit b0c28d33b2

View file

@ -4,7 +4,7 @@
import os import os
from aqt.qt import * from aqt.qt import *
import anki, aqt, aqt.tagedit import anki, aqt, aqt.tagedit
from aqt.utils import getSaveFile, tooltip, showWarning from aqt.utils import getSaveFile, tooltip, showWarning, askUser
from anki.exporting import exporters from anki.exporting import exporters
class ExportDialog(QDialog): class ExportDialog(QDialog):
@ -32,28 +32,44 @@ class ExportDialog(QDialog):
def exporterChanged(self, idx): def exporterChanged(self, idx):
self.exporter = exporters()[idx][1](self.col) self.exporter = exporters()[idx][1](self.col)
isAnki = hasattr(self.exporter, "includeSched") self.isApkg = hasattr(self.exporter, "includeSched")
self.frm.includeSched.setShown(isAnki) self.frm.includeSched.setShown(self.isApkg)
self.frm.includeMedia.setShown(isAnki) self.frm.includeMedia.setShown(self.isApkg)
self.frm.includeTags.setShown(not isAnki) self.frm.includeTags.setShown(not self.isApkg)
def accept(self): def accept(self):
file = getSaveFile( self.exporter.includeSched = (
self, _("Export"), "export", self.frm.includeSched.isChecked())
self.exporter.key, self.exporter.ext) self.exporter.includeMedia = (
self.frm.includeMedia.isChecked())
self.exporter.includeTags = (
self.frm.includeTags.isChecked())
if not self.frm.deck.currentIndex():
self.exporter.did = None
else:
name = self.decks[self.frm.deck.currentIndex()]
self.exporter.did = self.col.decks.id(name)
if (self.isApkg and self.exporter.includeSched and not
self.exporter.did):
verbatim = True
# it's a verbatim apkg export, so place on desktop instead of
# choosing file
file = os.path.join(QDesktopServices.storageLocation(
QDesktopServices.DesktopLocation), "collection.apkg")
if os.path.exists(file):
if not askUser(
_("%s already exists on your desktop. Overwrite it?")%
"collection.apkg"):
return
else:
verbatim = False
file = getSaveFile(
self, _("Export"), "export",
self.exporter.key, self.exporter.ext)
if not file:
return
self.hide() self.hide()
if file: if file:
self.exporter.includeSched = (
self.frm.includeSched.isChecked())
self.exporter.includeMedia = (
self.frm.includeMedia.isChecked())
self.exporter.includeTags = (
self.frm.includeTags.isChecked())
if not self.frm.deck.currentIndex():
self.exporter.did = None
else:
name = self.decks[self.frm.deck.currentIndex()]
self.exporter.did = self.col.decks.id(name)
self.mw.progress.start(immediate=True) self.mw.progress.start(immediate=True)
try: try:
f = open(file, "wb") f = open(file, "wb")
@ -63,8 +79,14 @@ class ExportDialog(QDialog):
else: else:
os.unlink(file) os.unlink(file)
self.exporter.exportInto(file) self.exporter.exportInto(file)
tooltip(ngettext("%d card exported.", "%d cards exported.", \ if verbatim:
self.exporter.count) % self.exporter.count) msg = _("A file called collection.apkg was saved on your desktop.")
period = 5000
else:
period = 3000
msg = ngettext("%d card exported.", "%d cards exported.", \
self.exporter.count) % self.exporter.count
tooltip(msg, period=period)
finally: finally:
self.mw.progress.finish() self.mw.progress.finish()
QDialog.accept(self) QDialog.accept(self)