mirror of
https://gitee.com/vnotex/vnote.git
synced 2025-07-06 22:39:53 +08:00

* add macos detailed build documentation * The second batch is modified separately * add code flow img * adj doc logic
29 KiB
29 KiB
工程结构
代码结构图
结构解析
/
├── 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
导出模块,目前支持 HTML
、PDF
、Markdown
、自定义
。
名称 | 解释 |
---|---|
exportdata | 导出数据转换 |
exporter | 导出器,将对应的数据导出生成其相应格式的文件 |
webviewexporter | TODO 不知道干嘛 |
imagehost
图床模块,目前是支持了 本地
、gitee
、github
。
名称 | 解释 |
---|---|
giteeimagehost | 码云图床 |
githubimagehost | github图床 |
imagehost | 图床 |
imagehostmgr | 图床管理、增删、改名 |
imagehostutils | 图床工具类 |
repoimagehost | 图床解析、测试、使用 |
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 | 统一入口的接口 |
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 |