Skip to content

SG12QT/Anki-for-Diego

 
 

Repository files navigation

ANKI 文档分析

文件夹作用

aqt

  • forms

    由.ui文件通过build_ui.sh生成的前端.py代码

  • TODO

部分核心功能流程及实现方式

卡片添加

  • 流程
  1. 点击add, 打开AddCards Dialog同时创建Editor对象在AddCards页面中填写内容,此时填写的内容均保存在Editor对象中,具体保存在Editor.note.fields(list)中
  2. 点击添加,调用AddCards.addCards,该方法同时调用Editor.saveNow和AddCards._addCards
  3. Editor.saveNow调用AnkiWebView.evalWithCallback(lambda: AddCards._addCards)
  4. 将动作加入到动作队列AnkiWebView._pendingActions
  5. AnkiWebView._maybeRunActions尝试执行队列中的任务
  6. _evalWithCallback?
  • 实现思路
  1. 在主界面点击查询单词按钮后,隐式创建AddCards页面,并把得到的单词信息手动添加到AddCards.Editor.note.fields中,然后调用AddCards.addCards
  • bug
  1. AddCards.Editor.note.fields的内容在AddCards._addNotes中发生了改变,第一个元素变为空,导致添加失败,报错“first field is empty"

    SOLVE:调用AddCards._addCards,addCards涉及的函数太多了,暂时没法搞明白

TODO

按优先级排列

  • 修复添加卡片的bug

  • 实现anki默认牌组,默认卡片模板

  • UI进行整合,看能不能兼容

  • PC文档详细化(模块运行流程图、文件夹作用,主要类的作用)

  • UI美化(把添加单词那块的间距和button调一下)

### Type默认配置的加载 1. 程序启动 调用 anki\storage.py 中的 Collection 函数  Collection 接收一个核心参数path
2. path理解为保存数据库的路径,若第一次调用即无数据库,那么就使用默认配置生成一个数据库
3. 关于Type的默认配置的生成 系统会调用 anki\stdmodels.py 中的 几个函数addBasicModeladdBasicTypingModeladdForwardReverseaddForwardOptionalReverseaddClozeModel

About

北京理工大学 Diego爸爸班软件工程大作业

Resources

License

Unknown, Unknown licenses found

Licenses found

Unknown
LICENSE
Unknown
LICENSE.logo

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 83.4%
  • JavaScript 16.0%
  • CSS 0.3%
  • Roff 0.1%
  • Shell 0.1%
  • Makefile 0.1%