Skip to content

Commit 863b8fe

Browse files
committed
made small adjustments to 'recalc on sync' (#33)
1 parent 848e4dd commit 863b8fe

File tree

7 files changed

+44
-54
lines changed

7 files changed

+44
-54
lines changed

ankimorphs/__init__.py

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848

4949
last_undo_step_handled: int = -1
5050
db_initialized: bool = False
51+
startup_sync: bool = True
5152

5253

5354
def main() -> None:
@@ -66,9 +67,10 @@ def main() -> None:
6667

6768
gui_hooks.webview_will_show_context_menu.append(add_name_action)
6869

69-
gui_hooks.profile_will_close.append(clear_seen_morphs)
7070
gui_hooks.sync_will_start.append(recalc_on_sync)
7171

72+
gui_hooks.profile_will_close.append(clear_seen_morphs)
73+
7274

7375
def init_toolbar_items(links: list[str], toolbar: Toolbar) -> None:
7476
# Adds the 'U: A:' and 'Recalc' to the toolbar
@@ -295,6 +297,20 @@ def replace_reviewer_functions() -> None:
295297
)
296298

297299

300+
def recalc_on_sync() -> None:
301+
# Sync automatically happens on Anki startup, so we have
302+
# to check for that before we run recalc
303+
304+
global startup_sync
305+
306+
if startup_sync:
307+
startup_sync = False
308+
else:
309+
am_config = AnkiMorphsConfig()
310+
if am_config.recalc_on_sync:
311+
recalc.recalc()
312+
313+
298314
def create_am_tool_menu() -> QMenu:
299315
assert mw is not None
300316
am_tool_menu = QMenu("AnkiMorphs", mw)
@@ -393,12 +409,6 @@ def add_name_action(web_view: AnkiWebView, menu: QMenu) -> None:
393409
menu.addAction(action)
394410

395411

396-
def recalc_on_sync() -> None:
397-
am_config = AnkiMorphsConfig()
398-
if am_config.recalc_on_sync:
399-
recalc.recalc()
400-
401-
402412
def test_function() -> None:
403413
assert mw is not None
404414
assert mw.col.db is not None

ankimorphs/config.py

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -75,9 +75,6 @@ def __init__(self, is_default: bool = False) -> None:
7575
self.recalc_interval_for_known: int = _get_int_config(
7676
"recalc_interval_for_known", is_default
7777
)
78-
# self.recalc_before_sync: bool = _get_bool_config(
79-
# "recalc_before_sync", is_default
80-
# )
8178
self.recalc_prioritize_collection: bool = _get_bool_config(
8279
"recalc_prioritize_collection", is_default
8380
)
@@ -102,7 +99,7 @@ def __init__(self, is_default: bool = False) -> None:
10299
self.parse_ignore_suspended_cards_content: bool = _get_bool_config(
103100
"parse_ignore_suspended_cards_content", is_default
104101
)
105-
self.recalc_on_sync: bool = _get_recalc_on_sync("recalc_on_sync", is_default)
102+
self.recalc_on_sync: bool = _get_bool_config("recalc_on_sync", is_default)
106103
self.tag_ready: str = _get_string_config("tag_ready", is_default)
107104
self.tag_not_ready: str = _get_string_config("tag_not_ready", is_default)
108105
self.tag_known: str = _get_string_config("tag_known", is_default)
@@ -231,15 +228,6 @@ def _get_bool_config(key: str, is_default: bool = False) -> bool:
231228
return config_item
232229

233230

234-
def _get_recalc_on_sync(key: str, is_default: bool = False) -> bool:
235-
if is_default:
236-
config_item = get_default_config(key)
237-
else:
238-
config_item = _get_config(key)
239-
assert isinstance(config_item, bool)
240-
return config_item
241-
242-
243231
def _get_filter_str(_filter: FilterTypeAlias, key: str) -> str:
244232
filter_item = _filter[key]
245233
assert isinstance(filter_item, str)

ankimorphs/recalc.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -625,7 +625,7 @@ def on_success(result: Any) -> None:
625625

626626
mw.toolbar.draw() # updates stats
627627
mw.progress.finish()
628-
tooltip("Finished Recalc")
628+
tooltip("Finished Recalc", parent=mw)
629629
if start_time is not None:
630630
end_time: float = time.time()
631631
print(f"Recalc duration: {round(end_time - start_time, 3)} seconds")

ankimorphs/settings_dialog.py

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ def __init__(self, parent: Optional[QMainWindow] = None) -> None:
5656
self.ui.tabWidget.currentChanged.connect(self.tab_change)
5757

5858
# Semantic Versioning https://semver.org/
59-
self.ui.ankimorphs_version_label.setText("AnkiMorphs version: 0.3.1-alpha")
59+
self.ui.ankimorphs_version_label.setText("AnkiMorphs version: 0.4.0-alpha")
6060

6161
def _setup_note_filters_table(
6262
self, config_filters: list[AnkiMorphsConfigFilter]
@@ -321,14 +321,13 @@ def restore_shortcuts_defaults(self, skip_confirmation: bool = False) -> None:
321321
)
322322

323323
def _populate_recalc_tab(self) -> None:
324-
# self.ui.recalc_before_sync_input.setChecked(self.config.recalc_before_sync)
325324
self.ui.recalc_interval_known_input.setValue(
326325
self.config.recalc_interval_for_known
327326
)
328327
self.ui.recalc_prioritize_collection_input.setChecked(
329328
self.config.recalc_prioritize_collection
330329
)
331-
self.ui.recalc_on_sync.setChecked(self.config.recalc_on_sync)
330+
self.ui.recalc_on_sync_input.setChecked(self.config.recalc_on_sync)
332331
# self.ui.recalc_prioritize_textfile_input.setChecked(
333332
# self.config.recalc_prioritize_textfile
334333
# )
@@ -342,15 +341,13 @@ def restore_recalc_defaults(self, skip_confirmation: bool = False) -> None:
342341
if not confirmed:
343342
return
344343

345-
# self.ui.recalc_before_sync_input.setChecked(
346-
# self._default_config.recalc_before_sync
347-
# )
348344
self.ui.recalc_interval_known_input.setValue(
349345
self._default_config.recalc_interval_for_known
350346
)
351347
self.ui.recalc_prioritize_collection_input.setChecked(
352348
self._default_config.recalc_prioritize_collection
353349
)
350+
self.ui.recalc_on_sync_input.setChecked(self._default_config.recalc_on_sync)
354351
# self.ui.recalc_prioritize_textfile_input.setChecked(
355352
# self._default_config.recalc_prioritize_textfile
356353
# )
@@ -445,9 +442,9 @@ def save_to_config(self) -> None: # pylint:disable=too-many-locals
445442
"shortcut_set_known_and_skip": self.ui.shortcut_known_and_skip_input.keySequence().toString(),
446443
"shortcut_learn_now": self.ui.shortcut_learn_now_input.keySequence().toString(),
447444
"shortcut_view_morphemes": self.ui.shortcut_view_morphs_input.keySequence().toString(),
448-
# "recalc_before_sync": self.ui.recalc_before_sync_input.isChecked(),
449445
"recalc_interval_for_known": self.ui.recalc_interval_known_input.value(),
450446
"recalc_prioritize_collection": self.ui.recalc_prioritize_collection_input.isChecked(),
447+
"recalc_on_sync": self.ui.recalc_on_sync_input.isChecked(),
451448
# "recalc_prioritize_textfile": self.ui.recalc_prioritize_textfile_input.isChecked(),
452449
"parse_ignore_bracket_contents": self.ui.parse_ignore_bracket_contents_input.isChecked(),
453450
"parse_ignore_round_bracket_contents": self.ui.parse_ignore_round_bracket_contents_input.isChecked(),
@@ -458,7 +455,6 @@ def save_to_config(self) -> None: # pylint:disable=too-many-locals
458455
"skip_only_known_morphs_cards": self.ui.skip_only_known_morphs_cards_input.isChecked(),
459456
"skip_unknown_morph_seen_today_cards": self.ui.skip_unknown_morph_seen_today_cards_input.isChecked(),
460457
"skip_show_num_of_skipped_cards": self.ui.skip_show_num_of_skipped_cards_input.isChecked(),
461-
"recalc_on_sync": self.ui.recalc_on_sync.isChecked(),
462458
}
463459

464460
filters = []

ankimorphs/ui/settings_dialog.ui

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -404,6 +404,17 @@
404404
<layout class="QVBoxLayout" name="verticalLayout_18">
405405
<item>
406406
<layout class="QVBoxLayout" name="verticalLayout_17">
407+
<item>
408+
<layout class="QVBoxLayout" name="verticalLayout_21">
409+
<item>
410+
<widget class="QCheckBox" name="recalc_on_sync_input">
411+
<property name="text">
412+
<string>Recalc on sync</string>
413+
</property>
414+
</widget>
415+
</item>
416+
</layout>
417+
</item>
407418
<item>
408419
<layout class="QHBoxLayout" name="horizontalLayout_6">
409420
<property name="topMargin">
@@ -441,13 +452,6 @@
441452
</item>
442453
</layout>
443454
</item>
444-
<item>
445-
<widget class="QCheckBox" name="recalc_on_sync">
446-
<property name="text">
447-
<string>Recalc on sync</string>
448-
</property>
449-
</widget>
450-
</item>
451455
<item>
452456
<layout class="QVBoxLayout" name="verticalLayout_14">
453457
<property name="topMargin">

ankimorphs/ui/settings_dialog_ui.py

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Form implementation generated from reading ui file './settings_dialog.ui'
1+
# Form implementation generated from reading ui file 'ankimorphs/ui/settings_dialog.ui'
22
#
33
# Created by: PyQt6 UI code generator 6.4.2
44
#
@@ -193,6 +193,12 @@ def setupUi(self, SettingsDialog):
193193
self.verticalLayout_18.setObjectName("verticalLayout_18")
194194
self.verticalLayout_17 = QtWidgets.QVBoxLayout()
195195
self.verticalLayout_17.setObjectName("verticalLayout_17")
196+
self.verticalLayout_21 = QtWidgets.QVBoxLayout()
197+
self.verticalLayout_21.setObjectName("verticalLayout_21")
198+
self.recalc_on_sync_input = QtWidgets.QCheckBox(parent=self.recalc_tab)
199+
self.recalc_on_sync_input.setObjectName("recalc_on_sync_input")
200+
self.verticalLayout_21.addWidget(self.recalc_on_sync_input)
201+
self.verticalLayout_17.addLayout(self.verticalLayout_21)
196202
self.horizontalLayout_6 = QtWidgets.QHBoxLayout()
197203
self.horizontalLayout_6.setContentsMargins(-1, 10, -1, -1)
198204
self.horizontalLayout_6.setObjectName("horizontalLayout_6")
@@ -208,9 +214,6 @@ def setupUi(self, SettingsDialog):
208214
spacerItem8 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
209215
self.horizontalLayout_6.addItem(spacerItem8)
210216
self.verticalLayout_17.addLayout(self.horizontalLayout_6)
211-
self.recalc_on_sync = QtWidgets.QCheckBox(parent=self.recalc_tab)
212-
self.recalc_on_sync.setObjectName("recalc_on_sync")
213-
self.verticalLayout_17.addWidget(self.recalc_on_sync)
214217
self.verticalLayout_14 = QtWidgets.QVBoxLayout()
215218
self.verticalLayout_14.setContentsMargins(-1, 10, -1, -1)
216219
self.verticalLayout_14.setObjectName("verticalLayout_14")
@@ -372,9 +375,9 @@ def retranslateUi(self, SettingsDialog):
372375
self.skip_show_num_of_skipped_cards_input.setText(_translate("SettingsDialog", "Show \"skipped x cards\" notifications"))
373376
self.restore_skip_defaults_button.setText(_translate("SettingsDialog", "Restore Default Skip Settings"))
374377
self.tabWidget.setTabText(self.tabWidget.indexOf(self.skip_tab), _translate("SettingsDialog", "Skip"))
378+
self.recalc_on_sync_input.setText(_translate("SettingsDialog", "Recalc on sync"))
375379
self.label_16.setText(_translate("SettingsDialog", "Min. interval for known morphs:"))
376380
self.label_17.setText(_translate("SettingsDialog", "days"))
377-
self.recalc_on_sync.setText(_translate("SettingsDialog", "Recalc on sync"))
378381
self.label_5.setText(_translate("SettingsDialog", "Prioritize morphs based on:"))
379382
self.recalc_prioritize_collection_input.setText(_translate("SettingsDialog", "Frequency in card collection"))
380383
self.restore_recalc_defaults_button.setText(_translate("SettingsDialog", "Restore Default Recalc Settings"))
@@ -392,13 +395,3 @@ def retranslateUi(self, SettingsDialog):
392395
self.ankimorphs_version_label.setText(_translate("SettingsDialog", "AnkiMorphs version: x"))
393396
self.cancel_button.setText(_translate("SettingsDialog", "Cancel"))
394397
self.save_button.setText(_translate("SettingsDialog", "Save"))
395-
396-
397-
if __name__ == "__main__":
398-
import sys
399-
app = QtWidgets.QApplication(sys.argv)
400-
SettingsDialog = QtWidgets.QDialog()
401-
ui = Ui_SettingsDialog()
402-
ui.setupUi(SettingsDialog)
403-
SettingsDialog.show()
404-
sys.exit(app.exec())

docs/src/user_guide/roadmap.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,5 @@
1111
6. Remake tests
1212
7. Update guide
1313
8. **Release AnkiMorphs stable version**
14-
9. Implement optional "automatic recalc before sync"
15-
10. Remake statistics page
16-
11. Implement "cloze"-option [(#12)](https://github.com/mortii/anki-morphs/discussions/12)
14+
9. Remake statistics page
15+
10. Implement "cloze"-option [(#12)](https://github.com/mortii/anki-morphs/discussions/12)

0 commit comments

Comments
 (0)