diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000..8d0d764 --- /dev/null +++ b/__init__.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- + +######################################################################### +# Copyright (C) 2015–2020 by anki/github user rjgoif +# # +# This program is free software; you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation; either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program; if not, see . # +######################################################################### + +# loads the add-on into Anki. +# don't edit this file. Edit the called file instead. + + + +from . import daily_learns_first \ No newline at end of file diff --git a/daily_learns_first.py b/daily_learns_first.py new file mode 100644 index 0000000..8ba4147 --- /dev/null +++ b/daily_learns_first.py @@ -0,0 +1,115 @@ +# # # -*- coding: utf-8 -*- + +######################################################################### +# Copyright (C) 2014–2020 by anki/github user rjgoif +# # +# This program is free software; you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation; either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program; if not, see . # +######################################################################### + +## this is an Anki 2.1 update of my popular Anki 2.0 add-on +## that changes the order of your daily reviews: + +## This is a simple add-on that inserts the daily-learning cards, i.e. +## cards in the learning queue with intervals that crossed the day turnover, +## before starting standard reviews (the green number). Normally these cards +## daily-learning cards go last, but I want them to go first. + +## as of beta 32, there is an option to enable this built into Anki if you are using the +## v2 scheduler. +## HOWEVER, I still think the learning reviews should come before new reviews. So I have built that in. If you use v2, this add-on respects the option toggle built into native Anki. +## I won't be testing v2 myself, so if it works for you please let me know via Github + +## a legacy version will be uploaded to Github for anyone holding out with Anki 2.0. + +## https://github.com/rjgoif/ + +# # # # # # # # # # # # # # # # + +__version__ = '2.1.001' + + +# classic (ie from v2.0) scheduler +import anki.sched as oldSched +def _getCardReordered(self): + "Return the next due card id, or None." + # learning card due? + c = self._getLrnCard() + if c: + return c + # day learning card due? + c = self._getLrnDayCard() + if c: + return c + # new first, or time for one? + if self._timeForNewCard(): + c = self._getNewCard() + if c: + return c + # card due for review? + c = self._getRevCard() + if c: + return c + # new cards left? + c = self._getNewCard() + if c: + return c + # collapse or finish + return self._getLrnCard(collapse=True) + + +oldSched.Scheduler._getCard = _getCardReordered + + + + +# # Anki 2.1 scheduler v2 +import anki.schedv2 as oldSchedv2 +def _getCardReorderedv2(self): + "Return the next due card id, or None." + # learning card due? + c = self._getLrnCard() + if c: + return c + + # day learning first and card due? + dayLearnFirst = self.col.conf.get("dayLearnFirst", False) + c = dayLearnFirst and self._getLrnDayCard() + if c: + return c + + # new first, or time for one? + if self._timeForNewCard(): + c = self._getNewCard() + if c: + return c + + # card due for review? + c = self._getRevCard() + if c: + return c + + # day learning card due? + c = not dayLearnFirst and self._getLrnDayCard() + if c: + return c + + # new cards left? + c = self._getNewCard() + if c: + return c + + # collapse or finish + return self._getLrnCard(collapse=True) + +oldSchedv2.Scheduler._getCard = _getCardReorderedv2 \ No newline at end of file diff --git a/rj_daily_learns_early_002_legacy.py b/rj_daily_learns_early_002_legacy.py new file mode 100644 index 0000000..ce6b0b6 --- /dev/null +++ b/rj_daily_learns_early_002_legacy.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# by Anki user rjgoif +# License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html + +# #################################################################### + +# This is a simple add-on that inserts the daily-learning cards, i.e. +# cards in the learning queue with intervals that crossed the day turnover, +# before starting other reviews (new cards, review cards). Normally these cards +# go last, but I want them to go first. + + +# #################################################################### + + + +import anki.sched as oldSched + +def _getCardReordered(self): + "Return the next due card id, or None." + # new first, or time for one? + if self._timeForNewCard(): + c = self._getNewCard() + if c: + return c + # learning card due? + c = self._getLrnCard() + if c: + return c + # day learning card due? + c = self._getLrnDayCard() + if c: + return c + # card due for review? + c = self._getRevCard() + if c: + return c + # new cards left? + c = self._getNewCard() + if c: + return c + # collapse or finish + return self._getLrnCard(collapse=True) + + +oldSched.Scheduler._getCard = _getCardReordered \ No newline at end of file