Conflicts:
	aqt/deckbrowser.py
This commit is contained in:
Damien Elmes 2012-01-17 12:23:11 +09:00
commit 872c76ce17

View file

@ -5,6 +5,7 @@
from aqt.qt import *
from aqt.utils import askUser, getOnlyText, openLink, showWarning
from anki.utils import isMac
from anki.errors import DeckRenameError
import aqt
class DeckBrowser(object):
@ -36,6 +37,9 @@ class DeckBrowser(object):
self._onShared()
elif cmd == "import":
self.mw.onImport()
elif cmd == "drag":
draggedDeckDid, ontoDeckDid = arg.split(',')
self._dragDeckOnto(draggedDeckDid, ontoDeckDid)
def _selDeck(self, did):
self.mw.col.decks.select(did)
@ -49,7 +53,7 @@ tr { font-size: 12px; }
a.deck { color: #000; text-decoration: none; }
a.deck:hover { text-decoration: underline; }
td.opts { white-space: nowrap; }
td.deck { width: 90% }
.drag-hover { background-color: #448; }
.extra { font-size: 90%; }
body { margin: 1em; -webkit-user-select: none; }
"""
@ -60,11 +64,42 @@ body { margin: 1em; -webkit-user-select: none; }
%(tree)s
</table>
</center>
<script>
$( init );
function init() {
$("tr.deck").draggable({
scroll: false,
// can't use "helper: 'clone'" because of a bug in jQuery 1.5
helper: function (event) {
return $(this).clone(false);
},
opacity: 0.7
});
$("tr.deck").droppable({
drop: handleDropEvent,
hoverClass: 'drag-hover',
});
$("tr.bottom-row").droppable({
drop: handleDropEvent,
hoverClass: 'drag-hover',
});
}
function handleDropEvent(event, ui) {
var draggedDeckId = ui.draggable.attr('id');
var ontoDeckId = $(this).attr('id');
py.link("drag:" + draggedDeckId + "," + ontoDeckId);
}
</script>
"""
def _renderPage(self):
css = self.mw.sharedCSS + self._css
tree = self._renderDeckTree(self.mw.col.sched.deckDueTree())
tree = self._renderDeckTree(self.mw.col.sched.deckDueTree()) \
+ self._bogusBottomRowForDraggingDeckToTopLevel()
self.web.stdHtml(self._body%dict(
title=_("Decks"),
tree=tree), css=css)
@ -107,6 +142,9 @@ body { margin: 1em; -webkit-user-select: none; }
buf += self._renderDeckTree(children, depth+1)
return buf
def _bogusBottomRowForDraggingDeckToTopLevel(self):
return "<tr class='bottom-row'><td colspan='6'>&nbsp;</td></tr>"
def _dueImg(self, due, new):
if due:
i = "clock-icon"
@ -135,9 +173,20 @@ body { margin: 1em; -webkit-user-select: none; }
newName = newName.replace("'", "").replace('"', "")
if not newName or newName == oldName:
return
if deck in self.mw.col.decks.allNames():
return showWarning(_("That deck already exists."))
self.mw.col.decks.rename(deck, newName)
try:
self.mw.col.decks.rename(deck, newName)
except DeckRenameError, e:
return showWarning(e.description)
self.show()
def _dragDeckOnto(self, draggedDeckDid, ontoDeckDid):
try:
self.mw.col.decks.renameForDragAndDrop(draggedDeckDid, ontoDeckDid)
except DeckRenameError, e:
return showWarning(e.description)
self.show()
def _delete(self, did):