chendapao 7ad46f3b40
feature/add_project_document_2 (#2267)
* add macos detailed build documentation

* The second batch is modified separately

* add code flow img

* adj doc logic
2022-10-05 17:57:32 +08:00

29 KiB
Raw Blame History

工程结构

代码结构图

结构解析

/
├── 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                              统一入口模块
│     ├── 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 根目录下的文件

名称 解释
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 缓冲区的CRUD、视图
bufferprovider 缓冲区供应者对接vnote自己的笔记的缓冲区缓冲区的虚方法TODO为什么这里要定义这些虚方法呢
filebufferprovider 文件缓冲区供应者,对接外部文件的缓存区
filetypehelper 文件类型帮助
markdownbuffer markdown缓冲区图片增删过时图片删除
markdownbufferfactory marodkwn缓冲区工厂类创建所用
nodebufferprovider 笔记缓冲区提供者 TODO 这块没太懂
textbuffer 文本缓冲区
textbufferfactory 文本缓冲区工厂类,创建所用

文件夹 notebook 笔记的索引、笔记索引的嵌入式数据库操作、标签、参数、外部文件

名称 解释
bundlenotebook 笔记本打包会将所有笔记和笔记本拍平后的数据结构、标签、以及对应关系读写到SQLite数据库中
bundlenotebookfactory 笔记本打包工厂类
externalnode vnote 未管理的外部节点
node 笔记 (笔记本的节点) 兼容2
nodeparameters 笔记的参数id创建时间修改时间标签附件
notebook 笔记本和回收站
notebookdatabaseaccess 笔记本和笔记的数据库读写操作
notebookparameters 笔记本的参数
notebooktagmgr 笔记本标签管理器
tag 标签
vxnode vnotex3的节点
vxnodefile vnotex3的文件

文件夹 notebookbackend 笔记后端,如存储等,尚未实现

名称 解释
inotebookbackend 笔记本后端的抽象类,文件的访问和同步
localnotebookbackend 笔记本后端的本地文件系统
localnotebookbackendfactory 笔记本后端工厂类

文件夹 notebookconfigmgr 笔记索引配置管理

名称 解释
bundlenotebookconfigmgr 笔记本配置管理器打包,获取数据库、本地文件索引信息等配置
inotebookconfigmgr 笔记本配置管理器的抽象类,配置文件的读写
notebookconfig 笔记本配置
vxnodeconfig vx节点配置
vxnotebookconfigmgr vx笔记本配置管理器
vxnotebookconfigmgrfactory vx笔记本配置管理器工厂类

文件夹 versioncontroller 笔记版本管理(未开发)

名称 解释
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

导出模块,目前支持 HTMLPDFMarkdown自定义

名称 解释
exportdata 导出数据转换
exporter 导出器,将对应的数据导出生成其相应格式的文件
webviewexporter TODO 不知道干嘛

imagehost

图床模块,目前是支持了 本地giteegithub

名称 解释
giteeimagehost 码云图床
githubimagehost github图床
imagehost 图床
imagehostmgr 图床管理、增删、改名
imagehostutils 图床工具类
repoimagehost 图床解析、测试、使用

搜索模块

名称 解释
filesearchengine 文件搜索引擎
searchdata 搜索条件的转换,把界面上的搜索条件转换成可以进行实际搜索的条件
searcher 搜索者,干活开始搜索
searchhelper 搜索帮助,提供搜索反馈,比如无效关键词等等
searchresultitem 搜索结果,这位置列表那里显示出来的那些
searchtoken 搜索令牌、全文检索、正则匹配

snippet

片段模块

名称 解释
dynamicsnippet 动态片段 TODO 没懂为什么叫动态片段
snippet 片段、目前只支持了文本片段
snippetmgr 片段管理器、增删改查

task

任务模块

名称 解释
shellexecution 脚本执行器,默认为 winPowerShell、其他为:/bin/bash
task 任务、实现了与外部程序的交互
taskmgr 任务管理器、任务刷新、加载
taskvariablemgr 任务变量管理器

unitedentry

统一入口模块

名称 解释
entrypopup 统一入口的弹出框
entrywidgetfactory 窗口工厂类
findunitedentry 统一入口查找
helpunitedentry 统一入口帮助
iunitedentry 统一入口的接口
unitedentry 统一入口
unitedentryalias 统一入口别名
unitedentryhelper 统一入口帮助
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 拖放区域指示部件
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 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 markdown 编辑器视图适配器
graphhelper 图帮助
graphvizhelper
markdowneditor markdown编辑器
markdowntable markdown中的智能表格
markdowntablehelper markdown表格帮助
markdownviewer TODO
markdownvieweradapter TODO
plantumlhelper uml帮助
previewhelper 预览帮助
statuswidget 状态窗体
texteditor 纯文本编辑器

framelessmainwindow 无边框窗口

名称 解释
framelessmainwindow 主窗体
framelessmainwindowlinux 针对linux
framelessmainwindowwin 针对win