diff --git a/.gitignore b/.gitignore
index ecba33791..0f921f40b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,7 +1,8 @@
-*.pyc
-*~
*.mo
+*.pyc
*\#
+*~
+/icons_rc.py
+ankiqt/forms
build
dist
-ankiqt/forms
diff --git a/ankiqt/__init__.py b/ankiqt/__init__.py
index c09f7daa3..f8117d37e 100644
--- a/ankiqt/__init__.py
+++ b/ankiqt/__init__.py
@@ -8,6 +8,7 @@ from PyQt4.QtGui import *
appName="Anki"
appVersion="0.9.8.1"
appWebsite="http://ichi2.net/anki/download/"
+appWiki="http://ichi2.net/anki/wiki/"
appHelpSite="http://ichi2.net/anki/wiki/Documentation"
appIssueTracker="http://code.google.com/p/anki/issues/list"
appForum="http://groups.google.com/group/ankisrs/topics"
diff --git a/ankiqt/ui/addcards.py b/ankiqt/ui/addcards.py
index ba8865164..a0324e6f5 100644
--- a/ankiqt/ui/addcards.py
+++ b/ankiqt/ui/addcards.py
@@ -21,7 +21,6 @@ class AddCards(QDialog):
self.dialog.setupUi(self)
self.setupEditor()
self.addChooser()
- self.addHelp()
self.addButtons()
self.setupStatus()
self.modelChanged(self.parent.deck.currentModel)
@@ -43,10 +42,8 @@ class AddCards(QDialog):
self.modelChanged)
self.dialog.modelArea.setLayout(self.modelChooser)
- def addHelp(self):
- self.help = ui.help.HelpArea(self.dialog.helpFrame,
- self.config)
- self.help.showHideableKey("add")
+ def helpRequested(self):
+ QDesktopServices.openUrl(QUrl(ankiqt.appWiki + "AddFacts"))
def addButtons(self):
self.addButton = QPushButton(_("&Add cards"))
@@ -62,6 +59,10 @@ class AddCards(QDialog):
self.closeButton = QPushButton(_("Close"))
self.dialog.buttonBox.addButton(self.closeButton,
QDialogButtonBox.RejectRole)
+ self.helpButton = QPushButton(_("Help"))
+ self.dialog.buttonBox.addButton(self.helpButton,
+ QDialogButtonBox.HelpRole)
+ self.connect(self.helpButton, SIGNAL("clicked()"), self.helpRequested)
def setupStatus(self):
"Make the status background the same colour as the frame."
diff --git a/ankiqt/ui/deckproperties.py b/ankiqt/ui/deckproperties.py
index 7eb2b65da..92a4de058 100644
--- a/ankiqt/ui/deckproperties.py
+++ b/ankiqt/ui/deckproperties.py
@@ -10,6 +10,12 @@ from ankiqt import ui
from anki.utils import parseTags
from anki.deck import newCardOrderLabels, newCardSchedulingLabels
+tabs = ("Synchronization",
+ "Scheduling",
+ "Models",
+ "Description",
+ "Advanced")
+
class DeckProperties(QDialog):
def __init__(self, parent):
@@ -19,7 +25,6 @@ class DeckProperties(QDialog):
self.origMod = self.d.modified
self.dialog = ankiqt.forms.deckproperties.Ui_DeckProperties()
self.dialog.setupUi(self)
- self.resize(100, 100)
self.dialog.newCardOrder.insertItems(
0, QStringList(newCardOrderLabels().values()))
self.dialog.newCardScheduling.insertItems(
@@ -28,6 +33,7 @@ class DeckProperties(QDialog):
self.connect(self.dialog.modelsAdd, SIGNAL("clicked()"), self.onAdd)
self.connect(self.dialog.modelsEdit, SIGNAL("clicked()"), self.onEdit)
self.connect(self.dialog.modelsDelete, SIGNAL("clicked()"), self.onDelete)
+ self.connect(self.dialog.buttonBox, SIGNAL("helpRequested()"), self.helpRequested)
self.show()
def readData(self):
@@ -125,6 +131,12 @@ class DeckProperties(QDialog):
setattr(obj, field, value)
self.d.setModified()
+ def helpRequested(self):
+ idx = self.dialog.qtabwidget.currentIndex()
+ QDesktopServices.openUrl(QUrl(ankiqt.appWiki +
+ "DeckProperties#" +
+ tabs[idx]))
+
def reject(self):
# description
self.updateField(self.d, 'description',
diff --git a/ankiqt/ui/help.py b/ankiqt/ui/help.py
index f67414fde..e1ec71426 100644
--- a/ankiqt/ui/help.py
+++ b/ankiqt/ui/help.py
@@ -12,7 +12,7 @@ import ankiqt.forms
class HelpArea(object):
helpAreaWidth = 300
- minAppWidth = 550
+ minAppWidth = 500
def __init__(self, helpFrame, config, mainWindow=None, focus=None):
self.helpFrame = helpFrame
@@ -26,7 +26,6 @@ class HelpArea(object):
self.widget.connect(self.widget, SIGNAL("anchorClicked(QUrl)"),
self.anchorClicked)
self.hide()
- self.data = HelpData()
def getMinAppWidth(self):
if self.config['easeButtonStyle'] == 'compact':
@@ -125,53 +124,3 @@ class HelpArea(object):
QDesktopServices.openUrl(QUrl(url))
if self.focus:
self.focus.setFocus()
-
-# Text strings
-##########################################################################
-
-class HelpData(dict):
-
- def __init__(self):
- self['learn'] = _("""
-
Learning new cards
Anki is currently in 'learning mode'.
-
-As an alternative to using the mouse, spacebar and the number keys are
-available.
-
-More information
-""")
-
- self['review'] = _("""
-
Reviewing
You are currently looking at a card you have seen before.
-Unlike new cards, it's important to try and review previously seen cards as
-promptly as possible, in order to ensure your previous effort spent
-remembering the cards is not wasted. At the bottom of the main window, the
-"Remaining" figure indicates how many previously reviewed words are waiting
-for you today. Once this number reaches 0, you can close Anki, or continue
-studying new cards.""")
-
- self['finalReview'] = _("""
Final review
You are now being
-shown cards that are due soon (in the next 5 hours by default). This includes
-any cards you failed recently. You can answer them now, or come back later -
-it's up to you.""")
-
- self['add'] = _("""
-Adding cards
-Please enter some things you want to learn.
-Shortcuts
-
-Tab | change between fields. |
-Ctrl+Enter | add the current card. |
-Esc | close the dialog. |
-Ctrl+B | bold |
-Ctrl+I | italic |
-Ctrl+U | underline |
-Alt+1 | enable/disable card model 1 |
-Alt+2 | enable/disable card model 2 |
-
-
-Cards
Depending on the language you selected, more than one card may
-be generated. This allows you to practice both Production (trying to produce
-the target idea/phrase yourself), and Recognition (quickly recognizing and
-understanding the target idea/phrase). To change which cards are automatically
-generated, click the rightmost button at the top.""")
diff --git a/ankiqt/ui/main.py b/ankiqt/ui/main.py
index c609a1eb8..679f2d5b5 100644
--- a/ankiqt/ui/main.py
+++ b/ankiqt/ui/main.py
@@ -18,6 +18,7 @@ from anki.sound import hasSound, playFromText
from anki.utils import addTags, deleteTags
from anki.media import rebuildMediaDir
from anki.db import OperationalError
+from anki.stdmodels import BasicModel
import anki.lang
import ankiqt
ui = ankiqt.ui
@@ -643,21 +644,47 @@ class AnkiQt(QMainWindow):
return True
def onNew(self):
- if not self.saveAndClose(): return
+ if not self.saveAndClose(exit=True): return
self.deck = DeckStorage.Deck()
- m = ui.modelchooser.AddModel(self, online=True).getModel()
- if m:
- if m != "online":
- self.deck.addModel(m)
- self.saveDeck()
- self.moveToState("initial")
- return
- # ensure all changes come to us
- self.deck.syncName = None
- self.deck.modified = 0
- self.deck.lastLoaded = self.deck.modified
- self.deck.s.flush()
- self.deck.s.commit()
+ self.deck.addModel(BasicModel())
+ self.saveDeck()
+ self.moveToState("initial")
+
+ def onOpenOnline(self):
+ if not self.saveAndClose(exit=True): return
+ self.deck = DeckStorage.Deck()
+ # ensure all changes come to us
+ self.deck.syncName = None
+ self.deck.modified = 0
+ self.deck.lastLoaded = self.deck.modified
+ if not self.config['syncUsername'] or not self.config['syncPassword']:
+ d = QDialog(self)
+ vbox = QVBoxLayout()
+ l = QLabel(_(
+ 'Open Online Deck
'
+ 'To load a deck from your free online account,
'
+ "please enter your details below.
"))
+ l.setOpenExternalLinks(True)
+ vbox.addWidget(l)
+ g = QGridLayout()
+ l1 = QLabel(_("Username:"))
+ g.addWidget(l1, 0, 0)
+ user = QLineEdit()
+ g.addWidget(user, 0, 1)
+ l2 = QLabel(_("Password:"))
+ g.addWidget(l2, 1, 0)
+ passwd = QLineEdit()
+ passwd.setEchoMode(QLineEdit.Password)
+ g.addWidget(passwd, 1, 1)
+ vbox.addLayout(g)
+ bb = QDialogButtonBox(QDialogButtonBox.Ok)
+ self.connect(bb, SIGNAL("accepted()"), d.accept)
+ vbox.addWidget(bb)
+ d.setLayout(vbox)
+ d.exec_()
+ self.config['syncUsername'] = unicode(user.text())
+ self.config['syncPassword'] = unicode(passwd.text())
+ if self.config['syncUsername'] and self.config['syncPassword']:
if self.syncDeck(onlyMerge=True):
return
self.deck = None
@@ -1088,6 +1115,7 @@ class AnkiQt(QMainWindow):
deckRelatedMenuItems = (
"Save",
+ "SaveAs",
"Close",
"Addcards",
"Editdeck",
@@ -1111,6 +1139,7 @@ class AnkiQt(QMainWindow):
def connectMenuActions(self):
self.connect(self.mainWin.actionNew, SIGNAL("triggered()"), self.onNew)
+ self.connect(self.mainWin.actionOpenOnline, SIGNAL("triggered()"), self.onOpenOnline)
self.connect(self.mainWin.actionOpen, SIGNAL("triggered()"), self.onOpen)
self.connect(self.mainWin.actionOpenSamples, SIGNAL("triggered()"), self.onOpenSamples)
self.connect(self.mainWin.actionSave, SIGNAL("triggered()"), self.onSave)
diff --git a/ankiqt/ui/modelchooser.py b/ankiqt/ui/modelchooser.py
index 3ef091ee3..d161d83ae 100644
--- a/ankiqt/ui/modelchooser.py
+++ b/ankiqt/ui/modelchooser.py
@@ -166,7 +166,7 @@ class ModelChooser(QHBoxLayout):
class AddModel(QDialog):
- def __init__(self, parent, main=None, online=False):
+ def __init__(self, parent, main=None):
QDialog.__init__(self, parent)
self.parent = parent
if not main:
@@ -177,6 +177,7 @@ class AddModel(QDialog):
self.dialog.setupUi(self)
self.models = {}
for name in (
+ "Basic",
"Japanese",
"English",
"Cantonese",
@@ -191,20 +192,13 @@ class AddModel(QDialog):
# the list widget will swallow the enter key
s = QShortcut(QKeySequence("Return"), self)
self.connect(s, SIGNAL("activated()"), self.accept)
- if not online:
- self.dialog.loadOnline.setShown(False)
def getModel(self):
self.exec_()
return self.model
def accept(self):
- if self.dialog.createTemplate.isChecked():
- self.model = self.models[
- unicode(self.dialog.models.currentItem().text())]
- elif self.dialog.createBasic.isChecked():
- self.model = stdmodels.byName("Basic")
- else:
- self.model = "online"
+ self.model = self.models[
+ unicode(self.dialog.models.currentItem().text())]
QDialog.accept(self)
diff --git a/ankiqt/ui/sync.py b/ankiqt/ui/sync.py
index f8ee236e9..1697b1217 100644
--- a/ankiqt/ui/sync.py
+++ b/ankiqt/ui/sync.py
@@ -112,21 +112,22 @@ class Sync(QThread):
self.deck.s.flush()
self.deck.s.commit()
else:
- self.setStatus(_("Sync: nothing to do"))
+ self.setStatus(_("No changes found."))
# check sources
if self.sourcesToCheck:
- self.setStatus(_("
Checking shared decks.."))
+ self.setStatus(_("
Checking deck subscriptions.."))
for source in self.sourcesToCheck:
- if not proxy.hasDeck(str(source)):
- self.setStatus(_("%x no longer exists.") % source)
- continue
proxy.deckName = str(source)
- if not client.prepareOneWaySync():
- self.setStatus(_("%x up to date.") % source)
+ msg = "%s:" % client.syncOneWayDeckName()
+ if not proxy.hasDeck(str(source)):
+ self.setStatus(_("%s no longer exists.") % msg)
continue
- self.setStatus(_("Getting payload from %x..") % source)
+ if not client.prepareOneWaySync():
+ self.setStatus(_("%s no changes found.") % msg)
+ continue
+ self.setStatus(_("%s fetching payload..") % msg)
payload = proxy.genOneWayPayload(client.lastSync)
- self.setStatus(_("Applying %d modified cards..") %
+ self.setStatus(msg + _(" applied %d modified cards.") %
len(payload['cards']))
client.applyOneWayPayload(payload)
self.setStatus(_("Check complete."))
@@ -135,8 +136,8 @@ class Sync(QThread):
# close and send signal to main thread
self.deck.close()
taken = time.time() - start
- if taken < 20.5:
- time.sleep(20.5 - taken)
+ if taken < 2.5:
+ time.sleep(2.5 - taken)
self.emit(SIGNAL("syncFinished"))
except Exception, e:
traceback.print_exc()
diff --git a/ankiqt/ui/view.py b/ankiqt/ui/view.py
index a43e60437..8c06f00ff 100644
--- a/ankiqt/ui/view.py
+++ b/ankiqt/ui/view.py
@@ -192,22 +192,14 @@ class View(object):
def drawNoDeckMessage(self):
self.write(_("""Welcome to Anki!
-
+
-Anki is a tool which will help you remember things as quickly and easily as
-possible. Anki works by asking you questions. After answering a question,
-Anki will ask how well you remembered. If you made a mistake or had difficulty
-remembering, Anki will show you the question again after a short amount of
-time. If you answered the question easily, Anki will wait for a number of days
-before asking you again. Each time you successfully remember something, the
-time before you see it again will get bigger.
+
|
+
+ |
-
-
-
-
@@ -222,37 +214,6 @@ time before you see it again will get bigger.
|
|
-
-
-
-
- |
-
- |
-
-
-
-
-
-
-Adding material
-There are three ways to add material to Anki: typing it in yourself, using a
-pre-made Anki deck, or importing word lists that you find on the internet.
-
-
-For language learning, it's a good idea to add material yourself, from sources
-like a textbook or a TV show. By adding words that you see or hear in context,
-you also learn how they are used. While it may be tempting to use a big,
-pre-made vocabulary list to save time, learning words and grammar in context
-will ensure you can use them naturally.
-
-
-So if you're learning a language, consider adding material you want to learn
-into Anki by yourself. Initially the time required to type in material may
-seem daunting, but it's a small amount of time compared to the time you'll
-save by not forgetting.
- |
-
"""))
diff --git a/designer/addcards.ui b/designer/addcards.ui
index 705611e17..6b2e6c96f 100644
--- a/designer/addcards.ui
+++ b/designer/addcards.ui
@@ -5,7 +5,7 @@
0
0
- 921
+ 692
553
@@ -13,20 +13,20 @@
Anki - Add Cards
-
- 0
-
3
+
+ 0
+
-
-
- 6
-
3
+
+ 6
+
-
@@ -43,9 +43,7 @@
-
-
- 5
- 7
+
0
0
@@ -61,10 +59,10 @@
Status
-
+
0
-
+
0
-
@@ -73,9 +71,7 @@
false
-
- 7
- 5
+
0
0
@@ -112,189 +108,6 @@
- -
-
-
- QFrame::NoFrame
-
-
- QFrame::Raised
-
-
-
- 0
-
-
- 0
-
-
-
-
-
- Qt::Vertical
-
-
-
- -
-
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 250
- 230
-
-
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 250
- 230
-
-
-
-
-
-
-
-
- 255
- 250
- 230
-
-
-
-
-
-
- 255
- 250
- 230
-
-
-
-
-
-
-
- true
-
-
- QFrame::NoFrame
-
-
- QFrame::Raised
-
-
-
- 9
-
-
- 6
-
-
-
-
-
- true
-
-
-
- 1
- 7
- 0
- 0
-
-
-
-
- 200
- 0
-
-
-
-
- 300
- 16777215
-
-
-
-
-
-
-
-
- 255
- 250
- 230
-
-
-
-
-
-
-
-
- 255
- 250
- 230
-
-
-
-
-
-
-
-
- 207
- 207
- 207
-
-
-
-
-
-
-
- QFrame::NoFrame
-
-
- QFrame::Sunken
-
-
- Qt::ScrollBarAlwaysOff
-
-
-
-
-
-
-
-
-
diff --git a/designer/addmodel.ui b/designer/addmodel.ui
index c3377163e..61aa561ae 100644
--- a/designer/addmodel.ui
+++ b/designer/addmodel.ui
@@ -6,7 +6,7 @@
0
0
388
- 363
+ 456
@@ -16,7 +16,7 @@
-
- <h1>What would you like to study?</h1>
+ <h1>Please choose a template</h1>
Qt::AlignCenter
@@ -32,16 +32,6 @@
-
-
-
-
- A pre-made quiz style.
-
-
- true
-
-
-
-
@@ -57,20 +47,6 @@
- -
-
-
- A simple front-to-back quiz style.
-
-
-
- -
-
-
- An existing online deck.
-
-
-
@@ -80,7 +56,7 @@
Qt::Horizontal
- QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok
+ QDialogButtonBox::Cancel|QDialogButtonBox::Help|QDialogButtonBox::Ok
@@ -120,21 +96,5 @@
-
- createTemplate
- toggled(bool)
- models
- setEnabled(bool)
-
-
- 217
- 71
-
-
- 213
- 138
-
-
-
diff --git a/designer/deckproperties.ui b/designer/deckproperties.ui
index b5b662500..e5b653b8f 100644
--- a/designer/deckproperties.ui
+++ b/designer/deckproperties.ui
@@ -8,154 +8,299 @@
0
0
- 529
- 593
+ 429
+ 451
- Edit deck properties
+ Deck Properties
-
- -
+
+
-
+
+ <a href="http://ichi2.net/anki/wiki/DeckProperties#Synchronization">Help</a>
+
0
-
+
+
+
+ 0
+ 0
+ 413
+ 385
+
+
- Description && Synchronisation
+ Synchronization
-
-
- 6
-
-
- 6
-
+
-
-
-
- <h1>Deck description</h1>
-
-
-
- -
-
-
-
- 0
- 100
-
-
-
- true
-
-
-
- -
-
-
- <h1>Synchronisation</h1>Synchronisation lets you use your deck on multiple computers at the same time. You can also use it to study on the web, for when you're not at home. You can also study on your mobile phone if your phone has internet access.
-
-
- false
-
-
- true
-
-
-
- -
-
-
- Synchronize this deck with name:
-
-
-
- -
-
-
- false
-
-
+
+
-
+
+
+ label
+
+
+ <h1>Synchronisation</h1>
+
+
+ false
+
+
+ true
+
+
+
+ -
+
+
+ Synchronize this deck with name:
+
+
+
+ -
+
+
+ false
+
+
+ option
+
+
+
+ -
+
+
+
+ 16777215
+ 40
+
+
+
+ <h1>Sources<h1>
+
+
+
+ -
+
+
+ -
+
+
-
+
+
+ Add Source
+
+
+
+ -
+
+
+ Edit Source
+
+
+
+ -
+
+
+ Delete Source
+
+
+
+
+
+
-
+
+
+
+ 0
+ 0
+ 413
+ 385
+
+
- Priorities && Suspending
+ Scheduling
-
-
- 6
-
-
- 6
-
- -
+
+
-
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+ <h1>Basic Scheduling</h1>
+
+
+
+ -
+
+
+ 3
+
+
-
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ -
+
+
+ <b>Maximum failed cards</b>
+
+
+ true
+
+
+
+ -
+
+
+ -
+
+
+ <b>Show failed cards early</b>
+
+
+ true
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+ <b>Number of new cards per day
+
+
+
+
+
+
+
+ -
+
+
+ -
+
+
+ -
- <h1>Priorities</h1>A comma-separated list of tags to prioritize or deprioritize<a href="http://ichi2.net/anki/wiki/CardDisplayOrderAndPriorities">?</a>
-
-
- true
+ <h1>Priorities</h1>
- -
-
-
- <h2>Very high priority</h2>
+
-
+
+
+ 3
-
- true
+
-
+
+
+ <b>Very High Priority</b>
+
+
+ true
+
+
+
+ -
+
+
+ -
+
+
+ <b>High Priority</b>
+
+
+ true
+
+
+
+ -
+
+
+ -
+
+
+ <b>Low Priority</b>
+
+
+ true
+
+
+
+ -
+
+
+ -
+
+
+ <b>Suspended</b>
+
+
+ true
+
+
+
+ -
+
+
+
+
+ -
+
+
+ Qt::Vertical
-
-
- -
-
-
- -
-
-
- <h2>High priority</h2>
+
+
+ 20
+ 40
+
-
- true
-
-
+
- -
-
-
- -
-
-
- <h2>Low priority</h2>
-
-
- true
-
-
-
- -
-
-
- -
-
-
- <h2>Suspended</h2>
-
-
- true
-
-
-
- -
-
-
- -
-
+
-
+
Qt::Vertical
@@ -169,350 +314,15 @@
-
-
- Scheduling
-
-
- -
-
-
-
- 0
- 0
-
-
-
- <h1>New cards</h1>
-
-
- true
-
-
-
- -
-
-
-
-
-
- <b>Number of new cards per day
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
-
-
- -
-
-
- -
-
-
- -
-
-
- Initial times
-
-
-
- -
-
-
- 0
-
-
- 6
-
-
-
-
-
- -
-
-
- Min
-
-
-
- -
-
-
- Min
-
-
-
- -
-
-
- -
-
-
- <b>Easy</b>
-
-
-
- -
-
-
- <b>Medium</b>
-
-
-
- -
-
-
- Max
-
-
-
- -
-
-
- -
-
-
- -
-
-
- Max
-
-
-
- -
-
-
- -
-
-
- -
-
-
- Min
-
-
-
- -
-
-
- Max
-
-
-
- -
-
-
-
- 220
- 0
-
-
-
- <b>Hard</b>
-
-
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- <h1>Delay on mistake</h1>The time until Anki shows you a card you got wrong. The default is 10 minutes.
-
-
-
- -
-
-
- 0
-
-
- 6
-
-
-
-
-
- <b>Totally forgot (0)</b>
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
- -
-
-
- <b>Made a mistake (1) on a young<a href="http://ichi2.net/anki/wiki/Key_Terms_and_Concepts#head-3b268fd372f260751f5e9020a79d54a4f68e1829">?</a> card
-
-
- true
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- -
-
-
- <b>Made a mistake (1) on a mature<a href="http://ichi2.net/anki/wiki/Key_Terms_and_Concepts#head-3b268fd372f260751f5e9020a79d54a4f68e1829">?</a> card</b>
-
-
- true
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
-
-
- -
-
-
- <h1>Failed card limit & collapsing</h1>
-
-
-
- -
-
-
-
-
-
- <b>Maximum failed cards<a href="http://ichi2.net/anki/wiki/Key_Terms_and_Concepts#head-e081bb818555df4a9fd06e16e685835a95303e0c">?</a></b>
-
-
- true
-
-
-
- -
-
-
- -
-
-
- <b>Show failed cards early<a href="http://ichi2.net/anki/wiki/Key_Terms_and_Concepts#head-c34f83f4acaf3d9a8f59dcff02dd6abec930ebaf">?</a></b>
-
-
- true
-
-
-
- -
-
-
-
-
-
-
-
-
- -
-
-
- Qt::Vertical
-
-
- QSizePolicy::Expanding
-
-
-
- 20
- 20
-
-
-
-
-
-
+
+
+ 0
+ 0
+ 413
+ 385
+
+
Models
@@ -526,7 +336,7 @@
-
- <h1>Models</h1>Models define what sort of information you're studying, and the way to show it to you. Models range from a simple representation of a single flashcard with a "front" and "back" side, to more complicated domain specific models: a model for Russian verbs may define two verb forms, and test you on both of them.
+ <h1>Models</h1>
true
@@ -569,15 +379,251 @@
+
+
+
+ 0
+ 0
+ 413
+ 385
+
+
+
+ Description
+
+
+
+ 6
+
+
+ 6
+
+ -
+
+
+ <h1>Deck description</h1>
+
+
+
+ -
+
+
+
+ 0
+ 100
+
+
+
+ true
+
+
+
+
+
+
+
+
+ 0
+ 0
+ 413
+ 385
+
+
+
+ Advanced
+
+
+
+ 6
+
+
+ 6
+
+ -
+
+
+ <h1>Advanced Scheduling</h1>
+
+
+
+ -
+
+
+ 0
+
+
+ 6
+
+
-
+
+
+ -
+
+
+ Min
+
+
+
+ -
+
+
+ Min
+
+
+
+ -
+
+
+ -
+
+
+ <b>4: Initial Easy Interval</b>
+
+
+
+ -
+
+
+ <b>3: Initial Medium Interval</b>
+
+
+
+ -
+
+
+ Max
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ Max
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ Min
+
+
+
+ -
+
+
+ Max
+
+
+
+ -
+
+
+
+ 220
+ 0
+
+
+
+ <b>2: Initial Hard Interval</b>
+
+
+
+ -
+
+
+ <b>0: Totally Forgot</b>
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ -
+
+
+ <b>1: Made a Mistake (Young)</b>
+
+
+ true
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ -
+
+
+ <b>1: Made a Mistake (Mature)</b>
+
+
+ true
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+
+
- -
+
-
Qt::Horizontal
- QDialogButtonBox::Close
+ QDialogButtonBox::Close|QDialogButtonBox::Help
@@ -585,31 +631,35 @@
qtabwidget
- deckDescription
doSync
syncName
+ listWidget
+ addSource
+ editSource
+ deleteSource
+ newCardsPerDay
+ failedCardMax
+ collapse
+ newCardOrder
+ newCardScheduling
highPriority
medPriority
lowPriority
postponing
- newCardsPerDay
- newCardOrder
- newCardScheduling
+ modelsList
+ modelsAdd
+ modelsEdit
+ modelsDelete
+ deckDescription
+ delay0
+ delay1
+ delay2
hardMin
hardMax
midMin
midMax
easyMin
easyMax
- delay0
- delay1
- delay2
- failedCardMax
- collapse
- modelsList
- modelsAdd
- modelsEdit
- modelsDelete
buttonBox
diff --git a/designer/main.ui b/designer/main.ui
index 2da19502f..2bdfff6f2 100644
--- a/designer/main.ui
+++ b/designer/main.ui
@@ -5,8 +5,8 @@
0
0
- 555
- 292
+ 543
+ 457
@@ -26,9 +26,9 @@
0
- 57
- 555
- 212
+ 53
+ 543
+ 384
@@ -193,6 +193,12 @@
-
+
+
+ 0
+ 0
+
+
@@ -279,17 +285,11 @@
true
-
+
0
0
-
-
- 200
- 0
-
-
300
@@ -357,7 +357,7 @@
0
0
- 555
+ 543
23
@@ -405,6 +405,7 @@
+
@@ -471,9 +472,9 @@
0
- 269
- 555
- 23
+ 437
+ 543
+ 20
@@ -485,8 +486,8 @@
0
23
- 555
- 34
+ 543
+ 30
@@ -914,6 +915,15 @@
Check Media Database..
+
+
+
+ :/icons/document-open-remote.png:/icons/document-open-remote.png
+
+
+ Open Online..
+
+
diff --git a/designer/modelproperties.ui b/designer/modelproperties.ui
index cd4cb83ec..3510cd85b 100644
--- a/designer/modelproperties.ui
+++ b/designer/modelproperties.ui
@@ -8,8 +8,8 @@
0
0
- 544
- 589
+ 494
+ 502
@@ -26,12 +26,12 @@
0
0
- 522
- 515
+ 478
+ 436
- Model properties
+ General
@@ -43,7 +43,7 @@
-
- <h1>Model properties</h1>
+ <h1>General Model Properties</h1>
@@ -88,7 +88,7 @@
-
- <b>Features<a href="http://ichi2.net/anki/wiki/Key_Terms_and_Concepts#head-f57a8f871fc97ceb2f6daa43528fd640ee63b4f4">?</a></b>
+ <b>Features</b>
Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
@@ -101,7 +101,7 @@
-
- <b>Tags<a href="http://ichi2.net/anki/wiki/Key_Terms_and_Concepts#head-09efbe5fd6809ae0d90543adf92014b8eb9ef1bf">?</a></b>
+ <b>Tags</b>
Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
@@ -117,7 +117,7 @@
-
- <b>Card spacing<a href="http://ichi2.net/anki/wiki/Key_Terms_and_Concepts#head-59a81e35b6afb23930005e943068945214d194b3">?</a></b>
+ <b>Card spacing</b>
Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
@@ -132,7 +132,7 @@
-
- Minimum spacing<a href="http://ichi2.net/anki/wiki/Key_Terms_and_Concepts#head-4ee3a58e2fdd61da8ef81984213862d3bc0ed4bd">?</a>
+ Minimum spacing
true
@@ -158,7 +158,7 @@
-
- Minimum interval multiplier<a href="http://ichi2.net/anki/wiki/Key_Terms_and_Concepts#head-51074b785bb6049b44fce9f18fca198100c4d2f7">?</a>
+ Minimum interval multiplier
true
@@ -182,8 +182,8 @@
0
0
- 522
- 515
+ 478
+ 436
@@ -197,16 +197,9 @@
9
-
-
+
- <h1>Fields</h1>
-
-
-
- -
-
-
- A flashcard is made from a number of fields, like "meaning", "notes", etc.
+ <h1>Field Models</h1>
@@ -234,68 +227,62 @@
+
+
+ -
+
-
-
-
- 6
+
+
+ &Add
-
- 0
+
+ false
-
-
-
-
- &Add
-
-
- false
-
-
-
- -
-
-
- &Delete
-
-
- false
-
-
-
- -
-
-
- Move selected field up
-
-
- Move &Up
-
-
- false
-
-
-
- -
-
-
- Move selected field down
-
-
- Move Dow&n
-
-
- false
-
-
-
-
+
+
+ -
+
+
+ Move selected field up
+
+
+ Move &Up
+
+
+ false
+
+
+
+ -
+
+
+ &Delete
+
+
+ false
+
+
+
+ -
+
+
+ Move selected field down
+
+
+ Move Dow&n
+
+
+ false
+
+
-
- Field properties
+
@@ -366,7 +353,7 @@
-
- <b>Features<a href="http://ichi2.net/anki/wiki/Key_Terms_and_Concepts#head-f57a8f871fc97ceb2f6daa43528fd640ee63b4f4">?</a></b>
+ <b>Features</b>
Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
@@ -422,8 +409,8 @@
0
0
- 522
- 515
+ 478
+ 436
@@ -437,25 +424,9 @@
9
-
-
-
-
- 0
- 0
-
-
+
- <h1>Card models</h1>
-
-
-
- -
-
-
- One or more cards are generated for each piece of information you enter into Anki. Here you can control how many cards are generated, and what they look like. Spacing is the amount of time before showing a different card for the same piece of information.
-
-
- true
+ <h1>Card Models</h1>
@@ -483,63 +454,57 @@
+
+
+ -
+
-
-
-
- 6
+
+
+ &Add
-
- 0
+
+
+ -
+
+
+ Move selected card model up
-
-
-
-
- &Add
-
-
-
- -
-
-
-
-
-
-
- -
-
-
- &Delete
-
-
-
- -
-
-
- Move selected card model up
-
-
- Move &Up
-
-
-
- -
-
-
- Move selected card model down
-
-
- Move Dow&n
-
-
-
-
+
+ Move &Up
+
+
+
+ -
+
+
+ Move selected card model down
+
+
+ Move Dow&n
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+ &Delete
+
+
-
- Edit card
+
@@ -630,7 +595,7 @@
-
- <b>Answer format<a href="http://ichi2.net/anki/wiki/Key_Terms_and_Concepts#head-b8916ff117aa0da4a414ce9b9b9be4a232eab2f4">?</a></b>
+ <b>Answer format</b>
Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
@@ -668,7 +633,7 @@
-
- <b>Name/tag<a href="http://ichi2.net/anki/wiki/Key_Terms_and_Concepts#head-09efbe5fd6809ae0d90543adf92014b8eb9ef1bf">?</a></b>
+ <b>Name/tag</b>
Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
@@ -681,7 +646,7 @@
-
- <b>Question format<a href="http://ichi2.net/anki/wiki/Key_Terms_and_Concepts#head-b8916ff117aa0da4a414ce9b9b9be4a232eab2f4">?</a></b>
+ <b>Question format</b>
Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
@@ -706,7 +671,7 @@
Qt::Horizontal
- QDialogButtonBox::Close
+ QDialogButtonBox::Close|QDialogButtonBox::Help
@@ -722,8 +687,8 @@
decorators
fieldList
fieldAdd
- fieldDelete
fieldUp
+ fieldDelete
fieldDown
fieldName
fieldDescription
@@ -733,10 +698,10 @@
fieldFeatures
cardList
cardAdd
- cardToggle
- cardDelete
cardUp
cardDown
+ cardToggle
+ cardDelete
cardName
cardDescription
cardQuestion
diff --git a/icons.qrc b/icons.qrc
index 972249a54..1d1399b2f 100644
--- a/icons.qrc
+++ b/icons.qrc
@@ -1,5 +1,6 @@
+ icons/document-open-remote.png
icons/document-open-recent.png
icons/khtml_kget.png
icons/edit-find.png
diff --git a/icons/document-open-remote.png b/icons/document-open-remote.png
new file mode 100644
index 000000000..5816ea725
Binary files /dev/null and b/icons/document-open-remote.png differ
diff --git a/icons_rc.py b/icons_rc.py
index 9af5b60c1..d42d0f0c0 100644
--- a/icons_rc.py
+++ b/icons_rc.py
@@ -2,7 +2,7 @@
# Resource object code
#
-# Created: Mon Sep 22 17:48:47 2008
+# Created: Sun Oct 5 23:32:43 2008
# by: The Resource Compiler for PyQt (Qt v4.4.0)
#
# WARNING! All changes made in this file will be lost!
@@ -6338,6 +6338,143 @@ qt_resource_data = "\
\x96\x14\x60\x42\xc4\x3f\x93\x80\xa4\xb6\xbe\x96\x04\x3f\xd3\x10\
\xc9\x2f\x00\x31\x63\xd4\xa9\x4c\x9b\xd1\x58\x00\x00\x00\x00\x49\
\x45\x4e\x44\xae\x42\x60\x82\
+\x00\x00\x08\x6c\
+\x89\
+\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
+\x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\
+\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x37\x5c\x00\x00\x37\x5c\
+\x01\xcb\xc7\xa4\xb9\x00\x00\x00\x06\x62\x4b\x47\x44\x00\xff\x00\
+\xff\x00\xff\xa0\xbd\xa7\x93\x00\x00\x07\xde\x49\x44\x41\x54\x18\
+\x19\xbd\xc1\x59\x8c\x9d\x65\x19\xc0\xf1\xff\xf3\xbe\xef\xf7\x9d\
+\xef\x9c\x33\x73\x66\xeb\xcc\x74\x06\x86\x29\x5d\x42\x87\x45\xb0\
+\x94\x45\xb6\x18\x97\x80\x09\xd1\xc8\x8d\x24\x10\x63\x20\x06\x2f\
+\x4c\xbc\x20\x6a\xd4\x44\x4d\x48\x1a\x4c\x0c\x17\xc6\x3d\xe2\x0d\
+\x41\xa3\x89\x2c\x06\x97\x44\x08\x02\x51\x96\x42\xb1\xb4\x25\x16\
+\x5a\xda\xe9\x94\x99\xe9\xb4\x67\x99\xed\x9c\xf3\x2d\xef\xfb\x38\
+\x05\x44\x68\x4a\xbc\x71\xfc\xfd\x84\x0f\x20\xe6\x6a\x3e\xf1\xa9\
+\x2f\x90\x65\x39\xed\x76\x4a\x9a\xa6\xf2\xe9\x9b\x77\xc8\x3d\xdf\
+\xb9\x29\xf0\x8e\x53\xf5\x0e\xf7\x3f\x72\x80\x56\xab\x83\xb5\x96\
+\x5a\xad\xc4\xc3\xbf\x7e\xd6\x3c\xf7\xf8\x8f\x03\x24\xc0\xc5\x94\
+\xaa\x31\xe9\xea\xfd\x7c\x10\xe1\xac\xae\xe2\xaf\xcf\x3e\xc5\x1b\
+\x87\x0e\xa1\x1a\x78\xf2\xc9\x97\x65\x7c\x6c\x94\x9f\xfc\xec\x05\
+\x6d\x2f\xbf\x3e\x78\xd3\xcd\xd7\x5d\x3f\x3e\x3e\x70\x99\xc2\x48\
+\x9a\xfb\xe2\xf8\xec\xe2\xf4\xb1\xa3\x0b\xcf\x1d\xde\xf7\xbb\xdd\
+\x90\xe4\x1f\xf9\xe4\x6d\xe6\xd0\xc1\xb9\xe0\x9c\x43\x55\xc9\xd3\
+\x82\xfa\xec\xbd\x9c\x8d\xdc\xfe\xc3\x63\x08\x6f\xf3\x01\x01\x94\
+\x35\x1a\x3c\xf1\xe8\x18\x47\x1e\x7c\xc0\x3c\xfd\xd8\xdf\xc2\x86\
+\x73\x06\x07\x6f\xb8\xee\xc2\xaf\x5d\xf2\xa1\x89\x3b\x7b\xfb\xca\
+\x1b\x9a\xcd\xb6\x2e\x2e\xa7\xd2\x5a\xec\x68\xa7\x53\xa0\x82\x74\
+\xba\xf9\x81\xd7\x5e\x9d\xd9\x75\x78\xdf\xb7\x7f\xf5\xa5\x7b\xf6\
+\xca\x03\xf7\xfd\x5c\x2b\x3d\x3d\x20\x96\xb4\xd3\x65\xe9\xe4\x7d\
+\x9c\x49\x3e\xff\xa3\x19\xce\xd4\x59\xaa\xb3\x61\x7e\x96\x3c\x6f\
+\x4b\xb7\x9b\xeb\xfc\xdc\xdc\x8e\x1d\x3b\xb6\xfe\x76\xfb\x85\xe3\
+\x5b\x36\x6d\x19\x09\x4f\x3e\xf5\xba\xee\x3f\x78\x42\xe7\x1b\x5d\
+\x26\x37\x0d\xd1\x5a\x68\x51\x8e\xad\x19\x3d\x77\x48\x16\x5b\x6d\
+\x39\xb8\xef\xd8\x6f\xf6\x3c\xf5\x87\x3b\xe1\xf1\x55\xa2\xbb\x48\
+\xca\x11\xde\x17\x68\xc8\x28\x3a\xbf\xe4\xbd\x5c\x56\x28\x02\x88\
+\x10\xaf\x74\x43\x6f\x50\x54\xec\x00\x47\xfa\x4a\x72\xf1\x6d\xdb\
+\xd3\x87\x6e\xfd\xde\x25\xb7\xdf\x72\xe9\xa3\xb5\xfe\xea\x70\x54\
+\x29\x15\x51\xa5\x64\x36\x6f\x1f\xb3\x0b\x6d\xaf\x51\xad\x23\x9b\
+\xb6\x8e\x6a\xba\xb1\x26\x2b\x8d\x65\xad\xd7\x57\xb4\x56\x2b\x17\
+\x3b\xaf\xbd\xe0\x73\x79\x56\xf4\xef\x7b\xf6\xf0\x67\x34\xfb\x69\
+\x7a\xcd\x1d\x7f\x96\xad\x57\x5c\xaa\xde\x17\x08\xdf\x15\x23\x28\
+\xef\x70\xab\xdd\x80\x11\x91\xbe\xaa\x79\x74\xb8\x66\xaf\x17\xa1\
+\xad\x8a\xb1\x03\x35\x66\x1f\x3b\xa4\x1f\xfb\xe8\x54\x75\x64\x63\
+\x2d\x39\x3a\xb7\x12\x76\x5e\xbb\xd5\x95\x4a\x4e\x5b\x2b\x29\xcb\
+\x59\x21\xc1\x59\x66\x66\x9b\x32\x33\xbb\xc8\x72\x6b\x95\xac\x93\
+\x9b\xfe\xfe\x8a\xd9\xf9\xe1\xf3\xf2\x2d\xdb\xcf\xb9\x31\xeb\xdc\
+\xb9\xeb\xc6\x5b\x1f\xbc\x7b\xb8\x1c\xcb\xcd\x57\x8c\xe9\xfe\x1c\
+\xa6\x5f\x3e\xae\xbc\x87\x53\xd6\x08\xfd\x91\xe5\xca\xab\x2f\x28\
+\x55\x93\x48\x2a\xde\xab\x44\xa5\x48\x77\x3f\xf1\x9a\xf4\x0c\x44\
+\x61\xae\xde\xd1\xab\xaf\x9c\x34\x83\x03\x15\xad\x2f\x67\x52\x6f\
+\x7b\x48\x4a\x4c\x9e\x57\x63\xff\xab\xc7\x59\x4e\x0b\x92\x5a\x59\
+\x5a\xed\x9c\xb4\xd9\x61\xf7\xde\xe3\x6e\xee\xf0\x09\x1d\xdf\x38\
+\xf0\xe5\x56\x6b\xe5\x91\x1d\xdf\xbc\xeb\xa5\x07\x7e\x7f\xb0\x6c\
+\x93\x72\x30\x82\xa9\x96\xa4\x1d\x94\x8e\x02\x0e\xe5\xdf\x82\x70\
+\x9a\xaa\x8b\x0c\x4b\xcd\x65\xea\xc7\x4e\x84\x78\xbc\x4f\xb6\x4e\
+\x0e\xca\xd4\xd4\x98\x9e\x5a\xce\xa4\x93\x2b\x5b\xb7\x8e\x30\x3e\
+\x31\xc4\x3f\x5e\x5b\xe0\x54\xaa\xa4\xd6\xb2\xda\x2d\x08\x91\x43\
+\xbc\xd7\x60\x8c\x0c\x4f\x8e\xa8\xc1\x47\x03\xb5\xfe\x3f\xf9\xdd\
+\xf3\x9d\x91\x0d\x15\x23\x22\x41\x21\x29\x3c\x07\x34\xe8\x0d\x28\
+\x99\x33\x46\x30\x02\x0a\xa6\x9b\x07\x7c\x40\xe2\xc4\xc9\xf4\xe1\
+\x05\xf6\xbe\xf2\xa6\x6c\x9c\x18\x60\xae\xd1\x66\xb9\x53\x08\x62\
+\xf0\x04\x86\xfa\x13\xea\x33\x4d\xf6\x1d\x39\x49\x33\xf5\x44\x91\
+\xc3\x2b\xb8\xaa\x90\xad\x74\x65\x35\x2d\x74\xf3\xf9\xc3\x92\xaf\
+\xa6\x9a\x37\x16\x2b\x53\xc3\x79\x35\xa9\x96\xd0\x35\x79\x81\xbc\
+\x72\x34\xdf\xb6\xd2\xd5\x9e\x10\x68\x18\x23\x20\x22\xa0\x90\x15\
+\x4a\x9a\x07\x32\xaf\xcc\xbf\xd9\xc0\x45\x96\x3f\x3e\x7d\x84\xa3\
+\x73\xcb\x74\xd2\x82\xe5\x4e\x46\x12\x5b\x96\xda\x19\xc7\x16\x96\
+\xd8\x31\x35\xca\xf9\x93\x83\x84\x38\xc2\x96\x4b\x98\x24\xc2\x26\
+\x11\xb6\x1c\xcb\xc4\x58\x9f\x8e\x8d\xd6\x64\xa5\x9d\xb1\xd8\x5c\
+\x0a\xc6\x1a\x55\x0d\xaa\x28\x6b\x14\x44\x59\xe3\x8c\x08\x46\x40\
+\x81\xac\x08\x04\xa3\x84\xd4\x43\xf0\x14\x41\x69\x2c\xa7\xcc\x9c\
+\x5c\xa5\xbe\xdc\xe5\x99\xfd\xf3\xf4\xf6\x26\xc4\x25\x47\x70\x8e\
+\xa1\xde\x98\xbe\xd5\x02\xb3\x9c\x62\x7d\x20\x18\x28\xb2\x82\x52\
+\x35\xa1\x40\xa4\x53\x78\xc4\x88\x2c\x2d\x75\x65\xa0\x50\xf2\x2c\
+\xe0\x83\xa0\x20\x46\x10\x8c\xe0\xc4\x80\x08\x28\x90\x15\x8a\x17\
+\xa5\x90\x40\x52\x29\xd1\x5a\xea\x62\x07\x7a\x69\xe7\x9e\x27\xf6\
+\xbc\xc9\xc5\xdb\x46\xe8\x86\xc0\x3f\x17\xda\xec\x9f\x5f\xa5\xb7\
+\x95\xb1\xd8\xf1\xd8\x4a\x02\x79\x81\xb0\xa6\x5b\x00\x81\xd4\x07\
+\x5a\x8b\x5d\x92\x08\x8a\x00\x69\x1e\x28\x72\xc5\x2b\x6f\x11\x01\
+\x03\xb8\x6a\xa9\x44\x3b\xed\x0a\x0a\x69\xae\x18\x51\x9c\x04\x82\
+\x8b\x48\x12\x47\x07\xe1\xd4\x52\xca\xf4\x89\x65\x8e\xae\x14\x5c\
+\x3e\x35\xca\x9e\xb9\x55\x88\x23\xa6\xdb\x1e\x2b\x86\xa8\x1a\x13\
+\xba\x42\xe1\x3d\x71\x39\x22\x89\x85\x3d\x7b\xa6\x09\xcd\x16\x7d\
+\x0e\x6c\xa5\x4c\xa7\x5b\x10\x7c\xc0\x07\x41\x15\x51\x55\xa9\x26\
+\x09\xae\xf0\x05\x91\xb3\x2a\xa2\xf8\xa0\xa8\x01\x2d\x02\xe5\xc1\
+\x7e\xac\x08\xd5\xd8\x80\x11\x9c\x33\x74\x05\x1e\x7e\x65\x9e\xcf\
+\x5e\x35\xc9\xa6\x91\x1e\x0e\xd5\x3b\xbc\x38\xb3\x48\x7d\xb1\x8d\
+\x2a\x68\x5a\xb0\xe5\x9c\x3e\x66\xa7\x4f\xb1\x30\x5f\xa7\xd2\xe9\
+\x30\x3c\x31\x42\xb9\xd6\x43\x96\x07\x04\xc1\x07\x10\x11\x8d\x9d\
+\xd1\xc2\x17\xb8\xc7\x5e\xd8\x9b\x4c\x8e\x6c\x1c\x9c\x9a\x18\x90\
+\x23\x0b\x5d\x40\x39\x4d\x8c\x23\x1a\x1a\xe4\x64\x7d\x89\xda\x40\
+\x2f\xc7\x1b\x29\x17\x4e\xf5\xb3\xb4\xea\xd9\x34\x58\xa1\x1a\x39\
+\x36\x0f\x56\x19\xaa\x26\xfc\xfd\x8d\x3a\x87\x67\x5a\x6c\x1e\xed\
+\x61\x65\x61\x91\xfa\x62\x8a\xb1\x31\x2e\x0e\xf8\xa1\x21\x8e\x36\
+\x32\x7c\x96\x21\x22\x80\xa0\x9a\x98\x57\xa7\x9b\x83\xfb\x5f\x7c\
+\xbd\x2d\x97\x7d\xf5\xf9\xa3\xbd\x65\xdb\xe7\x8c\xa9\x15\xde\x1b\
+\x05\x05\x04\x01\x13\x94\xe0\x3d\x2a\x02\x22\x44\xce\x12\x47\x06\
+\x63\x84\x10\x40\x79\x9b\x08\x84\xa0\x08\x4a\xbb\x5b\x60\x44\xd0\
+\x10\x30\x80\x5a\x8b\xf2\x2e\x15\x10\x6b\x4d\x40\x59\xea\xe6\x61\
+\xd1\xf5\x24\xd1\xf0\x1d\x1f\x9f\x88\xfa\xab\x51\x5a\x14\x5a\x46\
+\x78\x1f\x55\x45\x83\x82\x80\x02\x0a\x18\x11\x9c\x11\x10\xde\xe5\
+\x83\xe2\xbd\x62\x04\x54\x59\xa3\x18\x6b\x11\xce\x2a\x58\x43\xf5\
+\x2f\x7b\x17\x62\xa7\x62\x5a\xcf\x1d\x2e\x92\x9e\xb2\x09\x85\xf7\
+\x65\xce\x42\x0b\x4f\x40\xc1\x18\x10\xb0\xd6\x50\x89\x2d\x46\x84\
+\xa0\x8a\x0f\x4a\xe1\x03\x69\xe6\xd1\xa0\x10\x02\xd6\x59\x8c\x0d\
+\x9c\x8d\x31\xa6\xe8\x66\x79\xfb\xe0\x6c\xda\x75\xce\xd8\xa5\x6e\
+\x61\xaa\x91\x8f\x7c\xe1\x05\xe1\x2c\xc4\xa1\xde\xa3\x5e\x11\x6b\
+\x50\x31\x64\xde\x22\x22\xf8\xa0\x04\x55\x8a\x22\x90\x15\x80\x82\
+\xb1\x06\x15\x0b\x5e\x39\x93\x02\x56\x8d\xae\x66\xde\x16\x41\x96\
+\x9c\x73\xb6\x99\xc4\x76\xa2\x56\x71\x59\x96\x03\xc2\x07\x70\x04\
+\x1f\x08\x21\xf0\x16\x0d\x9c\x26\x80\x05\xac\x15\x4a\x95\x08\x63\
+\x0c\x88\x01\x94\xb3\x52\x70\xce\x6a\xe1\x8b\x28\x76\xb6\xe9\x22\
+\xeb\x9a\xb1\xc3\xf6\x56\x8c\x76\x52\x41\x44\x00\xe5\x3f\x04\x50\
+\x54\x59\x63\x01\x8b\xaa\xa2\x1a\x50\xe5\x2d\x22\x82\x88\x20\x22\
+\x9c\x26\xac\x11\x03\x28\xef\x27\xa8\x2a\x71\x24\xac\x76\xb0\xce\
+\xba\xa6\x73\xce\x36\x62\x27\xb6\xa7\x6c\x10\x11\x8c\x08\x20\xbc\
+\x9f\xf0\x5e\x0a\x08\x96\xff\x4e\x38\x53\x50\x48\x22\x43\xd3\x89\
+\x75\xce\x36\x9c\xb3\xae\xe1\x9c\xd8\xde\x8a\x08\x18\x44\x84\xf5\
+\xa4\xaa\x24\xb1\x88\x73\x62\x9d\x75\x0d\xb7\xe6\x94\xb3\x46\x7a\
+\xca\x46\x42\x10\x8c\x08\xeb\x29\xa8\x50\x2e\x09\xce\x1a\x71\xce\
+\x9d\x72\x91\xb5\x75\x63\x84\x52\x24\x52\x8a\x0c\xc6\xb0\xae\x82\
+\x42\x29\x12\x63\x44\x88\xac\xab\xbb\x38\x8a\xea\xa8\xd1\x10\xd4\
+\x28\xa0\xca\xfa\x52\xf0\x01\x51\x0c\x71\xe4\xea\xce\x59\xdb\x50\
+\x35\x3e\xa8\x5a\x03\x08\xc2\x1a\x65\xbd\x88\xa2\x41\x8d\xaa\x68\
+\xe4\x6c\xdd\x5d\x33\xd5\xd3\x8c\x22\xf1\x8d\xd5\x22\xca\x72\x8f\
+\x88\xb0\x46\x58\x1f\x0a\xa8\x80\xdb\x36\x9e\xf8\x6d\x63\xd2\x74\
+\x3a\xff\x4c\x63\x6c\xdb\x45\x4b\x2b\x99\xd9\x10\xe2\x90\x81\x08\
+\xeb\x4b\x45\x88\x7a\x23\x6d\x1e\x3b\x74\xa0\x29\x40\x7c\xee\xe4\
+\xe6\x5b\x4a\x91\xbd\x3c\x04\x2f\x20\xac\x2f\xc5\x18\xab\x69\xee\
+\x5f\x3a\x3e\xfd\xc6\x43\xc2\x9a\x72\xb9\x2c\x9d\x4e\xa7\x07\x70\
+\xfc\x7f\x14\x49\x92\xac\x74\xbb\x5d\x95\x8b\x2e\xdb\xc9\xdd\x5f\
+\xff\x06\xcf\xbf\xf0\x12\x71\x29\x66\x74\xe3\x38\xdf\xfa\xca\x17\
+\x11\x11\xfe\x97\x54\x95\x5d\x3f\xf8\x05\xf3\x73\xb3\xe4\x59\xca\
+\x55\x57\xee\xe4\xfb\xf7\xee\xe2\x5f\xc0\xb2\x0d\xf5\xcc\x4d\xb3\
+\xd9\x00\x00\x00\x22\x7a\x54\x58\x74\x53\x6f\x66\x74\x77\x61\x72\
+\x65\x00\x00\x78\xda\x2b\x2f\x2f\xd7\xcb\xcc\xcb\x2e\x4e\x4e\x2c\
+\x48\xd5\xcb\x2f\x4a\x07\x00\x36\xd8\x06\x58\x10\x53\xca\x5c\x00\
+\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
\x00\x00\x06\xe0\
\x89\
\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
@@ -6698,6 +6835,11 @@ qt_resource_name = "\
\x0b\x27\xb1\x67\
\x00\x65\
\x00\x64\x00\x69\x00\x74\x00\x2d\x00\x66\x00\x69\x00\x6e\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\
+\x00\x18\
+\x02\x7f\x27\x27\
+\x00\x64\
+\x00\x6f\x00\x63\x00\x75\x00\x6d\x00\x65\x00\x6e\x00\x74\x00\x2d\x00\x6f\x00\x70\x00\x65\x00\x6e\x00\x2d\x00\x72\x00\x65\x00\x6d\
+\x00\x6f\x00\x74\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\
\x00\x14\
\x07\x40\xa2\xc7\
\x00\x61\
@@ -6707,16 +6849,17 @@ qt_resource_name = "\
qt_resource_struct = "\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\
-\x00\x00\x00\x00\x00\x02\x00\x00\x00\x3a\x00\x00\x00\x02\
+\x00\x00\x00\x00\x00\x02\x00\x00\x00\x3b\x00\x00\x00\x02\
\x00\x00\x07\x66\x00\x00\x00\x00\x00\x01\x00\x01\x65\x2f\
-\x00\x00\x02\xfc\x00\x00\x00\x00\x00\x01\x00\x00\x8c\xea\
\x00\x00\x02\xfc\x00\x00\x00\x00\x00\x01\x00\x00\x93\x6d\
+\x00\x00\x02\xfc\x00\x00\x00\x00\x00\x01\x00\x00\x8c\xea\
\x00\x00\x00\x4c\x00\x00\x00\x00\x00\x01\x00\x00\x10\x55\
\x00\x00\x00\xae\x00\x00\x00\x00\x00\x01\x00\x00\x19\xb2\
\x00\x00\x04\xfa\x00\x00\x00\x00\x00\x01\x00\x01\x06\xfc\
\x00\x00\x06\xea\x00\x00\x00\x00\x00\x01\x00\x01\x53\xe8\
\x00\x00\x05\xee\x00\x00\x00\x00\x00\x01\x00\x01\x26\x17\
\x00\x00\x00\x26\x00\x00\x00\x00\x00\x01\x00\x00\x06\x37\
+\x00\x00\x07\xe6\x00\x00\x00\x00\x00\x01\x00\x01\x83\xf1\
\x00\x00\x03\xb6\x00\x00\x00\x00\x00\x01\x00\x00\xbb\x53\
\x00\x00\x07\x80\x00\x00\x00\x00\x00\x01\x00\x01\x6b\x13\
\x00\x00\x00\xda\x00\x00\x00\x00\x00\x01\x00\x00\x1e\xc1\
@@ -6737,7 +6880,7 @@ qt_resource_struct = "\
\x00\x00\x01\x18\x00\x00\x00\x00\x00\x01\x00\x00\x2a\x0a\
\x00\x00\x00\xfc\x00\x00\x00\x00\x00\x01\x00\x00\x24\xd2\
\x00\x00\x06\x56\x00\x00\x00\x00\x00\x01\x00\x01\x3e\x21\
-\x00\x00\x07\xe6\x00\x00\x00\x00\x00\x01\x00\x01\x83\xf1\
+\x00\x00\x08\x1c\x00\x00\x00\x00\x00\x01\x00\x01\x8c\x61\
\x00\x00\x03\x9e\x00\x00\x00\x00\x00\x01\x00\x00\xb3\xeb\
\x00\x00\x02\xb4\x00\x00\x00\x00\x00\x01\x00\x00\x80\xa3\
\x00\x00\x02\x0c\x00\x00\x00\x00\x00\x01\x00\x00\x5f\x71\