From a1016ac7d7ab8188ed238c4b864babddebd6f85f Mon Sep 17 00:00:00 2001 From: liyepan Date: Thu, 22 Oct 2026 17:06:27 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20VoiletMark=200.1.0=20=E2=80=94=E2=80=94?= =?UTF-8?q?=20Qt5/C++=20Markdown=20=E7=BC=96=E8=BE=91=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 自动跟随系统的浅色/深色主题(Windows 注册表、macOS defaults、 Linux gsettings / KDE / XFCE),每 2 秒检测,可在菜单中手动锁定 - Markdown 语法高亮(标题、强调、行内代码、围栏代码块、链接、 引用、列表、任务列表、分隔线) - 编辑器:行号栏、当前行高亮、Tab 缩进、拖放打开、Ctrl+滚轮缩放 - 文件:新建/打开/保存/另存为/最近打开,保留 BOM 与 CRLF,QSaveFile 原子写入 - 状态栏、未保存提示、窗口与编辑设置持久化 - CMake 构建脚本与 README --- .gitignore | 8 + CMakeLists.txt | 38 +++ README.md | 102 +++++++ docs/screenshot-dark.png | Bin 0 -> 115002 bytes docs/screenshot-light.png | Bin 0 -> 114940 bytes scripts/build.sh | 27 ++ src/MainWindow.cpp | 567 ++++++++++++++++++++++++++++++++++++ src/MainWindow.h | 92 ++++++ src/MarkdownEditor.cpp | 314 ++++++++++++++++++++ src/MarkdownEditor.h | 50 ++++ src/MarkdownHighlighter.cpp | 190 ++++++++++++ src/MarkdownHighlighter.h | 41 +++ src/ThemeManager.cpp | 397 +++++++++++++++++++++++++ src/ThemeManager.h | 112 +++++++ src/main.cpp | 68 +++++ 15 files changed, 2006 insertions(+) create mode 100644 .gitignore create mode 100644 CMakeLists.txt create mode 100644 README.md create mode 100644 docs/screenshot-dark.png create mode 100644 docs/screenshot-light.png create mode 100755 scripts/build.sh create mode 100644 src/MainWindow.cpp create mode 100644 src/MainWindow.h create mode 100644 src/MarkdownEditor.cpp create mode 100644 src/MarkdownEditor.h create mode 100644 src/MarkdownHighlighter.cpp create mode 100644 src/MarkdownHighlighter.h create mode 100644 src/ThemeManager.cpp create mode 100644 src/ThemeManager.h create mode 100644 src/main.cpp diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4e64f91 --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +build/ +build-*/ +*.user +*.autosave +.vscode/ +.idea/ +compile_commands.json +CMakeLists.txt.user diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..9832176 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,38 @@ +cmake_minimum_required(VERSION 3.16) + +project(VoiletMark VERSION 0.1.0 LANGUAGES CXX) + +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_AUTOMOC ON) +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) + set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type" FORCE) +endif() + +find_package(Qt5 5.12 REQUIRED COMPONENTS Core Gui Widgets) + +set(VM_SOURCES + src/main.cpp + src/MainWindow.cpp + src/MarkdownEditor.cpp + src/MarkdownHighlighter.cpp + src/ThemeManager.cpp +) + +set(VM_HEADERS + src/MainWindow.h + src/MarkdownEditor.h + src/MarkdownHighlighter.h + src/ThemeManager.h +) + +add_executable(VoiletMark WIN32 MACOSX_BUNDLE ${VM_SOURCES} ${VM_HEADERS}) + +target_link_libraries(VoiletMark PRIVATE Qt5::Widgets) +target_compile_definitions(VoiletMark PRIVATE VM_VERSION="${PROJECT_VERSION}") + +install(TARGETS VoiletMark + RUNTIME DESTINATION bin + BUNDLE DESTINATION .) diff --git a/README.md b/README.md new file mode 100644 index 0000000..d23ca47 --- /dev/null +++ b/README.md @@ -0,0 +1,102 @@ +# VoiletMark + +一个轻量的跨平台 Markdown 编辑器,基于 **Qt 5 / C++17** 构建。 + +当前版本 **0.1.0**:先把编辑器本体做扎实——干净的界面、顺手的编辑手感、 +以及**自动跟随系统**的浅色 / 深色主题。 + +## 界面 + +| 浅色 | 深色 | +| --- | --- | +| ![浅色主题](docs/screenshot-light.png) | ![深色主题](docs/screenshot-dark.png) | + +## 功能 + +### 编辑 + +- Markdown 语法高亮:标题、粗体 / 斜体 / 删除线、行内代码、围栏代码块、 + 链接与图片、引用、有序 / 无序列表、任务列表、分隔线 +- 行号栏、当前行高亮 +- `Tab` / `Shift+Tab` 整行缩进,选中多行时批量缩进 +- 自动换行(`Alt+Z`)、`Ctrl+滚轮` 或 `Ctrl++` / `Ctrl+-` 缩放字号 +- 撤销 / 重做、剪切 / 复制 / 粘贴,菜单项会跟随可用状态自动灰显 +- 把 Markdown 文件直接拖进窗口即可打开 + +### 文件 + +- 新建、打开、保存、另存为、最近打开(最多 8 条) +- 保留原文件的 **BOM** 与 **CRLF** 换行风格,保存时原子写入(`QSaveFile`) +- 关闭或切换文件时提示未保存的修改 +- 记忆窗口位置、字号、换行开关等设置 + +### 主题 + +界面默认**跟随系统**自动在浅色 / 深色之间切换,每 2 秒检测一次: + +| 平台 | 检测方式 | +| --- | --- | +| Windows | 注册表 `AppsUseLightTheme` | +| macOS | `defaults read -g AppleInterfaceStyle` | +| Linux | gsettings `color-scheme` / GTK 主题名 → KDE `kdeglobals` → XFCE `xsettings.xml` → 调色板兜底 | + +也可以在 **视图 → 主题** 中手动锁定「跟随系统 / 浅色 / 深色」,选择会被记住。 + +## 构建 + +依赖:Qt 5.12+(含 Widgets)、CMake 3.16+、支持 C++17 的编译器。 + +```bash +cmake -S . -B build -DCMAKE_BUILD_TYPE=Release \\ + -DCMAKE_PREFIX_PATH="$HOME/Qt5/5.15.2/gcc_64" +cmake --build build -j"$(nproc)" +./build/VoiletMark +``` + +或者直接: + +```bash +./scripts/build.sh +``` + +脚本会自动探测 `$HOME/Qt5/5.15.2/gcc_64`,也可以用 `QT_PREFIX` 环境变量指定。 + +## 命令行 + +```bash +VoiletMark # 打开编辑器(显示欢迎文档) +VoiletMark notes.md # 直接打开指定文件 +VoiletMark --theme dark # 本次运行使用深色主题 +VoiletMark --screenshot a.png # 渲染窗口截图后退出(调试 / 视觉回归) +``` + +## 快捷键 + +| 快捷键 | 功能 | +| --- | --- | +| `Ctrl+N` / `Ctrl+O` / `Ctrl+S` | 新建 / 打开 / 保存 | +| `Ctrl+Shift+S` | 另存为 | +| `Ctrl+Z` / `Ctrl+Shift+Z` | 撤销 / 重做 | +| `Ctrl+滚轮`、`Ctrl++`、`Ctrl+-`、`Ctrl+0` | 缩放 / 恢复字号 | +| `Alt+Z` | 切换自动换行 | +| `Tab` / `Shift+Tab` | 缩进 / 反缩进 | +| `Ctrl+Q` | 退出 | + +## 代码结构 + +``` +src/ +├── main.cpp 入口:命令行解析、Fusion 样式、主题初始化 +├── ThemeManager.{h,cpp} 系统主题检测 + 调色板 / QSS 生成 +├── MainWindow.{h,cpp} 菜单、文件读写、最近打开、状态栏、设置 +├── MarkdownEditor.{h,cpp} 编辑器控件:行号、缩进、拖放、缩放 +└── MarkdownHighlighter.{h,cpp} Markdown 语法着色(含围栏代码块状态机) +``` + +## 下一版计划 + +- 实时预览(右侧或同屏渲染) +- 查找 / 替换 +- 列表按回车自动续行 +- 表格与数学公式支持 +- 导出 HTML / PDF diff --git a/docs/screenshot-dark.png b/docs/screenshot-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..e4055cf96097e6f2272dc271c4bdeb3321b83230 GIT binary patch literal 115002 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%0AdZtlv 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 U+3_@rK#I(=kFl+lf$h-T#G`Gdi-)bu6= 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 literal 0 HcmV?d00001 diff --git a/docs/screenshot-light.png b/docs/screenshot-light.png new file mode 100644 index 0000000000000000000000000000000000000000..53a3c6fe7b2a758dd9c102cd864fa297316b53b3 GIT binary patch literal 114940 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 z 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 NRh2ZMB?{)R{|jgl9c2Ij literal 0 HcmV?d00001 diff --git a/scripts/build.sh b/scripts/build.sh new file mode 100755 index 0000000..e99c1e9 --- /dev/null +++ b/scripts/build.sh @@ -0,0 +1,27 @@ +#!/usr/bin/env bash +# 一键构建。可用 QT_PREFIX 指定 Qt 前缀,例如: +# QT_PREFIX=$HOME/Qt5/5.15.2/gcc_64 ./scripts/build.sh +set -euo pipefail + +root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" + +if [[ -z "${QT_PREFIX:-}" ]]; then + for candidate in "$HOME/Qt5/5.15.2/gcc_64" "$HOME/Qt/5.15.2/gcc_64"; do + if [[ -d "$candidate" ]]; then + QT_PREFIX="$candidate" + break + fi + done +fi + +cmake_args=(-S "$root" -B "$root/build" -DCMAKE_BUILD_TYPE=Release) +if [[ -n "${QT_PREFIX:-}" ]]; then + cmake_args+=(-DCMAKE_PREFIX_PATH="$QT_PREFIX") + echo "使用 Qt: $QT_PREFIX" +fi + +cmake "${cmake_args[@]}" +cmake --build "$root/build" -j"$(nproc)" + +echo +echo "构建完成: $root/build/VoiletMark" diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp new file mode 100644 index 0000000..3243d95 --- /dev/null +++ b/src/MainWindow.cpp @@ -0,0 +1,567 @@ +#include "MainWindow.h" + +#include "MarkdownEditor.h" +#include "ThemeManager.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace { + +constexpr int kMaxRecentFiles = 8; +constexpr int kDefaultFontSize = 12; + +const char kWelcomeText[] = R"VOILETMARK( +# 欢迎使用 VoiletMark + +一款轻量的跨平台 Markdown 编辑器,基于 **Qt 5** 与 C++ 构建。 + +## 快速开始 + +- `Ctrl+O` 打开文件,`Ctrl+S` 保存,`Ctrl+Shift+S` 另存为 +- 也可以直接把 Markdown 文件拖进窗口 +- `Tab` / `Shift+Tab` 缩进整行,`Ctrl+滚轮` 调整字号 + +## 主题 + +界面默认跟随系统的浅色 / 深色设置自动切换, +也可以在 **视图 → 主题** 中手动锁定。 + +## 语法预览 + +> 引用、列表、`行内代码`、**粗体**、*斜体*、~~删除线~~ +> 以及 [链接](https://example.com) 都会实时着色。 + +1. 有序列表项 +2. 另一个有序列表项 + +- [x] 自动深浅色主题 +- [x] Markdown 语法高亮 +- [ ] 实时预览(下一版) + +```cpp +#include + +int main() +{ + std::printf("Hello, VoiletMark!\n"); + return 0; +} +``` + +--- +)VOILETMARK"; + +} // namespace + +MainWindow::MainWindow(QWidget *parent) + : QMainWindow(parent) +{ + setMinimumSize(760, 520); + resize(1024, 720); + + m_editor = new MarkdownEditor(this); + setCentralWidget(m_editor); + + createActions(); + createMenus(); + createStatusBar(); + loadSettings(); + refreshRecentMenu(); + + connect(m_editor->document(), &QTextDocument::modificationChanged, + this, &MainWindow::updateWindowTitle); + connect(m_editor, &QPlainTextEdit::cursorPositionChanged, + this, &MainWindow::updateStatusBar); + connect(m_editor, &MarkdownEditor::zoomStepRequested, + this, &MainWindow::changeZoom); + connect(m_editor, &MarkdownEditor::fileDropped, + this, &MainWindow::openPath); + + showWelcomeDocument(); + updateEditActionStates(); + updateStatusBar(); + m_editor->setFocus(); +} + +void MainWindow::createActions() +{ + m_newAction = new QAction(tr("新建"), this); + m_newAction->setShortcut(QKeySequence::New); + connect(m_newAction, &QAction::triggered, this, &MainWindow::newFile); + + m_openAction = new QAction(tr("打开…"), this); + m_openAction->setShortcut(QKeySequence::Open); + connect(m_openAction, &QAction::triggered, this, &MainWindow::openFile); + + m_saveAction = new QAction(tr("保存"), this); + m_saveAction->setShortcut(QKeySequence::Save); + connect(m_saveAction, &QAction::triggered, this, [this] { saveFile(); }); + + m_saveAsAction = new QAction(tr("另存为…"), this); + m_saveAsAction->setShortcut(QKeySequence(QStringLiteral("Ctrl+Shift+S"))); + connect(m_saveAsAction, &QAction::triggered, this, [this] { saveFileAs(); }); + + m_quitAction = new QAction(tr("退出"), this); + m_quitAction->setShortcut(QKeySequence::Quit); + connect(m_quitAction, &QAction::triggered, this, &QWidget::close); + + m_undoAction = new QAction(tr("撤销"), this); + m_undoAction->setShortcut(QKeySequence::Undo); + connect(m_undoAction, &QAction::triggered, m_editor, &QPlainTextEdit::undo); + + m_redoAction = new QAction(tr("重做"), this); + m_redoAction->setShortcut(QKeySequence::Redo); + connect(m_redoAction, &QAction::triggered, m_editor, &QPlainTextEdit::redo); + + m_cutAction = new QAction(tr("剪切"), this); + m_cutAction->setShortcut(QKeySequence::Cut); + connect(m_cutAction, &QAction::triggered, m_editor, &QPlainTextEdit::cut); + + m_copyAction = new QAction(tr("复制"), this); + m_copyAction->setShortcut(QKeySequence::Copy); + connect(m_copyAction, &QAction::triggered, m_editor, &QPlainTextEdit::copy); + + m_pasteAction = new QAction(tr("粘贴"), this); + m_pasteAction->setShortcut(QKeySequence::Paste); + connect(m_pasteAction, &QAction::triggered, m_editor, &QPlainTextEdit::paste); + + m_selectAllAction = new QAction(tr("全选"), this); + m_selectAllAction->setShortcut(QKeySequence::SelectAll); + connect(m_selectAllAction, &QAction::triggered, m_editor, &QPlainTextEdit::selectAll); + + m_wrapAction = new QAction(tr("自动换行"), this); + m_wrapAction->setCheckable(true); + m_wrapAction->setShortcut(QKeySequence(QStringLiteral("Alt+Z"))); + connect(m_wrapAction, &QAction::toggled, this, &MainWindow::setWordWrapEnabled); + + m_zoomInAction = new QAction(tr("放大"), this); + m_zoomInAction->setShortcut(QKeySequence::ZoomIn); + connect(m_zoomInAction, &QAction::triggered, this, [this] { changeZoom(1); }); + + m_zoomOutAction = new QAction(tr("缩小"), this); + m_zoomOutAction->setShortcut(QKeySequence::ZoomOut); + connect(m_zoomOutAction, &QAction::triggered, this, [this] { changeZoom(-1); }); + + m_zoomResetAction = new QAction(tr("实际大小"), this); + m_zoomResetAction->setShortcut(QKeySequence(QStringLiteral("Ctrl+0"))); + connect(m_zoomResetAction, &QAction::triggered, this, &MainWindow::resetZoom); + + connect(m_editor, &QPlainTextEdit::undoAvailable, m_undoAction, &QAction::setEnabled); + connect(m_editor, &QPlainTextEdit::redoAvailable, m_redoAction, &QAction::setEnabled); + connect(m_editor, &QPlainTextEdit::copyAvailable, m_cutAction, &QAction::setEnabled); + connect(m_editor, &QPlainTextEdit::copyAvailable, m_copyAction, &QAction::setEnabled); +} + +void MainWindow::createMenus() +{ + QMenu *fileMenu = menuBar()->addMenu(tr("文件")); + fileMenu->addAction(m_newAction); + fileMenu->addAction(m_openAction); + m_recentMenu = fileMenu->addMenu(tr("最近打开")); + fileMenu->addSeparator(); + fileMenu->addAction(m_saveAction); + fileMenu->addAction(m_saveAsAction); + fileMenu->addSeparator(); + fileMenu->addAction(m_quitAction); + + QMenu *editMenu = menuBar()->addMenu(tr("编辑")); + editMenu->addAction(m_undoAction); + editMenu->addAction(m_redoAction); + editMenu->addSeparator(); + editMenu->addAction(m_cutAction); + editMenu->addAction(m_copyAction); + editMenu->addAction(m_pasteAction); + editMenu->addSeparator(); + editMenu->addAction(m_selectAllAction); + + QMenu *viewMenu = menuBar()->addMenu(tr("视图")); + viewMenu->addAction(m_wrapAction); + viewMenu->addSeparator(); + viewMenu->addAction(m_zoomInAction); + viewMenu->addAction(m_zoomOutAction); + viewMenu->addAction(m_zoomResetAction); + viewMenu->addSeparator(); + + QMenu *themeMenu = viewMenu->addMenu(tr("主题")); + QActionGroup *themeGroup = new QActionGroup(this); + themeGroup->setExclusive(true); + + m_themeSystemAction = new QAction(ThemeManager::modeLabel(ThemeManager::Mode::System), this); + m_themeLightAction = new QAction(ThemeManager::modeLabel(ThemeManager::Mode::Light), this); + m_themeDarkAction = new QAction(ThemeManager::modeLabel(ThemeManager::Mode::Dark), this); + for (QAction *action : {m_themeSystemAction, m_themeLightAction, m_themeDarkAction}) { + action->setCheckable(true); + themeGroup->addAction(action); + themeMenu->addAction(action); + } + m_themeSystemAction->setChecked(true); + + connect(m_themeSystemAction, &QAction::triggered, this, + [this] { applyThemeMode(static_cast(ThemeManager::Mode::System)); }); + connect(m_themeLightAction, &QAction::triggered, this, + [this] { applyThemeMode(static_cast(ThemeManager::Mode::Light)); }); + connect(m_themeDarkAction, &QAction::triggered, this, + [this] { applyThemeMode(static_cast(ThemeManager::Mode::Dark)); }); + + QMenu *helpMenu = menuBar()->addMenu(tr("帮助")); + helpMenu->addAction(tr("关于 VoiletMark"), this, &MainWindow::showAbout); +} + +void MainWindow::createStatusBar() +{ + m_statusLabel = new QLabel(this); + m_statusLabel->setContentsMargins(8, 0, 10, 0); + statusBar()->addPermanentWidget(m_statusLabel); + statusBar()->setSizeGripEnabled(false); +} + +void MainWindow::loadSettings() +{ + QSettings settings; + + const QByteArray geometry = settings.value(QStringLiteral("window/geometry")).toByteArray(); + if (!geometry.isEmpty()) + restoreGeometry(geometry); + + m_lastDirectory = settings.value(QStringLiteral("files/lastDirectory")).toString(); + if (m_lastDirectory.isEmpty()) + m_lastDirectory = QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation); + + const int fontSize = settings.value(QStringLiteral("editor/fontSize"), kDefaultFontSize).toInt(); + m_editor->setEditorFontPointSize(fontSize); + + const bool wrap = settings.value(QStringLiteral("editor/wordWrap"), true).toBool(); + m_wrapAction->setChecked(wrap); + setWordWrapEnabled(wrap); + + loadRecentFiles(); + + const ThemeManager::Mode mode = ThemeManager::instance()->mode(); + m_themeSystemAction->setChecked(mode == ThemeManager::Mode::System); + m_themeLightAction->setChecked(mode == ThemeManager::Mode::Light); + m_themeDarkAction->setChecked(mode == ThemeManager::Mode::Dark); +} + +void MainWindow::saveSettings() +{ + QSettings settings; + settings.setValue(QStringLiteral("window/geometry"), saveGeometry()); + settings.setValue(QStringLiteral("editor/fontSize"), m_editor->editorFontPointSize()); + settings.setValue(QStringLiteral("editor/wordWrap"), m_wrapAction->isChecked()); + settings.setValue(QStringLiteral("files/lastDirectory"), m_lastDirectory); + settings.setValue(QStringLiteral("files/recent"), m_recentFiles); +} + +void MainWindow::closeEvent(QCloseEvent *event) +{ + if (!maybeSave()) { + event->ignore(); + return; + } + saveSettings(); + event->accept(); +} + +QString MainWindow::displayName() const +{ + if (m_currentPath.isEmpty()) + return tr("未命名"); + return QFileInfo(m_currentPath).fileName(); +} + +QString MainWindow::startDirectory() const +{ + if (!m_currentPath.isEmpty()) + return QFileInfo(m_currentPath).absolutePath(); + if (QFileInfo::exists(m_lastDirectory)) + return m_lastDirectory; + return QStandardPaths::writableLocation(QStandardPaths::HomeLocation); +} + +void MainWindow::showWelcomeDocument() +{ + QString text = QString::fromUtf8(kWelcomeText); + if (text.startsWith(QLatin1Char('\n'))) + text.remove(0, 1); + m_editor->setPlainText(text); + m_editor->document()->setModified(false); + m_editor->document()->clearUndoRedoStacks(); + setCurrentFile(QString()); + m_editor->moveCursor(QTextCursor::Start); +} + +void MainWindow::newFile() +{ + if (!maybeSave()) + return; + m_editor->clear(); + m_editor->document()->setModified(false); + m_editor->document()->clearUndoRedoStacks(); + m_hasBom = false; + m_eol = Eol::Lf; + setCurrentFile(QString()); + updateStatusBar(); + m_editor->setFocus(); +} + +void MainWindow::openFile() +{ + if (!maybeSave()) + return; + + const QString path = QFileDialog::getOpenFileName( + this, tr("打开 Markdown 文件"), startDirectory(), + tr("Markdown 文件 (*.md *.markdown *.mdown *.mkd);;文本文件 (*.txt);;所有文件 (*)")); + if (path.isEmpty()) + return; + openPath(path); +} + +bool MainWindow::openPath(const QString &path) +{ + if (path.isEmpty()) + return false; + + const QString absolutePath = QFileInfo(path).absoluteFilePath(); + if (!maybeSave()) + return false; + + QFile file(absolutePath); + if (!file.open(QIODevice::ReadOnly)) { + QMessageBox::warning(this, tr("无法打开文件"), + tr("读取「%1」失败:%2") + .arg(QDir::toNativeSeparators(absolutePath), file.errorString())); + return false; + } + const QByteArray raw = file.readAll(); + file.close(); + + m_hasBom = raw.startsWith("\xEF\xBB\xBF"); + QString text = QString::fromUtf8(m_hasBom ? raw.mid(3) : raw); + m_eol = text.contains(QStringLiteral("\r\n")) ? Eol::Crlf : Eol::Lf; + if (m_eol == Eol::Crlf) + text.replace(QStringLiteral("\r\n"), QStringLiteral("\n")); + + m_editor->setPlainText(text); + m_editor->document()->setModified(false); + m_editor->document()->clearUndoRedoStacks(); + setCurrentFile(absolutePath); + addRecentFile(absolutePath); + updateStatusBar(); + m_editor->setFocus(); + return true; +} + +bool MainWindow::saveFile() +{ + if (m_currentPath.isEmpty()) + return saveFileAs(); + return writeToFile(m_currentPath); +} + +bool MainWindow::saveFileAs() +{ + QString path = QFileDialog::getSaveFileName( + this, tr("另存为"), startDirectory(), + tr("Markdown 文件 (*.md);;文本文件 (*.txt);;所有文件 (*)")); + if (path.isEmpty()) + return false; + + if (QFileInfo(path).suffix().isEmpty()) + path += QStringLiteral(".md"); + + return writeToFile(path); +} + +bool MainWindow::writeToFile(const QString &path) +{ + QString text = m_editor->toPlainText(); + if (m_eol == Eol::Crlf) + text.replace(QLatin1Char('\n'), QStringLiteral("\r\n")); + + QByteArray data = text.toUtf8(); + if (m_hasBom) + data.prepend("\xEF\xBB\xBF"); + + QSaveFile file(path); + if (!file.open(QIODevice::WriteOnly)) { + QMessageBox::warning(this, tr("无法保存文件"), + tr("写入「%1」失败:%2") + .arg(QDir::toNativeSeparators(path), file.errorString())); + return false; + } + if (file.write(data) != data.size()) { + file.cancelWriting(); + QMessageBox::warning(this, tr("无法保存文件"), + tr("写入「%1」时发生错误。").arg(QDir::toNativeSeparators(path))); + return false; + } + if (!file.commit()) { + QMessageBox::warning(this, tr("无法保存文件"), + tr("提交「%1」失败:%2") + .arg(QDir::toNativeSeparators(path), file.errorString())); + return false; + } + + m_editor->document()->setModified(false); + setCurrentFile(path); + addRecentFile(path); + statusBar()->showMessage(tr("已保存 %1").arg(QDir::toNativeSeparators(path)), 2500); + return true; +} + +bool MainWindow::maybeSave() +{ + if (!m_editor->document()->isModified()) + return true; + + const QMessageBox::StandardButton button = QMessageBox::warning( + this, tr("VoiletMark"), + tr("「%1」有未保存的修改,是否保存?").arg(displayName()), + QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel, + QMessageBox::Save); + + if (button == QMessageBox::Save) + return saveFile(); + return button == QMessageBox::Discard; +} + +void MainWindow::setCurrentFile(const QString &path) +{ + m_currentPath = path; + if (!path.isEmpty()) { + m_lastDirectory = QFileInfo(path).absolutePath(); + setWindowFilePath(path); + } else { + setWindowFilePath(QString()); + } + updateWindowTitle(); +} + +void MainWindow::updateWindowTitle() +{ + setWindowTitle(tr("%1[*] — VoiletMark").arg(displayName())); + setWindowModified(m_editor->document()->isModified()); +} + +void MainWindow::updateEditActionStates() +{ + m_undoAction->setEnabled(m_editor->document()->isUndoAvailable()); + m_redoAction->setEnabled(m_editor->document()->isRedoAvailable()); + m_cutAction->setEnabled(m_editor->textCursor().hasSelection()); + m_copyAction->setEnabled(m_editor->textCursor().hasSelection()); +} + +void MainWindow::updateStatusBar() +{ + const QTextCursor cursor = m_editor->textCursor(); + const int line = cursor.blockNumber() + 1; + const int column = cursor.positionInBlock() + 1; + const int characters = m_editor->document()->characterCount() - 1; + + QString text = tr("行 %1,列 %2").arg(line).arg(column); + if (cursor.hasSelection()) + text += tr(" 已选 %1 字").arg(cursor.selectedText().size()); + text += tr(" %1 字").arg(qMax(0, characters)); + text += QStringLiteral(" UTF-8"); + m_statusLabel->setText(text); +} + +void MainWindow::changeZoom(int direction) +{ + const int size = (direction == 0) ? kDefaultFontSize + : m_editor->editorFontPointSize() + direction; + m_editor->setEditorFontPointSize(size); + QSettings().setValue(QStringLiteral("editor/fontSize"), m_editor->editorFontPointSize()); +} + +void MainWindow::resetZoom() +{ + changeZoom(0); +} + +void MainWindow::setWordWrapEnabled(bool enabled) +{ + m_editor->setLineWrapMode(enabled ? QPlainTextEdit::WidgetWidth : QPlainTextEdit::NoWrap); + QSettings().setValue(QStringLiteral("editor/wordWrap"), enabled); +} + +void MainWindow::applyThemeMode(int mode) +{ + ThemeManager::instance()->setMode(static_cast(mode), true); +} + +void MainWindow::showAbout() +{ + QMessageBox::about( + this, tr("关于 VoiletMark"), + tr("

VoiletMark %1

" + "

一个轻量的跨平台 Markdown 编辑器。

" + "

基于 Qt %2 与 C++17 构建,界面会跟随系统自动切换浅色 / 深色主题。

") + .arg(QCoreApplication::applicationVersion(), QString::fromLatin1(qVersion()))); +} + +void MainWindow::addRecentFile(const QString &path) +{ + const QString absolutePath = QFileInfo(path).absoluteFilePath(); + m_recentFiles.removeAll(absolutePath); + m_recentFiles.prepend(absolutePath); + while (m_recentFiles.size() > kMaxRecentFiles) + m_recentFiles.removeLast(); + refreshRecentMenu(); + QSettings().setValue(QStringLiteral("files/recent"), m_recentFiles); +} + +void MainWindow::loadRecentFiles() +{ + m_recentFiles = QSettings().value(QStringLiteral("files/recent")).toStringList(); + m_recentFiles.removeDuplicates(); + while (m_recentFiles.size() > kMaxRecentFiles) + m_recentFiles.removeLast(); +} + +void MainWindow::refreshRecentMenu() +{ + if (!m_recentMenu) + return; + + m_recentMenu->clear(); + if (m_recentFiles.isEmpty()) { + QAction *empty = m_recentMenu->addAction(tr("(暂无记录)")); + empty->setEnabled(false); + return; + } + + for (const QString &path : m_recentFiles) { + QAction *action = m_recentMenu->addAction(QDir::toNativeSeparators(path)); + action->setToolTip(path); + connect(action, &QAction::triggered, this, [this, path] { + openPath(path); + }); + } + m_recentMenu->addSeparator(); + m_recentMenu->addAction(tr("清空列表"), this, [this] { + m_recentFiles.clear(); + QSettings().setValue(QStringLiteral("files/recent"), m_recentFiles); + refreshRecentMenu(); + }); +} diff --git a/src/MainWindow.h b/src/MainWindow.h new file mode 100644 index 0000000..4633ed9 --- /dev/null +++ b/src/MainWindow.h @@ -0,0 +1,92 @@ +#pragma once + +#include +#include + +class QAction; +class QActionGroup; +class QLabel; +class QMenu; +class QTextDocument; +class MarkdownEditor; + +class MainWindow : public QMainWindow +{ + Q_OBJECT + +public: + explicit MainWindow(QWidget *parent = nullptr); + + bool openPath(const QString &path); + +protected: + void closeEvent(QCloseEvent *event) override; + +private: + enum class Eol { Lf, Crlf }; + + void createActions(); + void createMenus(); + void createStatusBar(); + void loadSettings(); + void saveSettings(); + + void newFile(); + void openFile(); + bool saveFile(); + bool saveFileAs(); + bool maybeSave(); + bool writeToFile(const QString &path); + void setCurrentFile(const QString &path); + void showWelcomeDocument(); + + void addRecentFile(const QString &path); + void refreshRecentMenu(); + void loadRecentFiles(); + + void changeZoom(int direction); + void resetZoom(); + void setWordWrapEnabled(bool enabled); + void applyThemeMode(int mode); + void showAbout(); + + void updateStatusBar(); + void updateWindowTitle(); + void updateEditActionStates(); + + QString displayName() const; + QString startDirectory() const; + + MarkdownEditor *m_editor = nullptr; + QLabel *m_statusLabel = nullptr; + + QString m_currentPath; + Eol m_eol = Eol::Lf; + bool m_hasBom = false; + QStringList m_recentFiles; + QString m_lastDirectory; + + QAction *m_newAction = nullptr; + QAction *m_openAction = nullptr; + QAction *m_saveAction = nullptr; + QAction *m_saveAsAction = nullptr; + QAction *m_quitAction = nullptr; + + QAction *m_undoAction = nullptr; + QAction *m_redoAction = nullptr; + QAction *m_cutAction = nullptr; + QAction *m_copyAction = nullptr; + QAction *m_pasteAction = nullptr; + QAction *m_selectAllAction = nullptr; + + QAction *m_wrapAction = nullptr; + QAction *m_zoomInAction = nullptr; + QAction *m_zoomOutAction = nullptr; + QAction *m_zoomResetAction = nullptr; + + QAction *m_themeSystemAction = nullptr; + QAction *m_themeLightAction = nullptr; + QAction *m_themeDarkAction = nullptr; + + QMenu *m_recentMenu = nullptr; +}; diff --git a/src/MarkdownEditor.cpp b/src/MarkdownEditor.cpp new file mode 100644 index 0000000..e396ddb --- /dev/null +++ b/src/MarkdownEditor.cpp @@ -0,0 +1,314 @@ +#include "MarkdownEditor.h" + +#include "MarkdownHighlighter.h" +#include "ThemeManager.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace { + +constexpr int kLineNumberRightPadding = 14; + +class LineNumberArea : public QWidget +{ +public: + explicit LineNumberArea(MarkdownEditor *editor) + : QWidget(editor) + , m_editor(editor) + { + setAttribute(Qt::WA_OpaquePaintEvent, true); + } + + QSize sizeHint() const override + { + return QSize(m_editor->lineNumberAreaWidth(), 0); + } + +protected: + void paintEvent(QPaintEvent *event) override + { + m_editor->lineNumberAreaPaintEvent(event); + } + +private: + MarkdownEditor *m_editor; +}; + +} // namespace + +MarkdownEditor::MarkdownEditor(QWidget *parent) + : QPlainTextEdit(parent) +{ + setObjectName(QStringLiteral("markdownEditor")); + setFrameShape(QFrame::NoFrame); + setWordWrapMode(QTextOption::WrapAtWordBoundaryOrAnywhere); + setLineWrapMode(QPlainTextEdit::WidgetWidth); + setCursorWidth(2); + setAcceptDrops(true); + document()->setDocumentMargin(18); + + m_lineNumberArea = new LineNumberArea(this); + m_highlighter = new MarkdownHighlighter(document()); + + connect(this, &QPlainTextEdit::blockCountChanged, + this, &MarkdownEditor::updateLineNumberAreaWidth); + connect(this, &QPlainTextEdit::updateRequest, + this, &MarkdownEditor::updateLineNumberArea); + connect(this, &QPlainTextEdit::cursorPositionChanged, + this, &MarkdownEditor::updateCurrentLineHighlight); + connect(ThemeManager::instance(), &ThemeManager::schemeChanged, + this, &MarkdownEditor::applyTheme); + + applyEditorFont(); + updateLineNumberAreaWidth(0); + updateCurrentLineHighlight(); +} + +int MarkdownEditor::lineNumberAreaWidth() const +{ + int digits = 1; + int blocks = qMax(1, blockCount()); + while (blocks >= 10) { + blocks /= 10; + ++digits; + } + return 18 + fontMetrics().horizontalAdvance(QLatin1Char('9')) * digits; +} + +void MarkdownEditor::lineNumberAreaPaintEvent(QPaintEvent *event) +{ + QPainter painter(m_lineNumberArea); + const ThemeColors &colors = ThemeManager::instance()->colors(); + painter.fillRect(event->rect(), colors.gutterBackground); + + QTextBlock block = firstVisibleBlock(); + int blockNumber = block.blockNumber(); + int top = qRound(blockBoundingGeometry(block).translated(contentOffset()).top()); + int bottom = top + qRound(blockBoundingRect(block).height()); + const int currentLine = textCursor().blockNumber(); + + QFont numberFont = font(); + if (numberFont.pointSizeF() > 8.5) + numberFont.setPointSizeF(numberFont.pointSizeF() - 1.5); + painter.setFont(numberFont); + const QFontMetrics metrics(numberFont); + + while (block.isValid() && top <= event->rect().bottom()) { + if (block.isVisible() && bottom >= event->rect().top()) { + painter.setPen(blockNumber == currentLine ? colors.gutterActiveText : colors.gutterText); + painter.drawText(0, top, m_lineNumberArea->width() - kLineNumberRightPadding, + metrics.height(), Qt::AlignRight | Qt::AlignVCenter, + QString::number(blockNumber + 1)); + } + block = block.next(); + top = bottom; + bottom = top + qRound(blockBoundingRect(block).height()); + ++blockNumber; + } +} + +void MarkdownEditor::setEditorFontPointSize(int points) +{ + const int clamped = qBound(8, points, 48); + if (clamped == m_fontPointSize) + return; + m_fontPointSize = clamped; + applyEditorFont(); +} + +void MarkdownEditor::applyEditorFont() +{ + QFont font = QFontDatabase::systemFont(QFontDatabase::FixedFont); + font.setFamilies({QStringLiteral("JetBrains Mono"), + QStringLiteral("Cascadia Code"), + QStringLiteral("Source Han Mono SC"), + QStringLiteral("Noto Sans Mono CJK SC"), + QStringLiteral("Sarasa Mono SC"), + QStringLiteral("Consolas"), + QStringLiteral("DejaVu Sans Mono")}); + font.setPointSize(m_fontPointSize); + font.setStyleHint(QFont::Monospace); + font.setFixedPitch(true); + + setFont(font); + document()->setDefaultFont(font); + setTabStopDistance(QFontMetricsF(font).horizontalAdvance(QLatin1Char(' ')) * 4.0); + updateLineNumberAreaWidth(0); +} + +void MarkdownEditor::updateLineNumberAreaWidth(int) +{ + setViewportMargins(lineNumberAreaWidth(), 0, 0, 0); +} + +void MarkdownEditor::updateLineNumberArea(const QRect &rect, int dy) +{ + if (dy != 0) + m_lineNumberArea->scroll(0, dy); + else + m_lineNumberArea->update(0, rect.y(), m_lineNumberArea->width(), rect.height()); + + if (rect.contains(viewport()->rect())) + updateLineNumberAreaWidth(0); +} + +void MarkdownEditor::updateCurrentLineHighlight() +{ + QTextEdit::ExtraSelection selection; + selection.format.setBackground(ThemeManager::instance()->colors().currentLine); + selection.format.setProperty(QTextFormat::FullWidthSelection, true); + selection.cursor = textCursor(); + selection.cursor.clearSelection(); + setExtraSelections({selection}); +} + +void MarkdownEditor::applyTheme() +{ + updateCurrentLineHighlight(); + m_lineNumberArea->update(); + viewport()->update(); +} + +void MarkdownEditor::resizeEvent(QResizeEvent *event) +{ + QPlainTextEdit::resizeEvent(event); + const QRect rect = contentsRect(); + m_lineNumberArea->setGeometry(QRect(rect.left(), rect.top(), + lineNumberAreaWidth(), rect.height())); +} + +void MarkdownEditor::keyPressEvent(QKeyEvent *event) +{ + if (event->key() == Qt::Key_Tab) { + if (textCursor().hasSelection()) + indentSelection(false); + else + insertPlainText(QStringLiteral(" ")); + return; + } + if (event->key() == Qt::Key_Backtab) { + indentSelection(true); + return; + } + QPlainTextEdit::keyPressEvent(event); +} + +void MarkdownEditor::indentSelection(bool outdent) +{ + QTextCursor cursor = textCursor(); + const int anchor = cursor.hasSelection() ? cursor.selectionStart() : cursor.position(); + const int position = cursor.hasSelection() ? cursor.selectionEnd() : cursor.position(); + + QTextCursor startCursor(document()); + startCursor.setPosition(anchor); + QTextCursor endCursor(document()); + endCursor.setPosition(position); + + const int firstBlock = startCursor.blockNumber(); + const int lastBlock = endCursor.blockNumber(); + const bool hadSelection = cursor.hasSelection(); + + cursor.beginEditBlock(); + for (int index = firstBlock; index <= lastBlock; ++index) { + QTextBlock block = document()->findBlockByNumber(index); + QTextCursor blockCursor(block); + if (outdent) { + const QString text = block.text(); + int removable = 0; + while (removable < 4 && removable < text.size() + && text.at(removable) == QLatin1Char(' ')) { + ++removable; + } + if (removable > 0) { + blockCursor.setPosition(block.position()); + blockCursor.setPosition(block.position() + removable, QTextCursor::KeepAnchor); + blockCursor.removeSelectedText(); + } + } else { + blockCursor.setPosition(block.position()); + blockCursor.insertText(QStringLiteral(" ")); + } + } + cursor.endEditBlock(); + + // 还原选区(行宽变化后按块首尾重新计算)。 + if (hadSelection) { + QTextCursor from(document()); + from.setPosition(document()->findBlockByNumber(firstBlock).position()); + QTextCursor to(document()); + const QTextBlock last = document()->findBlockByNumber(lastBlock); + to.setPosition(last.position() + last.length() - 1); + from.setPosition(to.position(), QTextCursor::KeepAnchor); + setTextCursor(from); + } +} + +void MarkdownEditor::wheelEvent(QWheelEvent *event) +{ + if (event->modifiers().testFlag(Qt::ControlModifier)) { + const int delta = event->angleDelta().y(); + if (delta != 0) { + emit zoomStepRequested(delta > 0 ? 1 : -1); + event->accept(); + return; + } + } + QPlainTextEdit::wheelEvent(event); +} + +bool MarkdownEditor::acceptsLocalFiles(const QMimeData *mime) const +{ + if (!mime->hasUrls()) + return false; + const QList urls = mime->urls(); + for (const QUrl &url : urls) { + if (url.isLocalFile() && QFileInfo(url.toLocalFile()).isFile()) + return true; + } + return false; +} + +void MarkdownEditor::dragEnterEvent(QDragEnterEvent *event) +{ + if (acceptsLocalFiles(event->mimeData())) { + event->acceptProposedAction(); + return; + } + QPlainTextEdit::dragEnterEvent(event); +} + +void MarkdownEditor::dragMoveEvent(QDragMoveEvent *event) +{ + if (acceptsLocalFiles(event->mimeData())) { + event->acceptProposedAction(); + return; + } + QPlainTextEdit::dragMoveEvent(event); +} + +void MarkdownEditor::dropEvent(QDropEvent *event) +{ + if (event->mimeData()->hasUrls()) { + const QList urls = event->mimeData()->urls(); + for (const QUrl &url : urls) { + if (url.isLocalFile() && QFileInfo(url.toLocalFile()).isFile()) { + event->acceptProposedAction(); + emit fileDropped(url.toLocalFile()); + return; + } + } + } + QPlainTextEdit::dropEvent(event); +} diff --git a/src/MarkdownEditor.h b/src/MarkdownEditor.h new file mode 100644 index 0000000..964d2a1 --- /dev/null +++ b/src/MarkdownEditor.h @@ -0,0 +1,50 @@ +#pragma once + +#include + +class MarkdownHighlighter; + +/// 编辑器本体:等宽字体、行号栏、当前行高亮、Tab 缩进、 +/// Ctrl+滚轮缩放,以及把拖入的文件转交给主窗口打开。 +class MarkdownEditor : public QPlainTextEdit +{ + Q_OBJECT + +public: + explicit MarkdownEditor(QWidget *parent = nullptr); + + int lineNumberAreaWidth() const; + void lineNumberAreaPaintEvent(QPaintEvent *event); + + void setEditorFontPointSize(int points); + int editorFontPointSize() const { return m_fontPointSize; } + + MarkdownHighlighter *highlighter() const { return m_highlighter; } + +signals: + void zoomStepRequested(int direction); + void fileDropped(const QString &path); + +protected: + void resizeEvent(QResizeEvent *event) override; + void keyPressEvent(QKeyEvent *event) override; + void wheelEvent(QWheelEvent *event) override; + void dragEnterEvent(QDragEnterEvent *event) override; + void dragMoveEvent(QDragMoveEvent *event) override; + void dropEvent(QDropEvent *event) override; + +private slots: + void updateLineNumberAreaWidth(int newBlockCount); + void updateLineNumberArea(const QRect &rect, int dy); + void updateCurrentLineHighlight(); + void applyTheme(); + +private: + void applyEditorFont(); + void indentSelection(bool outdent); + bool acceptsLocalFiles(const QMimeData *mime) const; + + QWidget *m_lineNumberArea = nullptr; + MarkdownHighlighter *m_highlighter = nullptr; + int m_fontPointSize = 12; +}; diff --git a/src/MarkdownHighlighter.cpp b/src/MarkdownHighlighter.cpp new file mode 100644 index 0000000..4ac4206 --- /dev/null +++ b/src/MarkdownHighlighter.cpp @@ -0,0 +1,190 @@ +#include "MarkdownHighlighter.h" + +#include "ThemeManager.h" + +#include + +namespace { +constexpr int StateNormal = 0; +constexpr int StateInFence = 1; +} // namespace + +MarkdownHighlighter::MarkdownHighlighter(QTextDocument *document) + : QSyntaxHighlighter(document) +{ + rebuildFormats(); + connect(ThemeManager::instance(), &ThemeManager::schemeChanged, this, [this] { + rebuildFormats(); + rehighlight(); + }); +} + +void MarkdownHighlighter::rebuildFormats() +{ + const ThemeColors &c = ThemeManager::instance()->colors(); + + m_headingFormat = QTextCharFormat(); + m_headingFormat.setForeground(c.heading); + m_headingFormat.setFontWeight(QFont::DemiBold); + + m_headingMarkerFormat = QTextCharFormat(); + m_headingMarkerFormat.setForeground(c.headingMarker); + + m_strongFormat = QTextCharFormat(); + m_strongFormat.setForeground(c.strong); + m_strongFormat.setFontWeight(QFont::Bold); + + m_emphasisFormat = QTextCharFormat(); + m_emphasisFormat.setForeground(c.emphasis); + m_emphasisFormat.setFontItalic(true); + + m_codeFormat = QTextCharFormat(); + m_codeFormat.setForeground(c.code); + m_codeFormat.setBackground(c.codeBackground); + m_codeFormat.setFontWeight(QFont::Normal); + m_codeFormat.setFontItalic(false); + + m_linkFormat = QTextCharFormat(); + m_linkFormat.setForeground(c.link); + + m_urlFormat = QTextCharFormat(); + m_urlFormat.setForeground(c.linkUrl); + + m_quoteFormat = QTextCharFormat(); + m_quoteFormat.setForeground(c.quote); + m_quoteFormat.setFontItalic(true); + + m_quoteMarkerFormat = QTextCharFormat(); + m_quoteMarkerFormat.setForeground(c.quoteMarker); + m_quoteMarkerFormat.setFontItalic(false); + + m_listMarkerFormat = QTextCharFormat(); + m_listMarkerFormat.setForeground(c.listMarker); + m_listMarkerFormat.setFontWeight(QFont::DemiBold); + + m_ruleFormat = QTextCharFormat(); + m_ruleFormat.setForeground(c.rule); + + m_taskDoneFormat = QTextCharFormat(); + m_taskDoneFormat.setForeground(c.taskDone); + m_taskDoneFormat.setFontWeight(QFont::DemiBold); + + m_strikeFormat = QTextCharFormat(); + m_strikeFormat.setFontStrikeOut(true); + m_strikeFormat.setForeground(c.quote); +} + +void MarkdownHighlighter::apply(int start, int length, const QTextCharFormat &format) +{ + if (length > 0) + setFormat(start, length, format); +} + +void MarkdownHighlighter::applyPattern(const QRegularExpression &pattern, const QString &text, + const QTextCharFormat &format) +{ + auto it = pattern.globalMatch(text); + while (it.hasNext()) { + const QRegularExpressionMatch match = it.next(); + apply(match.capturedStart(), match.capturedLength(), format); + } +} + +void MarkdownHighlighter::highlightBlock(const QString &text) +{ + setCurrentBlockState(StateNormal); + if (text.isEmpty()) + return; + + static const QRegularExpression fencePattern(QStringLiteral("^\\s{0,3}(?:```|~~~)")); + + // ---- 围栏代码块:跨行状态机 ---------------------------------------- + if (previousBlockState() == StateInFence) { + apply(0, text.length(), m_codeFormat); + if (!fencePattern.match(text).hasMatch()) + setCurrentBlockState(StateInFence); + return; + } + if (fencePattern.match(text).hasMatch()) { + apply(0, text.length(), m_codeFormat); + setCurrentBlockState(StateInFence); + return; + } + + // ---- 块级语法 ------------------------------------------------------ + static const QRegularExpression headingPattern( + QStringLiteral("^\\s{0,3}(#{1,6})(?:\\s+|$)")); + const QRegularExpressionMatch heading = headingPattern.match(text); + if (heading.hasMatch()) { + apply(0, text.length(), m_headingFormat); + apply(heading.capturedStart(1), heading.capturedLength(1), m_headingMarkerFormat); + } + + static const QRegularExpression quotePattern(QStringLiteral("^\\s{0,3}(>+)")); + const QRegularExpressionMatch quote = quotePattern.match(text); + if (quote.hasMatch()) { + apply(0, text.length(), m_quoteFormat); + apply(quote.capturedStart(1), quote.capturedLength(1), m_quoteMarkerFormat); + } + + static const QRegularExpression rulePattern( + QStringLiteral("^\\s{0,3}(?:(?:\\*\\s*){3,}|(?:-\\s*){3,}|(?:_\\s*){3,})$")); + const QRegularExpressionMatch rule = rulePattern.match(text); + if (rule.hasMatch()) { + apply(0, text.length(), m_ruleFormat); + } else { + static const QRegularExpression taskPattern( + QStringLiteral("^\\s*[-+*]\\s+\\[([ xX])\\]")); + const QRegularExpressionMatch task = taskPattern.match(text); + if (task.hasMatch()) { + apply(task.capturedStart(), task.capturedLength(), m_listMarkerFormat); + if (task.capturedLength(1) > 0) { + const bool done = task.captured(1).compare(QLatin1String("x"), Qt::CaseInsensitive) == 0; + apply(task.capturedStart(1), task.capturedLength(1), + done ? m_taskDoneFormat : m_listMarkerFormat); + } + } else { + static const QRegularExpression listPattern( + QStringLiteral("^(\\s*)([-+*]|\\d{1,9}[.)])(\\s+)")); + const QRegularExpressionMatch list = listPattern.match(text); + if (list.hasMatch()) + apply(list.capturedStart(2), list.capturedLength(2), m_listMarkerFormat); + } + } + + // ---- 行内语法 ------------------------------------------------------ + static const QRegularExpression linkPattern( + QStringLiteral("!?\\[([^\\]]*)\\]\\(([^)\\s]*)(?:\\s+\"([^\"]*)\")?\\)")); + auto links = linkPattern.globalMatch(text); + while (links.hasNext()) { + const QRegularExpressionMatch match = links.next(); + apply(match.capturedStart(1), match.capturedLength(1), m_linkFormat); + apply(match.capturedStart(2), match.capturedLength(2), m_urlFormat); + } + + static const QRegularExpression autoLinkPattern(QStringLiteral("<(https?://[^>]+)>")); + auto autolinks = autoLinkPattern.globalMatch(text); + while (autolinks.hasNext()) { + const QRegularExpressionMatch match = autolinks.next(); + apply(match.capturedStart(1), match.capturedLength(1), m_urlFormat); + } + + static const QRegularExpression boldItalicPattern( + QStringLiteral("(\\*{3}|_{3})(?=\\S)(.+?)(?<=\\S)\\1")); + applyPattern(boldItalicPattern, text, m_strongFormat); + applyPattern(boldItalicPattern, text, m_emphasisFormat); + + static const QRegularExpression boldPattern(QStringLiteral("(\\*\\*|__)(?=\\S)(.+?)(?<=\\S)\\1")); + applyPattern(boldPattern, text, m_strongFormat); + + static const QRegularExpression italicPattern( + QStringLiteral("(? +#include +#include + +/// Markdown 语法着色。 +/// +/// 只做“逐行着色”,不改动文档内容:标题、引用、列表、行内样式、 +/// 链接以及跨行的围栏代码块。颜色全部取自 ThemeManager, +/// 主题切换后自动重建格式并重新着色。 +class MarkdownHighlighter : public QSyntaxHighlighter +{ + Q_OBJECT + +public: + explicit MarkdownHighlighter(QTextDocument *document = nullptr); + +protected: + void highlightBlock(const QString &text) override; + +private: + void rebuildFormats(); + void apply(int start, int length, const QTextCharFormat &format); + void applyPattern(const QRegularExpression &pattern, const QString &text, + const QTextCharFormat &format); + + QTextCharFormat m_headingFormat; + QTextCharFormat m_headingMarkerFormat; + QTextCharFormat m_strongFormat; + QTextCharFormat m_emphasisFormat; + QTextCharFormat m_codeFormat; + QTextCharFormat m_linkFormat; + QTextCharFormat m_urlFormat; + QTextCharFormat m_quoteFormat; + QTextCharFormat m_quoteMarkerFormat; + QTextCharFormat m_listMarkerFormat; + QTextCharFormat m_ruleFormat; + QTextCharFormat m_taskDoneFormat; + QTextCharFormat m_strikeFormat; +}; diff --git a/src/ThemeManager.cpp b/src/ThemeManager.cpp new file mode 100644 index 0000000..1680ca5 --- /dev/null +++ b/src/ThemeManager.cpp @@ -0,0 +1,397 @@ +#include "ThemeManager.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace { + +QString runCommand(const QString &program, const QStringList &arguments, int timeoutMs) +{ + QProcess process; + process.start(program, arguments); + if (!process.waitForFinished(timeoutMs)) { + process.kill(); + process.waitForFinished(200); + return QString(); + } + if (process.exitStatus() != QProcess::NormalExit || process.exitCode() != 0) + return QString(); + return QString::fromUtf8(process.readAllStandardOutput()).trimmed(); +} + +bool looksDark(const QString &themeName) +{ + return themeName.contains(QLatin1String("dark"), Qt::CaseInsensitive); +} + +/// XFCE 把界面主题记录在 xfconf 的 xsettings.xml 里。 +QString xfceThemeName() +{ + QFile file(QDir::homePath() + QStringLiteral("/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml")); + if (!file.open(QIODevice::ReadOnly)) + return QString(); + + QXmlStreamReader xml(&file); + while (!xml.atEnd()) { + xml.readNext(); + if (!xml.isStartElement() || xml.name().toString() != QLatin1String("property")) + continue; + const QXmlStreamAttributes attributes = xml.attributes(); + if (attributes.value(QLatin1String("name")).toString() == QLatin1String("ThemeName")) + return attributes.value(QLatin1String("value")).toString(); + } + return QString(); +} + +QColor hex(const char *value) +{ + return QColor(QString::fromLatin1(value)); +} + +ThemeColors lightColors() +{ + ThemeColors c; + c.window = hex("#f2f3f5"); + c.windowText = hex("#1f2328"); + c.base = hex("#ffffff"); + c.alternateBase = hex("#f6f7f9"); + c.text = hex("#1f2328"); + c.button = hex("#ffffff"); + c.buttonText = hex("#1f2328"); + c.border = hex("#dcdfe4"); + c.accent = hex("#0969da"); + c.highlight = hex("#cfe3ff"); + c.highlightedText = hex("#0b1f38"); + c.disabled = hex("#9aa2ab"); + c.placeholder = hex("#6b7480"); + c.menuBackground = hex("#ffffff"); + c.scrollHandle = hex("#c9ced6"); + c.scrollHandleHover = hex("#aeb5bf"); + + c.editorBase = hex("#ffffff"); + c.editorText = hex("#24292f"); + c.gutterBackground = hex("#fafbfc"); + c.gutterText = hex("#b0b7c0"); + c.gutterActiveText = hex("#5c6670"); + c.currentLine = hex("#f4f6f9"); + + c.heading = hex("#0a52a3"); + c.headingMarker = hex("#b3b9c2"); + c.strong = hex("#11151a"); + c.emphasis = hex("#4b535c"); + c.code = hex("#b4295a"); + c.codeBackground = hex("#f2f4f7"); + c.link = hex("#0969da"); + c.linkUrl = hex("#6b7480"); + c.quote = hex("#6b7480"); + c.quoteMarker = hex("#c3c9d2"); + c.listMarker = hex("#0969da"); + c.rule = hex("#d6dae0"); + c.taskDone = hex("#1a7f37"); + return c; +} + +ThemeColors darkColors() +{ + ThemeColors c; + c.window = hex("#1b1d21"); + c.windowText = hex("#d6d9dd"); + c.base = hex("#1e2024"); + c.alternateBase = hex("#23262b"); + c.text = hex("#d6d9dd"); + c.button = hex("#26292f"); + c.buttonText = hex("#d6d9dd"); + c.border = hex("#2d3137"); + c.accent = hex("#3b8eea"); + c.highlight = hex("#26466b"); + c.highlightedText = hex("#eef3f8"); + c.disabled = hex("#5d646d"); + c.placeholder = hex("#8b939d"); + c.menuBackground = hex("#242730"); + c.scrollHandle = hex("#3a3f47"); + c.scrollHandleHover = hex("#4d535d"); + + c.editorBase = hex("#1e2024"); + c.editorText = hex("#d7dade"); + c.gutterBackground = hex("#1a1c20"); + c.gutterText = hex("#4f565f"); + c.gutterActiveText = hex("#aeb5bf"); + c.currentLine = hex("#23262c"); + + c.heading = hex("#79b8ff"); + c.headingMarker = hex("#5d6570"); + c.strong = hex("#f2f4f7"); + c.emphasis = hex("#c3c9d1"); + c.code = hex("#ff8fbf"); + c.codeBackground = hex("#292c33"); + c.link = hex("#62a8ff"); + c.linkUrl = hex("#7f8791"); + c.quote = hex("#8b939d"); + c.quoteMarker = hex("#4f565f"); + c.listMarker = hex("#62a8ff"); + c.rule = hex("#33373e"); + c.taskDone = hex("#5fbf7f"); + return c; +} + +} // namespace + +ThemeManager *ThemeManager::instance() +{ + static ThemeManager *manager = new ThemeManager(); + return manager; +} + +ThemeManager::ThemeManager(QObject *parent) + : QObject(parent) +{ + if (qApp) { + const QColor window = qApp->palette().color(QPalette::Window); + m_paletteGuess = window.lightness() < 128 ? Scheme::Dark : Scheme::Light; + } + + m_pollTimer = new QTimer(this); + m_pollTimer->setInterval(2000); + connect(m_pollTimer, &QTimer::timeout, this, &ThemeManager::pollSystemTheme); +} + +void ThemeManager::initialize(Mode forcedMode, bool persist) +{ + if (forcedMode != Mode::System) { + setMode(forcedMode, persist); + } else { + const QString saved = QSettings().value(QStringLiteral("theme/mode")).toString(); + m_mode = modeFromString(saved, nullptr); + const Scheme scheme = (m_mode == Mode::Dark) ? Scheme::Dark + : (m_mode == Mode::Light) ? Scheme::Light + : detectSystemScheme(); + applyScheme(scheme, true); + } + m_pollTimer->start(); +} + +void ThemeManager::setMode(Mode mode, bool persist) +{ + m_mode = mode; + if (persist) + QSettings().setValue(QStringLiteral("theme/mode"), modeToString(mode)); + + if (m_mode == Mode::System) + applyScheme(detectSystemScheme(), true); + else + applyScheme(m_mode == Mode::Dark ? Scheme::Dark : Scheme::Light, true); +} + +void ThemeManager::pollSystemTheme() +{ + if (m_mode != Mode::System) + return; + + const Scheme detected = detectSystemScheme(); + if (detected != m_scheme) + applyScheme(detected, false); +} + +void ThemeManager::applyScheme(Scheme scheme, bool force) +{ + const bool changed = (scheme != m_scheme) || force; + m_scheme = scheme; + buildColors(m_scheme); + applyToApplication(); + if (changed) + emit schemeChanged(m_scheme); +} + +void ThemeManager::buildColors(Scheme scheme) +{ + m_colors = (scheme == Scheme::Dark) ? darkColors() : lightColors(); +} + +void ThemeManager::applyToApplication() +{ + QPalette palette; + palette.setColor(QPalette::Window, m_colors.window); + palette.setColor(QPalette::WindowText, m_colors.windowText); + palette.setColor(QPalette::Base, m_colors.base); + palette.setColor(QPalette::AlternateBase, m_colors.alternateBase); + palette.setColor(QPalette::Text, m_colors.text); + palette.setColor(QPalette::Button, m_colors.button); + palette.setColor(QPalette::ButtonText, m_colors.buttonText); + palette.setColor(QPalette::BrightText, Qt::white); + palette.setColor(QPalette::Highlight, m_colors.highlight); + palette.setColor(QPalette::HighlightedText, m_colors.highlightedText); + palette.setColor(QPalette::ToolTipBase, m_colors.menuBackground); + palette.setColor(QPalette::ToolTipText, m_colors.text); + palette.setColor(QPalette::PlaceholderText, m_colors.placeholder); + palette.setColor(QPalette::Link, m_colors.link); + palette.setColor(QPalette::LinkVisited, m_colors.link); + palette.setColor(QPalette::Disabled, QPalette::WindowText, m_colors.disabled); + palette.setColor(QPalette::Disabled, QPalette::Text, m_colors.disabled); + palette.setColor(QPalette::Disabled, QPalette::ButtonText, m_colors.disabled); + palette.setColor(QPalette::Disabled, QPalette::HighlightedText, m_colors.disabled); + + qApp->setPalette(palette); + qApp->setStyleSheet(styleSheet()); +} + +QString ThemeManager::styleSheet() const +{ + QString qss = QString::fromLatin1(R"( +QMainWindow, QDialog { background-color: @window; } +QMenuBar { background-color: @window; color: @windowText; border-bottom: 1px solid @border; } +QMenuBar::item { background: transparent; padding: 5px 10px; border-radius: 5px; } +QMenuBar::item:selected { background-color: @highlight; color: @highlightedText; } +QMenu { background-color: @menuBackground; color: @text; border: 1px solid @border; padding: 5px; } +QMenu::item { padding: 6px 28px 6px 22px; border-radius: 5px; } +QMenu::item:selected { background-color: @highlight; color: @highlightedText; } +QMenu::item:disabled { color: @disabled; } +QMenu::separator { height: 1px; background-color: @border; margin: 5px 8px; } +QStatusBar { background-color: @window; color: @placeholder; border-top: 1px solid @border; } +QStatusBar::item { border: none; } +QPlainTextEdit { background-color: @editorBase; color: @editorText; border: none; + selection-background-color: @highlight; selection-color: @highlightedText; } +QScrollBar:vertical { background: transparent; width: 11px; margin: 0; } +QScrollBar::handle:vertical { background-color: @scrollHandle; border-radius: 4px; + min-height: 28px; margin: 2px 2px; } +QScrollBar::handle:vertical:hover { background-color: @scrollHandleHover; } +QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical { height: 0; } +QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical { background: transparent; } +QScrollBar:horizontal { background: transparent; height: 11px; margin: 0; } +QScrollBar::handle:horizontal { background-color: @scrollHandle; border-radius: 4px; + min-width: 28px; margin: 2px 2px; } +QScrollBar::handle:horizontal:hover { background-color: @scrollHandleHover; } +QScrollBar::add-line:horizontal, QScrollBar::sub-line:horizontal { width: 0; } +QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal { background: transparent; } +QPushButton { background-color: @button; color: @buttonText; border: 1px solid @border; + border-radius: 6px; padding: 5px 16px; min-width: 68px; } +QPushButton:hover { background-color: @highlight; color: @highlightedText; } +QPushButton:default { background-color: @accent; color: #ffffff; border-color: @accent; } +QToolTip { background-color: @menuBackground; color: @text; border: 1px solid @border; padding: 4px; } +)"); + + // 先替换长 token,避免 @window 吃掉 @windowText 这类前缀冲突。 + qss.replace(QLatin1String("@scrollHandleHover"), m_colors.scrollHandleHover.name()); + qss.replace(QLatin1String("@highlightedText"), m_colors.highlightedText.name()); + qss.replace(QLatin1String("@buttonText"), m_colors.buttonText.name()); + qss.replace(QLatin1String("@windowText"), m_colors.windowText.name()); + qss.replace(QLatin1String("@editorText"), m_colors.editorText.name()); + qss.replace(QLatin1String("@menuBackground"), m_colors.menuBackground.name()); + qss.replace(QLatin1String("@scrollHandle"), m_colors.scrollHandle.name()); + qss.replace(QLatin1String("@editorBase"), m_colors.editorBase.name()); + qss.replace(QLatin1String("@placeholder"), m_colors.placeholder.name()); + qss.replace(QLatin1String("@disabled"), m_colors.disabled.name()); + qss.replace(QLatin1String("@border"), m_colors.border.name()); + qss.replace(QLatin1String("@accent"), m_colors.accent.name()); + qss.replace(QLatin1String("@highlight"), m_colors.highlight.name()); + qss.replace(QLatin1String("@button"), m_colors.button.name()); + qss.replace(QLatin1String("@window"), m_colors.window.name()); + qss.replace(QLatin1String("@text"), m_colors.text.name()); + return qss; +} + +QString ThemeManager::modeToString(Mode mode) +{ + switch (mode) { + case Mode::Light: return QStringLiteral("light"); + case Mode::Dark: return QStringLiteral("dark"); + case Mode::System: break; + } + return QStringLiteral("system"); +} + +ThemeManager::Mode ThemeManager::modeFromString(const QString &value, bool *ok) +{ + const QString normalized = value.trimmed().toLower(); + if (normalized == QLatin1String("light")) { if (ok) *ok = true; return Mode::Light; } + if (normalized == QLatin1String("dark")) { if (ok) *ok = true; return Mode::Dark; } + if (ok) *ok = (normalized == QLatin1String("system") || normalized.isEmpty()); + return Mode::System; +} + +QString ThemeManager::modeLabel(Mode mode) +{ + switch (mode) { + case Mode::Light: return QObject::tr("浅色"); + case Mode::Dark: return QObject::tr("深色"); + case Mode::System: break; + } + return QObject::tr("跟随系统"); +} + +ThemeManager::Scheme ThemeManager::detectSystemScheme() const +{ + // 1) 显式覆盖:打包、测试或用户强制指定时使用。 + const QString override = qEnvironmentVariable("VOILETMARK_THEME").trimmed().toLower(); + if (override == QLatin1String("dark")) + return Scheme::Dark; + if (override == QLatin1String("light")) + return Scheme::Light; + +#if defined(Q_OS_WIN) + QSettings registry( + QStringLiteral("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize"), + QSettings::NativeFormat); + const QVariant appsUseLight = registry.value(QStringLiteral("AppsUseLightTheme")); + if (appsUseLight.isValid()) + return appsUseLight.toInt() == 0 ? Scheme::Dark : Scheme::Light; + return m_paletteGuess; +#elif defined(Q_OS_MACOS) + const QString style = runCommand(QStringLiteral("defaults"), + {QStringLiteral("read"), QStringLiteral("-g"), + QStringLiteral("AppleInterfaceStyle")}, + 500); + return style.compare(QLatin1String("Dark"), Qt::CaseInsensitive) == 0 ? Scheme::Dark : Scheme::Light; +#else + // 2) gsettings 需要启动子进程,做 3 秒缓存;找不到命令就整段跳过。 + static const QString gsettings = QStandardPaths::findExecutable(QStringLiteral("gsettings")); + const qint64 now = QDateTime::currentMSecsSinceEpoch(); + if (!gsettings.isEmpty() + && (now - m_lastGsettingsCheck > 3000 || m_cachedColorScheme.isEmpty())) { + m_cachedColorScheme = runCommand(gsettings, + {QStringLiteral("get"), + QStringLiteral("org.gnome.desktop.interface"), + QStringLiteral("color-scheme")}, + 500); + m_cachedGtkTheme = runCommand(gsettings, + {QStringLiteral("get"), + QStringLiteral("org.gnome.desktop.interface"), + QStringLiteral("gtk-theme")}, + 500); + m_lastGsettingsCheck = now; + } + + const QString colorScheme = m_cachedColorScheme.toLower(); + if (colorScheme.contains(QLatin1String("prefer-dark"))) + return Scheme::Dark; + if (colorScheme.contains(QLatin1String("prefer-light"))) + return Scheme::Light; + + // 3) KDE 全局配色。 + QSettings kdeGlobals(QDir::homePath() + QStringLiteral("/.config/kdeglobals"), + QSettings::IniFormat); + const QString kdeScheme = kdeGlobals.value(QStringLiteral("General/ColorScheme")).toString(); + if (!kdeScheme.isEmpty()) + return looksDark(kdeScheme) ? Scheme::Dark : Scheme::Light; + + // 4) GTK 主题名。 + if (!m_cachedGtkTheme.isEmpty()) + return looksDark(m_cachedGtkTheme) ? Scheme::Dark : Scheme::Light; + + // 5) XFCE 主题名。 + const QString xfceName = xfceThemeName(); + if (!xfceName.isEmpty()) + return looksDark(xfceName) ? Scheme::Dark : Scheme::Light; + + // 6) 兜底。 + return m_paletteGuess; +#endif +} diff --git a/src/ThemeManager.h b/src/ThemeManager.h new file mode 100644 index 0000000..5463043 --- /dev/null +++ b/src/ThemeManager.h @@ -0,0 +1,112 @@ +#pragma once + +#include +#include + +class QTimer; + +/// 一份完整的主题配色。界面控件与语法高亮共用同一套颜色, +/// 切换方案时只需要重建这一个结构体。 +struct ThemeColors +{ + // 窗口与控件 + QColor window; + QColor windowText; + QColor base; + QColor alternateBase; + QColor text; + QColor button; + QColor buttonText; + QColor border; + QColor accent; + QColor highlight; + QColor highlightedText; + QColor disabled; + QColor placeholder; + QColor menuBackground; + QColor scrollHandle; + QColor scrollHandleHover; + + // 编辑器 + QColor editorBase; + QColor editorText; + QColor gutterBackground; + QColor gutterText; + QColor gutterActiveText; + QColor currentLine; + + // Markdown 语法 + QColor heading; + QColor headingMarker; + QColor strong; + QColor emphasis; + QColor code; + QColor codeBackground; + QColor link; + QColor linkUrl; + QColor quote; + QColor quoteMarker; + QColor listMarker; + QColor rule; + QColor taskDone; +}; + +/// 负责“跟随系统自动切换浅色 / 深色主题”。 +/// +/// 检测顺序:显式覆盖(环境变量 / 命令行)→ 平台自身设置 +/// (Windows 注册表、macOS defaults、Linux 的 KDE / GTK / XFCE / gsettings) +/// → 启动时的调色板亮度兜底。 +/// 每 2 秒轮询一次系统设置,变化后立即重绘整个界面。 +class ThemeManager : public QObject +{ + Q_OBJECT + +public: + enum class Mode { System, Light, Dark }; + enum class Scheme { Light, Dark }; + + static ThemeManager *instance(); + + /// 由 main() 在 QApplication 之后调用一次。 + void initialize(Mode forcedMode, bool persist); + + Mode mode() const { return m_mode; } + void setMode(Mode mode, bool persist = true); + + Scheme scheme() const { return m_scheme; } + const ThemeColors &colors() const { return m_colors; } + + static QString modeToString(Mode mode); + static Mode modeFromString(const QString &value, bool *ok = nullptr); + static QString modeLabel(Mode mode); + +signals: + void schemeChanged(ThemeManager::Scheme scheme); + +private slots: + void pollSystemTheme(); + +private: + explicit ThemeManager(QObject *parent = nullptr); + + void applyScheme(Scheme scheme, bool force); + void buildColors(Scheme scheme); + void applyToApplication(); + QString styleSheet() const; + + Scheme detectSystemScheme() const; + + Mode m_mode = Mode::System; + Scheme m_scheme = Scheme::Light; + ThemeColors m_colors; + + QTimer *m_pollTimer = nullptr; + + /// 启动时读取的 QPalette 亮度,作为所有检测手段失败后的兜底。 + Scheme m_paletteGuess = Scheme::Light; + + /// gsettings 调用比较昂贵,做一次短时缓存。 + mutable qint64 m_lastGsettingsCheck = 0; + mutable QString m_cachedColorScheme; + mutable QString m_cachedGtkTheme; +}; diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..a7dd5ea --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,68 @@ +#include "MainWindow.h" +#include "ThemeManager.h" + +#include +#include +#include +#include +#include +#include + +int main(int argc, char *argv[]) +{ + QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); + QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); + + QApplication app(argc, argv); + QApplication::setStyle(QStyleFactory::create(QStringLiteral("Fusion"))); + + QCoreApplication::setOrganizationName(QStringLiteral("VoiletMark")); + QCoreApplication::setApplicationName(QStringLiteral("VoiletMark")); + QCoreApplication::setApplicationVersion(QStringLiteral(VM_VERSION)); + + QCommandLineParser parser; + parser.setApplicationDescription(QStringLiteral("VoiletMark — 轻量的跨平台 Markdown 编辑器")); + parser.addHelpOption(); + parser.addVersionOption(); + + QCommandLineOption themeOption( + QStringList{QStringLiteral("t"), QStringLiteral("theme")}, + QStringLiteral("启动主题:system / light / dark(仅在本次运行生效)"), + QStringLiteral("mode")); + parser.addOption(themeOption); + + QCommandLineOption screenshotOption( + QStringLiteral("screenshot"), + QStringLiteral("渲染一张当前窗口截图后退出(用于调试与视觉回归)"), + QStringLiteral("path")); + parser.addOption(screenshotOption); + + parser.addPositionalArgument(QStringLiteral("file"), QStringLiteral("要打开的 Markdown 文件")); + parser.process(app); + + ThemeManager::Mode mode = ThemeManager::Mode::System; + if (parser.isSet(themeOption)) { + bool ok = false; + mode = ThemeManager::modeFromString(parser.value(themeOption), &ok); + if (!ok) + mode = ThemeManager::Mode::System; + } + ThemeManager::instance()->initialize(mode, false); + + MainWindow window; + window.show(); + + const QStringList files = parser.positionalArguments(); + if (!files.isEmpty()) + window.openPath(files.first()); + + if (parser.isSet(screenshotOption)) { + const QString path = parser.value(screenshotOption); + QTimer::singleShot(700, &window, [&window, path] { + window.grab().save(path); + QCoreApplication::quit(); + }); + } + + return app.exec(); +}