# 工程结构 ## 结构解析 ``` / ├── 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