From 77c569fd177240993e80fb1e87fdc7421234a81e Mon Sep 17 00:00:00 2001 From: butterkeks Date: Sun, 25 Aug 2024 15:58:58 +0200 Subject: [PATCH] Update Readme with new gui --- README.md | 53 ++++++++++++++--------------------------------- TODO | 61 +++++++++++++++++++------------------------------------ 2 files changed, 36 insertions(+), 78 deletions(-) diff --git a/README.md b/README.md index b9715f0..7bd5910 100644 --- a/README.md +++ b/README.md @@ -7,24 +7,15 @@ https://github.com/GenjiFujimoto/dictpopup/assets/50422430/353e5573-e728-419a-a2 https://github.com/Ajatt-Tools/dictpopup/assets/50422430/a0a631eb-85dd-4644-9001-10d2e1076ed4 -## Current state - -This is still very much a work in progress. -**It only works on the X window manager** right now (i.e. Linux with X11) and the parser for the Yomichan dictionaries -isn't fully implemented yet (for dictionaries with structured content). -See `TODO.txt` for more. - ## List of features * Deinflect -* Kanjify e.g. お前 -> 御前 * Yomichan-style lookup, i.e. decrease length of lookup until there is a match -* Sort dictionary entries by frequency (requires a frequency dictionary. I recommend CC100) -* Fall back to a hiragana conversion (for words written half in kanji / half in hiragana, e.g: かけ布団, 思いつく) -* Play a pronunciation on lookup / button press (requires files see [Pronunciation](#pronunciation)) -* Add word with selected definition to Anki -* Indicator showing if a word already exists in your Anki deck / collection. Orange if existing cards are suspended. - Anki browser search on press. +* Sort dictionary entries by frequency (Requires a frequency dictionary. I recommend CC100) +* Fall back to a hiragana conversion (For words written half in kanji / half in hiragana, e.g: かけ布団, 思いつく) +* Play a pronunciations (requires files see [Pronunciation](#pronunciation)) +* Add the word to Anki using either the visible definition, the mouse selection or clipboard contents +* Indicator showing if a word already exists in your Anki deck / collection. * Allow adding the window title to some Anki field (If you are adding from a book, this will e.g. most probably contain the book title) * Fast and memory efficient @@ -56,39 +47,29 @@ Then install with: git clone "https://github.com/Ajatt-Tools/dictpopup.git" cd dictpopup cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=OFF -sudo cmake --build build --target install -j 2 +sudo cmake --build build --target install -j 3 ``` ### Windows The manual installation instructions above should also work for Windows under MSYS2, so someone -experienced might get it to run. But note that the default config location is currently hard coded for Linux. -I will provide an installer in the future. +experienced might get it to run. ## Setup -After the program installation you need to create a database where the dictionary entries are read from. -This is done via `dictpopup-create` which creates the database from all Yomichan dictionaries in the current directory. -Without arguments, it stores the database in the default location `~/.local/share/dictpopup` which is also the default -search path. +After the program installation you need to first create an index where the dictionary entries are read from. +For this, open `dictpopup-config` (or `dictpopup` and then menu button > settings), then under 'Add dictionaries' in the +'General' tab, choose the folder that contains all of your Yomichan dictionaries and click 'Generate Index'. You can also include a frequency dictionary in there, but only one (it will give an error if you add more, because I don't think that mixing makes sense). -## Configuration - -Copy the example config `config.ini` of the repo to `~/.config/dictpopup/config.ini` and configure it according to your -setup. -The syntax follows the [Desktop Entry Specification](http://freedesktop.org/Standards/desktop-entry-spec). - -Be careful to not include trailing spaces after your variables (for now). - ## Pronunciation To enable pronunciation, simply download some pronunciation indices from Ajatt-Tools (such as [NHK 2016](https://github.com/Ajatt-Tools/nhk_2016_pronunciations_index)) -and specify the path to the directory containing the downloaded folders in the config file. The expected folder -structure looks as follows: +and generate an index under 'Add Pronunciation Files' in the 'Pronunciation' tab of the settings window. The expected +folder structure looks as follows: ``` ├── ajt_japanese_audio @@ -103,9 +84,8 @@ structure looks as follows: │   │   ├── index.json ``` -On the first run it will automatically create an index which might take up some space (up to 200M if you have many -indices like I do). -This will allow for a faster lookup. +By right clicking the pronunciation button, you can open a menu with all the available pronunciations +for the current kanji/reading pair. ## Usage @@ -118,15 +98,12 @@ The "+" sign adds the currently shown definition to Anki after prompting you to If there is text selected in the popup window, it will be used instead as a definition. Furthermore, by right-clicking the + sign, you can also use the current clipboard content as the definition instead. -The green/red dot indicates whether the word is already present in your Anki collection. -It displays an orange dot if there exist corresponding cards, but which are all suspended. - ## Keybindings - Next entry: n, s - Previous entry: p, a - Create an Anki card: Ctrl+ s -- Play audio: r +- Play audio: p, r - Exit: q, Esc ## Contact diff --git a/TODO b/TODO index 0ec6ce5..eaf3ae3 100644 --- a/TODO +++ b/TODO @@ -1,44 +1,46 @@ ## dictpopup High priority - -- Investigate why デジタル大辞泉 appears twice in dictionary sort order -- Fix update of dictionary sort order not working - -- Suspended + new cards indicator? - -- Proper error handling for faulty Anki settings - +------------- - Add database version to metadata of database +- Bring back kanjification + +- Add more tests +- What happens when you open dictpopup-config and then dictpopup - What happens if some random folder was selected for pronunciation index? -> Proper error message - -- More tests (esp. for gui components?) +- Proper error handling for faulty Anki settings +- Test what happens if you press some shortcuts in the error window (e.g. 'no database found') Mid priority -- Close settings window with escape +------------ +- Fix trying too many deinflections + - e.g.: + - に -> にる、ぬ、る + - 白ける -> 白い + - やった -> やつ +- Add info of currently processing dictionary in preferences window when generating dictionary index - Remove duplication of full path in every jppron database entry - Safe prefix to indices in metadata and concatenate at runtime -- Allow creating dictpopup db from preferences window -- Cache pronfiles per kanji/reading pair -- Settings should work without a database - Check if sentence is mapped to some field and only prompt for it in that case -- Implement the reading label as a text view to allow for editing -> initiate new search on Enter press - Group terms by reading, allow for switching between different readings -- Implement a small window to manually enter a search string instead of selecting +- Implement a small window to manually enter a search string instead of selecting ? - Write a "Yomichan search"-like window application pron: -- Allow selecting a pronunciation (on right click) - Allow specifying the order for pronunciations - Search for audio of inflected selected word (e.g. 下がらない) (optionally) Low priority +------------ - Kanjify the word in the copied sentence according to the dictionary entry -- (dictpopup_create) Cleanup database data on error (lock.mdb) +- (dictpopup_create) Cleanup database data on error case (lock.mdb) - Don't show frequency dicts in sort order -- Need some check when looking up a hiragana conversion from mecab to prevent things like 賢人会 -> 県人会 +- Need some check when looking up a hiragana conversion from mecab to prevent things like: + - 賢人会 -> 県人会 + - 大正門 -> 大誓文 + - 家名だ - Allow canceling context selection with Esc - Add tags to the Anki card, similiar to mpvacious - Better list and table formatting @@ -59,23 +61,6 @@ Low priority - Currently hard coded to 60 bytes - Only important for an auto scan implementation though -## Known problems: -- Can't pronounce 方方[かたがた] -### Misc -- If there is a dictionary entry for 恭しく even though 恭しい is present in the collection, then a red dot will be shown -### Deinflection -- やった gets deinflected to やつ - - This can be fixed by reading in the 4th string of a Yomichan term-bank entry, which is: - "String of space-separated rule identifiers for the definition which is used to validate deinflection. - An empty string should be used for words which aren't inflected." -- に looks broken - -Mecab problems: -- 大正門 pulls 大誓文 -- 家名だ - -freq: -- いじらしい not present in all Possible ideas: - Allow adding audio files indexed by filename (for forvo) @@ -98,10 +83,6 @@ Possible ideas: - Make dictionary numbers (①, ②, ...) clickable for adding to Anki - A (very small) optimization would be to sort the dictSortOrder string and then use binary search or sth in indexof() -To check: -- definflector.c assumes that constant strings given in the code are utf8 encoded. I don't know if this always has to be true (on Windows) - - Test results for storing compressed dictionary entries: - Snappy: 840M -> 734M