From 7d4f8b8093772e2cbbe2a121c6c47ba0d9271ecd Mon Sep 17 00:00:00 2001 From: Urban Wallasch Date: Sat, 26 Jun 2021 17:04:15 +0200 Subject: [PATCH] * Added result sorting options to KanjiDic. --- kanjidic.py | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/kanjidic.py b/kanjidic.py index 6f4195e..0d8c509 100755 --- a/kanjidic.py +++ b/kanjidic.py @@ -682,11 +682,25 @@ class kdMainWindow(QDialog): text_search_layout = zQHBoxLayout() text_search_layout.addWidget(self.text_search_box, 10) text_search_layout.addWidget(self.text_search_clearbtn, 1) + # result sorting + self.sort_check = QCheckBox('S&ort Results by:') + self.sort_stroke = QRadioButton('Strokes') + self.sort_radic = QRadioButton('Radicals') + self.sort_codep = QRadioButton('Codepoint') + self.sort_stroke.setChecked(True) + sort_layout = zQHBoxLayout() + sort_layout.addWidget(self.sort_stroke, 1) + sort_layout.addSpacing(10) + sort_layout.addWidget(self.sort_radic, 1) + sort_layout.addSpacing(10) + sort_layout.addWidget(self.sort_codep, 1) + sort_layout.addStretch(999) # search option layout opt_layout = zQFormLayout() opt_layout.addRow(self.stroke_search_check, stroke_search_layout ) opt_layout.addRow(self.rad_search_check, rad_search_layout ) opt_layout.addRow(self.text_search_check, text_search_layout ) + opt_layout.addRow(self.sort_check, sort_layout ) self.opt_group.setLayout(opt_layout) # search results self.result_group = zQGroupBox('Search Results:') @@ -738,6 +752,12 @@ class kdMainWindow(QDialog): self.text_search_check.toggled.connect(self.text_search_toggle) self.text_search_check.setChecked(True) self.text_search_check.setChecked(False) + self.sort_check.toggled.connect(self.sort_toggle) + self.sort_stroke.toggled.connect(self.sort_toggle) + self.sort_radic.toggled.connect(self.sort_toggle) + self.sort_codep.toggled.connect(self.sort_toggle) + self.sort_check.setChecked(True) + self.sort_check.setChecked(False) def reject(self): if self.radlist: @@ -805,6 +825,13 @@ class kdMainWindow(QDialog): self.text_search_clearbtn.setEnabled(en) self.update_search() + def sort_toggle(self): + en = self.sort_check.isChecked() + self.sort_stroke.setEnabled(en) + self.sort_radic.setEnabled(en) + self.sort_codep.setEnabled(en) + self.update_search() + def on_rad_search_clear(self): self.rad_search_box.clearEditText() if self.radlist: @@ -875,6 +902,15 @@ class kdMainWindow(QDialog): res = sets[0] for s in sets[1:]: res = res.intersection(s) + # sort results + if self.sort_check.isChecked(): + if self.sort_stroke.isChecked(): + key = lambda k: int(_kanjidic_lookup(k)['strokes']) + elif self.sort_radic.isChecked(): + key = lambda k: _kanjidic_lookup(k)['radicals'] + else: # self.sort_codep + key = lambda k: ord(k) + res = sorted(res, key=key) # update search results pane self.result_group.setTitle('Search Results: %d' % len(res)) self.result_area.clear() -- 2.30.2