mirror of
https://github.com/ankitects/anki.git
synced 2025-09-18 14:02:21 -04:00
bare minimum to get the browser to show up
This commit is contained in:
parent
33d79a80ec
commit
f2865d7bf5
6 changed files with 81 additions and 170 deletions
|
@ -32,10 +32,10 @@ def openHelp(name):
|
|||
class DialogManager(object):
|
||||
|
||||
def __init__(self):
|
||||
from aqt import addcards, cardlist
|
||||
from aqt import addcards, browser
|
||||
self._dialogs = {
|
||||
"AddCards": [addcards.AddCards, None],
|
||||
"CardList": [cardlist.EditDeck, None],
|
||||
"Browser": [browser.Browser, None],
|
||||
}
|
||||
|
||||
def open(self, name, *args):
|
||||
|
|
|
@ -16,12 +16,6 @@ from anki.hooks import addHook, removeHook
|
|||
from anki.utils import stripHTMLMedia
|
||||
import aqt.editor, aqt.modelchooser
|
||||
|
||||
# todo:
|
||||
# if field.fieldModel.features:
|
||||
# w.setLayoutDirection(Qt.RightToLeft)
|
||||
# else:
|
||||
# w.setLayoutDirection(Qt.LeftToRight)
|
||||
|
||||
class AddCards(QDialog):
|
||||
|
||||
def __init__(self, mw):
|
||||
|
|
|
@ -125,64 +125,9 @@ class DeckModel(QAbstractTableModel):
|
|||
######################################################################
|
||||
|
||||
def showMatching(self, force=True):
|
||||
if not self.sortKey:
|
||||
self.cards = []
|
||||
return
|
||||
# sorting
|
||||
if not self.searchStr:
|
||||
ads = ""
|
||||
self.lastSearch = ""
|
||||
else:
|
||||
if (self.searchStr.strip() == self.lastSearch.strip()
|
||||
and not force):
|
||||
# just whitespace
|
||||
return
|
||||
QApplication.instance().processEvents()
|
||||
self.lastSearch = self.searchStr
|
||||
ids = self.deck.findCards(self.searchStr)
|
||||
ads = "cards.id in %s" % ids2str(ids)
|
||||
sort = ""
|
||||
if isinstance(self.sortKey, types.StringType):
|
||||
# card property
|
||||
if self.sortKey == "fact":
|
||||
sort = "order by facts.created, cards.created"
|
||||
else:
|
||||
sort = "order by cards." + self.sortKey
|
||||
if self.sortKey in ("question", "answer"):
|
||||
sort += " collate nocase"
|
||||
if self.sortKey == "fact":
|
||||
query = """
|
||||
select cards.id from cards, facts
|
||||
where cards.factId = facts.id """
|
||||
if ads:
|
||||
query += "and " + ads + " "
|
||||
else:
|
||||
query = "select id from cards "
|
||||
if ads:
|
||||
query += "where %s " % ads
|
||||
query += sort
|
||||
else:
|
||||
# field value
|
||||
ret = self.deck.db.all(
|
||||
"select id, numeric from fieldModels where name = :name",
|
||||
name=self.sortKey[1])
|
||||
fields = ",".join([str(x[0]) for x in ret])
|
||||
# if multiple models have the same field, use the first numeric bool
|
||||
numeric = ret[0][1]
|
||||
if numeric:
|
||||
order = "cast(fields.value as real)"
|
||||
else:
|
||||
order = "fields.value collate nocase"
|
||||
if ads:
|
||||
ads = " and " + ads
|
||||
query = ("select cards.id "
|
||||
"from fields, cards where fields.fieldModelId in (%s) "
|
||||
"and fields.factId = cards.factId" + ads +
|
||||
" order by cards.ordinal, %s") % (fields, order)
|
||||
# run the query
|
||||
self.cards = self.deck.db.all(query)
|
||||
if self.deck.getInt('reverseOrder'):
|
||||
self.cards.reverse()
|
||||
return
|
||||
# if self.deck.getInt('reverseOrder'):
|
||||
# self.cards.reverse()
|
||||
self.reset()
|
||||
|
||||
def updateCard(self, index):
|
||||
|
@ -339,19 +284,16 @@ class StatusDelegate(QItemDelegate):
|
|||
painter.restore()
|
||||
return QItemDelegate.paint(self, painter, option, index)
|
||||
|
||||
class EditDeck(QMainWindow):
|
||||
class Browser(QMainWindow):
|
||||
|
||||
def __init__(self, parent):
|
||||
windParent = None
|
||||
QMainWindow.__init__(self, windParent)
|
||||
def __init__(self, mw):
|
||||
QMainWindow.__init__(self, None)
|
||||
applyStyles(self)
|
||||
self.parent = parent
|
||||
self.deck = self.parent.deck
|
||||
self.config = parent.config
|
||||
self.origModTime = parent.deck.modified
|
||||
self.mw = mw
|
||||
self.deck = self.mw.deck
|
||||
self.currentRow = None
|
||||
self.lastFilter = ""
|
||||
self.dialog = aqt.forms.cardlist.Ui_MainWindow()
|
||||
self.dialog = aqt.forms.browser.Ui_Dialog()
|
||||
self.dialog.setupUi(self)
|
||||
self.setUnifiedTitleAndToolBarOnMac(True)
|
||||
restoreGeom(self, "editor", 38)
|
||||
|
@ -359,12 +301,11 @@ class EditDeck(QMainWindow):
|
|||
restoreSplitter(self.dialog.splitter, "editor")
|
||||
self.dialog.splitter.setChildrenCollapsible(False)
|
||||
# toolbar
|
||||
self.dialog.toolBar.setIconSize(QSize(self.config['iconSize'],
|
||||
self.config['iconSize']))
|
||||
self.dialog.toolBar.setIconSize(QSize(self.mw.config['iconSize'],
|
||||
self.mw.config['iconSize']))
|
||||
self.dialog.toolBar.toggleViewAction().setText(_("Toggle Toolbar"))
|
||||
# flush all changes before we load
|
||||
self.deck.db.flush()
|
||||
self.model = DeckModel(self.parent, self.parent.deck)
|
||||
self.model = DeckModel(self.mw, self.mw.deck)
|
||||
self.dialog.tableView.setSortingEnabled(False)
|
||||
self.dialog.tableView.setShowGrid(False)
|
||||
self.dialog.tableView.setModel(self.model)
|
||||
|
@ -383,12 +324,11 @@ class EditDeck(QMainWindow):
|
|||
self.setupEditor()
|
||||
self.setupCardInfo()
|
||||
self.dialog.filterEdit.setFocus()
|
||||
ui.dialogs.open("CardList", self)
|
||||
self.drawTags()
|
||||
self.updateFilterLabel()
|
||||
self.show()
|
||||
if self.parent.currentCard:
|
||||
self.currentCard = self.parent.currentCard
|
||||
# if self.parent.currentCard:
|
||||
# self.currentCard = self.parent.currentCard
|
||||
self.updateSearch()
|
||||
|
||||
def findCardInDeckModel(self):
|
||||
|
@ -399,10 +339,10 @@ class EditDeck(QMainWindow):
|
|||
|
||||
def updateFont(self):
|
||||
self.dialog.tableView.setFont(QFont(
|
||||
self.config['editFontFamily'],
|
||||
self.config['editFontSize']))
|
||||
self.mw.config['editFontFamily'],
|
||||
self.mw.config['editFontSize']))
|
||||
self.dialog.tableView.verticalHeader().setDefaultSectionSize(
|
||||
self.parent.config['editLineSize'])
|
||||
self.mw.config['editLineSize'])
|
||||
self.model.reset()
|
||||
|
||||
def setupFilter(self):
|
||||
|
@ -419,7 +359,7 @@ class EditDeck(QMainWindow):
|
|||
|
||||
def setupSort(self):
|
||||
self.dialog.sortBox.setMaxVisibleItems(30)
|
||||
self.sortIndex = self.deck.getInt("sortIndex") or 0
|
||||
self.sortIndex = int(self.deck.conf.get("sortIdx", "0"))
|
||||
self.drawSort()
|
||||
self.connect(self.dialog.sortBox, SIGNAL("activated(int)"),
|
||||
self.sortChanged)
|
||||
|
@ -428,6 +368,7 @@ class EditDeck(QMainWindow):
|
|||
self.reverseOrder)
|
||||
|
||||
def drawTags(self):
|
||||
return
|
||||
self.dialog.tagList.setMaxVisibleItems(30)
|
||||
self.dialog.tagList.view().setMinimumWidth(200)
|
||||
self.dialog.tagList.setFixedWidth(170)
|
||||
|
@ -493,8 +434,6 @@ class EditDeck(QMainWindow):
|
|||
_("Lapses"),
|
||||
_("First Review"),
|
||||
]
|
||||
self.sortFields = sorted(self.deck.allFields())
|
||||
self.sortList.extend([_("'%s'") % f for f in self.sortFields])
|
||||
self.dialog.sortBox.clear()
|
||||
self.dialog.sortBox.addItems(QStringList(self.sortList))
|
||||
if self.sortIndex >= len(self.sortList):
|
||||
|
@ -502,7 +441,7 @@ class EditDeck(QMainWindow):
|
|||
self.dialog.sortBox.setCurrentIndex(self.sortIndex)
|
||||
|
||||
def updateSortOrder(self):
|
||||
if self.deck.getInt("reverseOrder"):
|
||||
if int(self.deck.conf.get("revOrder", "0")):
|
||||
self.dialog.sortOrder.setIcon(QIcon(":/icons/view-sort-descending.png"))
|
||||
else:
|
||||
self.dialog.sortOrder.setIcon(QIcon(":/icons/view-sort-ascending.png"))
|
||||
|
@ -532,9 +471,9 @@ class EditDeck(QMainWindow):
|
|||
self.sortKey = "firstAnswered"
|
||||
else:
|
||||
self.sortKey = ("field", self.sortFields[idx-11])
|
||||
self.rebuildSortIndex(self.sortKey)
|
||||
#self.rebuildSortIndex(self.sortKey)
|
||||
self.sortIndex = idx
|
||||
self.deck.setVar('sortIndex', idx)
|
||||
self.deck.conf['sortIdx'] = idx
|
||||
self.model.sortKey = self.sortKey
|
||||
self.model.updateHeader()
|
||||
if refresh:
|
||||
|
@ -552,7 +491,6 @@ class EditDeck(QMainWindow):
|
|||
k="ix_cards_sort")
|
||||
if old and key in old:
|
||||
return
|
||||
self.parent.setProgressParent(self)
|
||||
self.deck.startProgress(2)
|
||||
self.deck.updateProgress(_("Building Index..."))
|
||||
self.deck.db.statement("drop index if exists ix_cards_sort")
|
||||
|
@ -563,7 +501,6 @@ class EditDeck(QMainWindow):
|
|||
"create index ix_cards_sort on cards (%s)" % key)
|
||||
self.deck.db.statement("analyze")
|
||||
self.deck.finishProgress()
|
||||
self.parent.setProgressParent(None)
|
||||
|
||||
def tagChanged(self, idx):
|
||||
if idx == 0:
|
||||
|
@ -591,23 +528,17 @@ class EditDeck(QMainWindow):
|
|||
"of %(tot)d cards shown; %(sel)s)", self.deck.cardCount) %
|
||||
{
|
||||
"cur": len(self.model.cards),
|
||||
"tot": self.deck.cardCount,
|
||||
"tot": self.deck.cardCount(),
|
||||
"sel": ngettext("%d selected", "%d selected", selected) % selected
|
||||
} + " - " + self.deck.name())
|
||||
|
||||
def onEvent(self, type='field'):
|
||||
if self.deck.undoAvailable():
|
||||
if self.deck.undoName():
|
||||
self.dialog.actionUndo.setText(_("Undo %s") %
|
||||
self.deck.undoName())
|
||||
self.dialog.actionUndo.setEnabled(True)
|
||||
else:
|
||||
self.dialog.actionUndo.setEnabled(False)
|
||||
if self.deck.redoAvailable():
|
||||
self.dialog.actionRedo.setText(_("Redo %s") %
|
||||
self.deck.redoName())
|
||||
self.dialog.actionRedo.setEnabled(True)
|
||||
else:
|
||||
self.dialog.actionRedo.setEnabled(False)
|
||||
if type=="all":
|
||||
self.updateAfterCardChange()
|
||||
else:
|
||||
|
@ -638,8 +569,9 @@ class EditDeck(QMainWindow):
|
|||
self.updateSearch()
|
||||
|
||||
def updateSearch(self, force=True):
|
||||
if self.parent.inDbHandler:
|
||||
return
|
||||
# fixme:
|
||||
# if self.mw.inDbHandler:
|
||||
# return
|
||||
self.model.searchStr = unicode(self.dialog.filterEdit.text())
|
||||
self.model.showMatching(force)
|
||||
self.updateFilterLabel()
|
||||
|
@ -685,7 +617,7 @@ class EditDeck(QMainWindow):
|
|||
|
||||
def setupMenus(self):
|
||||
# actions
|
||||
self.connect(self.dialog.actionAddItems, SIGNAL("triggered()"), self.parent.onAddCard)
|
||||
self.connect(self.dialog.actionAddItems, SIGNAL("triggered()"), self.mw.onAddCard)
|
||||
self.connect(self.dialog.actionDelete, SIGNAL("triggered()"), self.deleteCards)
|
||||
self.connect(self.dialog.actionAddTag, SIGNAL("triggered()"), self.addTags)
|
||||
self.connect(self.dialog.actionDeleteTag, SIGNAL("triggered()"), self.deleteTags)
|
||||
|
@ -719,14 +651,13 @@ class EditDeck(QMainWindow):
|
|||
|
||||
def onClose(self):
|
||||
saveSplitter(self.dialog.splitter, "editor")
|
||||
self.editor.saveFieldsNow()
|
||||
self.editor.saveNow()
|
||||
self.editor.setFact(None)
|
||||
self.editor.close()
|
||||
saveGeom(self, "editor")
|
||||
saveState(self, "editor")
|
||||
saveHeader(self.dialog.tableView.horizontalHeader(), "editor")
|
||||
self.hide()
|
||||
ui.dialogs.close("CardList")
|
||||
aqt.dialogs.close("Browser")
|
||||
self.teardownHooks()
|
||||
return True
|
||||
|
||||
|
@ -745,10 +676,10 @@ class EditDeck(QMainWindow):
|
|||
######################################################################
|
||||
|
||||
def setupEditor(self):
|
||||
self.editor = ui.facteditor.FactEditor(self,
|
||||
self.dialog.fieldsArea,
|
||||
self.deck)
|
||||
self.editor.onChange = self.onEvent
|
||||
self.editor = aqt.editor.Editor(self.mw,
|
||||
self.dialog.fieldsArea)
|
||||
# fixme:
|
||||
#self.editor.onChange = self.onEvent
|
||||
self.connect(self.dialog.tableView.selectionModel(),
|
||||
SIGNAL("currentRowChanged(QModelIndex, QModelIndex)"),
|
||||
self.rowChanged)
|
||||
|
@ -800,7 +731,7 @@ where id in (%s)""" % ",".join([
|
|||
self.rowChanged(self.currentRow, None)
|
||||
self.model.refresh()
|
||||
self.drawTags()
|
||||
self.parent.reset()
|
||||
self.mw.reset()
|
||||
|
||||
# Menu options
|
||||
######################################################################
|
||||
|
@ -835,11 +766,9 @@ where id in (%s)""" % ",".join([
|
|||
if label is None:
|
||||
label = _("Add Tags")
|
||||
if r:
|
||||
self.parent.setProgressParent(self)
|
||||
self.deck.setUndoStart(label)
|
||||
self.deck.addTags(self.selectedFacts(), tags)
|
||||
self.deck.setUndoEnd(label)
|
||||
self.parent.setProgressParent(None)
|
||||
self.updateAfterCardChange()
|
||||
|
||||
def deleteTags(self, tags=None, label=None):
|
||||
|
@ -852,11 +781,9 @@ where id in (%s)""" % ",".join([
|
|||
if label is None:
|
||||
label = _("Delete Tags")
|
||||
if r:
|
||||
self.parent.setProgressParent(self)
|
||||
self.deck.setUndoStart(label)
|
||||
self.deck.deleteTags(self.selectedFacts(), tags)
|
||||
self.deck.setUndoEnd(label)
|
||||
self.parent.setProgressParent(None)
|
||||
self.updateAfterCardChange()
|
||||
|
||||
def updateToggles(self):
|
||||
|
@ -876,23 +803,19 @@ where id in (%s)""" % ",".join([
|
|||
|
||||
def _onSuspend(self):
|
||||
n = _("Suspend")
|
||||
self.parent.setProgressParent(self)
|
||||
self.deck.setUndoStart(n)
|
||||
self.deck.suspendCards(self.selectedCards())
|
||||
self.parent.reset()
|
||||
self.mw.reset()
|
||||
self.deck.setUndoEnd(n)
|
||||
self.parent.setProgressParent(None)
|
||||
self.model.refresh()
|
||||
self.updateAfterCardChange()
|
||||
|
||||
def _onUnsuspend(self):
|
||||
n = _("Unsuspend")
|
||||
self.parent.setProgressParent(self)
|
||||
self.deck.setUndoStart(n)
|
||||
self.deck.unsuspendCards(self.selectedCards())
|
||||
self.parent.reset()
|
||||
self.mw.reset()
|
||||
self.deck.setUndoEnd(n)
|
||||
self.parent.setProgressParent(None)
|
||||
self.model.refresh()
|
||||
self.updateAfterCardChange()
|
||||
|
||||
|
@ -957,7 +880,6 @@ where id in %s""" % ids2str(sf))
|
|||
return
|
||||
# for each fact id, generate
|
||||
n = _("Generate Cards")
|
||||
self.parent.setProgressParent(self)
|
||||
self.deck.startProgress()
|
||||
self.deck.setUndoStart(n)
|
||||
facts = self.deck.db.query(Fact).filter(
|
||||
|
@ -970,14 +892,13 @@ where id in %s""" % ids2str(sf))
|
|||
self.deck.updateProgress()
|
||||
self.deck.flushMod()
|
||||
self.deck.finishProgress()
|
||||
self.parent.setProgressParent(None)
|
||||
self.deck.setUndoEnd(n)
|
||||
self.updateSearch()
|
||||
self.updateAfterCardChange()
|
||||
|
||||
def cram(self):
|
||||
self.close()
|
||||
self.parent.onCram(self.selectedCards())
|
||||
self.mw.onCram(self.selectedCards())
|
||||
|
||||
def onChangeModel(self):
|
||||
sf = self.selectedFacts()
|
||||
|
@ -994,11 +915,9 @@ where id in %s""" % ids2str(sf))
|
|||
d.exec_()
|
||||
if d.ret:
|
||||
n = _("Change Model")
|
||||
self.parent.setProgressParent(self)
|
||||
self.deck.setUndoStart(n)
|
||||
self.deck.changeModel(sf, *d.ret)
|
||||
self.deck.setUndoEnd(n)
|
||||
self.parent.setProgressParent(None)
|
||||
self.updateSearch()
|
||||
self.updateAfterCardChange()
|
||||
|
||||
|
@ -1067,15 +986,15 @@ where id in %s""" % ids2str(sf))
|
|||
frm = aqt.forms.editfont.Ui_Dialog()
|
||||
frm.setupUi(d)
|
||||
frm.fontCombo.setCurrentFont(QFont(
|
||||
self.parent.config['editFontFamily']))
|
||||
frm.fontSize.setValue(self.parent.config['editFontSize'])
|
||||
frm.lineSize.setValue(self.parent.config['editLineSize'])
|
||||
self.mw.config['editFontFamily']))
|
||||
frm.fontSize.setValue(self.mw.config['editFontSize'])
|
||||
frm.lineSize.setValue(self.mw.config['editLineSize'])
|
||||
if d.exec_():
|
||||
self.parent.config['editFontFamily'] = (
|
||||
self.mw.config['editFontFamily'] = (
|
||||
unicode(frm.fontCombo.currentFont().family()))
|
||||
self.parent.config['editFontSize'] = (
|
||||
self.mw.config['editFontSize'] = (
|
||||
int(frm.fontSize.value()))
|
||||
self.parent.config['editLineSize'] = (
|
||||
self.mw.config['editLineSize'] = (
|
||||
int(frm.lineSize.value()))
|
||||
self.updateFont()
|
||||
|
||||
|
@ -1105,7 +1024,6 @@ where id in %s""" % ids2str(sf))
|
|||
if not d.exec_():
|
||||
return
|
||||
n = _("Find and Replace")
|
||||
self.parent.setProgressParent(self)
|
||||
self.deck.startProgress(2)
|
||||
self.deck.updateProgress(_("Replacing..."))
|
||||
self.deck.setUndoStart(n)
|
||||
|
@ -1126,8 +1044,7 @@ where id in %s""" % ids2str(sf))
|
|||
parent=self)
|
||||
self.deck.setUndoEnd(n)
|
||||
self.deck.finishProgress()
|
||||
self.parent.setProgressParent(None)
|
||||
self.parent.reset()
|
||||
self.mw.reset()
|
||||
self.updateSearch()
|
||||
self.updateAfterCardChange()
|
||||
if changed is not None:
|
|
@ -8,7 +8,7 @@ from PyQt4.QtWebKit import QWebView
|
|||
import re, os, sys, tempfile, urllib2, ctypes, simplejson, traceback
|
||||
from anki.utils import stripHTML, parseTags
|
||||
from anki.sound import play
|
||||
from anki.hooks import addHook, removeHook, runHook, runFilter
|
||||
from anki.hooks import runHook
|
||||
from aqt.sound import getAudio
|
||||
from aqt.webview import AnkiWebView
|
||||
from aqt.utils import shortcut, showInfo, showWarning, getBase, getFile
|
||||
|
@ -17,6 +17,7 @@ import anki.js
|
|||
|
||||
# fixme: when tab order returns to the webview, the previously focused field
|
||||
# is focused, which is not good when the user is tabbing through the dialog
|
||||
# fixme: set rtl in div css
|
||||
|
||||
pics = ("jpg", "jpeg", "png", "tif", "tiff", "gif")
|
||||
audio = ("wav", "mp3", "ogg", "flac")
|
||||
|
|
|
@ -633,7 +633,7 @@ Debug info:\n%s""") % traceback.format_exc(), help="DeckErrors")
|
|||
aqt.dialogs.open("AddCards", self)
|
||||
|
||||
def onEditDeck(self):
|
||||
aqt.dialogs.open("CardList", self)
|
||||
aqt.dialogs.open("Browser", self)
|
||||
|
||||
def onEditCurrent(self):
|
||||
self.moveToState("editCurrentFact")
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>MainWindow</class>
|
||||
<widget class="QMainWindow" name="MainWindow">
|
||||
<class>Dialog</class>
|
||||
<widget class="QMainWindow" name="Dialog">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
|
@ -11,10 +11,10 @@
|
|||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Browse Items</string>
|
||||
<string>Browser</string>
|
||||
</property>
|
||||
<property name="windowIcon">
|
||||
<iconset resource="../icons.qrc">
|
||||
<iconset resource="icons.qrc">
|
||||
<normaloff>:/icons/find.png</normaloff>:/icons/find.png</iconset>
|
||||
</property>
|
||||
<widget class="QWidget" name="centralwidget">
|
||||
|
@ -97,7 +97,7 @@
|
|||
<string/>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../icons.qrc">
|
||||
<iconset resource="icons.qrc">
|
||||
<normaloff>:/icons/view-sort-ascending.png</normaloff>:/icons/view-sort-ascending.png</iconset>
|
||||
</property>
|
||||
<property name="flat">
|
||||
|
@ -223,7 +223,7 @@
|
|||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>599</width>
|
||||
<height>20</height>
|
||||
<height>22</height>
|
||||
</rect>
|
||||
</property>
|
||||
<widget class="QMenu" name="menuEdit">
|
||||
|
@ -231,7 +231,6 @@
|
|||
<string>&Edit</string>
|
||||
</property>
|
||||
<addaction name="actionUndo"/>
|
||||
<addaction name="actionRedo"/>
|
||||
<addaction name="separator"/>
|
||||
<addaction name="actionSelectAll"/>
|
||||
<addaction name="actionSelectFacts"/>
|
||||
|
@ -317,7 +316,7 @@
|
|||
</widget>
|
||||
<action name="actionDelete">
|
||||
<property name="icon">
|
||||
<iconset resource="../icons.qrc">
|
||||
<iconset resource="icons.qrc">
|
||||
<normaloff>:/icons/editdelete.png</normaloff>:/icons/editdelete.png</iconset>
|
||||
</property>
|
||||
<property name="text">
|
||||
|
@ -329,7 +328,7 @@
|
|||
</action>
|
||||
<action name="actionAddTag">
|
||||
<property name="icon">
|
||||
<iconset resource="../icons.qrc">
|
||||
<iconset resource="icons.qrc">
|
||||
<normaloff>:/icons/Anki_Add_Tag.png</normaloff>:/icons/Anki_Add_Tag.png</iconset>
|
||||
</property>
|
||||
<property name="text">
|
||||
|
@ -338,7 +337,7 @@
|
|||
</action>
|
||||
<action name="actionDeleteTag">
|
||||
<property name="icon">
|
||||
<iconset resource="../icons.qrc">
|
||||
<iconset resource="icons.qrc">
|
||||
<normaloff>:/icons/Anki_Del_Tag.png</normaloff>:/icons/Anki_Del_Tag.png</iconset>
|
||||
</property>
|
||||
<property name="text">
|
||||
|
@ -347,7 +346,7 @@
|
|||
</action>
|
||||
<action name="actionAddCards">
|
||||
<property name="icon">
|
||||
<iconset resource="../icons.qrc">
|
||||
<iconset resource="icons.qrc">
|
||||
<normaloff>:/icons/Anki_Card.png</normaloff>:/icons/Anki_Card.png</iconset>
|
||||
</property>
|
||||
<property name="text">
|
||||
|
@ -356,7 +355,7 @@
|
|||
</action>
|
||||
<action name="actionReschedule">
|
||||
<property name="icon">
|
||||
<iconset resource="../icons.qrc">
|
||||
<iconset resource="icons.qrc">
|
||||
<normaloff>:/icons/edit-undo.png</normaloff>:/icons/edit-undo.png</iconset>
|
||||
</property>
|
||||
<property name="text">
|
||||
|
@ -370,7 +369,7 @@
|
|||
</action>
|
||||
<action name="actionUndo">
|
||||
<property name="icon">
|
||||
<iconset resource="../icons.qrc">
|
||||
<iconset resource="icons.qrc">
|
||||
<normaloff>:/icons/edit-undo.png</normaloff>:/icons/edit-undo.png</iconset>
|
||||
</property>
|
||||
<property name="text">
|
||||
|
@ -379,7 +378,7 @@
|
|||
</action>
|
||||
<action name="actionRedo">
|
||||
<property name="icon">
|
||||
<iconset resource="../icons.qrc">
|
||||
<iconset resource="icons.qrc">
|
||||
<normaloff>:/icons/edit-redo.png</normaloff>:/icons/edit-redo.png</iconset>
|
||||
</property>
|
||||
<property name="text">
|
||||
|
@ -393,7 +392,7 @@
|
|||
</action>
|
||||
<action name="actionFind">
|
||||
<property name="icon">
|
||||
<iconset resource="../icons.qrc">
|
||||
<iconset resource="icons.qrc">
|
||||
<normaloff>:/icons/document-preview.png</normaloff>:/icons/document-preview.png</iconset>
|
||||
</property>
|
||||
<property name="text">
|
||||
|
@ -405,7 +404,7 @@
|
|||
</action>
|
||||
<action name="actionFact">
|
||||
<property name="icon">
|
||||
<iconset resource="../icons.qrc">
|
||||
<iconset resource="icons.qrc">
|
||||
<normaloff>:/icons/Anki_Fact.png</normaloff>:/icons/Anki_Fact.png</iconset>
|
||||
</property>
|
||||
<property name="text">
|
||||
|
@ -417,7 +416,7 @@
|
|||
</action>
|
||||
<action name="actionNextCard">
|
||||
<property name="icon">
|
||||
<iconset resource="../icons.qrc">
|
||||
<iconset resource="icons.qrc">
|
||||
<normaloff>:/icons/go-next.png</normaloff>:/icons/go-next.png</iconset>
|
||||
</property>
|
||||
<property name="text">
|
||||
|
@ -429,7 +428,7 @@
|
|||
</action>
|
||||
<action name="actionPreviousCard">
|
||||
<property name="icon">
|
||||
<iconset resource="../icons.qrc">
|
||||
<iconset resource="icons.qrc">
|
||||
<normaloff>:/icons/go-previous.png</normaloff>:/icons/go-previous.png</iconset>
|
||||
</property>
|
||||
<property name="text">
|
||||
|
@ -441,7 +440,7 @@
|
|||
</action>
|
||||
<action name="actionFirstCard">
|
||||
<property name="icon">
|
||||
<iconset resource="../icons.qrc">
|
||||
<iconset resource="icons.qrc">
|
||||
<normaloff>:/icons/go-first.png</normaloff>:/icons/go-first.png</iconset>
|
||||
</property>
|
||||
<property name="text">
|
||||
|
@ -453,7 +452,7 @@
|
|||
</action>
|
||||
<action name="actionLastCard">
|
||||
<property name="icon">
|
||||
<iconset resource="../icons.qrc">
|
||||
<iconset resource="icons.qrc">
|
||||
<normaloff>:/icons/go-last.png</normaloff>:/icons/go-last.png</iconset>
|
||||
</property>
|
||||
<property name="text">
|
||||
|
@ -465,7 +464,7 @@
|
|||
</action>
|
||||
<action name="actionGuide">
|
||||
<property name="icon">
|
||||
<iconset resource="../icons.qrc">
|
||||
<iconset resource="icons.qrc">
|
||||
<normaloff>:/icons/help.png</normaloff>:/icons/help.png</iconset>
|
||||
</property>
|
||||
<property name="text">
|
||||
|
@ -477,7 +476,7 @@
|
|||
</action>
|
||||
<action name="actionChangeModel">
|
||||
<property name="icon">
|
||||
<iconset resource="../icons.qrc">
|
||||
<iconset resource="icons.qrc">
|
||||
<normaloff>:/icons/system-software-update.png</normaloff>:/icons/system-software-update.png</iconset>
|
||||
</property>
|
||||
<property name="text">
|
||||
|
@ -496,7 +495,7 @@
|
|||
</action>
|
||||
<action name="actionCram">
|
||||
<property name="icon">
|
||||
<iconset resource="../icons.qrc">
|
||||
<iconset resource="icons.qrc">
|
||||
<normaloff>:/icons/view-pim-calendar.png</normaloff>:/icons/view-pim-calendar.png</iconset>
|
||||
</property>
|
||||
<property name="text">
|
||||
|
@ -510,7 +509,7 @@
|
|||
</action>
|
||||
<action name="actionSuspend">
|
||||
<property name="icon">
|
||||
<iconset resource="../icons.qrc">
|
||||
<iconset resource="icons.qrc">
|
||||
<normaloff>:/icons/media-playback-pause.png</normaloff>:/icons/media-playback-pause.png</iconset>
|
||||
</property>
|
||||
<property name="text">
|
||||
|
@ -519,7 +518,7 @@
|
|||
</action>
|
||||
<action name="actionUnsuspend">
|
||||
<property name="icon">
|
||||
<iconset resource="../icons.qrc">
|
||||
<iconset resource="icons.qrc">
|
||||
<normaloff>:/icons/media-playback-start2.png</normaloff>:/icons/media-playback-start2.png</iconset>
|
||||
</property>
|
||||
<property name="text">
|
||||
|
@ -528,7 +527,7 @@
|
|||
</action>
|
||||
<action name="actionTags">
|
||||
<property name="icon">
|
||||
<iconset resource="../icons.qrc">
|
||||
<iconset resource="icons.qrc">
|
||||
<normaloff>:/icons/anki-tag.png</normaloff>:/icons/anki-tag.png</iconset>
|
||||
</property>
|
||||
<property name="text">
|
||||
|
@ -540,7 +539,7 @@
|
|||
</action>
|
||||
<action name="actionSort">
|
||||
<property name="icon">
|
||||
<iconset resource="../icons.qrc">
|
||||
<iconset resource="icons.qrc">
|
||||
<normaloff>:/icons/view-sort-ascending.png</normaloff>:/icons/view-sort-ascending.png</iconset>
|
||||
</property>
|
||||
<property name="text">
|
||||
|
@ -552,7 +551,7 @@
|
|||
</action>
|
||||
<action name="actionAddItems">
|
||||
<property name="icon">
|
||||
<iconset resource="../icons.qrc">
|
||||
<iconset resource="icons.qrc">
|
||||
<normaloff>:/icons/list-add.png</normaloff>:/icons/list-add.png</iconset>
|
||||
</property>
|
||||
<property name="text">
|
||||
|
@ -567,7 +566,7 @@
|
|||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../icons.qrc">
|
||||
<iconset resource="icons.qrc">
|
||||
<normaloff>:/icons/media-playback-pause.png</normaloff>:/icons/media-playback-pause.png</iconset>
|
||||
</property>
|
||||
<property name="text">
|
||||
|
@ -579,7 +578,7 @@
|
|||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../icons.qrc">
|
||||
<iconset resource="icons.qrc">
|
||||
<normaloff>:/icons/rating.png</normaloff>:/icons/rating.png</iconset>
|
||||
</property>
|
||||
<property name="text">
|
||||
|
@ -588,7 +587,7 @@
|
|||
</action>
|
||||
<action name="actionCardList">
|
||||
<property name="icon">
|
||||
<iconset resource="../icons.qrc">
|
||||
<iconset resource="icons.qrc">
|
||||
<normaloff>:/icons/generate_07.png</normaloff>:/icons/generate_07.png</iconset>
|
||||
</property>
|
||||
<property name="text">
|
||||
|
@ -605,7 +604,7 @@
|
|||
</action>
|
||||
</widget>
|
||||
<resources>
|
||||
<include location="../icons.qrc"/>
|
||||
<include location="icons.qrc"/>
|
||||
</resources>
|
||||
<connections>
|
||||
<connection>
|
Loading…
Reference in a new issue