Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
## Микрообзор функционала Dict2Flashcards
Лучше посмотреть [страничку на гитхабе](https://github.com/Blackdeer1524/Dict2Flashcards).
Да, демка отличается от текущей версии, но основной функционал один и тот же.
## Навигация по кололе
![](img/2023-04-20-23-31-47.png)
Приложение является "визуализацией" коллекиции Deck. Deck - это по сути вектор
карточек (класс Card). Кнопки со стрелками - навигация по колоде. ">"
пропустить карточку, "<" откатиться к предыдущей карточке
(и убрать карточку из добавленных если она была добавлена на предыдущем шаге).
">>>" - пропустить все оставшиеся карточки в колоде. Bury - отложить
карточку в отдельный файл.
Внутри у нас 2 колоды: колода, с которой мы взаимодействуем (Deck) и в которую
идут сохраненные карточки (SaveDeck).
## Плагины
У нас будут плагины, отвечающие за:
* за сохранение колоды;
* за снабжение информации
* предоставление определений к словам
* Локальные словари (json)
* Внешние словари (парсеры HTML страниц, API, и т.д. )
* предоставление предложений по слову
* Внешние словари (парсеры HTML страниц, API, и т.д. )
* предоставление ссылок изображений
* Внешние (парсеры HTML страниц, API, и т.д. )
* предоставление ссылок на аулио
* Локальные (директория с аудио)
* Внешние (парсеры HTML страниц, API, и т.д. )
Каждый плагин должен реализовывать соответствующий интерфейс.
* Замечание: плагины предоставления аудио, изображений и предложений являются
генераторами т.е. они предоставляют свои данные по пакетам. Как это реализовать
через сервер - пока не знаю.
С плагинами мы будет общаться через запросы к серверу плагинов:
![](img/2023-04-20-23-33-23.png)
Кнопки `</>` отвечают за конфигурацию плагинов
Кнопки прямо левее `</>`: кнопка выбора текущего плагина
Плагины снабжения можно **комбинировать в цепи**. Цепи нужны для одновременного
поиска по словарям / парсить несколько искочников за раз. **Цепи так же можно
комбинировать в цепи**. Реализация комбинации цепей в цепи довольно сложна
так как нужно управлять графом зависимостей цепей друг от друга (по этому
цепи цепей мы оставим до самого конца, если на это будет время):
### Сложности с графом зависимостей
![](img/2023-04-20-23-33-02.png)
* при изменении одной цепи нужно изменить все зависимые цепи
* при изменении D должны измениться B, C, A и E. (A меняется так как поменялась
цепь B)
* нельзя допускать циклов
Существует задать условия прекращения поиска по цепи. Под условием прекращения
подразумевается следующее:
* Первый непустой результат поиска;
* Все непустые результаты поиска в цепи.
Пример окна настройки вложенной цепи:
Цепь "cambset" зависит от цепи "bi-mono cambridge"
![](img/2023-04-20-23-34-25.png)
## Интерфейс добавления изображений
Существует возможность добавление к карточкам изображений
![](img/2023-04-20-23-34-42.png)
## Браузер добавленных карточек (текущая сессия)
![](img/2023-04-20-23-35-02.png)
Основная проблема, связанная с браузером, это синхронизация плагинов снабжения
в окне браузера в основным окном. То есть если мы поменяли текущий плагин снабжения
предложений в браузере, это дожно так же отразиться в основном окне.
## Язык запросов
Реализован язык запросов который позволяет искать карточки по колоде.
[см. стандарт](https://github.com/Blackdeer1524/Dict2Flashcards#query-language-documentation)
Нужно будет переделать т.к. он написан ОЧЕНЬ плохо.