diff --git a/ankiqt/ui/deckproperties.py b/ankiqt/ui/deckproperties.py
index 7ef759171..8408081dc 100644
--- a/ankiqt/ui/deckproperties.py
+++ b/ankiqt/ui/deckproperties.py
@@ -21,9 +21,6 @@ class DeckProperties(QDialog):
self.d = deck
self.onFinish = onFinish
self.origMod = self.d.modified
- if not self.d.path:
- ui.utils.showInfo(_("Please save the deck first."))
- return
self.dialog = ankiqt.forms.deckproperties.Ui_DeckProperties()
self.dialog.setupUi(self)
self.dialog.buttonBox.button(QDialogButtonBox.Help).setAutoDefault(False)
diff --git a/ankiqt/ui/main.py b/ankiqt/ui/main.py
index 645287c1a..fd150628d 100755
--- a/ankiqt/ui/main.py
+++ b/ankiqt/ui/main.py
@@ -785,7 +785,6 @@ Debug info:\n%s""") % traceback.format_exc(), help="DeckErrors")
r = self.loadDeck(path, interactive=False, sync=False)
if r:
return r
- self.onNew(initial=True)
def getDefaultDir(self, save=False):
"Try and get default dir from most recently opened file."
@@ -916,18 +915,32 @@ Debug info:\n%s""") % traceback.format_exc(), help="DeckErrors")
# FIXME: no longer necessary?
return self.app.activeWindow() == self
- def onNew(self, initial=False, path=None):
+ def onNew(self, path=None, prompt=None):
if not self.inMainWindow() and not path: return
if not self.saveAndClose(hideWelcome=True): return
- if initial:
- path = os.path.join(self.documentDir, "mydeck.anki")
+ register = not path
+ if not path:
+ if not prompt:
+ prompt = _("Please give your deck a name:")
+ name = ui.utils.getOnlyText(
+ prompt, default=_("mydeck"), title=_("New Deck"))
+ if not name:
+ return
+ if not name.endswith(".anki"):
+ name += ".anki"
+ path = os.path.join(self.documentDir, name)
if os.path.exists(path):
- # load mydeck instead
- return self.loadDeck(path)
+ if ui.utils.askUser(_("That deck already exists. Overwrite?"),
+ defaultno=True):
+ os.unlink(path)
+ else:
+ return
self.deck = DeckStorage.Deck(path)
self.deck.initUndo()
self.deck.addModel(BasicModel())
self.deck.save()
+ if register:
+ self.updateRecentFiles(self.deck.path)
self.browserLastRefreshed = 0
self.moveToState("initial")
@@ -1948,12 +1961,13 @@ learnt today")
def onImport(self):
if self.deck is None:
- self.onNew()
- if not self.deck.path:
- self.showToolTip(_("""\
-Please choose a name for this deck. After saving, the importing \
-window will open."""))
- self.onSaveAs()
+ self.onNew(prompt=_("""\
+Importing copies cards to the current deck,
+so we need to create a new deck first.
+
+Please give your deck a name:"""))
+ if not self.deck:
+ return
if self.deck.path:
ui.importing.ImportDialog(self)
@@ -2174,9 +2188,6 @@ it to your friends.
return
if self.deck and not self.deck.syncName:
if interactive:
- if not self.deck.path:
- ui.utils.showInfo(_("Please save the deck first."))
- return
if (not self.config['mediaLocation']
and self.deck.s.scalar("select 1 from media limit 1")):
ui.utils.showInfo(_("""\
@@ -2943,7 +2954,7 @@ to work with this version of Anki."""))
# chdir if dir exists
dir = deck.mediaDir()
# update location
- deck.setVar("mediaLocation", next)
+ deck.setVar("mediaLocation", next, mod=False)
if dir and prefix == "dropbox":
self.setupDropbox(deck)
diff --git a/ankiqt/ui/utils.py b/ankiqt/ui/utils.py
index 8805e89b5..bb38dabf3 100644
--- a/ankiqt/ui/utils.py
+++ b/ankiqt/ui/utils.py
@@ -61,7 +61,7 @@ def showText(txt, parent=None, type="text"):
diag.setMinimumWidth(500)
diag.exec_()
-def askUser(text, parent=None, help=""):
+def askUser(text, parent=None, help="", defaultno=False):
"Show a yes/no question. Return true if yes."
if not parent:
parent = ankiqt.mw
@@ -69,8 +69,12 @@ def askUser(text, parent=None, help=""):
if help:
sb |= QMessageBox.Help
while 1:
+ if defaultno:
+ default = QMessageBox.No
+ else:
+ default = QMessageBox.Yes
r = QMessageBox.question(parent, "Anki", text, sb,
- QMessageBox.Yes)
+ default)
if r == QMessageBox.Help:
openWikiLink(help)
else:
@@ -117,9 +121,10 @@ def askUserDialog(text, buttons, parent=None, help=""):
class GetTextDialog(QDialog):
- def __init__(self, parent, question, help=None, edit=None):
+ def __init__(self, parent, question, help=None, edit=None, default=u"",
+ title="Anki"):
QDialog.__init__(self, parent, Qt.Window)
- self.setWindowTitle("Anki")
+ self.setWindowTitle(title)
self.question = question
self.help = help
self.qlabel = QLabel(question)
@@ -128,6 +133,9 @@ class GetTextDialog(QDialog):
if not edit:
edit = QLineEdit()
self.l = edit
+ if default:
+ self.l.setText(default)
+ self.l.selectAll()
v.addWidget(self.l)
buts = QDialogButtonBox.Ok | QDialogButtonBox.Cancel
if help:
@@ -152,10 +160,11 @@ class GetTextDialog(QDialog):
def helpRequested(self):
QDesktopServices.openUrl(QUrl(ankiqt.appWiki + self.help))
-def getText(prompt, parent=None, help=None, edit=None):
+def getText(prompt, parent=None, help=None, edit=None, default=u"", title="Anki"):
if not parent:
parent = ankiqt.mw
- d = GetTextDialog(parent, prompt, help=help, edit=edit)
+ d = GetTextDialog(parent, prompt, help=help, edit=edit,
+ default=default, title=title)
ret = d.exec_()
return (unicode(d.l.text()), ret)
diff --git a/designer/main.ui b/designer/main.ui
index a2dbfebba..663e1896b 100644
--- a/designer/main.ui
+++ b/designer/main.ui
@@ -3375,7 +3375,7 @@
&Import...
- Import cards from text files, Anki files and more
+ Import cards into the current deck