This commit is contained in:
Damien Elmes 2008-10-05 23:34:59 +09:00
parent 357801e625
commit 27a3cd1c4f
17 changed files with 926 additions and 1035 deletions

7
.gitignore vendored
View file

@ -1,7 +1,8 @@
*.pyc
*~
*.mo
*.pyc
*\#
*~
/icons_rc.py
ankiqt/forms
build
dist
ankiqt/forms

View file

@ -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"

View file

@ -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."

View file

@ -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',

View file

@ -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'] = _("""
<h1>Learning new cards</h1>Anki is currently in 'learning mode'.
<p>
As an alternative to using the mouse, spacebar and the number keys are
available.
<p>
<a href="http://ichi2.net/anki/wiki/Learning_new_cards">More information</a>
""")
self['review'] = _("""
<h1>Reviewing</h1>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.<p> 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'] = _("""<h1>Final review</h1>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'] = _("""
<h1>Adding cards</h1>
Please enter some things you want to learn.
<h2>Shortcuts</h2>
<table width=230>
<tr><td><b>Tab</b></td><td> change between fields.</td></tr>
<tr><td><b>Ctrl+Enter</b></td><td> add the current card.</td></tr>
<tr><td><b>Esc</b></td><td> close the dialog.</td></tr>
<tr><td><b>Ctrl+B</b></td><td> bold</td></tr>
<tr><td><b>Ctrl+I</b></td><td> italic</td></tr>
<tr><td><b>Ctrl+U</b></td><td> underline</td></tr>
<tr><td><b>Alt+1</b></td><td> enable/disable card model 1</td></tr>
<tr><td><b>Alt+2</b></td><td> enable/disable card model 2</td></tr>
</table>
<h2>Cards</h2>Depending on the language you selected, more than one card may
be generated. This allows you to practice both <b>Production</b> (trying to produce
the target idea/phrase yourself), and <b>Recognition</b> (quickly recognizing and
understanding the target idea/phrase). To change which cards are automatically
generated, click the rightmost button at the top.""")

View file

@ -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(_(
'<h1>Open Online Deck</h1>'
'To load a deck from your free <a href="http://anki.ichi2.net/">online account</a>,<br>'
"please enter your details below.<br>"))
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)

View file

@ -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)

View file

@ -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(_("<br><br>Checking shared decks.."))
self.setStatus(_("<br><br>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()

View file

@ -192,22 +192,14 @@ class View(object):
def drawNoDeckMessage(self):
self.write(_("""<h1>Welcome to Anki!</h1>
<p>
<table width=90%>
<table>
<tr>
<td>
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.
<a href="welcome:new"><img src=":/icons/document-new.png"></a>
</td>
<td valign=middle>
<h2><a href="welcome:new">Create a new deck</a></h2></td>
</tr>
</table>
<p>
<table>
<tr>
<td width=50>
@ -222,37 +214,6 @@ time before you see it again will get bigger.
</td>
<td valign=middle><h2><a href="welcome:open">Open an existing deck</a></h2></td>
</tr>
<tr>
<td>
<a href="welcome:new"><img src=":/icons/document-new.png"></a>
</td>
<td valign=middle>
<h2><a href="welcome:new">Create a new deck</a></h2></td>
</tr>
</table>
<p>
<table width=90%>
<tr>
<td>
<h2>Adding material</h2>
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.
<p>
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.
<p>
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.
</td>
</tr>
</table>
"""))

View file

@ -5,7 +5,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>921</width>
<width>692</width>
<height>553</height>
</rect>
</property>
@ -13,20 +13,20 @@
<string>Anki - Add Cards</string>
</property>
<layout class="QHBoxLayout" >
<property name="margin" >
<number>0</number>
</property>
<property name="spacing" >
<number>3</number>
</property>
<property name="margin" >
<number>0</number>
</property>
<item>
<layout class="QVBoxLayout" >
<property name="margin" >
<number>6</number>
</property>
<property name="spacing" >
<number>3</number>
</property>
<property name="margin" >
<number>6</number>
</property>
<item>
<layout class="QGridLayout" >
<property name="margin" >
@ -43,9 +43,7 @@
<item>
<widget class="QGroupBox" name="fieldsArea" >
<property name="sizePolicy" >
<sizepolicy>
<hsizetype>5</hsizetype>
<vsizetype>7</vsizetype>
<sizepolicy vsizetype="Expanding" hsizetype="Preferred" >
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
@ -61,10 +59,10 @@
<string>Status</string>
</property>
<layout class="QVBoxLayout" >
<property name="margin" >
<property name="spacing" >
<number>0</number>
</property>
<property name="spacing" >
<property name="margin" >
<number>0</number>
</property>
<item>
@ -73,9 +71,7 @@
<bool>false</bool>
</property>
<property name="sizePolicy" >
<sizepolicy>
<hsizetype>7</hsizetype>
<vsizetype>5</vsizetype>
<sizepolicy vsizetype="Preferred" hsizetype="Expanding" >
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
@ -112,189 +108,6 @@
</item>
</layout>
</item>
<item>
<widget class="QFrame" name="helpFrame" >
<property name="frameShape" >
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow" >
<enum>QFrame::Raised</enum>
</property>
<layout class="QHBoxLayout" >
<property name="margin" >
<number>0</number>
</property>
<property name="spacing" >
<number>0</number>
</property>
<item>
<widget class="Line" name="line" >
<property name="orientation" >
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
<item>
<widget class="QFrame" name="innerHelpFrame" >
<property name="palette" >
<palette>
<active>
<colorrole role="Base" >
<brush brushstyle="SolidPattern" >
<color alpha="255" >
<red>255</red>
<green>255</green>
<blue>255</blue>
</color>
</brush>
</colorrole>
<colorrole role="Window" >
<brush brushstyle="SolidPattern" >
<color alpha="255" >
<red>255</red>
<green>250</green>
<blue>230</blue>
</color>
</brush>
</colorrole>
</active>
<inactive>
<colorrole role="Base" >
<brush brushstyle="SolidPattern" >
<color alpha="255" >
<red>255</red>
<green>255</green>
<blue>255</blue>
</color>
</brush>
</colorrole>
<colorrole role="Window" >
<brush brushstyle="SolidPattern" >
<color alpha="255" >
<red>255</red>
<green>250</green>
<blue>230</blue>
</color>
</brush>
</colorrole>
</inactive>
<disabled>
<colorrole role="Base" >
<brush brushstyle="SolidPattern" >
<color alpha="255" >
<red>255</red>
<green>250</green>
<blue>230</blue>
</color>
</brush>
</colorrole>
<colorrole role="Window" >
<brush brushstyle="SolidPattern" >
<color alpha="255" >
<red>255</red>
<green>250</green>
<blue>230</blue>
</color>
</brush>
</colorrole>
</disabled>
</palette>
</property>
<property name="autoFillBackground" >
<bool>true</bool>
</property>
<property name="frameShape" >
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow" >
<enum>QFrame::Raised</enum>
</property>
<layout class="QHBoxLayout" >
<property name="margin" >
<number>9</number>
</property>
<property name="spacing" >
<number>6</number>
</property>
<item>
<widget class="QTextBrowser" name="help" >
<property name="enabled" >
<bool>true</bool>
</property>
<property name="sizePolicy" >
<sizepolicy>
<hsizetype>1</hsizetype>
<vsizetype>7</vsizetype>
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize" >
<size>
<width>200</width>
<height>0</height>
</size>
</property>
<property name="maximumSize" >
<size>
<width>300</width>
<height>16777215</height>
</size>
</property>
<property name="palette" >
<palette>
<active>
<colorrole role="Base" >
<brush brushstyle="SolidPattern" >
<color alpha="255" >
<red>255</red>
<green>250</green>
<blue>230</blue>
</color>
</brush>
</colorrole>
</active>
<inactive>
<colorrole role="Base" >
<brush brushstyle="SolidPattern" >
<color alpha="255" >
<red>255</red>
<green>250</green>
<blue>230</blue>
</color>
</brush>
</colorrole>
</inactive>
<disabled>
<colorrole role="Base" >
<brush brushstyle="SolidPattern" >
<color alpha="255" >
<red>207</red>
<green>207</green>
<blue>207</blue>
</color>
</brush>
</colorrole>
</disabled>
</palette>
</property>
<property name="frameShape" >
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow" >
<enum>QFrame::Sunken</enum>
</property>
<property name="horizontalScrollBarPolicy" >
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<tabstops>

View file

@ -6,7 +6,7 @@
<x>0</x>
<y>0</y>
<width>388</width>
<height>363</height>
<height>456</height>
</rect>
</property>
<property name="windowTitle" >
@ -16,7 +16,7 @@
<item>
<widget class="QLabel" name="label" >
<property name="text" >
<string>&lt;h1>What would you like to study?&lt;/h1></string>
<string>&lt;h1>Please choose a template&lt;/h1></string>
</property>
<property name="alignment" >
<set>Qt::AlignCenter</set>
@ -32,16 +32,6 @@
<string/>
</property>
<layout class="QVBoxLayout" >
<item>
<widget class="QRadioButton" name="createTemplate" >
<property name="text" >
<string>A pre-made quiz style.</string>
</property>
<property name="checked" >
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QListWidget" name="models" >
<property name="font" >
@ -57,20 +47,6 @@
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="createBasic" >
<property name="text" >
<string>A simple front-to-back quiz style.</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="loadOnline" >
<property name="text" >
<string>An existing online deck.</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
@ -80,7 +56,7 @@
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons" >
<set>QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok</set>
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Help|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
@ -120,21 +96,5 @@
</hint>
</hints>
</connection>
<connection>
<sender>createTemplate</sender>
<signal>toggled(bool)</signal>
<receiver>models</receiver>
<slot>setEnabled(bool)</slot>
<hints>
<hint type="sourcelabel" >
<x>217</x>
<y>71</y>
</hint>
<hint type="destinationlabel" >
<x>213</x>
<y>138</y>
</hint>
</hints>
</connection>
</connections>
</ui>

File diff suppressed because it is too large Load diff

View file

@ -5,8 +5,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>555</width>
<height>292</height>
<width>543</width>
<height>457</height>
</rect>
</property>
<property name="sizePolicy" >
@ -26,9 +26,9 @@
<property name="geometry" >
<rect>
<x>0</x>
<y>57</y>
<width>555</width>
<height>212</height>
<y>53</y>
<width>543</width>
<height>384</height>
</rect>
</property>
<property name="sizePolicy" >
@ -193,6 +193,12 @@
</item>
<item>
<widget class="QFrame" name="innerHelpFrame" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Preferred" hsizetype="Expanding" >
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="palette" >
<palette>
<active>
@ -279,17 +285,11 @@
<bool>true</bool>
</property>
<property name="sizePolicy" >
<sizepolicy vsizetype="Expanding" hsizetype="Fixed" >
<sizepolicy vsizetype="Expanding" hsizetype="Expanding" >
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize" >
<size>
<width>200</width>
<height>0</height>
</size>
</property>
<property name="maximumSize" >
<size>
<width>300</width>
@ -357,7 +357,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>555</width>
<width>543</width>
<height>23</height>
</rect>
</property>
@ -405,6 +405,7 @@
<addaction name="actionNew" />
<addaction name="actionOpen" />
<addaction name="menuOpenRecent" />
<addaction name="actionOpenOnline" />
<addaction name="actionImport" />
<addaction name="separator" />
<addaction name="actionSave" />
@ -471,9 +472,9 @@
<property name="geometry" >
<rect>
<x>0</x>
<y>269</y>
<width>555</width>
<height>23</height>
<y>437</y>
<width>543</width>
<height>20</height>
</rect>
</property>
</widget>
@ -485,8 +486,8 @@
<rect>
<x>0</x>
<y>23</y>
<width>555</width>
<height>34</height>
<width>543</width>
<height>30</height>
</rect>
</property>
<property name="orientation" >
@ -914,6 +915,15 @@
<string>Check Media Database..</string>
</property>
</action>
<action name="actionOpenOnline" >
<property name="icon" >
<iconset resource="../icons.qrc" >
<normaloff>:/icons/document-open-remote.png</normaloff>:/icons/document-open-remote.png</iconset>
</property>
<property name="text" >
<string>Open Online..</string>
</property>
</action>
</widget>
<resources>
<include location="../icons.qrc" />

View file

@ -8,8 +8,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>544</width>
<height>589</height>
<width>494</width>
<height>502</height>
</rect>
</property>
<property name="windowTitle" >
@ -26,12 +26,12 @@
<rect>
<x>0</x>
<y>0</y>
<width>522</width>
<height>515</height>
<width>478</width>
<height>436</height>
</rect>
</property>
<attribute name="title" >
<string>Model properties</string>
<string>General</string>
</attribute>
<layout class="QVBoxLayout" >
<property name="spacing" >
@ -43,7 +43,7 @@
<item>
<widget class="QLabel" name="label_7" >
<property name="text" >
<string>&lt;h1>Model properties&lt;/h1></string>
<string>&lt;h1>General Model Properties&lt;/h1></string>
</property>
</widget>
</item>
@ -88,7 +88,7 @@
<item row="4" column="0" >
<widget class="QLabel" name="label_4" >
<property name="text" >
<string>&lt;b>Features&lt;a href="http://ichi2.net/anki/wiki/Key_Terms_and_Concepts#head-f57a8f871fc97ceb2f6daa43528fd640ee63b4f4">?&lt;/a>&lt;/b></string>
<string>&lt;b>Features&lt;/b></string>
</property>
<property name="alignment" >
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
@ -101,7 +101,7 @@
<item row="1" column="0" >
<widget class="QLabel" name="label_3" >
<property name="text" >
<string>&lt;b>Tags&lt;a href="http://ichi2.net/anki/wiki/Key_Terms_and_Concepts#head-09efbe5fd6809ae0d90543adf92014b8eb9ef1bf">?&lt;/a>&lt;/b></string>
<string>&lt;b>Tags&lt;/b></string>
</property>
<property name="alignment" >
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
@ -117,7 +117,7 @@
<item row="3" column="0" >
<widget class="QLabel" name="label_5" >
<property name="text" >
<string>&lt;b>Card spacing&lt;a href="http://ichi2.net/anki/wiki/Key_Terms_and_Concepts#head-59a81e35b6afb23930005e943068945214d194b3">?&lt;/a>&lt;/b></string>
<string>&lt;b>Card spacing&lt;/b></string>
</property>
<property name="alignment" >
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
@ -132,7 +132,7 @@
<item row="0" column="0" >
<widget class="QLabel" name="label_16" >
<property name="text" >
<string>Minimum spacing&lt;a href="http://ichi2.net/anki/wiki/Key_Terms_and_Concepts#head-4ee3a58e2fdd61da8ef81984213862d3bc0ed4bd">?&lt;/a></string>
<string>Minimum spacing</string>
</property>
<property name="openExternalLinks" >
<bool>true</bool>
@ -158,7 +158,7 @@
<item row="1" column="0" >
<widget class="QLabel" name="label_24" >
<property name="text" >
<string>Minimum interval multiplier&lt;a href="http://ichi2.net/anki/wiki/Key_Terms_and_Concepts#head-51074b785bb6049b44fce9f18fca198100c4d2f7">?&lt;/a></string>
<string>Minimum interval multiplier</string>
</property>
<property name="openExternalLinks" >
<bool>true</bool>
@ -182,8 +182,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>522</width>
<height>515</height>
<width>478</width>
<height>436</height>
</rect>
</property>
<attribute name="title" >
@ -197,16 +197,9 @@
<number>9</number>
</property>
<item>
<widget class="QLabel" name="label_8" >
<widget class="QLabel" name="label_6" >
<property name="text" >
<string>&lt;h1>Fields&lt;/h1></string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_10" >
<property name="text" >
<string>A flashcard is made from a number of fields, like "meaning", "notes", etc.</string>
<string>&lt;h1>Field Models&lt;/h1></string>
</property>
</widget>
</item>
@ -234,68 +227,62 @@
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout" >
<item>
<layout class="QVBoxLayout" >
<property name="spacing" >
<number>6</number>
<widget class="QPushButton" name="fieldAdd" >
<property name="text" >
<string>&amp;Add</string>
</property>
<property name="margin" >
<number>0</number>
<property name="autoDefault" >
<bool>false</bool>
</property>
<item>
<widget class="QPushButton" name="fieldAdd" >
<property name="text" >
<string>&amp;Add</string>
</property>
<property name="autoDefault" >
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="fieldDelete" >
<property name="text" >
<string>&amp;Delete</string>
</property>
<property name="autoDefault" >
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="fieldUp" >
<property name="toolTip" >
<string>Move selected field up</string>
</property>
<property name="text" >
<string>Move &amp;Up</string>
</property>
<property name="autoDefault" >
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="fieldDown" >
<property name="toolTip" >
<string>Move selected field down</string>
</property>
<property name="text" >
<string>Move Dow&amp;n</string>
</property>
<property name="autoDefault" >
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QPushButton" name="fieldUp" >
<property name="toolTip" >
<string>Move selected field up</string>
</property>
<property name="text" >
<string>Move &amp;Up</string>
</property>
<property name="autoDefault" >
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="fieldDelete" >
<property name="text" >
<string>&amp;Delete</string>
</property>
<property name="autoDefault" >
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="fieldDown" >
<property name="toolTip" >
<string>Move selected field down</string>
</property>
<property name="text" >
<string>Move Dow&amp;n</string>
</property>
<property name="autoDefault" >
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QGroupBox" name="fieldEditBox" >
<property name="title" >
<string>Field properties</string>
<string/>
</property>
<layout class="QVBoxLayout" >
<property name="spacing" >
@ -366,7 +353,7 @@
<item row="5" column="0" >
<widget class="QLabel" name="label_22" >
<property name="text" >
<string>&lt;b>Features&lt;a href="http://ichi2.net/anki/wiki/Key_Terms_and_Concepts#head-f57a8f871fc97ceb2f6daa43528fd640ee63b4f4">?&lt;/a>&lt;/b></string>
<string>&lt;b>Features&lt;/b></string>
</property>
<property name="alignment" >
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
@ -422,8 +409,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>522</width>
<height>515</height>
<width>478</width>
<height>436</height>
</rect>
</property>
<attribute name="title" >
@ -437,25 +424,9 @@
<number>9</number>
</property>
<item>
<widget class="QLabel" name="label_9" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<widget class="QLabel" name="label_8" >
<property name="text" >
<string>&lt;h1>Card models&lt;/h1></string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_11" >
<property name="text" >
<string>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.</string>
</property>
<property name="wordWrap" >
<bool>true</bool>
<string>&lt;h1>Card Models&lt;/h1></string>
</property>
</widget>
</item>
@ -483,63 +454,57 @@
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2" >
<item>
<layout class="QVBoxLayout" >
<property name="spacing" >
<number>6</number>
<widget class="QPushButton" name="cardAdd" >
<property name="text" >
<string>&amp;Add</string>
</property>
<property name="margin" >
<number>0</number>
</widget>
</item>
<item>
<widget class="QPushButton" name="cardUp" >
<property name="toolTip" >
<string>Move selected card model up</string>
</property>
<item>
<widget class="QPushButton" name="cardAdd" >
<property name="text" >
<string>&amp;Add</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="cardToggle" >
<property name="text" >
<string/>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="cardDelete" >
<property name="text" >
<string>&amp;Delete</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="cardUp" >
<property name="toolTip" >
<string>Move selected card model up</string>
</property>
<property name="text" >
<string>Move &amp;Up</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="cardDown" >
<property name="toolTip" >
<string>Move selected card model down</string>
</property>
<property name="text" >
<string>Move Dow&amp;n</string>
</property>
</widget>
</item>
</layout>
<property name="text" >
<string>Move &amp;Up</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="cardDown" >
<property name="toolTip" >
<string>Move selected card model down</string>
</property>
<property name="text" >
<string>Move Dow&amp;n</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="cardToggle" >
<property name="text" >
<string/>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="cardDelete" >
<property name="text" >
<string>&amp;Delete</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QGroupBox" name="cardEditBox" >
<property name="title" >
<string>Edit card</string>
<string/>
</property>
<layout class="QVBoxLayout" >
<property name="spacing" >
@ -630,7 +595,7 @@
<item row="3" column="0" >
<widget class="QLabel" name="label_15" >
<property name="text" >
<string>&lt;b>Answer format&lt;a href="http://ichi2.net/anki/wiki/Key_Terms_and_Concepts#head-b8916ff117aa0da4a414ce9b9b9be4a232eab2f4">?&lt;/a>&lt;/b></string>
<string>&lt;b>Answer format&lt;/b></string>
</property>
<property name="alignment" >
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
@ -668,7 +633,7 @@
<item row="0" column="0" >
<widget class="QLabel" name="label_12" >
<property name="text" >
<string>&lt;b>Name/tag&lt;a href="http://ichi2.net/anki/wiki/Key_Terms_and_Concepts#head-09efbe5fd6809ae0d90543adf92014b8eb9ef1bf">?&lt;/a>&lt;/b></string>
<string>&lt;b>Name/tag&lt;/b></string>
</property>
<property name="alignment" >
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
@ -681,7 +646,7 @@
<item row="2" column="0" >
<widget class="QLabel" name="label_14" >
<property name="text" >
<string>&lt;b>Question format&lt;a href="http://ichi2.net/anki/wiki/Key_Terms_and_Concepts#head-b8916ff117aa0da4a414ce9b9b9be4a232eab2f4">?&lt;/a>&lt;/b></string>
<string>&lt;b>Question format&lt;/b></string>
</property>
<property name="alignment" >
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
@ -706,7 +671,7 @@
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons" >
<set>QDialogButtonBox::Close</set>
<set>QDialogButtonBox::Close|QDialogButtonBox::Help</set>
</property>
</widget>
</item>
@ -722,8 +687,8 @@
<tabstop>decorators</tabstop>
<tabstop>fieldList</tabstop>
<tabstop>fieldAdd</tabstop>
<tabstop>fieldDelete</tabstop>
<tabstop>fieldUp</tabstop>
<tabstop>fieldDelete</tabstop>
<tabstop>fieldDown</tabstop>
<tabstop>fieldName</tabstop>
<tabstop>fieldDescription</tabstop>
@ -733,10 +698,10 @@
<tabstop>fieldFeatures</tabstop>
<tabstop>cardList</tabstop>
<tabstop>cardAdd</tabstop>
<tabstop>cardToggle</tabstop>
<tabstop>cardDelete</tabstop>
<tabstop>cardUp</tabstop>
<tabstop>cardDown</tabstop>
<tabstop>cardToggle</tabstop>
<tabstop>cardDelete</tabstop>
<tabstop>cardName</tabstop>
<tabstop>cardDescription</tabstop>
<tabstop>cardQuestion</tabstop>

View file

@ -1,5 +1,6 @@
<RCC>
<qresource prefix="/" >
<file>icons/document-open-remote.png</file>
<file>icons/document-open-recent.png</file>
<file>icons/khtml_kget.png</file>
<file>icons/edit-find.png</file>

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

View file

@ -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\