diff --git a/ankiqt/ui/cardlist.py b/ankiqt/ui/cardlist.py
index 0eda3afa1..851ddab94 100644
--- a/ankiqt/ui/cardlist.py
+++ b/ankiqt/ui/cardlist.py
@@ -518,6 +518,7 @@ class EditDeck(QMainWindow):
self.connect(self.dialog.actionAddTag, SIGNAL("triggered()"), self.addTags)
self.connect(self.dialog.actionDeleteTag, SIGNAL("triggered()"), self.deleteTags)
self.connect(self.dialog.actionReschedule, SIGNAL("triggered()"), self.reschedule)
+ self.connect(self.dialog.actionCram, SIGNAL("triggered()"), self.cram)
self.connect(self.dialog.actionAddCards, SIGNAL("triggered()"), self.addCards)
self.connect(self.dialog.actionChangeModel, SIGNAL("triggered()"), self.onChangeModel)
# edit
@@ -742,6 +743,14 @@ where id in %s""" % ids2str(sf))
self.updateSearch()
self.updateAfterCardChange()
+ def cram(self):
+ if ui.utils.askUser(
+ _("Cram selected cards in new deck?"),
+ help="CramMode",
+ parent=self):
+ self.close()
+ self.parent.onCram(self.selectedCards())
+
def onChangeModel(self):
sf = self.selectedFacts()
mods = self.deck.s.column0("""
@@ -872,7 +881,7 @@ where id in %s""" % ids2str(sf))
def onFindReplaceHelp(self):
QDesktopServices.openUrl(QUrl(ankiqt.appWiki +
- "Editor#FindReplace"))
+ "Browser#FindReplace"))
# Jumping
######################################################################
@@ -919,7 +928,7 @@ where id in %s""" % ids2str(sf))
######################################################################
def onHelp(self):
- QDesktopServices.openUrl(QUrl(ankiqt.appWiki + "Editor"))
+ QDesktopServices.openUrl(QUrl(ankiqt.appWiki + "Browser"))
# Generate card dialog
######################################################################
@@ -965,7 +974,7 @@ order by ordinal""" % ids2str(self.cms))
def onHelp(self):
QDesktopServices.openUrl(QUrl(ankiqt.appWiki +
- "Editor#GenerateCards"))
+ "Browser#GenerateCards"))
# Change model dialog
######################################################################
@@ -1111,4 +1120,4 @@ class ChangeModelDialog(QDialog):
def onHelp(self):
QDesktopServices.openUrl(QUrl(ankiqt.appWiki +
- "Editor#ChangeModel"))
+ "Browser#ChangeModel"))
diff --git a/ankiqt/ui/main.py b/ankiqt/ui/main.py
index d36866eeb..cdddef146 100644
--- a/ankiqt/ui/main.py
+++ b/ankiqt/ui/main.py
@@ -1385,31 +1385,36 @@ day = :d""", d=yesterday)
# Cramming & Sharing
##########################################################################
- def _copyToTmpDeck(self, name="cram.anki", tags=""):
+ def _copyToTmpDeck(self, name="cram.anki", tags="", ids=[]):
ndir = tempfile.mkdtemp(prefix="anki")
path = os.path.join(ndir, name)
from anki.exporting import AnkiExporter
e = AnkiExporter(self.deck)
if tags:
e.limitTags = parseTags(tags)
+ if ids:
+ e.limitCardIds = ids
path = unicode(path, sys.getfilesystemencoding())
e.exportInto(path)
return (e, path)
- def onCram(self):
+ def onCram(self, cardIds=[]):
if self.deck.name() == "cram":
ui.utils.showInfo(
_("Already cramming. Please close this deck first."))
return
if not self.save(required=True):
return
- (s, ret) = ui.utils.getTag(self, self.deck, _("Tags to cram:"),
- help="CramMode", tags="all")
- if not ret:
- return
- s = unicode(s)
- # open tmp deck
- (e, path) = self._copyToTmpDeck(tags=s)
+ if not cardIds:
+ (s, ret) = ui.utils.getTag(self, self.deck, _("Tags to cram:"),
+ help="CramMode", tags="all")
+ if not ret:
+ return
+ s = unicode(s)
+ # open tmp deck
+ (e, path) = self._copyToTmpDeck(tags=s)
+ else:
+ (e, path) = self._copyToTmpDeck(ids=cardIds)
if not e.exportedCards:
ui.utils.showInfo(_("No cards matched the provided tags."))
return
diff --git a/ankiqt/ui/utils.py b/ankiqt/ui/utils.py
index d44887459..3af16d147 100644
--- a/ankiqt/ui/utils.py
+++ b/ankiqt/ui/utils.py
@@ -55,12 +55,20 @@ def showText(text, parent=None):
SIGNAL("clicked()"), d.accept)
d.exec_()
-def askUser(text, parent=None):
+def askUser(text, parent=None, help=""):
"Show a yes/no question. Return true if yes."
if not parent:
parent = ankiqt.mw
- r = QMessageBox.question(parent, "Anki", text,
- QMessageBox.Yes | QMessageBox.No)
+ sb = QMessageBox.Yes | QMessageBox.No
+ if help:
+ sb |= QMessageBox.Help
+ while 1:
+ r = QMessageBox.question(parent, "Anki", text, sb,
+ QMessageBox.Yes)
+ if r == QMessageBox.Help:
+ openWikiLink(help)
+ else:
+ break
return r == QMessageBox.Yes
class GetTextDialog(QDialog):
diff --git a/designer/cardlist.ui b/designer/cardlist.ui
index fc2b6b77a..56c819c1f 100644
--- a/designer/cardlist.ui
+++ b/designer/cardlist.ui
@@ -10,7 +10,7 @@
- Edit Items
+ Browse Items
@@ -198,6 +198,7 @@
+
@@ -409,6 +410,15 @@
Find and Re&place...
+
+
+
+ :/icons/view-pim-calendar.png:/icons/view-pim-calendar.png
+
+
+ &Cram...
+
+
diff --git a/designer/main.ui b/designer/main.ui
index d0cb7f285..abe90f2b2 100644
--- a/designer/main.ui
+++ b/designer/main.ui
@@ -1496,7 +1496,7 @@
:/icons/find.png:/icons/find.png
- &Edit All...
+ Brows&e Items...
Ctrl+F