chendapao cfbe4bc994
WIP: feature/add_project_document_1 (#2254)
* add macos detailed build documentation

* feature/add_project_document_1
2022-10-02 13:05:32 +08:00

442 lines
19 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 工程结构
## 结构解析
```
/
├── scripts 本地小脚本 更新版本所用
├── .github github CI/CD 流程编排issues 模板
├── .gitmodules github 规范的 modules 依赖文件
├── libs 引用的外部库
│ ├── QHotkey 跨平台的全局热键
│ ├── vtextedit VNote 自己开源的编辑器
│ └── libs.pro 外部库的工程索引文件
├── src VNote 源码文件夹
│ ├── core 核心源码
│ │ ├── *** 其他核心文件
│ │ ├── versioncontroller 版本管理
│ │ ├── buffer 缓存模块
│ │ ├── notebook 笔记本
│ │ ├── notebookbackend 笔记本后台
│ │ └── notebookconfigmgr 笔记本配置管理
│ ├── data VNote 工程数据
│ │ ├── core 运行所需要的默认配置
│ │ └── extra 额外的资源文件
│ ├── export 导出模块
│ ├── imagehost 图床模块
│ ├── search 搜索模块
│ ├── snippet 片段模块
│ ├── task 任务模块
│ ├── unitedentry TODO 不知道这里是干什么的
│ ├── utils 工具模块
│ └── widgets 窗体
│ ├── *** 其他窗体文件
│ ├── dialogs 对话框
│ ├── editors 编辑器
│ └── framelessmainwindow 无边框的窗口
├── pics README所需的图片
├── main.cpp 程序主入口
├── COPYING.LESSER 开源协议
├── README.md
├── README_zh_CN.md
├── build
├── changes.md
├── tests 测试
└── vnote.pro Qt 工程文件
```
## 源码模块简单介绍
### libs
依赖的外部库,以 gitmodules 的形式管理,会将一些开源库 fork 到我们自己的仓库中,方便依赖和后续开发。主要也是担心库会莫名其妙消失。
```
[submodule "libs/vtextedit"]
path = libs/vtextedit
url = https://github.com/vnotex/vtextedit.git
[submodule "libs/QHotkey"]
path = libs/QHotkey
url = https://github.com/vnotex/QHotkey.git
```
更新方式可以使用如下命令:
```
git submodule update --init --recursive
```
### src/core
核心代码文件夹,主要包含以下 `功能性` 内容:
其他在 `src/core` 根目录下的文件
| 名称 | 解释 |
| :------------------- | :--- |
| buffermgr | |
| clipboarddata | |
| configmgr | |
| coreconfig | |
| editorconfig | |
| externalfile | |
| file | |
| global | |
| historyitem | |
| historymgr | |
| htmltemplatehelper | |
| logger | |
| mainconfig | |
| markdowneditorconfig | |
| notebookmgr | |
| quickaccesshelper | |
| sessionconfig | |
| singleinstanceguard | |
| templatemgr | |
| texteditorconfig | |
| theme | |
| thememgr | |
| vnotex | |
| widgetconfig | |
文件夹 `buffer` 缓冲区,就是已经打开的笔记
| 名称 | 解释 |
| :-------------------- | :--- |
| buffer | |
| bufferprovider | |
| filebufferprovider | |
| filetypehelper | |
| markdownbuffer | |
| markdownbufferfactory | |
| nodebufferprovider | |
| textbuffer | |
| textbufferfactory | |
文件夹 `notebook` 笔记的索引、笔记索引的嵌入式数据库操作、标签、参数、外部文件
| 名称 | 解释 |
| :--------------------- | :--- |
| bundlenotebook | |
| bundlenotebookfactory | |
| externalnode | |
| node | |
| nodeparameters | |
| notebook | |
| notebookdatabaseaccess | |
| notebookparameters | |
| notebooktagmgr | |
| tag | |
| vxnode | |
| vxnodefile | |
文件夹 `notebookbackend` TODO 笔记后端(工厂方法)
| 名称 | 解释 |
| :-------------------------- | :--- |
| inotebookbackend | |
| localnotebookbackend | |
| localnotebookbackendfactory | |
文件夹 `notebookconfigmgr` TODO 笔记索引配置管理
| 名称 | 解释 |
| :-- | :-- |
| bundlenotebookconfigmgr | |
| inotebookconfigmgr | |
| notebookconfig | |
| vxnodeconfig | |
| vxnotebookconfigmgr | |
| vxnotebookconfigmgrfactory | |
文件夹 `versioncontroller` TODO 笔记版本管理(未开发)
| 名称 | 解释 |
| :---------------------------- | :--- |
| dummyversioncontroller | |
| dummyversioncontrollerfactory | |
| versioncontrollerserver | |
### src/data
资源文件夹,主要包含 `核心资源``额外资源`,因为是资源文件,所有会有对应的 `.qrc 工程资源文件` 可以理解为在打包时需要哪些资源文件:
core `核心资源`
| 名称 | 解释 |
| :------------ | :--------------------------------------------------------------------------------------------------------------- |
| icons | 默认的图标文件 |
| logo | 各尺寸的logo、启动标示图、最小化图标 |
| translations | 多语言,目前支持了中文、英文、日文,用 qt 的 languist 先制作好 ts 文件,再生成 qm 文件,其他地方使用 `tr("***")` 来调用 |
| core.qrc | 工程资源文件,可以理解为打包的时候会将哪些文件打包进去,同时在增删一些文件的时候,也需要调整这里 |
| Info.plist | TODO不知道干嘛 |
| vnote.desktop | 桌面快捷方式 |
| vnote.json | 默认配置 |
extra `额外资源`
| 名称 | 解释 |
| :------------------ | :------------------------------ |
| dicts | 语法检查的字典 |
| docs | 文档 |
| syntax-highlighting | 语法检测的规则文件 |
| tasks | 任务功能,目前内置了 git 简单操作 |
| themes | 主题 |
| web | TODO 不知道 |
### export
导出模块,目前支持 `HTML``PDF``Markdown``自定义`
| 名称 | 解释 |
| :-------------- | :--------------------------------------- |
| exportdata | 导出数据转换 |
| exporter | 导出器,将对应的数据导出生成其相应格式的文件 |
| webviewexporter | TODO 不知道干嘛 |
### imagehost
图床模块,目前是支持了 `本地``gitee``github`
| 名称 | 解释 |
| :-------------- | :------------------ |
| giteeimagehost | 码云图床 |
| githubimagehost | github图床 |
| imagehost | 图床 |
| imagehostmgr | 图床管理、增删、改名 |
| imagehostutils | 图床工具类 |
| repoimagehost | TODO 不知道 |
### search
搜索模块
| 名称 | 解释 |
| :--------------- | :-------------------------------------------------------- |
| filesearchengine | 文件搜索引擎 |
| searchdata | 搜索条件的转换,把界面上的搜索条件转换成可以进行实际搜索的条件 |
| searcher | 搜索者,干活开始搜索 |
| searchhelper | 搜索帮助,提供搜索反馈,比如无效关键词等等 |
| searchresultitem | 搜索结果,这位置列表那里显示出来的那些 |
| searchtoken | 搜索令牌、全文检索、正则匹配 |
### snippet
片段模块
| 名称 | 解释 |
| :------------- | :------------------------------- |
| dynamicsnippet | 动态片段 TODO 没懂为什么叫动态片段 |
| snippet | 片段、目前只支持了文本片段 |
| snippetmgr | 片段管理器、增删改查 |
### task
任务模块
| 名称 | 解释 |
| :-------------- | :------------------------------------------------------ |
| shellexecution | 脚本执行器,默认为 win`PowerShell`、其他为:`/bin/bash` |
| task | 任务、实现了与外部程序的交互 |
| taskmgr | 任务管理器、任务刷新、加载 |
| taskvariablemgr | 任务变量管理器 |
### unitedentry
统一入口模块
| 名称 | 解释 |
| :----------------- | :------------------------- |
| entrypopup | 统一入口的弹出框 |
| entrywidgetfactory | 窗口工厂类 |
| findunitedentry | 统一入口查找 |
| helpunitedentry | 统一入口帮助 |
| iunitedentry | TODO 不知道 |
| unitedentry | TODO 不知道 |
| unitedentryalias | 统一入口别名 |
| unitedentryhelper | TODO 没懂与上面的help的区别 |
| unitedentrymgr | 统一入口管理器 |
### utils
工具模块
| 名称 | 解释 |
| :---------------- | :------------------------------------------- |
| asyncworker | 异步工作 TODO 不知道 |
| callbackpool | 回调池 |
| clipboardutils | 剪切板工具 |
| contentmediautils | 媒介内容工具、主要还是对图片的操作 |
| docsutils | 文档工具TODO 内部文档所用 |
| fileutils | 文件工具,读写文件 |
| htmlutils | html工具解析html辅助所用 |
| iconutils | icon工具icon文件获取、单色渲染 |
| imageutils | 图片工具,猜测图片格式与后缀 TODO 但是没明白 |
| pathutils | 路径工具,文件、文件夹路径管理、相对路径管理 |
| printutils | TODO什么打印呢 |
| processutils | 内部程序工具、辅助缓冲、导出、预览、搜索、绘图等 |
| urldragdroputils | Url拖拽工具TODO不知道是哪里拖拽 |
| utils | 其他工具 |
| webutils | 网页工具 |
| widgetutils | 窗体工具 |
### widget
窗体模块
| 名称 | 解释 |
| :------------------------------ | :---------------- |
| attachmentdragdropareaindicator | TODO 不知道 |
| attachmentpopup | 附件弹出框 |
| biaction | TODO bi动作 |
| buttonpopup | 按钮弹出框 |
| combobox | 解决间距的下拉菜单 |
| consoleviewer | 控制台预览 |
| dockwidgethelper | 左侧导航坞窗体帮助 |
| dragdropareaindicator | TODO 拖拽区域指示 |
| editreaddiscardaction | TODO 读写丢弃动作 |
| filesystemviewer | 文件系统观察者 |
| findandreplacewidget | 查找和替换窗体 |
| floatingwidget | 浮动窗体 |
| fullscreentoggleaction | 全屏切换 |
| historypanel | 历史记录面板 |
| itemproxystyle | TODO 不知道 |
| labelwithbuttonswidget | 标签按钮小部件 |
| lineedit | TODO 什么线条编辑 |
| lineeditdelegate | TODO 线条委托 |
| lineeditwithsnippet | |
| listwidget | |
| locationinputwithbrowsebutton | |
| locationlist | |
| mainwindow | |
| markdownviewwindow | |
| messageboxhelper | |
| navigationmode | |
| navigationmodemgr | |
| notebookexplorer | |
| notebookexplorersession | |
| notebooknodeexplorer | |
| notebookselector | |
| outlinepopup | |
| outlineprovider | |
| outlineviewer | |
| propertydefs | |
| quickselector | |
| searchinfoprovider | |
| searchpanel | |
| simplesegmenthighlighter | |
| snippetpanel | |
| statusbarhelper | |
| styleditemdelegate | |
| systemtrayhelper | |
| tagexplorer | |
| tagpopup | |
| tagviewer | |
| textviewwindow | |
| titlebar | |
| titletoolbar | |
| toolbarhelper | |
| toolbox | |
| treeview | |
| treewidget | |
| treewidgetitem | |
| viewarea | |
| viewareasession | |
| viewsplit | |
| viewwindow | |
| viewwindowsession | |
| viewwindowtoolbarhelper | |
| webpage | |
| webviewer | |
| widgetsfactory | |
| windowspanel | |
| windowsprovider | |
| wordcountpopup | |
dialogs 对话框
| 名称 | 解释 |
| :-------------------------- | :--- |
| deleteconfirmdialog | |
| dialog | |
| exportdialog | |
| filepropertiesdialog | |
| folderfilesfilterwidget | |
| folderpropertiesdialog | |
| imageinsertdialog | |
| importfolderdialog | |
| importfolderutils | |
| importlegacynotebookdialog | |
| importnotebookdialog | |
| legacynotebookutils | |
| levellabelwithupbutton | |
| linkinsertdialog | |
| managenotebooksdialog | |
| newfolderdialog | |
| newnotebookdialog | |
| newnotebookfromfolderdialog | |
| newnotedialog | |
| newsnippetdialog | |
| newtagdialog | |
| nodeinfowidget | |
| notebookinfowidget | |
| notepropertiesdialog | |
| renametagdialog | |
| scrolldialog | |
| selectdialog | |
| selectionitemwidget | |
| snippetinfowidget | |
| snippetpropertiesdialog | |
| sortdialog | |
| tableinsertdialog | |
| updater | |
| viewtagsdialog | |
editors 编辑器
| 名称 | 解释 |
| :-------------------------- | :--- |
| editormarkdownvieweradapter | |
| graphhelper | |
| graphvizhelper | |
| markdowneditor | |
| markdowntable | |
| markdowntablehelper | |
| markdownviewer | |
| markdownvieweradapter | |
| plantumlhelper | |
| previewhelper | |
| statuswidget | |
| texteditor | |
framelessmainwindow 无边框窗口
| 名称 | 解释 |
| :----------------------- | :-------- |
| framelessmainwindow | |
| framelessmainwindowlinux | 针对linux |
| framelessmainwindowwin | 针对win |
## 模块关系图
TODO