From 7ad46f3b400c00fc97747396ae40743455341676 Mon Sep 17 00:00:00 2001 From: chendapao Date: Wed, 5 Oct 2022 17:57:32 +0800 Subject: [PATCH] feature/add_project_document_2 (#2267) * add macos detailed build documentation * The second batch is modified separately * add code flow img * adj doc logic --- zh_cn/docs/开发者/02 - 工程配置/vx.json | 2 +- .../02 - 工程配置/vx_images/367553117269276.png | Bin 0 -> 66750 bytes zh_cn/docs/开发者/02 - 工程配置/工程结构.md | 421 +++++++++--------- 3 files changed, 212 insertions(+), 211 deletions(-) create mode 100644 zh_cn/docs/开发者/02 - 工程配置/vx_images/367553117269276.png diff --git a/zh_cn/docs/开发者/02 - 工程配置/vx.json b/zh_cn/docs/开发者/02 - 工程配置/vx.json index 8cc30847..19ab5892 100644 --- a/zh_cn/docs/开发者/02 - 工程配置/vx.json +++ b/zh_cn/docs/开发者/02 - 工程配置/vx.json @@ -5,7 +5,7 @@ "attachment_folder": "", "created_time": "2022-09-09T15:41:27Z", "id": "63", - "modified_time": "2022-09-22T23:53:02Z", + "modified_time": "2022-10-05T09:51:07Z", "name": "工程结构.md", "signature": "784285914952851111", "tags": [ diff --git a/zh_cn/docs/开发者/02 - 工程配置/vx_images/367553117269276.png b/zh_cn/docs/开发者/02 - 工程配置/vx_images/367553117269276.png new file mode 100644 index 0000000000000000000000000000000000000000..e8c9ba9e4e9796a4be82f4660f167b7a76f68c7a GIT binary patch literal 66750 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 z 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 literal 0 HcmV?d00001 diff --git a/zh_cn/docs/开发者/02 - 工程配置/工程结构.md b/zh_cn/docs/开发者/02 - 工程配置/工程结构.md index c6029f93..30a62098 100644 --- a/zh_cn/docs/开发者/02 - 工程配置/工程结构.md +++ b/zh_cn/docs/开发者/02 - 工程配置/工程结构.md @@ -1,6 +1,11 @@ # 工程结构 +## 代码结构图 + +![](vx_images/367553117269276.png) + + ## 结构解析 ``` @@ -30,7 +35,7 @@ │ ├── search 搜索模块 │ ├── snippet 片段模块 │ ├── task 任务模块 -│ ├── unitedentry TODO 不知道这里是干什么的 +│ ├── unitedentry 统一入口模块 │ ├── utils 工具模块 │ └── widgets 窗体 │ ├── *** 其他窗体文件 @@ -79,96 +84,96 @@ git submodule update --init --recursive 其他在 `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 | | +| 名称 | 解释 | +| :------------------- | :------------------------------------------------------------------------------- | +| vnotex | vnote总入口,对核心的功能进行初始化等 | +| global | 全局通用枚举、内联方法 | +| buffermgr | 缓冲管理器,当前打开的笔记都会进入到缓存中,笔记打开、缓存的增删 | +| configmgr | 配置管理器,主配置、当前会话配置、核心配置、编辑器配置、窗体配置的总入口 | +| historymgr | 操作历史管理器,以json的格式将历史操作数据存储到session.json中 | +| templatemgr | 模板管理器,把模板理解为一个笔记即可,获得模板基础信息、文件夹,主题,路径 | +| thememgr | 主题管理器,调色、高亮、编辑、md配色、icon图标等 | +| notebookmgr | 笔记本管理器,笔记本的CRUD,版本控制、后端、配置、导入等 | +| mainconfig | 主配置,版本、核心配置、编辑器配置、窗体配置等入口 | +| coreconfig | 核心配置,设置中的快捷键、主题、检查更新、默认打开 | +| editorconfig | 编辑器配置,设置中的编辑器、文本编辑、markdown编辑、自动保存等 | +| markdowneditorconfig | markdown编辑器配置,文本、uml、graphviz、mathjax、图片、缩放、代码、链接跳转 | +| texteditorconfig | 文本编辑器配置,插入模式、光标、折叠、制表符、特殊高亮 | +| widgetconfig | 窗体配置,标题自动扩展、序号、查询和替换、 资源视图、搜索、窗体保持、窗体拆分、统一入口 | +| sessionconfig | 当前会话配置,opengl,当前笔记打开状态、窗体布局等 | +| clipboarddata | 剪切板数据,TODO | +| externalfile | 外部文件,读取、路径、图片等 | +| file | 文件,这里主要是对图片操作 | +| historyitem | 操作历史的item,记录历史的变动 | +| logger | 日志 | +| htmltemplatehelper | html模板帮助 | +| quickaccesshelper | 快速访问帮助 | +| singleinstanceguard | 窗体的单例,只能打开一个vnote | +| theme | 主题的实际应用 | 文件夹 `buffer` 缓冲区,就是已经打开的笔记 -| 名称 | 解释 | -| :-------------------- | :--- | -| buffer | | -| bufferprovider | | -| filebufferprovider | | -| filetypehelper | | -| markdownbuffer | | -| markdownbufferfactory | | -| nodebufferprovider | | -| textbuffer | | -| textbufferfactory | | +| 名称 | 解释 | +| :-------------------- | :----------------------------------------------------------------------------------- | +| buffer | 缓冲区的CRUD、视图 | +| bufferprovider | 缓冲区供应者,对接vnote自己的笔记的缓冲区,缓冲区的虚方法,TODO为什么这里要定义这些虚方法呢 | +| filebufferprovider | 文件缓冲区供应者,对接外部文件的缓存区 | +| filetypehelper | 文件类型帮助 | +| markdownbuffer | markdown缓冲区,图片增删,过时图片删除 | +| markdownbufferfactory | marodkwn缓冲区工厂类,创建所用 | +| nodebufferprovider | 笔记缓冲区提供者 TODO 这块没太懂 | +| textbuffer | 文本缓冲区 | +| textbufferfactory | 文本缓冲区工厂类,创建所用 | 文件夹 `notebook` 笔记的索引、笔记索引的嵌入式数据库操作、标签、参数、外部文件 -| 名称 | 解释 | -| :--------------------- | :--- | -| bundlenotebook | | -| bundlenotebookfactory | | -| externalnode | | -| node | | -| nodeparameters | | -| notebook | | -| notebookdatabaseaccess | | -| notebookparameters | | -| notebooktagmgr | | -| tag | | -| vxnode | | -| vxnodefile | | +| 名称 | 解释 | +| :--------------------- | :-------------------------------------------------------------------------------- | +| bundlenotebook | 笔记本打包,会将所有笔记和笔记本拍平后的数据结构、标签、以及对应关系读写到SQLite数据库中 | +| bundlenotebookfactory | 笔记本打包工厂类 | +| externalnode | vnote 未管理的外部节点 | +| node | 笔记 (笔记本的节点) 兼容2 | +| nodeparameters | 笔记的参数,id,创建时间,修改时间,标签,附件 | +| notebook | 笔记本和回收站 | +| notebookdatabaseaccess | 笔记本和笔记的数据库读写操作 | +| notebookparameters | 笔记本的参数 | +| notebooktagmgr | 笔记本标签管理器 | +| tag | 标签 | +| vxnode | vnotex3的节点 | +| vxnodefile | vnotex3的文件 | -文件夹 `notebookbackend` TODO 笔记后端(工厂方法) +文件夹 `notebookbackend` 笔记后端,如存储等,尚未实现 -| 名称 | 解释 | -| :-------------------------- | :--- | -| inotebookbackend | | -| localnotebookbackend | | -| localnotebookbackendfactory | | +| 名称 | 解释 | +| :-------------------------- | :-------------------------------- | +| inotebookbackend | 笔记本后端的抽象类,文件的访问和同步 | +| localnotebookbackend | 笔记本后端的本地文件系统 | +| localnotebookbackendfactory | 笔记本后端工厂类 | -文件夹 `notebookconfigmgr` TODO 笔记索引配置管理 +文件夹 `notebookconfigmgr` 笔记索引配置管理 -| 名称 | 解释 | -| :-- | :-- | -| bundlenotebookconfigmgr | | -| inotebookconfigmgr | | -| notebookconfig | | -| vxnodeconfig | | -| vxnotebookconfigmgr | | -| vxnotebookconfigmgrfactory | | +| 名称 | 解释 | +| :------------------------- | :-------------------------------------------------- | +| bundlenotebookconfigmgr | 笔记本配置管理器打包,获取数据库、本地文件索引信息等配置 | +| inotebookconfigmgr | 笔记本配置管理器的抽象类,配置文件的读写 | +| notebookconfig | 笔记本配置 | +| vxnodeconfig | vx节点配置 | +| vxnotebookconfigmgr | vx笔记本配置管理器 | +| vxnotebookconfigmgrfactory | vx笔记本配置管理器工厂类 | -文件夹 `versioncontroller` TODO 笔记版本管理(未开发) +文件夹 `versioncontroller` 笔记版本管理(未开发) -| 名称 | 解释 | -| :---------------------------- | :--- | -| dummyversioncontroller | | -| dummyversioncontrollerfactory | | -| versioncontrollerserver | | +| 名称 | 解释 | +| :---------------------------- | :------------------ | +| dummyversioncontroller | 虚拟版本控制器 | +| dummyversioncontrollerfactory | 虚拟版本控制器工厂类 | +| versioncontrollerserver | 版本控制器服务 | ### src/data -资源文件夹,主要包含 `核心资源` 和 `额外资源`,因为是资源文件,所有会有对应的 `.qrc 工程资源文件` 可以理解为在打包时需要哪些资源文件: +资源文件夹,主要包含 `核心资源` 和 `额外资源`,因为是资源文件,所有会有对应的 `.qrc` 工程资源文件,可以理解为在打包时需要哪些资源文件: core `核心资源` @@ -216,7 +221,7 @@ extra `额外资源` | imagehost | 图床 | | imagehostmgr | 图床管理、增删、改名 | | imagehostutils | 图床工具类 | -| repoimagehost | TODO 不知道 | +| repoimagehost | 图床解析、测试、使用 | ### search @@ -260,17 +265,17 @@ extra `额外资源` 统一入口模块 -| 名称 | 解释 | -| :----------------- | :------------------------- | -| entrypopup | 统一入口的弹出框 | -| entrywidgetfactory | 窗口工厂类 | -| findunitedentry | 统一入口查找 | -| helpunitedentry | 统一入口帮助 | -| iunitedentry | TODO 不知道 | -| unitedentry | TODO 不知道 | -| unitedentryalias | 统一入口别名 | -| unitedentryhelper | TODO 没懂与上面的help的区别 | -| unitedentrymgr | 统一入口管理器 | +| 名称 | 解释 | +| :----------------- | :-------------- | +| entrypopup | 统一入口的弹出框 | +| entrywidgetfactory | 窗口工厂类 | +| findunitedentry | 统一入口查找 | +| helpunitedentry | 统一入口帮助 | +| iunitedentry | 统一入口的接口 | +| unitedentry | 统一入口 | +| unitedentryalias | 统一入口别名 | +| unitedentryhelper | 统一入口帮助 | +| unitedentrymgr | 统一入口管理器 | ### utils @@ -301,141 +306,137 @@ extra `额外资源` 窗体模块 -| 名称 | 解释 | -| :------------------------------ | :---------------- | -| 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 | | + +| 名称 | 解释 | +| :------------------------------ | :--------------------------------------------------------------------- | +| attachmentdragdropareaindicator | TODO 不知道 | +| attachmentpopup | 附件弹出框 | +| biaction | TODO bi动作 | +| buttonpopup | 按钮弹出框 | +| combobox | 解决间距的下拉菜单 | +| consoleviewer | 控制台预览 | +| dockwidgethelper | 左侧导航坞窗体帮助 | +| dragdropareaindicator | 拖放区域指示部件 | +| editreaddiscardaction | (阅读模式、编辑模式、放弃)动作 | +| filesystemviewer | 文件系统观察者 | +| findandreplacewidget | 查找和替换窗体 | +| floatingwidget | 浮动窗体 | +| fullscreentoggleaction | 全屏切换 | +| historypanel | 历史记录面板 | +| itemproxystyle | TODO 不知道 | +| labelwithbuttonswidget | 标签按钮小部件 | +| lineedit | 行编辑部件 | +| lineeditdelegate | 行编辑部件代理 | +| lineeditwithsnippet | 行编辑与片段 | +| listwidget | 列表窗体 | +| locationinputwithbrowsebutton | TODO | +| locationlist | 位置列表 | +| mainwindow | 主窗体,窗体总入口 | +| markdownviewwindow | markdown视图 | +| messageboxhelper | 消息推送帮助 | +| navigationmode | 导航模式接口,如果一个小部件想要支持导航模式,则需要继承这个类。 | +| navigationmodemgr | 导航模式管理器 | +| notebookexplorer | 笔记本资源管理器 | +| notebookexplorersession | 笔记本资源管理器当前会话,用与重新打开后的会话恢复 | +| notebooknodeexplorer | 笔记本中的笔记资源管理器 | +| notebookselector | 笔记本选择器 | +| outlinepopup | 笔记中弹出的大纲 | +| outlineprovider | 大纲提供者 | +| outlineviewer | 大纲视图 | +| propertydefs | 定义用于QSS的属性。 | +| quickselector | TODO | +| searchinfoprovider | 搜索提供者 | +| searchpanel | 搜索面板 | +| simplesegmenthighlighter | TODO | +| snippetpanel | 片段面板 | +| statusbarhelper | 状态栏帮助 | +| styleditemdelegate | 样式代理 | +| systemtrayhelper | 系统托盘 | +| tagexplorer | 标签资源管理器 | +| tagpopup | 笔记中的标签弹出框 | +| tagviewer | 标签视图 | +| textviewwindow | 文本视图窗体 | +| titlebar | 标题栏 | +| titletoolbar | 标题工具栏 | +| toolbarhelper | 工具栏帮助 | +| toolbox | TODO | +| treeview | TODO | +| treewidget | vnotex修改后的树窗体 | +| treewidgetitem | vnotex修改后的树窗体的选项,修改了默认排序 | +| viewarea | 视图区域 TODO | +| viewareasession | TODO | +| viewsplit | 视图拆分 | +| viewwindow | 视图拆分后的窗体 | +| viewwindowsession | TODO | +| viewwindowtoolbarhelper | 视图工具栏帮助 | +| webpage | TODO | +| webviewer | TODO | +| 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 | | +| 名称 | 解释 | +| :-------------------------- | :--------------------- | +| deleteconfirmdialog | 需要确认的删除项信息 | +| dialog | vnotex修改后的对话框 | +| exportdialog | 导出对话框 | +| filepropertiesdialog | 文件配置对话框 | +| folderfilesfilterwidget | 文件夹过滤窗体 | +| folderpropertiesdialog | 文件夹设置对话框 | +| imageinsertdialog | 图片插入对话框 | +| importfolderdialog | 导入文件夹对话框 | +| importfolderutils | 导入文件夹工具类 | +| importlegacynotebookdialog | 导入旧版的笔记本对话框 | +| importnotebookdialog | 导入笔记本对话框 | +| legacynotebookutils | 旧版笔记本工具类 | +| levellabelwithupbutton | TODO | +| linkinsertdialog | 链接插入对话框 | +| managenotebooksdialog | 笔记本管理对话框 | +| newfolderdialog | 新建文件夹对话框 | +| newnotebookdialog | 新建笔记本对话框 | +| newnotebookfromfolderdialog | 从文件夹新建笔记本对话框 | +| newnotedialog | 新建笔记对话框 | +| newsnippetdialog | 新建片段对话框 | +| newtagdialog | 新建标签对话框 | +| nodeinfowidget | 节点(笔记)信息窗体 | +| notebookinfowidget | 笔记本信息窗体 | +| notepropertiesdialog | 笔记属性对话框 | +| renametagdialog | 名称变更对话框 | +| scrolldialog | 滚动条对话框 | +| selectdialog | 选择对话框 | +| selectionitemwidget | 选择项窗体 | +| snippetinfowidget | 片段窗体 | +| snippetpropertiesdialog | 片段属性对话框 | +| sortdialog | 排序对话框 | +| tableinsertdialog | 表格插入对话框 | +| updater | 自动更新 | +| viewtagsdialog | TODO | editors 编辑器 -| 名称 | 解释 | -| :-------------------------- | :--- | -| editormarkdownvieweradapter | | -| graphhelper | | -| graphvizhelper | | -| markdowneditor | | -| markdowntable | | -| markdowntablehelper | | -| markdownviewer | | -| markdownvieweradapter | | -| plantumlhelper | | -| previewhelper | | -| statuswidget | | -| texteditor | | +| 名称 | 解释 | +| :-------------------------- | :----------------------- | +| editormarkdownvieweradapter | markdown 编辑器视图适配器 | +| graphhelper | 图帮助 | +| graphvizhelper | | +| markdowneditor | markdown编辑器 | +| markdowntable | markdown中的智能表格 | +| markdowntablehelper | markdown表格帮助 | +| markdownviewer | TODO | +| markdownvieweradapter | TODO | +| plantumlhelper | uml帮助 | +| previewhelper | 预览帮助 | +| statuswidget | 状态窗体 | +| texteditor | 纯文本编辑器 | framelessmainwindow 无边框窗口 | 名称 | 解释 | | :----------------------- | :-------- | -| framelessmainwindow | | +| framelessmainwindow | 主窗体 | | framelessmainwindowlinux | 针对linux | | framelessmainwindowwin | 针对win | - - -## 模块关系图 - -TODO