mirror of
https://github.com/ankitects/anki.git
synced 2025-09-18 14:02:21 -04:00
add v3 scheduler to prefs screen
This commit is contained in:
parent
4e95cac5c8
commit
6cc713cbe8
5 changed files with 26 additions and 8 deletions
|
@ -141,6 +141,7 @@ class Collection:
|
||||||
# Scheduler
|
# Scheduler
|
||||||
##########################################################################
|
##########################################################################
|
||||||
|
|
||||||
|
# for backwards compatibility, v3 is represented as 2
|
||||||
supportedSchedulerVersions = (1, 2)
|
supportedSchedulerVersions = (1, 2)
|
||||||
|
|
||||||
def schedVer(self) -> Literal[1, 2]:
|
def schedVer(self) -> Literal[1, 2]:
|
||||||
|
@ -155,7 +156,7 @@ class Collection:
|
||||||
if ver == 1:
|
if ver == 1:
|
||||||
self.sched = V1Scheduler(self)
|
self.sched = V1Scheduler(self)
|
||||||
elif ver == 2:
|
elif ver == 2:
|
||||||
if self.is_2021_test_scheduler_enabled():
|
if self.v3_scheduler():
|
||||||
self.sched = V3Scheduler(self)
|
self.sched = V3Scheduler(self)
|
||||||
else:
|
else:
|
||||||
self.sched = V2Scheduler(self)
|
self.sched = V2Scheduler(self)
|
||||||
|
@ -165,11 +166,11 @@ class Collection:
|
||||||
self.clear_python_undo()
|
self.clear_python_undo()
|
||||||
self._loadScheduler()
|
self._loadScheduler()
|
||||||
|
|
||||||
def is_2021_test_scheduler_enabled(self) -> bool:
|
def v3_scheduler(self) -> bool:
|
||||||
return self.get_config_bool(Config.Bool.SCHED_2021)
|
return self.get_config_bool(Config.Bool.SCHED_2021)
|
||||||
|
|
||||||
def set_2021_test_scheduler_enabled(self, enabled: bool) -> None:
|
def set_v3_scheduler(self, enabled: bool) -> None:
|
||||||
if self.is_2021_test_scheduler_enabled() != enabled:
|
if self.v3_scheduler() != enabled:
|
||||||
if enabled and self.schedVer() != 2:
|
if enabled and self.schedVer() != 2:
|
||||||
raise Exception("must upgrade to v2 scheduler first")
|
raise Exception("must upgrade to v2 scheduler first")
|
||||||
self.set_config_bool(Config.Bool.SCHED_2021, enabled)
|
self.set_config_bool(Config.Bool.SCHED_2021, enabled)
|
||||||
|
|
|
@ -27,7 +27,7 @@ def getEmptyCol():
|
||||||
col = getEmptyColOrig()
|
col = getEmptyColOrig()
|
||||||
col.upgrade_to_v2_scheduler()
|
col.upgrade_to_v2_scheduler()
|
||||||
if is_2021():
|
if is_2021():
|
||||||
col.set_2021_test_scheduler_enabled(True)
|
col.set_v3_scheduler(True)
|
||||||
return col
|
return col
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -205,6 +205,16 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="sched2021">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string notr="true"/>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string notr="true">2021 scheduler (experimental)</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QComboBox" name="newSpread"/>
|
<widget class="QComboBox" name="newSpread"/>
|
||||||
</item>
|
</item>
|
||||||
|
@ -598,6 +608,7 @@
|
||||||
<tabstop>showProgress</tabstop>
|
<tabstop>showProgress</tabstop>
|
||||||
<tabstop>dayLearnFirst</tabstop>
|
<tabstop>dayLearnFirst</tabstop>
|
||||||
<tabstop>legacy_timezone</tabstop>
|
<tabstop>legacy_timezone</tabstop>
|
||||||
|
<tabstop>sched2021</tabstop>
|
||||||
<tabstop>newSpread</tabstop>
|
<tabstop>newSpread</tabstop>
|
||||||
<tabstop>dayOffset</tabstop>
|
<tabstop>dayOffset</tabstop>
|
||||||
<tabstop>lrnCutoff</tabstop>
|
<tabstop>lrnCutoff</tabstop>
|
||||||
|
|
|
@ -58,9 +58,9 @@ class Preferences(QDialog):
|
||||||
|
|
||||||
version = scheduling.scheduler_version
|
version = scheduling.scheduler_version
|
||||||
form.dayLearnFirst.setVisible(version == 2)
|
form.dayLearnFirst.setVisible(version == 2)
|
||||||
# fixme: force on for v3
|
|
||||||
form.legacy_timezone.setVisible(version >= 2)
|
form.legacy_timezone.setVisible(version >= 2)
|
||||||
form.newSpread.setVisible(version < 3)
|
form.newSpread.setVisible(version < 3)
|
||||||
|
form.sched2021.setVisible(version >= 2)
|
||||||
|
|
||||||
form.lrnCutoff.setValue(int(scheduling.learn_ahead_secs / 60.0))
|
form.lrnCutoff.setValue(int(scheduling.learn_ahead_secs / 60.0))
|
||||||
form.newSpread.addItems(list(newCardSchedulingLabels(self.mw.col).values()))
|
form.newSpread.addItems(list(newCardSchedulingLabels(self.mw.col).values()))
|
||||||
|
@ -68,6 +68,7 @@ class Preferences(QDialog):
|
||||||
form.dayLearnFirst.setChecked(scheduling.day_learn_first)
|
form.dayLearnFirst.setChecked(scheduling.day_learn_first)
|
||||||
form.dayOffset.setValue(scheduling.rollover)
|
form.dayOffset.setValue(scheduling.rollover)
|
||||||
form.legacy_timezone.setChecked(not scheduling.new_timezone)
|
form.legacy_timezone.setChecked(not scheduling.new_timezone)
|
||||||
|
form.sched2021.setChecked(version == 3)
|
||||||
|
|
||||||
reviewing = self.prefs.reviewing
|
reviewing = self.prefs.reviewing
|
||||||
form.timeLimit.setValue(int(reviewing.time_limit_secs / 60.0))
|
form.timeLimit.setValue(int(reviewing.time_limit_secs / 60.0))
|
||||||
|
@ -108,6 +109,11 @@ class Preferences(QDialog):
|
||||||
self.mw.col.set_preferences(self.prefs)
|
self.mw.col.set_preferences(self.prefs)
|
||||||
self.mw.apply_collection_options()
|
self.mw.apply_collection_options()
|
||||||
|
|
||||||
|
if scheduling.scheduler_version > 1:
|
||||||
|
want_v3 = form.sched2021.isChecked()
|
||||||
|
if self.mw.col.v3_scheduler() != want_v3:
|
||||||
|
self.mw.col.set_v3_scheduler(want_v3)
|
||||||
|
|
||||||
# Preferences stored in the profile
|
# Preferences stored in the profile
|
||||||
######################################################################
|
######################################################################
|
||||||
|
|
||||||
|
|
|
@ -157,7 +157,7 @@ impl OpChanges {
|
||||||
let c = &self.changes;
|
let c = &self.changes;
|
||||||
c.card
|
c.card
|
||||||
|| (c.deck && self.op != Op::ExpandCollapse)
|
|| (c.deck && self.op != Op::ExpandCollapse)
|
||||||
|| (c.config && matches!(self.op, Op::SetCurrentDeck))
|
|| (c.config && matches!(self.op, Op::SetCurrentDeck | Op::UpdatePreferences))
|
||||||
|| c.deck_config
|
|| c.deck_config
|
||||||
|| c.note
|
|| c.note
|
||||||
|| c.notetype
|
|| c.notetype
|
||||||
|
@ -173,7 +173,7 @@ impl OpChanges {
|
||||||
|
|
||||||
c.card
|
c.card
|
||||||
|| (c.deck && self.op != Op::ExpandCollapse)
|
|| (c.deck && self.op != Op::ExpandCollapse)
|
||||||
|| (c.config && matches!(self.op, Op::SetCurrentDeck))
|
|| (c.config && matches!(self.op, Op::SetCurrentDeck | Op::UpdatePreferences))
|
||||||
|| c.deck_config
|
|| c.deck_config
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue