README.md 4.47 KB
Newer Older
Danila Slesarev's avatar
Danila Slesarev committed
## Микрообзор функционала Dict2Flashcards
Лучше посмотреть [страничку на гитхабе](https://github.com/Blackdeer1524/Dict2Flashcards).

## Навигация по колоде 
Danila Slesarev's avatar
Danila Slesarev committed
![](img/2023-04-20-23-31-47.png)

Приложение является "визуализацией" коллекиции Deck. Deck - это по сути вектор 
карточек (класс Card). Кнопки со стрелками - навигация по колоде. ">" 
пропустить карточку, "<" откатиться к предыдущей карточке 
(и убрать карточку из добавленных если она была добавлена на предыдущем шаге). 
">>>" - пропустить все оставшиеся карточки в колоде. Bury - отложить 
карточку в отдельный файл.

Внутри у нас 2 колоды: колода, с которой мы взаимодействуем (Deck) и в которую 
идут сохраненные карточки (SaveDeck). 

## Плагины
У нас будут плагины, отвечающие за:
 * за сохранение колоды;
 * за снабжение информации
   * предоставление определений к словам
     * Локальные словари (json)
     * Внешние словари   (парсеры HTML страниц, API, и т.д. )
   * предоставление предложений по слову
     * Внешние словари   (парсеры HTML страниц, API, и т.д. )
   * предоставление ссылок изображений
     * Внешние  (парсеры HTML страниц, API, и т.д. )
   * предоставление ссылок на аулио
     * Локальные (директория с аудио)
     * Внешние   (парсеры HTML страниц, API, и т.д. )

Каждый плагин должен реализовать 3 функции:
def get(word: str) - возвращает список карт, в которых заполнены соответствующие типу плагина поля
def load() - выполняет необходимые действия при первом использовании плагина
def unload() - выполняет необходимые действия, когда плагин больше не нужен
Danila Slesarev's avatar
Danila Slesarev committed

С плагинами мы будет общаться через запросы к серверу плагинов:

![](img/2023-04-20-23-33-23.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)