customizable deck order, nicer layout of browser and study options

This commit is contained in:
Damien Elmes 2009-06-08 23:06:48 +09:00
parent 3bab1b6829
commit b5fdca39e7
5 changed files with 271 additions and 238 deletions

View file

@ -97,6 +97,7 @@ class Config(dict):
'proxyPass': '', 'proxyPass': '',
'loadLastDeck': False, 'loadLastDeck': False,
'deckBrowserRefreshPeriod': 3600, 'deckBrowserRefreshPeriod': 3600,
'deckBrowserOrder': 0,
} }
for (k,v) in fields.items(): for (k,v) in fields.items():
if not self.has_key(k): if not self.has_key(k):

View file

@ -8,6 +8,7 @@ from PyQt4.QtWebKit import QWebPage
import os, sys, re, types, gettext, stat, traceback, inspect import os, sys, re, types, gettext, stat, traceback, inspect
import shutil, time, glob, tempfile, datetime, zipfile, locale import shutil, time, glob, tempfile, datetime, zipfile, locale
from operator import itemgetter
from PyQt4.QtCore import * from PyQt4.QtCore import *
from PyQt4.QtGui import * from PyQt4.QtGui import *
@ -1024,17 +1025,22 @@ your deck."""))
if ui.splash.finished: if ui.splash.finished:
self.finishProgress() self.finishProgress()
self.browserLastRefreshed = time.time() self.browserLastRefreshed = time.time()
self.reorderBrowserDecks()
def reorderBrowserDecks(self): def reorderBrowserDecks(self):
h = {} if self.config['deckBrowserOrder'] == 0:
for d in self.browserDecks: self.browserDecks.sort(key=itemgetter('mod'),
h[d['path']] = d reverse=True)
self.browserDecks = [] else:
for path in self.config['recentDeckPaths']: def custcmp(a, b):
try: x = cmp(not not b['due'], not not a['due'])
self.browserDecks.append(h[path]) if x:
except: return x
pass x = cmp(not not b['new'], not not a['new'])
if x:
return x
return cmp(a['mod'], b['mod'])
self.browserDecks.sort(cmp=custcmp)
def forceBrowserRefresh(self): def forceBrowserRefresh(self):
self.browserLastRefreshed = 0 self.browserLastRefreshed = 0
@ -1058,6 +1064,7 @@ your deck."""))
sip.delete(self.mainWin.decksFrame.layout()) sip.delete(self.mainWin.decksFrame.layout())
# build new layout # build new layout
layout = QGridLayout() layout = QGridLayout()
layout.setSpacing(0)
if (time.time() - self.browserLastRefreshed > if (time.time() - self.browserLastRefreshed >
self.config['deckBrowserRefreshPeriod']): self.config['deckBrowserRefreshPeriod']):
self.refreshBrowserDecks() self.refreshBrowserDecks()
@ -1065,14 +1072,13 @@ your deck."""))
self.reorderBrowserDecks() self.reorderBrowserDecks()
if self.browserDecks: if self.browserDecks:
layout.addWidget(QLabel(_("<b>Deck</b>")), 0, 0) layout.addWidget(QLabel(_("<b>Deck</b>")), 0, 0)
layout.setColumnStretch(0, 1)
l = QLabel(_("<b>Due<br>Today</b>")) l = QLabel(_("<b>Due<br>Today</b>"))
l.setAlignment(Qt.AlignRight | Qt.AlignVCenter) l.setAlignment(Qt.AlignRight | Qt.AlignVCenter)
layout.addWidget(l, 0, 1) layout.addWidget(l, 0, 1)
l = QLabel(_("<b>New<br>Today</b>")) l = QLabel(_("<b>New<br>Today</b>"))
l.setAlignment(Qt.AlignRight | Qt.AlignVCenter) l.setAlignment(Qt.AlignRight | Qt.AlignVCenter)
layout.addWidget(l, 0, 2) layout.addWidget(l, 0, 2)
# space
layout.addWidget(QLabel(" " * 4), 0, 3)
for c, deck in enumerate(self.browserDecks): for c, deck in enumerate(self.browserDecks):
# name # name
n = deck['name'] n = deck['name']
@ -1081,9 +1087,9 @@ your deck."""))
mod = _("%s ago") % anki.utils.fmtTimeSpan( mod = _("%s ago") % anki.utils.fmtTimeSpan(
time.time() - deck['mod']) time.time() - deck['mod'])
mod = "<font size=-1>%s</font>" % mod mod = "<font size=-1>%s</font>" % mod
layout.addWidget(QLabel( l = QLabel("%d. <b>%s</b><br>&nbsp;&nbsp;&nbsp;&nbsp;%s" %
"%d. <b>%s</b><br>&nbsp;&nbsp;&nbsp;&nbsp;%s" % (c+1, n, mod))
(c+1, n, mod)), c+1, 0) layout.addWidget(l, c+1, 0)
# due # due
col = '<b><font color=#0000ff>%s</font></b>' col = '<b><font color=#0000ff>%s</font></b>'
if deck['due'] > 0: if deck['due'] > 0:
@ -1100,6 +1106,7 @@ your deck."""))
else: else:
s = "" s = ""
l = QLabel(s) l = QLabel(s)
l.setMargin(10)
l.setMinimumWidth(50) l.setMinimumWidth(50)
l.setAlignment(Qt.AlignRight | Qt.AlignVCenter) l.setAlignment(Qt.AlignRight | Qt.AlignVCenter)
layout.addWidget(l, c+1, 2) layout.addWidget(l, c+1, 2)
@ -1117,7 +1124,7 @@ your deck."""))
openButton.setToolTip(_("Open this deck%s") % extra) openButton.setToolTip(_("Open this deck%s") % extra)
self.connect(openButton, SIGNAL("clicked()"), self.connect(openButton, SIGNAL("clicked()"),
lambda d=deck['path']: self.loadDeck(d)) lambda d=deck['path']: self.loadDeck(d))
layout.addWidget(openButton, c+1, 4) layout.addWidget(openButton, c+1, 3)
if c == 0: if c == 0:
focusButton = openButton focusButton = openButton
# more # more
@ -1130,7 +1137,7 @@ your deck."""))
_("Forget removes the deck from the list without deleting.")) _("Forget removes the deck from the list without deleting."))
self.connect(moreButton, SIGNAL("currentIndexChanged(int)"), self.connect(moreButton, SIGNAL("currentIndexChanged(int)"),
lambda idx, c=c: self.onDeckBrowserMore(idx, c)) lambda idx, c=c: self.onDeckBrowserMore(idx, c))
layout.addWidget(moreButton, c+1, 5) layout.addWidget(moreButton, c+1, 4)
refresh = QPushButton(_("Refresh")) refresh = QPushButton(_("Refresh"))
refresh.setToolTip(_("Check due counts again (Ctrl+Shift+r)")) refresh.setToolTip(_("Check due counts again (Ctrl+Shift+r)"))
refresh.setShortcut(_("Ctrl+Shift+r")) refresh.setShortcut(_("Ctrl+Shift+r"))

View file

@ -142,7 +142,7 @@ class Preferences(QDialog):
self.dialog.addZeroSpace.setChecked(self.config['addZeroSpace']) self.dialog.addZeroSpace.setChecked(self.config['addZeroSpace'])
self.dialog.alternativeTheme.setChecked(self.config['alternativeTheme']) self.dialog.alternativeTheme.setChecked(self.config['alternativeTheme'])
self.dialog.showProgress.setChecked(self.config['showProgress']) self.dialog.showProgress.setChecked(self.config['showProgress'])
self.dialog.openLastDeck.setChecked(self.config['loadLastDeck']) self.dialog.deckBrowserOrder.setChecked(self.config['deckBrowserOrder'])
def updateAdvanced(self): def updateAdvanced(self):
self.config['showTrayIcon'] = self.dialog.showTray.isChecked() self.config['showTrayIcon'] = self.dialog.showTray.isChecked()
@ -156,6 +156,10 @@ class Preferences(QDialog):
self.config['showProgress'] = self.dialog.showProgress.isChecked() self.config['showProgress'] = self.dialog.showProgress.isChecked()
self.config['preventEditUntilAnswer'] = self.dialog.preventEdits.isChecked() self.config['preventEditUntilAnswer'] = self.dialog.preventEdits.isChecked()
self.config['loadLastDeck'] = self.dialog.openLastDeck.isChecked() self.config['loadLastDeck'] = self.dialog.openLastDeck.isChecked()
if self.dialog.deckBrowserOrder.isChecked():
self.config['deckBrowserOrder'] = 1
else:
self.config['deckBrowserOrder'] = 0
def codeToIndex(self, code): def codeToIndex(self, code):
n = 0 n = 0

View file

@ -601,6 +601,12 @@
</item> </item>
<item> <item>
<widget class="QFrame" name="studyOptionsFrame"> <widget class="QFrame" name="studyOptionsFrame">
<property name="maximumSize">
<size>
<width>400</width>
<height>16777215</height>
</size>
</property>
<property name="frameShape"> <property name="frameShape">
<enum>QFrame::StyledPanel</enum> <enum>QFrame::StyledPanel</enum>
</property> </property>
@ -1108,6 +1114,12 @@
</item> </item>
<item> <item>
<widget class="QFrame" name="frame_3"> <widget class="QFrame" name="frame_3">
<property name="maximumSize">
<size>
<width>500</width>
<height>16777215</height>
</size>
</property>
<property name="frameShape"> <property name="frameShape">
<enum>QFrame::StyledPanel</enum> <enum>QFrame::StyledPanel</enum>
</property> </property>

View file

@ -1,47 +1,48 @@
<ui version="4.0" > <?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Preferences</class> <class>Preferences</class>
<widget class="QDialog" name="Preferences" > <widget class="QDialog" name="Preferences">
<property name="geometry" > <property name="geometry">
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>320</width> <width>332</width>
<height>419</height> <height>438</height>
</rect> </rect>
</property> </property>
<property name="windowTitle" > <property name="windowTitle">
<string>Preferences</string> <string>Preferences</string>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_2" > <layout class="QVBoxLayout" name="verticalLayout_2">
<item> <item>
<widget class="QTabWidget" name="tabWidget" > <widget class="QTabWidget" name="tabWidget">
<property name="focusPolicy" > <property name="focusPolicy">
<enum>Qt::StrongFocus</enum> <enum>Qt::StrongFocus</enum>
</property> </property>
<property name="currentIndex" > <property name="currentIndex">
<number>0</number> <number>0</number>
</property> </property>
<widget class="QWidget" name="tab_1" > <widget class="QWidget" name="tab_1">
<attribute name="title" > <attribute name="title">
<string>Display</string> <string>Display</string>
</attribute> </attribute>
<layout class="QVBoxLayout" name="verticalLayout" > <layout class="QVBoxLayout" name="verticalLayout">
<property name="spacing" > <property name="spacing">
<number>6</number> <number>6</number>
</property> </property>
<item> <item>
<widget class="QLabel" name="label" > <widget class="QLabel" name="label">
<property name="text" > <property name="text">
<string>&lt;h1>Language&lt;/h1></string> <string>&lt;h1&gt;Language&lt;/h1&gt;</string>
</property> </property>
<property name="wordWrap" > <property name="wordWrap">
<bool>false</bool> <bool>false</bool>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QComboBox" name="interfaceLang" > <widget class="QComboBox" name="interfaceLang">
<property name="minimumSize" > <property name="minimumSize">
<size> <size>
<width>300</width> <width>300</width>
<height>0</height> <height>0</height>
@ -50,65 +51,65 @@
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QLabel" name="label_2" > <widget class="QLabel" name="label_2">
<property name="sizePolicy" > <property name="sizePolicy">
<sizepolicy vsizetype="Fixed" hsizetype="Fixed" > <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch> <horstretch>0</horstretch>
<verstretch>0</verstretch> <verstretch>0</verstretch>
</sizepolicy> </sizepolicy>
</property> </property>
<property name="focusPolicy" > <property name="focusPolicy">
<enum>Qt::TabFocus</enum> <enum>Qt::TabFocus</enum>
</property> </property>
<property name="text" > <property name="text">
<string>&lt;h1>Reviewing&lt;/h1></string> <string>&lt;h1&gt;Reviewing&lt;/h1&gt;</string>
</property> </property>
<property name="wordWrap" > <property name="wordWrap">
<bool>false</bool> <bool>false</bool>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QCheckBox" name="showDivider" > <widget class="QCheckBox" name="showDivider">
<property name="text" > <property name="text">
<string>Show divider between question and answer</string> <string>Show divider between question and answer</string>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QCheckBox" name="splitQA" > <widget class="QCheckBox" name="splitQA">
<property name="text" > <property name="text">
<string>Put space between question and answer</string> <string>Put space between question and answer</string>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QCheckBox" name="showEstimates" > <widget class="QCheckBox" name="showEstimates">
<property name="text" > <property name="text">
<string>Show next time before answer</string> <string>Show next time before answer</string>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QCheckBox" name="showProgress" > <widget class="QCheckBox" name="showProgress">
<property name="text" > <property name="text">
<string>Show due count and progress during review</string> <string>Show due count and progress during review</string>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QCheckBox" name="preventEdits" > <widget class="QCheckBox" name="preventEdits">
<property name="text" > <property name="text">
<string>Prevent edits until answer shown</string> <string>Prevent edits until answer shown</string>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item>
<spacer name="verticalSpacer" > <spacer name="verticalSpacer">
<property name="orientation" > <property name="orientation">
<enum>Qt::Vertical</enum> <enum>Qt::Vertical</enum>
</property> </property>
<property name="sizeHint" stdset="0" > <property name="sizeHint" stdset="0">
<size> <size>
<width>20</width> <width>20</width>
<height>0</height> <height>0</height>
@ -117,112 +118,112 @@
</spacer> </spacer>
</item> </item>
<item> <item>
<widget class="QLabel" name="label_3" > <widget class="QLabel" name="label_3">
<property name="text" > <property name="text">
<string>Some settings will take effect after you restart Anki.</string> <string>Some settings will take effect after you restart Anki.</string>
</property> </property>
<property name="alignment" > <property name="alignment">
<set>Qt::AlignCenter</set> <set>Qt::AlignCenter</set>
</property> </property>
</widget> </widget>
</item> </item>
</layout> </layout>
</widget> </widget>
<widget class="QWidget" name="tab_2" > <widget class="QWidget" name="tab_2">
<attribute name="title" > <attribute name="title">
<string>Network</string> <string>Network</string>
</attribute> </attribute>
<layout class="QVBoxLayout" name="verticalLayout_4" > <layout class="QVBoxLayout" name="verticalLayout_4">
<property name="spacing" > <property name="spacing">
<number>10</number> <number>10</number>
</property> </property>
<item> <item>
<layout class="QHBoxLayout" > <layout class="QHBoxLayout">
<property name="spacing" > <property name="spacing">
<number>10</number> <number>10</number>
</property> </property>
<property name="margin" > <property name="margin">
<number>0</number> <number>0</number>
</property> </property>
<item> <item>
<layout class="QVBoxLayout" > <layout class="QVBoxLayout">
<property name="spacing" > <property name="spacing">
<number>6</number> <number>6</number>
</property> </property>
<property name="margin" > <property name="margin">
<number>0</number> <number>0</number>
</property> </property>
<item> <item>
<layout class="QGridLayout" > <layout class="QGridLayout">
<property name="margin" > <property name="margin">
<number>0</number> <number>0</number>
</property> </property>
<property name="spacing" > <property name="spacing">
<number>6</number> <number>6</number>
</property> </property>
</layout> </layout>
</item> </item>
<item> <item>
<widget class="QLabel" name="label_16" > <widget class="QLabel" name="label_16">
<property name="text" > <property name="text">
<string>&lt;h1>Synchronisation&lt;/h1>&lt;a href="http://anki.ichi2.net/">Create a free account&lt;/a>.</string> <string>&lt;h1&gt;Synchronisation&lt;/h1&gt;&lt;a href=&quot;http://anki.ichi2.net/&quot;&gt;Create a free account&lt;/a&gt;.</string>
</property> </property>
<property name="wordWrap" > <property name="wordWrap">
<bool>true</bool> <bool>true</bool>
</property> </property>
<property name="openExternalLinks" > <property name="openExternalLinks">
<bool>true</bool> <bool>true</bool>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item>
<layout class="QGridLayout" > <layout class="QGridLayout">
<property name="margin" > <property name="margin">
<number>0</number> <number>0</number>
</property> </property>
<property name="spacing" > <property name="spacing">
<number>6</number> <number>6</number>
</property> </property>
<item row="1" column="0" > <item row="1" column="0">
<widget class="QLabel" name="label_18" > <widget class="QLabel" name="label_18">
<property name="text" > <property name="text">
<string>Password</string> <string>Password</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="0" > <item row="0" column="0">
<widget class="QLabel" name="label_17" > <widget class="QLabel" name="label_17">
<property name="text" > <property name="text">
<string>Username</string> <string>Username</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="1" > <item row="0" column="1">
<widget class="QLineEdit" name="syncUser" /> <widget class="QLineEdit" name="syncUser"/>
</item> </item>
<item row="3" column="0" > <item row="3" column="0">
<widget class="QCheckBox" name="syncOnClose" > <widget class="QCheckBox" name="syncOnClose">
<property name="text" > <property name="text">
<string>Sync on close</string> <string>Sync on close</string>
</property> </property>
<property name="checked" > <property name="checked">
<bool>true</bool> <bool>true</bool>
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="1" > <item row="1" column="1">
<widget class="QLineEdit" name="syncPass" > <widget class="QLineEdit" name="syncPass">
<property name="echoMode" > <property name="echoMode">
<enum>QLineEdit::Password</enum> <enum>QLineEdit::Password</enum>
</property> </property>
</widget> </widget>
</item> </item>
<item row="2" column="0" > <item row="2" column="0">
<widget class="QCheckBox" name="syncOnOpen" > <widget class="QCheckBox" name="syncOnOpen">
<property name="text" > <property name="text">
<string>Sync on open</string> <string>Sync on open</string>
</property> </property>
<property name="checked" > <property name="checked">
<bool>true</bool> <bool>true</bool>
</property> </property>
</widget> </widget>
@ -234,61 +235,61 @@
</layout> </layout>
</item> </item>
<item> <item>
<widget class="QLabel" name="label_13" > <widget class="QLabel" name="label_13">
<property name="text" > <property name="text">
<string>&lt;h1>Proxy&lt;/h1></string> <string>&lt;h1&gt;Proxy&lt;/h1&gt;</string>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item>
<layout class="QGridLayout" name="gridLayout_3" > <layout class="QGridLayout" name="gridLayout_3">
<property name="verticalSpacing" > <property name="verticalSpacing">
<number>6</number> <number>6</number>
</property> </property>
<item row="0" column="0" > <item row="0" column="0">
<widget class="QLabel" name="label_14" > <widget class="QLabel" name="label_14">
<property name="text" > <property name="text">
<string>Host</string> <string>Host</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="1" > <item row="0" column="1">
<widget class="QLineEdit" name="proxyHost" /> <widget class="QLineEdit" name="proxyHost"/>
</item> </item>
<item row="2" column="0" > <item row="2" column="0">
<widget class="QLabel" name="label_19" > <widget class="QLabel" name="label_19">
<property name="text" > <property name="text">
<string>Username</string> <string>Username</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="2" column="1" > <item row="2" column="1">
<widget class="QLineEdit" name="proxyUser" /> <widget class="QLineEdit" name="proxyUser"/>
</item> </item>
<item row="3" column="0" > <item row="3" column="0">
<widget class="QLabel" name="label_20" > <widget class="QLabel" name="label_20">
<property name="text" > <property name="text">
<string>Password</string> <string>Password</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="3" column="1" > <item row="3" column="1">
<widget class="QLineEdit" name="proxyPass" > <widget class="QLineEdit" name="proxyPass">
<property name="echoMode" > <property name="echoMode">
<enum>QLineEdit::Password</enum> <enum>QLineEdit::Password</enum>
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="2" > <item row="0" column="2">
<widget class="QLabel" name="label_15" > <widget class="QLabel" name="label_15">
<property name="text" > <property name="text">
<string>Port</string> <string>Port</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="3" > <item row="0" column="3">
<widget class="QSpinBox" name="proxyPort" > <widget class="QSpinBox" name="proxyPort">
<property name="minimumSize" > <property name="minimumSize">
<size> <size>
<width>60</width> <width>60</width>
<height>0</height> <height>0</height>
@ -299,11 +300,11 @@
</layout> </layout>
</item> </item>
<item> <item>
<spacer name="verticalSpacer_2" > <spacer name="verticalSpacer_2">
<property name="orientation" > <property name="orientation">
<enum>Qt::Vertical</enum> <enum>Qt::Vertical</enum>
</property> </property>
<property name="sizeHint" stdset="0" > <property name="sizeHint" stdset="0">
<size> <size>
<width>20</width> <width>20</width>
<height>40</height> <height>40</height>
@ -312,50 +313,50 @@
</spacer> </spacer>
</item> </item>
<item> <item>
<widget class="QLabel" name="label_12" > <widget class="QLabel" name="label_12">
<property name="text" > <property name="text">
<string>Some settings will take effect after you restart Anki.</string> <string>Some settings will take effect after you restart Anki.</string>
</property> </property>
<property name="alignment" > <property name="alignment">
<set>Qt::AlignCenter</set> <set>Qt::AlignCenter</set>
</property> </property>
</widget> </widget>
</item> </item>
</layout> </layout>
</widget> </widget>
<widget class="QWidget" name="tab" > <widget class="QWidget" name="tab">
<attribute name="title" > <attribute name="title">
<string>Saving</string> <string>Saving</string>
</attribute> </attribute>
<layout class="QVBoxLayout" name="verticalLayout_3" > <layout class="QVBoxLayout" name="verticalLayout_3">
<property name="spacing" > <property name="spacing">
<number>10</number> <number>10</number>
</property> </property>
<item> <item>
<widget class="QLabel" name="label_4" > <widget class="QLabel" name="label_4">
<property name="text" > <property name="text">
<string>&lt;h1>Autosaving&lt;/h1></string> <string>&lt;h1&gt;Autosaving&lt;/h1&gt;</string>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item>
<layout class="QGridLayout" name="gridLayout" > <layout class="QGridLayout" name="gridLayout">
<property name="spacing" > <property name="spacing">
<number>6</number> <number>6</number>
</property> </property>
<item row="0" column="0" > <item row="0" column="0">
<widget class="QCheckBox" name="saveAfterEvery" > <widget class="QCheckBox" name="saveAfterEvery">
<property name="text" > <property name="text">
<string>Save after answering</string> <string>Save after answering</string>
</property> </property>
<property name="checked" > <property name="checked">
<bool>true</bool> <bool>true</bool>
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="1" > <item row="0" column="1">
<widget class="QSpinBox" name="saveAfterEveryNum" > <widget class="QSpinBox" name="saveAfterEveryNum">
<property name="maximumSize" > <property name="maximumSize">
<size> <size>
<width>60</width> <width>60</width>
<height>16777215</height> <height>16777215</height>
@ -363,19 +364,19 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="0" > <item row="1" column="0">
<widget class="QCheckBox" name="saveAfterAdding" > <widget class="QCheckBox" name="saveAfterAdding">
<property name="text" > <property name="text">
<string>Save after adding</string> <string>Save after adding</string>
</property> </property>
<property name="checked" > <property name="checked">
<bool>true</bool> <bool>true</bool>
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="1" > <item row="1" column="1">
<widget class="QSpinBox" name="saveAfterAddingNum" > <widget class="QSpinBox" name="saveAfterAddingNum">
<property name="maximumSize" > <property name="maximumSize">
<size> <size>
<width>60</width> <width>60</width>
<height>16777215</height> <height>16777215</height>
@ -383,26 +384,26 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="2" column="0" colspan="2" > <item row="2" column="0" colspan="2">
<widget class="QCheckBox" name="saveWhenClosing" > <widget class="QCheckBox" name="saveWhenClosing">
<property name="text" > <property name="text">
<string>Save when closing</string> <string>Save when closing</string>
</property> </property>
<property name="checked" > <property name="checked">
<bool>true</bool> <bool>true</bool>
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="2" > <item row="0" column="2">
<widget class="QLabel" name="label_5" > <widget class="QLabel" name="label_5">
<property name="text" > <property name="text">
<string>cards</string> <string>cards</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="2" > <item row="1" column="2">
<widget class="QLabel" name="label_7" > <widget class="QLabel" name="label_7">
<property name="text" > <property name="text">
<string>facts</string> <string>facts</string>
</property> </property>
</widget> </widget>
@ -410,33 +411,33 @@
</layout> </layout>
</item> </item>
<item> <item>
<widget class="QLabel" name="label_9" > <widget class="QLabel" name="label_9">
<property name="text" > <property name="text">
<string>&lt;h1>Backups&lt;/h1>Decks are backed up when they are opened, and only if they have been modified since the last backup.</string> <string>&lt;h1&gt;Backups&lt;/h1&gt;Decks are backed up when they are opened, and only if they have been modified since the last backup.</string>
</property> </property>
<property name="wordWrap" > <property name="wordWrap">
<bool>true</bool> <bool>true</bool>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item>
<layout class="QGridLayout" name="gridLayout_2" > <layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0" > <item row="0" column="0">
<widget class="QLabel" name="label_10" > <widget class="QLabel" name="label_10">
<property name="text" > <property name="text">
<string>Keep</string> <string>Keep</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="1" > <item row="0" column="1">
<widget class="QSpinBox" name="numBackups" > <widget class="QSpinBox" name="numBackups">
<property name="minimumSize" > <property name="minimumSize">
<size> <size>
<width>60</width> <width>60</width>
<height>0</height> <height>0</height>
</size> </size>
</property> </property>
<property name="maximumSize" > <property name="maximumSize">
<size> <size>
<width>60</width> <width>60</width>
<height>16777215</height> <height>16777215</height>
@ -444,19 +445,19 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="2" > <item row="0" column="2">
<widget class="QLabel" name="label_11" > <widget class="QLabel" name="label_11">
<property name="text" > <property name="text">
<string>backups of each deck</string> <string>backups of each deck</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="3" > <item row="0" column="3">
<spacer name="horizontalSpacer" > <spacer name="horizontalSpacer">
<property name="orientation" > <property name="orientation">
<enum>Qt::Horizontal</enum> <enum>Qt::Horizontal</enum>
</property> </property>
<property name="sizeHint" stdset="0" > <property name="sizeHint" stdset="0">
<size> <size>
<width>40</width> <width>40</width>
<height>20</height> <height>20</height>
@ -467,18 +468,18 @@
</layout> </layout>
</item> </item>
<item> <item>
<widget class="QLabel" name="openBackupFolder" > <widget class="QLabel" name="openBackupFolder">
<property name="text" > <property name="text">
<string>&lt;a href="backups">Open backup folder&lt;/a></string> <string>&lt;a href=&quot;backups&quot;&gt;Open backup folder&lt;/a&gt;</string>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item>
<spacer name="verticalSpacer_4" > <spacer name="verticalSpacer_4">
<property name="orientation" > <property name="orientation">
<enum>Qt::Vertical</enum> <enum>Qt::Vertical</enum>
</property> </property>
<property name="sizeHint" stdset="0" > <property name="sizeHint" stdset="0">
<size> <size>
<width>20</width> <width>20</width>
<height>59</height> <height>59</height>
@ -487,47 +488,47 @@
</spacer> </spacer>
</item> </item>
<item> <item>
<widget class="QLabel" name="label_21" > <widget class="QLabel" name="label_21">
<property name="text" > <property name="text">
<string>Some settings will take effect after you restart Anki.</string> <string>Some settings will take effect after you restart Anki.</string>
</property> </property>
<property name="alignment" > <property name="alignment">
<set>Qt::AlignCenter</set> <set>Qt::AlignCenter</set>
</property> </property>
</widget> </widget>
</item> </item>
</layout> </layout>
</widget> </widget>
<widget class="QWidget" name="tab_3" > <widget class="QWidget" name="tab_3">
<attribute name="title" > <attribute name="title">
<string>Advanced</string> <string>Advanced</string>
</attribute> </attribute>
<layout class="QVBoxLayout" > <layout class="QVBoxLayout">
<item> <item>
<layout class="QGridLayout" > <layout class="QGridLayout">
<item row="2" column="0" > <item row="2" column="0">
<widget class="QLabel" name="label_6" > <widget class="QLabel" name="label_6">
<property name="text" > <property name="text">
<string>&lt;h1>Advanced settings&lt;/h1></string> <string>&lt;h1&gt;Advanced settings&lt;/h1&gt;</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="5" column="0" > <item row="5" column="0">
<widget class="QCheckBox" name="showTimer" > <widget class="QCheckBox" name="showTimer">
<property name="text" > <property name="text">
<string>Show timer</string> <string>Show timer</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="3" column="0" > <item row="3" column="0">
<spacer name="verticalSpacer_3" > <spacer name="verticalSpacer_3">
<property name="orientation" > <property name="orientation">
<enum>Qt::Vertical</enum> <enum>Qt::Vertical</enum>
</property> </property>
<property name="sizeType" > <property name="sizeType">
<enum>QSizePolicy::Fixed</enum> <enum>QSizePolicy::Fixed</enum>
</property> </property>
<property name="sizeHint" stdset="0" > <property name="sizeHint" stdset="0">
<size> <size>
<width>20</width> <width>20</width>
<height>10</height> <height>10</height>
@ -535,38 +536,45 @@
</property> </property>
</spacer> </spacer>
</item> </item>
<item row="4" column="0" > <item row="4" column="0">
<widget class="QCheckBox" name="alternativeTheme" > <widget class="QCheckBox" name="alternativeTheme">
<property name="text" > <property name="text">
<string>Alternative theme</string> <string>Alternative theme</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="7" column="0" > <item row="7" column="0">
<widget class="QCheckBox" name="showStudyOptions" > <widget class="QCheckBox" name="showStudyOptions">
<property name="text" > <property name="text">
<string>Show study options on deck load</string> <string>Show study options on deck load</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="6" column="0" > <item row="6" column="0">
<widget class="QCheckBox" name="showTray" > <widget class="QCheckBox" name="showTray">
<property name="text" > <property name="text">
<string>Show tray icon</string> <string>Show tray icon</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="9" column="0" > <item row="10" column="0">
<widget class="QCheckBox" name="addZeroSpace" > <widget class="QCheckBox" name="addZeroSpace">
<property name="text" > <property name="text">
<string>Add hidden char to text (fixes Thai on OSX)</string> <string>Add hidden char to text (fixes Thai on OSX)</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="8" column="0" > <item row="8" column="0">
<widget class="QCheckBox" name="openLastDeck" > <widget class="QCheckBox" name="openLastDeck">
<property name="text" > <property name="text">
<string>Open last deck even when multiple decks available</string> <string>Always open last deck on startup</string>
</property>
</widget>
</item>
<item row="9" column="0">
<widget class="QCheckBox" name="deckBrowserOrder">
<property name="text">
<string>Show decks with cards due first in browser</string>
</property> </property>
</widget> </widget>
</item> </item>
@ -574,10 +582,10 @@
</item> </item>
<item> <item>
<spacer> <spacer>
<property name="orientation" > <property name="orientation">
<enum>Qt::Vertical</enum> <enum>Qt::Vertical</enum>
</property> </property>
<property name="sizeHint" stdset="0" > <property name="sizeHint" stdset="0">
<size> <size>
<width>20</width> <width>20</width>
<height>40</height> <height>40</height>
@ -586,11 +594,11 @@
</spacer> </spacer>
</item> </item>
<item> <item>
<widget class="QLabel" name="label_8" > <widget class="QLabel" name="label_8">
<property name="text" > <property name="text">
<string>Some settings will take effect after you restart Anki.</string> <string>Some settings will take effect after you restart Anki.</string>
</property> </property>
<property name="alignment" > <property name="alignment">
<set>Qt::AlignCenter</set> <set>Qt::AlignCenter</set>
</property> </property>
</widget> </widget>
@ -600,11 +608,11 @@
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QDialogButtonBox" name="buttonBox" > <widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation" > <property name="orientation">
<enum>Qt::Horizontal</enum> <enum>Qt::Horizontal</enum>
</property> </property>
<property name="standardButtons" > <property name="standardButtons">
<set>QDialogButtonBox::Close|QDialogButtonBox::Help</set> <set>QDialogButtonBox::Close|QDialogButtonBox::Help</set>
</property> </property>
</widget> </widget>
@ -639,6 +647,7 @@
<tabstop>showTray</tabstop> <tabstop>showTray</tabstop>
<tabstop>showStudyOptions</tabstop> <tabstop>showStudyOptions</tabstop>
<tabstop>openLastDeck</tabstop> <tabstop>openLastDeck</tabstop>
<tabstop>deckBrowserOrder</tabstop>
<tabstop>addZeroSpace</tabstop> <tabstop>addZeroSpace</tabstop>
<tabstop>buttonBox</tabstop> <tabstop>buttonBox</tabstop>
</tabstops> </tabstops>
@ -650,11 +659,11 @@
<receiver>Preferences</receiver> <receiver>Preferences</receiver>
<slot>accept()</slot> <slot>accept()</slot>
<hints> <hints>
<hint type="sourcelabel" > <hint type="sourcelabel">
<x>270</x> <x>270</x>
<y>412</y> <y>412</y>
</hint> </hint>
<hint type="destinationlabel" > <hint type="destinationlabel">
<x>157</x> <x>157</x>
<y>274</y> <y>274</y>
</hint> </hint>
@ -666,11 +675,11 @@
<receiver>Preferences</receiver> <receiver>Preferences</receiver>
<slot>reject()</slot> <slot>reject()</slot>
<hints> <hints>
<hint type="sourcelabel" > <hint type="sourcelabel">
<x>317</x> <x>317</x>
<y>412</y> <y>412</y>
</hint> </hint>
<hint type="destinationlabel" > <hint type="destinationlabel">
<x>286</x> <x>286</x>
<y>274</y> <y>274</y>
</hint> </hint>