diff --git a/TestManager/testmanager.h b/TestManager/testmanager.h index 8459d5a..821ec7f 100644 --- a/TestManager/testmanager.h +++ b/TestManager/testmanager.h @@ -72,19 +72,13 @@ private: // SettingInterface interface public: - virtual void apply() override { _isDisabled = _cbblk->isChecked(); } - virtual void reset() override { - _isDisabled = false; - _cbblk->setChecked(false); - } - virtual void cancel() override { _cbblk->setChecked(_isDisabled); } + virtual void restore() override { _cbblk->setChecked(false); } public: - bool isDisableMsg() const { return _isDisabled; } + bool isDisableMsg() const { return _cbblk->isChecked(); } private: QCheckBox *_cbblk; - bool _isDisabled = false; }; public slots: diff --git a/TestPlugin/testsettingpage.cpp b/TestPlugin/testsettingpage.cpp index 0b4b2ea..6921441 100644 --- a/TestPlugin/testsettingpage.cpp +++ b/TestPlugin/testsettingpage.cpp @@ -41,8 +41,4 @@ QString TestSettingPage::id() const { return _id; } bool TestSettingPage::showInRibbon() const { return _isShownInRibbton; } -void TestSettingPage::apply() {} - -void TestSettingPage::reset() {} - -void TestSettingPage::cancel() {} +void TestSettingPage::restore() {} diff --git a/TestPlugin/testsettingpage.h b/TestPlugin/testsettingpage.h index a5892c9..7e0e4db 100644 --- a/TestPlugin/testsettingpage.h +++ b/TestPlugin/testsettingpage.h @@ -41,9 +41,7 @@ public: // SettingPage interface public: - virtual void apply() override; - virtual void reset() override; - virtual void cancel() override; + virtual void restore() override; private: QLabel *_lbl = nullptr; diff --git a/WingPlugin b/WingPlugin index 3fa9d2b..ab94fca 160000 --- a/WingPlugin +++ b/WingPlugin @@ -1 +1 @@ -Subproject commit 3fa9d2ba9d7dd78f719c43b482a5e7f49f135f1c +Subproject commit ab94fca27d23da495fa743dd15ccb01ca6a431fc diff --git a/lang/zh_CN/winghex_zh_CN.ts b/lang/zh_CN/winghex_zh_CN.ts index bc37fa7..558e3c7 100644 --- a/lang/zh_CN/winghex_zh_CN.ts +++ b/lang/zh_CN/winghex_zh_CN.ts @@ -226,19 +226,19 @@ 保存时自动格式化 - - - + + + ClangFormat Clang Format - + PleaseInputFmt 请输入样式 - + ErrInCustomClangFormat 代码格式化样式出现错误,你确认继续修改吗? @@ -442,7 +442,7 @@ 显示/隐藏解码文本 - + Editor 编辑器 @@ -676,7 +676,7 @@ GeneralSettingDialog - + General 基本 @@ -895,24 +895,24 @@ MainWindow - + File 文件 - - + + View 视图 - + About 关于 - + WingHexExplorer 羽云十六进制编辑器 @@ -927,322 +927,322 @@ 选长: - + Edit 编辑 - + Script 脚本 - - - + + + Plugin 插件 - + Setting 设置 - - + + Log 日志 - + ExportFindResult 导出搜索结果 - + ClearFindResult 清空记录 - - + + FindResult 搜索结果 - - - - - - - + + + + + + + Copy 复制 - - - - - + + + + + CopyToClipBoard 数据已拷贝到粘贴板 - + LittleEndian 小端 - + BigEndian 大端 - + Number 数值 - - + + CheckSum 校验和 - - + + DeleteBookMark 删除书签 - - + + ClearBookMark 清空书签 - - - - + + + + BookMark 书签 - - + + DecodeText 解码字符串 - + ScriptConsole 脚本控制台 - - + + Basic 基础 - + New 新建 - + OpenF 打开文件 - + OpenWorkSpace 打开工作区 - + RecentFiles 最近打开 - - - + + + Reload 重新加载 - - + + Save 保存 - + SaveAs 另存为 - + ConvertWS 转为工作区 - + Export 导出 - + SaveSel 保存选区字节 - - - - + + + + General 基本 - + Undo 撤销 - + Redo 恢复 - + Cut 剪切 - + Paste 粘贴 - + Delete 删除 - + Clone 克隆 - + Lookup 查询 - + Find 查找 - + Goto 跳转 - - + + Encoding 编码 - + FileInfo 文件信息 - - + + Hex 十六进制 - + CutHex 剪切(十六进制) - + CopyHex 复制(十六进制) - + PasteHex 粘贴(十六进制) - - + + Fill 填充 - + FillZero 填充零 - - - - - + + + + + MetaData 标注 - + DeleteMetadata 删除标注 - + ClearMetadata 清空标注 - + MetaDataEdit 编辑标注 - + DeleteMetaData 删除标注 - + ClearMetaData 清空标注 - + Display 显示 - + ViewText 文本预览 - + Scale 缩放 @@ -1297,112 +1297,112 @@ 构建脚本编辑器 - + SetupSetDialog 构建设置窗体 - + SetupPlgWidgets 启动插件组件 - + SetupDockingLayout 恢复 Dock 布局 - + SetupWaiting 启动即将完成 - + SetupFinished 启动完毕 - + NoExtension 无扩展 - - + + ExportResult 导出结果 - + NothingToSave 没有保存的数据 - + OpenExt 打开 - 拓展 - + ResetScale 重置缩放 - + ShowMetafg 标注前景色 - + ShowMetabg 标注背景色 - + ShowMetaComment 批注 - + MetaShowAll 显示所有标注 - + MetaHideAll 隐藏所有标注 - + FileStatus 文件状态 - + InfoSave 是否保存 - + ReadOnly 可读写 - + SetLocked 启用/禁用锁定编辑 - + ErrUnLock 锁定编辑失败 - + SetOver 启用/禁用改变大小 @@ -1417,198 +1417,198 @@ 脚本引擎启动失败,将自动禁用该功能。 - + UnsignedHex 无符号 Hex - + BgScriptOutputHere 后台脚本执行将会在这里输出 - + SelectAll 全选 - - + + Clear 清空 - + AbortScript 终止脚本 - + BgScriptOutput 后台脚本输出 - + ErrUnOver 锁定文件大小失败 - + Window 窗体 - + Editor 编辑器 - + Tools 工具 - + HexEditorLayout 编辑器布局 - + SetBaseAddr 设置基址 - + addressBase 基址 - + inputAddressBase 请输入基址 - + WarnBigBaseAddress 基址过大,你得到的地址将会不正确! - + ErrBaseAddress 非法基址输入 - + SetColInfo 显示/隐藏地址栏 - + SetHeaderInfo 显示/隐藏表头 - + SetAsciiString 显示/隐藏解码字符串 - + Layout 布局 - + Fullscreen 全屏 - + Default 默认 - - - + + + LayoutRestoring... 恢复布局中... - + RestoreLayout 恢复布局 - - + + SaveLayout 保存布局 - - + + ExportLog 导出日志 - - + + ClearLog 清空日志 - + InsepctQt 监视 Qt - + ScriptEditor 脚本编辑器 - + Scripts 脚本仓库 - + PluginFunctions 插件功能 - + ScriptSetting 脚本设置 - + PluginSettings 插件设置 - + Info 信息 - + Software 软件 - + Sponsor 赞助 - + CheckUpdate 检查更新 - + Wiki 网页 Wiki @@ -1618,506 +1618,506 @@ - + UndoStack - + AboutQT 关于 QT - + SetPageIDEmptyTryUseName 设置页 ID 为空,尝试使用名称作为 ID - + SetPageDupNameIgnored 设置页重复的 ID 名称,已忽略加载 - + Plugin %1 contains a duplicate ID (%2) that is already registered by plugin %3 插件 %1 包含重复 ID (%2),该 ID 已被插件 %3 注册 - - + + ChooseFile 选择文件 - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + Error 错误 - - + + FileNotExist 文件不存在! - - - - - + + + + + FilePermission 因文件权限无法继续! - + ProjectFile (*.wingpro) 项目文件 (*.wingpro) - + ReloadSuccessfully 文件重新加载成功! - + ReloadUnSuccessfully 文件重新加载失败! - - - - + + + + ChooseSaveFile 请选择保存文件路径: - + PasteFailedNote 粘贴失败,请注意权限或者内容长度 - + NoMoreClone 克隆已到上限,无法继续操作! - + FindFininishBusy 查找任务繁忙,请勿重复查找! - + MayTooMuchFindResult 搜索数量已到达上限,结果可能不全,建议请按区段搜索。 - + SaveLayoutSuccess 保存布局成功 - + SaveLayoutError 保存布局失败 - + HasClonedView 该编辑页已被克隆编辑,如果关闭,相关联的页也会被关闭,你确认继续吗? - + [MetaAdd] - + FileCloseBigFile 大文件读取模式下目标文件被关闭,该标签将会被关闭。 - - + + ReloadNeededYesOrNo 目标文件被修改,是否重新加载? - + SaveWorkSpace 保存工作区 - + WingHexWorkSpace (*.wingpro) 羽云十六进制工作区 (*.wingpro) - + ConfirmSave 正在关闭未保存的文件或工作区,你确定保存吗? - + [Info] 【信息】 - + [Warn] 【警告】 - + [Error] 【错误】 - + ConfirmAPPSave 你尝试关闭程序,但仍存在未保存的文件或工作区,你确定保存这些更改吗? - - - + + + SaveSuccessfully 保存成功! - - + + SaveWSError 保存工作区错误! - - + + Warn 警告 - + Opening... 打开文件中... - + WorkSpaceOpening... 打开工作区中... - + Reloading... 重载文件中... - + Saving... 保存中... - + SaveNewFirst 请首先保存新建的文件 - + AlreadyWorkSpace 已经是工作区,无需转化 - + ConvWorkSpaceFailed 转化为工作区失败 - + ConvWorkSpaceSuccess 转化为工作区成功 - + SavingAs... 另存为中... - + SaveUnSuccessfully 保存失败! - + Exporting... 导出中... - + ChooseExportFile 请选择导出文件路径: - + ExportSuccessfully 导出成功! - + ExportUnSuccessfully 导出失败! - + SavingSel... 保存选中字节中... - + SaveSelSuccess 保存选区字节成功! - + SaveSelError 保存选区字节失败,因文件不具有可写权限! - - + + CutToClipBoard 数据已剪切到粘贴板! - - + + UnCutToClipBoard 由于保持大小限制,数据剪切到粘贴板失败! - - + + UnCopyToClipBoard 由于保持大小限制,数据剪切到复制板失败! - - + + Finding... 查找中... - + DeleteSuccess 删除成功 - + DeleteFailed 删除失败 - + FindFininish 查找结果完毕! - + PleaseInputFill 请输入填充字节值 - + FillInputTruncWarn 填充输入数值过大,将会被截断填充 - + FillInputError 填充字节输入错误 - - + + InputComment 请输入批注: - - + + BookmarkDelSuccess 删除书签成功 - + BookmarkDelNoItem 无书签可删除 - + BookmarkClearSuccess 书签清空完毕 - - - + + + NoSelection 没有选区,无法继续的操作! - + NoMetaData 无可编辑标记 - + PleaseClearSel 请清空选择 - + MetaDelSuccess 元数据删除成功 - + MetaDelNoItem 无元数据可删除 - + MetaClearSuccess 元数据清空完毕 - + FindResultExporting... 查找结果导出中... - - + + EmptyFindResult 没有可导出的搜索结果! - + SaveFindResult 导出搜索结果成功! - + SaveFindResultError 导出结果失败! - + TooManyBytesDecode 超出解码字节限制…… - + NoTextFileMayInvalid 该文件不是文本文件,以文本方式预览并不是一个好的方式,你确认继续吗? - + LayoutSaving... 布局保存中... - + PleaseInput 请输入 - + LogExporting... 日志导出中... - + ExportLogError 导出日志失败! - + ExportLogSuccess 导出日志成功,路径: - + ClearLogSuccess 清空日志成功! - + BadNetwork 无法与远程服务器的更新检查建立连接,请检查网络。 - + NewestVersion 当前软件为最新版本 - - + + OlderVersion 你使用的软件为老版本,建议到 Github 和 Gitee 的仓库发行版下载更新。 - + CheckingUpdate 检查更新中…… - + Too much opened files 打开的文件过多,无法继续操作! - + FilePermissionSure2Quit 因文件权限无法保存,你确认要退出吗? - + UnknownErrorSure2Quit 因未知错误无法保存,你确认要退出吗? - + WorkSpaceUnSavedSure2Quit 工作区文件无法保存,你确认要退出吗? - + CopyLimit 拷贝字节超出限制 - + ErrOpenFileBelow 打开文件出现错误(由于权限不足),如下为打开错误的文件: @@ -2229,52 +2229,52 @@ OtherSettingsDialog - + System 系统 - + UseNativeFileDialog 使用系统文件通用对话框 - + UseNativeTitleBar 使用系统标题栏 - + Log 日志 - + Level 级别 - + Count 数量 - + Update 更新 - + CheckWhenStartup 启动检查更新 - + DontShowSplash 不显示启动窗体 - + Others 杂项 @@ -2322,48 +2322,48 @@ - + Plugin 插件 - - + + ID ID - - + + Name 名称 - - + + License 协议 - - + + Author 作者 - - + + Vendor 厂家 - - + + Version 版本 @@ -2374,30 +2374,30 @@ - - + + Comment 说明 - - + + URL 网址 - + pluginDependencies: 插件依赖 - + PUID: 插件唯一标志符: - + Version: 版本: @@ -2602,97 +2602,97 @@ QEditConfig - + Preference 设置 - + Theme 主题 - + FontSize 字体大小 - + Font 字体 - + Indentation 缩进 - + Options 选项 - + LineNumber 行号 - + WordWrap 换行 - + AutoIden 自动缩进 - + Whitespace 空格可见 - + AutoCloseChar 匹配填充 - + MatchBraces 高亮括号 - + Folding 代码折叠 - + LongLineEdge 长线边缘 - + IndentGuides 缩进线 - + Tab width 制表符宽度 - + Default 默认 - + IndentMixed 混合缩进 - + IndentSpaces 空格缩进 @@ -2702,7 +2702,7 @@ 控制台 - + IndentTabs 制表符缩进 @@ -4562,72 +4562,72 @@ ScriptSettingDialog - + Script 脚本 - + RawName: 源名称: - + Name: 名称: - + Author: 作者: - + License: 协议: - + ContextMenu: 是否为右键菜单: - + HomePage: 主页: - + Comment: 说明: - + Control 控制 - + Enable 启用 - + AllowRunUsrSciptInRoot 允许在管理员权限下执行用户仓库脚本 - + Timeout 超时 - + DataBase 仓库 - + Refresh 刷新 @@ -4712,7 +4712,7 @@ ScriptingDialog - + ScriptEditor 脚本编辑器 @@ -4722,331 +4722,331 @@ 因权限无法打开脚本 - + File 文件 - + Edit 编辑 - + Debugger 调试器 - + Setting 设置 - + About 关于 - + InvalidSourceFile 非法代码文件 - + Basic 基础 - + New 新建 - + OpenF 打开文件 - + RecentFiles 最近打开 - - + + Reload 重新加载 - - + + Save 保存 - + SaveAs 另存为 - + General 基本 - + Undo 撤销 - + Redo 恢复 - + Cut 剪切 - + Copy 复制 - + Paste 粘贴 - + Delete 删除 - + Lookup 查询 - + Find 查找 - + Replace 替换 - + Goto 跳转 - + Format 代码样式 - + CodeFormat 代码格式化 - + Window 窗体 - - + + Editor 编辑器 - + Tools 工具 - + Layout 布局 - + Fullscreen 全屏 - + RestoreLayout 恢复默认布局 - + BreakPoint 断点 - + ToggleBreakPoint 切换断点 - + AddBreakPoint 添加断点 - + Settings 设置 - + ClangFormat Clang Format - + Console 控制台 - + Local 本地 - + Global 全局 - + Variables 变量 - + ConsoleOutput 输出 - + StackTrace 栈跟踪 - + Symbol 符号 - - - - - - + + + + + + Error 错误 - + Too much opened files 打开的文件过多,无法继续操作! - + ConfirmSave 正在关闭未保存的脚本文件,你确定保存吗? - + ScriptSaveFailedClose 脚本保存失败,你仍确认关闭吗? - + ReloadNeededYesOrNo 目标文件被修改,是否重新加载? - + Debuging... 调试中... - + Running... 运行中... - + Line %1, Col %2 行 %1, 列 %2 - + (Selected: %1) (选中: %1) - - + + ChooseFile 选择文件 - - - + + + FilePermission 因文件权限无法继续! - + ReloadSuccessfully 文件重新加载成功! - + ReloadUnSuccessfully 文件重新加载失败! - + ChooseSaveFile 请选择保存文件路径: - - + + SaveSuccessfully 保存成功! - + SaveUnSuccessfully 保存失败! - + FormatCodeFailed 代码格式化失败 - - + + CannotSave2RunScript 无法保存,故无法继续运行脚本。 - - + + ScriptStillRunning 脚本仍在运行,你确定要退出吗? @@ -5056,87 +5056,87 @@ 你尝试关闭程序,但仍存在未保存的脚本文件,你确定保存这些更改吗? - + View 视图 - + Debug 调试 - + Run 运行 - + RunWithDbg 调试运行 - + Pause 暂停 - + Continue 继续 - + Stop 停止 - + Restart 重启 - + StepInto 单步步入 - + StepOver 单步步过 - + StepOut 单步跳出 - + RemoveBreakPoint 删除断点 - + Info 信息 - + Software 软件 - + Sponsor 赞助 - + Wiki 网页 Wiki - + AboutQT 关于 QT @@ -5233,20 +5233,52 @@ 设置 - - TakeEffectRestart - 该选项重启软件生效 + + + + Restore + - - This will reset all settings. Are you sure to continue? - 这将会重置所有设置。你确认继续吗? + + UnsavedChanges + + + + + SaveChangesDiscardLeave? + + + + + Restore current + + + + + RestoreCurPageSets? + + + + + Restore all + + + + + RestoreAllSets? + + + + + TakeEffectRestart + 该选项重启软件生效 SettingManager - + ConfigUnableSave 程序将无法保存配置,请检查配置文件权限。 diff --git a/lang/zh_TW/winghex_zh_TW.ts b/lang/zh_TW/winghex_zh_TW.ts index 28a901c..947dec0 100644 --- a/lang/zh_TW/winghex_zh_TW.ts +++ b/lang/zh_TW/winghex_zh_TW.ts @@ -226,19 +226,19 @@ 保存時自動格式化 - - - + + + ClangFormat Clang Format - + PleaseInputFmt 請輸入樣式 - + ErrInCustomClangFormat 代碼格式化樣式出現錯誤,你確認繼續修改嗎? @@ -442,7 +442,7 @@ 顯示/隱藏解碼文本 - + Editor 編輯器 @@ -676,7 +676,7 @@ GeneralSettingDialog - + General 基本 @@ -895,24 +895,24 @@ MainWindow - + File - - + + View 視圖 - + About 關於 - + WingHexExplorer 羽雲十六進制編輯器 @@ -927,322 +927,322 @@ 選長: - + Edit 編輯 - + Script 腳本 - - - + + + Plugin 插件 - + Setting 設置 - - + + Log 日誌 - + ExportFindResult 導出搜索結果 - + ClearFindResult 清空記錄 - - + + FindResult 搜索結果 - - - - - - - + + + + + + + Copy 複製 - - - - - + + + + + CopyToClipBoard 數據已拷貝到粘貼板 - + LittleEndian 小端 - + BigEndian 大端 - + Number 數值 - - + + CheckSum 校驗和 - - + + DeleteBookMark 刪除書簽 - - + + ClearBookMark 清空書簽 - - - - + + + + BookMark 書簽 - - + + DecodeText 解碼字串 - + ScriptConsole 腳本控制臺 - - + + Basic 基礎 - + New 新建 - + OpenF 打開檔 - + OpenWorkSpace 打開工作區 - + RecentFiles 最近打開 - - - + + + Reload 重新加載 - - + + Save 保存 - + SaveAs 另存為 - + ConvertWS 轉為工作區 - + Export 導出 - + SaveSel 保存選區位元組 - - - - + + + + General 基本 - + Undo 撤銷 - + Redo 恢復 - + Cut 剪切 - + Paste 粘貼 - + Delete 刪除 - + Clone 克隆 - + Lookup 查詢 - + Find 查找 - + Goto 跳轉 - - + + Encoding 編碼 - + FileInfo 檔資訊 - - + + Hex 十六進制 - + CutHex 剪切(十六進制) - + CopyHex 複製(十六進制) - + PasteHex 粘貼(十六進制) - - + + Fill 填充 - + FillZero 填充零 - - - - - + + + + + MetaData 標注 - + DeleteMetadata 刪除標注 - + ClearMetadata 清空標注 - + MetaDataEdit 編輯標注 - + DeleteMetaData 刪除標注 - + ClearMetaData 清空標注 - + Display 顯示 - + ViewText 文本預覽 - + Scale 縮放 @@ -1297,112 +1297,112 @@ 構建腳本編輯器 - + SetupSetDialog 構建設置窗體 - + SetupPlgWidgets 啟動插件組件 - + SetupDockingLayout 恢復 Dock 佈局 - + SetupWaiting 啟動即將完成 - + SetupFinished 啟動完畢 - + NoExtension 無擴展 - - + + ExportResult 導出結果 - + NothingToSave 沒有保存的數據 - + OpenExt 打開 - 拓展 - + ResetScale 重置縮放 - + ShowMetafg 標注前景色 - + ShowMetabg 標注背景色 - + ShowMetaComment 批註 - + MetaShowAll 顯示所有標注 - + MetaHideAll 隱藏所有標注 - + FileStatus 檔狀態 - + InfoSave 是否保存 - + ReadOnly 可讀寫 - + SetLocked 啟用/禁用鎖定編輯 - + ErrUnLock 鎖定編輯失敗 - + SetOver 啟用/禁用改變大小 @@ -1417,198 +1417,198 @@ 腳本引擎啟動失敗,將自動禁用該功能。 - + UnsignedHex 無符號 Hex - + BgScriptOutputHere 後臺腳本執行將會在這裏輸出 - + SelectAll 全選 - - + + Clear 清空 - + AbortScript 終止腳本 - + BgScriptOutput 後臺腳本輸出 - + ErrUnOver 鎖定檔大小失敗 - + Window 窗體 - + Editor 編輯器 - + Tools 工具 - + HexEditorLayout 編輯器佈局 - + SetBaseAddr 設置基址 - + addressBase 基址 - + inputAddressBase 請輸入基址 - + WarnBigBaseAddress 基址過大,你得到的地址將會不正確! - + ErrBaseAddress 非法基址輸入 - + SetColInfo 顯示/隱藏地址欄 - + SetHeaderInfo 顯示/隱藏表頭 - + SetAsciiString 顯示/隱藏解碼字串 - + Layout 佈局 - + Fullscreen 全屏 - + Default 默認 - - - + + + LayoutRestoring... 恢復佈局中... - + RestoreLayout 恢復佈局 - - + + SaveLayout 保存佈局 - - + + ExportLog 導出日誌 - - + + ClearLog 清空日誌 - + InsepctQt 監視 Qt - + ScriptEditor 腳本編輯器 - + Scripts 腳本倉庫 - + PluginFunctions 插件功能 - + ScriptSetting 腳本設置 - + PluginSettings 插件設置 - + Info 資訊 - + Software 軟體 - + Sponsor 贊助 - + CheckUpdate 檢查更新 - + Wiki 網頁 Wiki @@ -1618,506 +1618,506 @@ - + UndoStack - + AboutQT 關於 QT - + SetPageIDEmptyTryUseName 設置頁 ID 為空,嘗試使用名稱作為 ID - + SetPageDupNameIgnored 設置頁重複的 ID 名稱,已忽略加載 - + Plugin %1 contains a duplicate ID (%2) that is already registered by plugin %3 插件 %1 包含重複 ID (%2),該 ID 已被插件 %3 註冊 - - + + ChooseFile 選擇檔 - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + Error 錯誤 - - + + FileNotExist 檔不存在! - - - - - + + + + + FilePermission 因檔許可權無法繼續! - + ProjectFile (*.wingpro) 專案檔 (*.wingpro) - + ReloadSuccessfully 檔重新加載成功! - + ReloadUnSuccessfully 檔重新加載失敗! - - - - + + + + ChooseSaveFile 請選擇保存檔路徑: - + PasteFailedNote 粘貼失敗,請注意許可權或者內容長度 - + NoMoreClone 克隆已到上限,無法繼續操作! - + FindFininishBusy 查找任務繁忙,請勿重複查找! - + MayTooMuchFindResult 搜索數量已到達上限,結果可能不全,建議請按區段搜索。 - + SaveLayoutSuccess 保存佈局成功 - + SaveLayoutError 保存佈局失敗 - + HasClonedView 該編輯頁已被克隆編輯,如果關閉,相關聯的頁也會被關閉,你確認繼續嗎? - + [MetaAdd] - + FileCloseBigFile 大檔讀取模式下目的檔案被關閉,該標籤將會被關閉。 - - + + ReloadNeededYesOrNo 目的檔案被修改,是否重新載入? - + SaveWorkSpace 保存工作區 - + WingHexWorkSpace (*.wingpro) 羽雲十六進制工作區 (*.wingpro) - + ConfirmSave 正在關閉未保存的檔或工作區,你確定保存嗎? - + [Info] 【資訊】 - + [Warn] 【警告】 - + [Error] 【錯誤】 - + ConfirmAPPSave 你嘗試關閉程式,但仍存在未保存的檔或工作區,你確定保存這些更改嗎? - - - + + + SaveSuccessfully 保存成功! - - + + SaveWSError 保存工作區錯誤! - - + + Warn 警告 - + Opening... 打開檔中... - + WorkSpaceOpening... 打開工作區中... - + Reloading... 重載檔中... - + Saving... 保存中... - + SaveNewFirst 請首先保存新建的檔 - + AlreadyWorkSpace 已經是工作區,無需轉化 - + ConvWorkSpaceFailed 轉化為工作區失敗 - + ConvWorkSpaceSuccess 轉化為工作區成功 - + SavingAs... 另存為中... - + SaveUnSuccessfully 保存失敗! - + Exporting... 導出中... - + ChooseExportFile 請選擇導出檔路徑: - + ExportSuccessfully 導出成功! - + ExportUnSuccessfully 導出失敗! - + SavingSel... 保存選中位元組中... - + SaveSelSuccess 保存選區位元組成功! - + SaveSelError 保存選區位元組失敗,因檔不具有可寫許可權! - - + + CutToClipBoard 數據已剪切到粘貼板! - - + + UnCutToClipBoard 由於保持大小限制,數據剪切到粘貼板失敗! - - + + UnCopyToClipBoard 由於保持大小限制,數據剪切到複製板失敗! - - + + Finding... 查找中... - + DeleteSuccess 刪除成功 - + DeleteFailed 刪除失敗 - + FindFininish 查找結果完畢! - + PleaseInputFill 請輸入填充位元組值 - + FillInputTruncWarn 填充輸入數值過大,將會被截斷填充 - + FillInputError 填充位元組輸入錯誤 - - + + InputComment 請輸入批註: - - + + BookmarkDelSuccess 刪除書簽成功 - + BookmarkDelNoItem 無書簽可刪除 - + BookmarkClearSuccess 書簽清空完畢 - - - + + + NoSelection 沒有選區,無法繼續的操作! - + NoMetaData 無可編輯標記 - + PleaseClearSel 請清空選擇 - + MetaDelSuccess 元數據刪除成功 - + MetaDelNoItem 無元數據可刪除 - + MetaClearSuccess 元數據清空完畢 - + FindResultExporting... 查找結果導出中... - - + + EmptyFindResult 沒有可導出的搜索結果! - + SaveFindResult 導出搜索結果成功! - + SaveFindResultError 導出結果失敗! - + TooManyBytesDecode 超出解碼位元組限制…… - + NoTextFileMayInvalid 該檔不是文本檔,以文本方式預覽並不是一個好的方式,你確認繼續嗎? - + LayoutSaving... 佈局保存中... - + PleaseInput 請輸入 - + LogExporting... 日誌導出中... - + ExportLogError 導出日誌失敗! - + ExportLogSuccess 導出日誌成功,路徑: - + ClearLogSuccess 清空日誌成功! - + BadNetwork 無法與遠程伺服器的更新檢查建立連接,請檢查網路。 - + NewestVersion 當前軟體為最新版本 - - + + OlderVersion 你使用的軟體為老版本,建議到 Github 和 Gitee 的倉庫發行版下載更新。 - + CheckingUpdate 檢查更新中…… - + Too much opened files 打開的檔過多,無法繼續操作! - + FilePermissionSure2Quit 因檔許可權無法保存,你確認要退出嗎? - + UnknownErrorSure2Quit 因未知錯誤無法保存,你確認要退出嗎? - + WorkSpaceUnSavedSure2Quit 工作區檔無法保存,你確認要退出嗎? - + CopyLimit 拷貝位元組超出限制 - + ErrOpenFileBelow 打開檔出現錯誤(由於許可權不足),如下為打開錯誤的檔: @@ -2229,52 +2229,52 @@ OtherSettingsDialog - + System 系統 - + UseNativeFileDialog 使用系統檔通用對話框 - + UseNativeTitleBar 使用系統標題欄 - + Log 日誌 - + Level 級別 - + Count 數量 - + Update 更新 - + CheckWhenStartup 啟動檢查更新 - + DontShowSplash 不顯示啟動窗體 - + Others 雜項 @@ -2322,48 +2322,48 @@ - + Plugin 插件 - - + + ID ID - - + + Name 名稱 - - + + License 協議 - - + + Author 作者 - - + + Vendor 廠家 - - + + Version 版本 @@ -2374,30 +2374,30 @@ - - + + Comment 說明 - - + + URL 網址 - + pluginDependencies: 插件依賴 - + PUID: 插件唯一標誌符: - + Version: 版本: @@ -2602,97 +2602,97 @@ QEditConfig - + Preference 設置 - + Theme 主題 - + FontSize 字體大小 - + Font 字體 - + Indentation 縮進 - + Options 選項 - + LineNumber 行號 - + WordWrap 換行 - + AutoIden 自動縮進 - + Whitespace 空格可見 - + AutoCloseChar 匹配填充 - + MatchBraces 括號匹配 - + Folding 代碼折疊 - + LongLineEdge 長線邊緣 - + IndentGuides 縮進線 - + Tab width 跳位字元寬度 - + Default 默認 - + IndentMixed 混合縮進 - + IndentSpaces 空格縮進 @@ -2702,7 +2702,7 @@ 控制台 - + IndentTabs 定位字元縮進 @@ -4562,72 +4562,72 @@ ScriptSettingDialog - + Script 腳本 - + RawName: 源名稱: - + Name: 名稱: - + Author: 作者: - + License: 協議: - + ContextMenu: 是否為右鍵菜單: - + HomePage: 主頁: - + Comment: 說明: - + Control 控制 - + Enable 啟用 - + AllowRunUsrSciptInRoot 允許在管理員許可權下執行用戶倉庫腳本 - + Timeout 超時 - + DataBase 倉庫 - + Refresh 刷新 @@ -4712,7 +4712,7 @@ ScriptingDialog - + ScriptEditor 腳本編輯器 @@ -4722,331 +4722,331 @@ 因許可權無法打開腳本 - + File - + Edit 編輯 - + Debugger 調試器 - + Setting 設置 - + About 關於 - + InvalidSourceFile 非法代碼檔 - + Basic 基礎 - + New 新建 - + OpenF 打開檔 - + RecentFiles 最近打開 - - + + Reload 重新加載 - - + + Save 保存 - + SaveAs 另存為 - + General 基本 - + Undo 撤銷 - + Redo 恢復 - + Cut 剪切 - + Copy 複製 - + Paste 粘貼 - + Delete 刪除 - + Lookup 查詢 - + Find 查找 - + Replace 替換 - + Goto 跳轉 - + Format 代碼樣式 - + CodeFormat 代碼格式化 - + Window 窗體 - - + + Editor 編輯器 - + Tools 工具 - + Layout 佈局 - + Fullscreen 全屏 - + RestoreLayout 恢復默認佈局 - + BreakPoint 中斷點 - + ToggleBreakPoint 切換中斷點 - + AddBreakPoint 添加中斷點 - + Settings 設置 - + ClangFormat Clang Format - + Console 控制台 - + Local 本地 - + Global 全局 - + Variables 變數 - + ConsoleOutput 輸出 - + StackTrace 棧跟蹤 - + Symbol 符號 - - - - - - + + + + + + Error 錯誤 - + Too much opened files 打開的檔過多,無法繼續操作! - + ConfirmSave 正在關閉未保存的腳本檔,你確定保存嗎? - + ScriptSaveFailedClose 腳本保存失敗,你仍確認關閉嗎? - + ReloadNeededYesOrNo 目的檔案被修改,是否重新載入? - + Debuging... 調試中... - + Running... 運行中... - + Line %1, Col %2 行 %1, 列 %2 - + (Selected: %1) (選中: %1) - - + + ChooseFile 選擇檔 - - - + + + FilePermission 因檔許可權無法繼續! - + ReloadSuccessfully 檔重新加載成功! - + ReloadUnSuccessfully 檔重新加載失敗! - + ChooseSaveFile 請選擇保存檔路徑: - - + + SaveSuccessfully 保存成功! - + SaveUnSuccessfully 保存失敗! - + FormatCodeFailed 代碼格式化失敗 - - + + CannotSave2RunScript 無法保存,故無法繼續運行腳本。 - - + + ScriptStillRunning 腳本仍在運行,你確定要退出嗎? @@ -5056,87 +5056,87 @@ 你嘗試關閉程式,但仍存在未保存的腳本檔,你確定保存這些更改嗎? - + View 視圖 - + Debug 調試 - + Run 運行 - + RunWithDbg 調試運行 - + Pause 暫停 - + Continue 繼續 - + Stop 停止 - + Restart 重啟 - + StepInto 單步步入 - + StepOver 單步步過 - + StepOut 單步跳出 - + RemoveBreakPoint 刪除中斷點 - + Info 資訊 - + Software 軟體 - + Sponsor 贊助 - + Wiki 網頁 Wiki - + AboutQT 關於 QT @@ -5233,20 +5233,52 @@ 設置 - - TakeEffectRestart - 該選項重啟軟體生效 + + + + Restore + - - This will reset all settings. Are you sure to continue? - 這將會重置所有設置。你確認繼續嗎? + + UnsavedChanges + + + + + SaveChangesDiscardLeave? + + + + + Restore current + + + + + RestoreCurPageSets? + + + + + Restore all + + + + + RestoreAllSets? + + + + + TakeEffectRestart + 該選項重啟軟體生效 SettingManager - + ConfigUnableSave 程式將無法保存配置,請檢查配置檔許可權。 diff --git a/src/class/clangformatmanager.cpp b/src/class/clangformatmanager.cpp index ccb68ac..d7b24a9 100644 --- a/src/class/clangformatmanager.cpp +++ b/src/class/clangformatmanager.cpp @@ -32,7 +32,7 @@ Q_GLOBAL_STATIC_WITH_ARGS(QString, CLANG_CUSTOM_STYLE, ("clang.customStyle")) Q_GLOBAL_STATIC_WITH_ARGS(QString, CLANG_DEFAULT_CUSTOM, ("BasedOnStyle: llvm, IndentWidth: 4")) -ClangFormatManager::ClangFormatManager() { +ClangFormatManager::ClangFormatManager() : QObject() { ASSERT_SINGLETON; // load config diff --git a/src/class/clangformatmanager.h b/src/class/clangformatmanager.h index 997b38e..8e242ce 100644 --- a/src/class/clangformatmanager.h +++ b/src/class/clangformatmanager.h @@ -18,9 +18,12 @@ #ifndef CLANGFORMATMANAGER_H #define CLANGFORMATMANAGER_H +#include #include -class ClangFormatManager { +class ClangFormatManager : public QObject { + Q_OBJECT + public: static ClangFormatManager &instance(); diff --git a/src/class/scriptsettings.cpp b/src/class/scriptsettings.cpp index 1fd056d..b571ca0 100644 --- a/src/class/scriptsettings.cpp +++ b/src/class/scriptsettings.cpp @@ -27,30 +27,6 @@ #include #include -#define WRITE_CONFIG_EDITOR_SET(config, flag, dvalue) \ - if (this->_setUnsavedEditor.testFlag(flag)) { \ - WRITE_CONFIG(config, dvalue); \ - _setUnsavedEditor.setFlag(flag, false); \ - } - -#define WRITE_CONFIG_EDITOR_RESET(config, flag, dvalue) \ - do { \ - WRITE_CONFIG(config, dvalue); \ - _setUnsavedEditor.setFlag(flag, false); \ - } while (0); - -#define WRITE_CONFIG_CONSOLE_SET(config, flag, dvalue) \ - if (this->_setUnsavedConsole.testFlag(flag)) { \ - WRITE_CONFIG(config, dvalue); \ - _setUnsavedConsole.setFlag(flag, false); \ - } - -#define WRITE_CONFIG_CONSOLE_RESET(config, flag, dvalue) \ - do { \ - WRITE_CONFIG(config, dvalue); \ - _setUnsavedConsole.setFlag(flag, false); \ - } while (0); - Q_GLOBAL_STATIC_WITH_ARGS(QString, CODEEDIT_FONT, ("codeedit.font")) Q_GLOBAL_STATIC_WITH_ARGS(QString, CODEEDIT_FONT_SIZE, ("codeedit.fontsize")) Q_GLOBAL_STATIC_WITH_ARGS(QString, CODEEDIT_THEME, ("codeedit.theme")) @@ -147,70 +123,6 @@ void ScriptSettings::load() { READ_CONFIG_BOOL(m_consoleAutoCloseChar, CONSOLE_AUTO_CLOSE_CHAR, true); } -void ScriptSettings::save(SETTINGS cat) { - HANDLE_CONFIG; - if (cat.testFlag(SETTING::EDITOR)) { - WRITE_CONFIG_EDITOR_SET(CODEEDIT_FONT, SETTING_ITEM::FONT, - m_editorFontFamily); - WRITE_CONFIG_EDITOR_SET(CODEEDIT_FONT_SIZE, SETTING_ITEM::FONT_SIZE, - m_editorfontSize); - WRITE_CONFIG_EDITOR_SET(CODEEDIT_THEME, SETTING_ITEM::THEME, - m_editorTheme); - WRITE_CONFIG_EDITOR_SET(CODEEDIT_TABS_WIDTH, SETTING_ITEM::TAB_WIDTH, - m_editorTabWidth); - WRITE_CONFIG_EDITOR_SET(CODEEDIT_INDENTATION, SETTING_ITEM::INDENTATION, - m_editorInden); - WRITE_CONFIG_EDITOR_SET(CODEEDIT_MATCH_BRACES, - SETTING_ITEM::MATCH_BRACES, - m_editorMatchBraces); - WRITE_CONFIG_EDITOR_SET(CODEEDIT_WORD_WRAP, SETTING_ITEM::WORD_WRAP, - m_editorWordWrap); - WRITE_CONFIG_EDITOR_SET(CODEEDIT_SHOW_LINENUMBER, - SETTING_ITEM::SHOW_LINENUMBER, - m_editorShowLineNumber); - WRITE_CONFIG_EDITOR_SET(CODEEDIT_SHOW_FOLDING, - SETTING_ITEM::SHOW_FOLDING, m_editorFolding); - WRITE_CONFIG_EDITOR_SET(CODEEDIT_SHOW_INDENTGUIDES, - SETTING_ITEM::SHOW_INDENTGUIDES, - m_editorShowGuideLine); - WRITE_CONFIG_EDITOR_SET(CODEEDIT_SHOW_LONGLINEEDGE, - SETTING_ITEM::SHOW_LONGLINEEDGE, - m_editorShowLineEdges); - WRITE_CONFIG_EDITOR_SET(CODEEDIT_SHOW_WHITESPACE, - SETTING_ITEM::SHOW_WHITESPACE, - m_editorShowWhiteSpace); - WRITE_CONFIG_EDITOR_SET(CODEEDIT_AUTO_CLOSE_CHAR, - SETTING_ITEM::AUTO_CLOSE_CHAR, - m_editorAutoCloseChar); - WRITE_CONFIG_EDITOR_SET(CODEEDIT_AUTO_IDEN, SETTING_ITEM::AUTO_IDEN, - m_editorAutoIden); - Q_EMIT editorSettingsUpdate(); - } - - if (cat.testFlag(SETTING::CONSOLE)) { - WRITE_CONFIG_CONSOLE_SET(CONSOLE_FONT, SETTING_ITEM::FONT, - m_consoleFontFamily); - WRITE_CONFIG_CONSOLE_SET(CONSOLE_FONT_SIZE, SETTING_ITEM::FONT_SIZE, - m_consolefontSize); - WRITE_CONFIG_CONSOLE_SET(CONSOLE_THEME, SETTING_ITEM::THEME, - m_consoleTheme); - WRITE_CONFIG_CONSOLE_SET(CONSOLE_TABS_WIDTH, SETTING_ITEM::TAB_WIDTH, - m_consoleTabWidth); - WRITE_CONFIG_CONSOLE_SET(CONSOLE_INDENTATION, SETTING_ITEM::INDENTATION, - m_consoleInden); - WRITE_CONFIG_CONSOLE_SET(CONSOLE_MATCH_BRACES, - SETTING_ITEM::MATCH_BRACES, - m_consoleMatchBraces); - WRITE_CONFIG_CONSOLE_SET(CONSOLE_SHOW_WHITESPACE, - SETTING_ITEM::SHOW_WHITESPACE, - m_consoleShowWhiteSpace); - WRITE_CONFIG_CONSOLE_SET(CONSOLE_AUTO_CLOSE_CHAR, - SETTING_ITEM::AUTO_CLOSE_CHAR, - m_consoleAutoCloseChar); - Q_EMIT consoleSettingUpdate(); - } -} - void ScriptSettings::reset(SETTINGS cat) { __reset(cat); load(); @@ -219,51 +131,31 @@ void ScriptSettings::reset(SETTINGS cat) { void ScriptSettings::__reset(SETTINGS cat) { HANDLE_CONFIG; if (cat.testFlag(SETTING::EDITOR)) { - WRITE_CONFIG_EDITOR_RESET(CODEEDIT_FONT, SETTING_ITEM::FONT, - _defaultFont.defaultFamily()); - WRITE_CONFIG_EDITOR_RESET(CODEEDIT_FONT_SIZE, SETTING_ITEM::FONT_SIZE, - 10); - WRITE_CONFIG_EDITOR_RESET(CODEEDIT_THEME, SETTING_ITEM::THEME, {}); - WRITE_CONFIG_EDITOR_RESET(CODEEDIT_TABS_WIDTH, SETTING_ITEM::TAB_WIDTH, - 4); - WRITE_CONFIG_EDITOR_RESET(CODEEDIT_INDENTATION, - SETTING_ITEM::INDENTATION, 0); - WRITE_CONFIG_EDITOR_RESET(CODEEDIT_MATCH_BRACES, - SETTING_ITEM::MATCH_BRACES, true); - WRITE_CONFIG_EDITOR_RESET(CODEEDIT_WORD_WRAP, SETTING_ITEM::WORD_WRAP, - false); - WRITE_CONFIG_EDITOR_RESET(CODEEDIT_SHOW_LINENUMBER, - SETTING_ITEM::SHOW_LINENUMBER, true); - WRITE_CONFIG_EDITOR_RESET(CODEEDIT_SHOW_FOLDING, - SETTING_ITEM::SHOW_FOLDING, true); - WRITE_CONFIG_EDITOR_RESET(CODEEDIT_SHOW_INDENTGUIDES, - SETTING_ITEM::SHOW_INDENTGUIDES, true); - WRITE_CONFIG_EDITOR_RESET(CODEEDIT_SHOW_LONGLINEEDGE, - SETTING_ITEM::SHOW_LONGLINEEDGE, false); - WRITE_CONFIG_EDITOR_RESET(CODEEDIT_SHOW_WHITESPACE, - SETTING_ITEM::SHOW_WHITESPACE, false); - WRITE_CONFIG_EDITOR_RESET(CODEEDIT_AUTO_CLOSE_CHAR, - SETTING_ITEM::AUTO_CLOSE_CHAR, true); - WRITE_CONFIG_EDITOR_RESET(CODEEDIT_AUTO_IDEN, SETTING_ITEM::AUTO_IDEN, - true); + WRITE_CONFIG(CODEEDIT_FONT, _defaultFont.defaultFamily()); + WRITE_CONFIG(CODEEDIT_FONT_SIZE, 10); + WRITE_CONFIG(CODEEDIT_THEME, {}); + WRITE_CONFIG(CODEEDIT_TABS_WIDTH, 4); + WRITE_CONFIG(CODEEDIT_INDENTATION, 0); + WRITE_CONFIG(CODEEDIT_MATCH_BRACES, true); + WRITE_CONFIG(CODEEDIT_WORD_WRAP, false); + WRITE_CONFIG(CODEEDIT_SHOW_LINENUMBER, true); + WRITE_CONFIG(CODEEDIT_SHOW_FOLDING, true); + WRITE_CONFIG(CODEEDIT_SHOW_INDENTGUIDES, true); + WRITE_CONFIG(CODEEDIT_SHOW_LONGLINEEDGE, false); + WRITE_CONFIG(CODEEDIT_SHOW_WHITESPACE, false); + WRITE_CONFIG(CODEEDIT_AUTO_CLOSE_CHAR, true); + WRITE_CONFIG(CODEEDIT_AUTO_IDEN, true); } if (cat.testFlag(SETTING::CONSOLE)) { - WRITE_CONFIG_CONSOLE_RESET(CONSOLE_FONT, SETTING_ITEM::FONT, - _defaultFont.defaultFamily()); - WRITE_CONFIG_CONSOLE_RESET(CONSOLE_FONT_SIZE, SETTING_ITEM::FONT_SIZE, - 10); - WRITE_CONFIG_CONSOLE_RESET(CONSOLE_THEME, SETTING_ITEM::THEME, {}); - WRITE_CONFIG_CONSOLE_RESET(CONSOLE_TABS_WIDTH, SETTING_ITEM::TAB_WIDTH, - 4); - WRITE_CONFIG_CONSOLE_RESET(CONSOLE_INDENTATION, - SETTING_ITEM::INDENTATION, 0); - WRITE_CONFIG_CONSOLE_RESET(CONSOLE_MATCH_BRACES, - SETTING_ITEM::MATCH_BRACES, true); - WRITE_CONFIG_CONSOLE_RESET(CONSOLE_SHOW_WHITESPACE, - SETTING_ITEM::SHOW_WHITESPACE, false); - WRITE_CONFIG_CONSOLE_RESET(CONSOLE_AUTO_CLOSE_CHAR, - SETTING_ITEM::AUTO_CLOSE_CHAR, true); + WRITE_CONFIG(CONSOLE_FONT, _defaultFont.defaultFamily()); + WRITE_CONFIG(CONSOLE_FONT_SIZE, 10); + WRITE_CONFIG(CONSOLE_THEME, {}); + WRITE_CONFIG(CONSOLE_TABS_WIDTH, 4); + WRITE_CONFIG(CONSOLE_INDENTATION, 0); + WRITE_CONFIG(CONSOLE_MATCH_BRACES, true); + WRITE_CONFIG(CONSOLE_SHOW_WHITESPACE, false); + WRITE_CONFIG(CONSOLE_AUTO_CLOSE_CHAR, true); } } @@ -275,7 +167,11 @@ ScriptSettings::ScriptSettings() : QObject() { bool ScriptSettings::editorAutoIden() const { return m_editorAutoIden; } void ScriptSettings::setEditorAutoIden(bool newEditorAutoIden) { - m_editorAutoIden = newEditorAutoIden; + if (m_editorAutoIden != newEditorAutoIden) { + HANDLE_CONFIG; + WRITE_CONFIG(CODEEDIT_AUTO_IDEN, newEditorAutoIden); + m_editorAutoIden = newEditorAutoIden; + } } bool ScriptSettings::consoleAutoCloseChar() const { @@ -284,8 +180,9 @@ bool ScriptSettings::consoleAutoCloseChar() const { void ScriptSettings::setConsoleAutoCloseChar(bool newConsoleAutoCloseChar) { if (m_consoleAutoCloseChar != newConsoleAutoCloseChar) { + HANDLE_CONFIG; + WRITE_CONFIG(CONSOLE_AUTO_CLOSE_CHAR, newConsoleAutoCloseChar); m_consoleAutoCloseChar = newConsoleAutoCloseChar; - _setUnsavedConsole.setFlag(SETTING_ITEM::AUTO_CLOSE_CHAR); } } @@ -295,8 +192,9 @@ bool ScriptSettings::editorAutoCloseChar() const { void ScriptSettings::setEditorAutoCloseChar(bool newEditorAutoCloseChar) { if (m_editorAutoCloseChar != newEditorAutoCloseChar) { + HANDLE_CONFIG; + WRITE_CONFIG(CODEEDIT_AUTO_CLOSE_CHAR, newEditorAutoCloseChar); m_editorAutoCloseChar = newEditorAutoCloseChar; - _setUnsavedEditor.setFlag(SETTING_ITEM::AUTO_CLOSE_CHAR); } } @@ -306,8 +204,9 @@ bool ScriptSettings::consoleShowWhiteSpace() const { void ScriptSettings::setConsoleShowWhiteSpace(bool newConsoleShowWhiteSpace) { if (m_consoleShowWhiteSpace != newConsoleShowWhiteSpace) { + HANDLE_CONFIG; + WRITE_CONFIG(CONSOLE_SHOW_WHITESPACE, newConsoleShowWhiteSpace); m_consoleShowWhiteSpace = newConsoleShowWhiteSpace; - _setUnsavedConsole.setFlag(SETTING_ITEM::SHOW_WHITESPACE); } } @@ -317,8 +216,9 @@ bool ScriptSettings::editorShowWhiteSpace() const { void ScriptSettings::setEditorShowWhiteSpace(bool newEditorShowWhiteSpace) { if (m_editorShowWhiteSpace != newEditorShowWhiteSpace) { + HANDLE_CONFIG; + WRITE_CONFIG(CODEEDIT_SHOW_WHITESPACE, newEditorShowWhiteSpace); m_editorShowWhiteSpace = newEditorShowWhiteSpace; - _setUnsavedEditor.setFlag(SETTING_ITEM::SHOW_WHITESPACE); } } @@ -328,8 +228,9 @@ bool ScriptSettings::editorShowLineEdges() const { void ScriptSettings::setEditorShowLineEdges(bool newEditorShowLineEdges) { if (m_editorShowLineEdges != newEditorShowLineEdges) { + HANDLE_CONFIG; + WRITE_CONFIG(CODEEDIT_SHOW_LONGLINEEDGE, newEditorShowLineEdges); m_editorShowLineEdges = newEditorShowLineEdges; - _setUnsavedEditor.setFlag(SETTING_ITEM::SHOW_LONGLINEEDGE); } } @@ -339,8 +240,9 @@ bool ScriptSettings::editorShowGuideLine() const { void ScriptSettings::setEditorShowGuideLine(bool newEditorShowGuidLine) { if (m_editorShowGuideLine != newEditorShowGuidLine) { + HANDLE_CONFIG; + WRITE_CONFIG(CODEEDIT_SHOW_INDENTGUIDES, newEditorShowGuidLine); m_editorShowGuideLine = newEditorShowGuidLine; - _setUnsavedEditor.setFlag(SETTING_ITEM::SHOW_INDENTGUIDES); } } @@ -348,8 +250,9 @@ bool ScriptSettings::editorFolding() const { return m_editorFolding; } void ScriptSettings::setEditorFolding(bool newEditorFolding) { if (m_editorFolding != newEditorFolding) { + HANDLE_CONFIG; + WRITE_CONFIG(CODEEDIT_SHOW_FOLDING, newEditorFolding); m_editorFolding = newEditorFolding; - _setUnsavedEditor.setFlag(SETTING_ITEM::SHOW_FOLDING); } } @@ -359,8 +262,9 @@ bool ScriptSettings::editorShowLineNumber() const { void ScriptSettings::setEditorShowLineNumber(bool newEditorShowLineNumber) { if (m_editorShowLineNumber != newEditorShowLineNumber) { + HANDLE_CONFIG; + WRITE_CONFIG(CODEEDIT_SHOW_LINENUMBER, newEditorShowLineNumber); m_editorShowLineNumber = newEditorShowLineNumber; - _setUnsavedEditor.setFlag(SETTING_ITEM::SHOW_LINENUMBER); } } @@ -368,8 +272,9 @@ bool ScriptSettings::editorWordWrap() const { return m_editorWordWrap; } void ScriptSettings::setEditorWordWrap(bool newEditorWordWrap) { if (m_editorWordWrap != newEditorWordWrap) { + HANDLE_CONFIG; + WRITE_CONFIG(CODEEDIT_WORD_WRAP, newEditorWordWrap); m_editorWordWrap = newEditorWordWrap; - _setUnsavedEditor.setFlag(SETTING_ITEM::WORD_WRAP); } } @@ -377,8 +282,9 @@ bool ScriptSettings::consoleMatchBraces() const { return m_consoleMatchBraces; } void ScriptSettings::setConsoleMatchBraces(bool newConsoleMatchBraces) { if (m_consoleMatchBraces != newConsoleMatchBraces) { + HANDLE_CONFIG; + WRITE_CONFIG(CONSOLE_MATCH_BRACES, newConsoleMatchBraces); m_consoleMatchBraces = newConsoleMatchBraces; - _setUnsavedConsole.setFlag(SETTING_ITEM::MATCH_BRACES); } } @@ -386,8 +292,9 @@ bool ScriptSettings::editorMatchBraces() const { return m_editorMatchBraces; } void ScriptSettings::setEditorMatchBraces(bool newEditorMatchBraces) { if (m_editorMatchBraces != newEditorMatchBraces) { + HANDLE_CONFIG; + WRITE_CONFIG(CODEEDIT_MATCH_BRACES, newEditorMatchBraces); m_editorMatchBraces = newEditorMatchBraces; - _setUnsavedEditor.setFlag(SETTING_ITEM::MATCH_BRACES); } } @@ -395,8 +302,9 @@ int ScriptSettings::consoleInden() const { return m_consoleInden; } void ScriptSettings::setConsoleInden(int newConsoleInden) { if (m_consoleInden != newConsoleInden) { + HANDLE_CONFIG; + WRITE_CONFIG(CONSOLE_INDENTATION, newConsoleInden); m_consoleInden = newConsoleInden; - _setUnsavedConsole.setFlag(SETTING_ITEM::INDENTATION); } } @@ -404,8 +312,9 @@ int ScriptSettings::editorInden() const { return m_editorInden; } void ScriptSettings::setEditorInden(int newEditorInden) { if (m_editorInden != newEditorInden) { + HANDLE_CONFIG; + WRITE_CONFIG(CODEEDIT_INDENTATION, newEditorInden); m_editorInden = newEditorInden; - _setUnsavedEditor.setFlag(SETTING_ITEM::INDENTATION); } } @@ -413,8 +322,9 @@ int ScriptSettings::consoleTabWidth() const { return m_consoleTabWidth; } void ScriptSettings::setConsoleTabWidth(int newConsoleTabWidth) { if (m_consoleTabWidth != newConsoleTabWidth) { + HANDLE_CONFIG; + WRITE_CONFIG(CONSOLE_TABS_WIDTH, newConsoleTabWidth); m_consoleTabWidth = newConsoleTabWidth; - _setUnsavedConsole.setFlag(SETTING_ITEM::TAB_WIDTH); } } @@ -422,8 +332,9 @@ int ScriptSettings::editorTabWidth() const { return m_editorTabWidth; } void ScriptSettings::setEditorTabWidth(int newEditorTabWidth) { if (m_editorTabWidth != newEditorTabWidth) { + HANDLE_CONFIG; + WRITE_CONFIG(CODEEDIT_TABS_WIDTH, newEditorTabWidth); m_editorTabWidth = newEditorTabWidth; - _setUnsavedEditor.setFlag(SETTING_ITEM::TAB_WIDTH); } } @@ -431,8 +342,9 @@ QString ScriptSettings::consoleTheme() const { return m_consoleTheme; } void ScriptSettings::setConsoleTheme(const QString &newConsoleTheme) { if (m_consoleTheme != newConsoleTheme) { + HANDLE_CONFIG; + WRITE_CONFIG(CONSOLE_THEME, newConsoleTheme); m_consoleTheme = newConsoleTheme; - _setUnsavedConsole.setFlag(SETTING_ITEM::THEME); } } @@ -440,8 +352,9 @@ QString ScriptSettings::editorTheme() const { return m_editorTheme; } void ScriptSettings::setEditorTheme(const QString &newEditorTheme) { if (m_editorTheme != newEditorTheme) { + HANDLE_CONFIG; + WRITE_CONFIG(CODEEDIT_THEME, newEditorTheme); m_editorTheme = newEditorTheme; - _setUnsavedEditor.setFlag(SETTING_ITEM::THEME); } } @@ -449,8 +362,9 @@ int ScriptSettings::consoleFontSize() const { return m_consolefontSize; } void ScriptSettings::setConsoleFontSize(int newConsolefontSize) { if (m_consolefontSize != newConsolefontSize) { + HANDLE_CONFIG; + WRITE_CONFIG(CONSOLE_FONT_SIZE, newConsolefontSize); m_consolefontSize = newConsolefontSize; - _setUnsavedConsole.setFlag(SETTING_ITEM::FONT_SIZE); } } @@ -458,8 +372,9 @@ int ScriptSettings::editorFontSize() const { return m_editorfontSize; } void ScriptSettings::setEditorFontSize(int newEditorfontSize) { if (m_editorfontSize != newEditorfontSize) { + HANDLE_CONFIG; + WRITE_CONFIG(CODEEDIT_FONT_SIZE, newEditorfontSize); m_editorfontSize = newEditorfontSize; - _setUnsavedEditor.setFlag(SETTING_ITEM::FONT_SIZE); } } @@ -469,8 +384,9 @@ QString ScriptSettings::consoleFontFamily() const { void ScriptSettings::setConsoleFontFamily(const QString &newConsoleFontFamily) { if (m_consoleFontFamily != newConsoleFontFamily) { + HANDLE_CONFIG; + WRITE_CONFIG(CONSOLE_FONT, newConsoleFontFamily); m_consoleFontFamily = newConsoleFontFamily; - _setUnsavedConsole.setFlag(SETTING_ITEM::FONT); } } @@ -478,7 +394,8 @@ QString ScriptSettings::editorFontFamily() const { return m_editorFontFamily; } void ScriptSettings::setEditorFontFamily(const QString &newEditorFontFamily) { if (m_editorFontFamily != newEditorFontFamily) { + HANDLE_CONFIG; + WRITE_CONFIG(CODEEDIT_FONT, newEditorFontFamily); m_editorFontFamily = newEditorFontFamily; - _setUnsavedEditor.setFlag(SETTING_ITEM::FONT); } } diff --git a/src/class/scriptsettings.h b/src/class/scriptsettings.h index aecf05d..154a4b1 100644 --- a/src/class/scriptsettings.h +++ b/src/class/scriptsettings.h @@ -28,102 +28,60 @@ public: enum SETTING { EDITOR = 1, CONSOLE = 2, ALL = EDITOR | CONSOLE }; Q_DECLARE_FLAGS(SETTINGS, SETTING) -private: - // Flags to indicate whether the modification has been made. - // There are a maximum of 32 flags, - // but it is impossible to have more than this. - enum class SETTING_ITEM : quint32 { - FONT = 1u, - FONT_SIZE = 1u << 1, - THEME = 1u << 2, - TAB_WIDTH = 1u << 3, - INDENTATION = 1u << 4, - WORD_WRAP = 1u << 5, - MATCH_BRACES = 1u << 6, - SHOW_LINENUMBER = 1u << 7, - SHOW_FOLDING = 1u << 8, - SHOW_INDENTGUIDES = 1u << 9, - SHOW_LONGLINEEDGE = 1u << 10, - SHOW_WHITESPACE = 1u << 11, - AUTO_CLOSE_CHAR = 1u << 12, - AUTO_IDEN = 1u << 13 - }; - Q_DECLARE_FLAGS(SETTING_ITEMS, SETTING_ITEM) - public: static ScriptSettings &instance(); void load(); - void save(SETTINGS cat = SETTING::ALL); void reset(SETTINGS cat = SETTING::ALL); void __reset(SETTINGS cat); public: QString editorFontFamily() const; - void setEditorFontFamily(const QString &newEditorFontFamily); - QString consoleFontFamily() const; - void setConsoleFontFamily(const QString &newConsoleFontFamily); - int editorFontSize() const; - void setEditorFontSize(int newEditorfontSize); - int consoleFontSize() const; - void setConsoleFontSize(int newConsolefontSize); - QString editorTheme() const; - void setEditorTheme(const QString &newEditorTheme); - QString consoleTheme() const; - void setConsoleTheme(const QString &newConsoleTheme); - int editorTabWidth() const; - void setEditorTabWidth(int newEditorTabWidth); - int consoleTabWidth() const; - void setConsoleTabWidth(int newConsoleTabWidth); - int editorInden() const; - void setEditorInden(int newEditorInden); - int consoleInden() const; - void setConsoleInden(int newConsoleInden); - bool editorMatchBraces() const; - void setEditorMatchBraces(bool newEditorMatchBraces); - bool consoleMatchBraces() const; - void setConsoleMatchBraces(bool newConsoleMatchBraces); - bool editorWordWrap() const; - void setEditorWordWrap(bool newEditorWordWrap); - bool editorShowLineNumber() const; - void setEditorShowLineNumber(bool newEditorShowLineNumber); - bool editorFolding() const; - void setEditorFolding(bool newEditorFolding); - bool editorShowGuideLine() const; - void setEditorShowGuideLine(bool newEditorShowGuidLine); - bool editorShowLineEdges() const; - void setEditorShowLineEdges(bool newEditorShowLineEdges); - bool editorShowWhiteSpace() const; - void setEditorShowWhiteSpace(bool newEditorShowWhiteSpace); - bool consoleShowWhiteSpace() const; - void setConsoleShowWhiteSpace(bool newConsoleShowWhiteSpace); - bool editorAutoCloseChar() const; - void setEditorAutoCloseChar(bool newEditorAutoCloseChar); - bool consoleAutoCloseChar() const; - void setConsoleAutoCloseChar(bool newConsoleAutoCloseChar); - bool editorAutoIden() const; + +public slots: + void setEditorFontFamily(const QString &newEditorFontFamily); + void setConsoleFontFamily(const QString &newConsoleFontFamily); + void setEditorFontSize(int newEditorfontSize); + void setConsoleFontSize(int newConsolefontSize); + void setEditorTheme(const QString &newEditorTheme); + void setConsoleTheme(const QString &newConsoleTheme); + void setEditorTabWidth(int newEditorTabWidth); + void setConsoleTabWidth(int newConsoleTabWidth); + void setEditorInden(int newEditorInden); + void setConsoleInden(int newConsoleInden); + void setEditorMatchBraces(bool newEditorMatchBraces); + void setConsoleMatchBraces(bool newConsoleMatchBraces); + void setEditorWordWrap(bool newEditorWordWrap); + void setEditorShowLineNumber(bool newEditorShowLineNumber); + void setEditorFolding(bool newEditorFolding); + void setEditorShowGuideLine(bool newEditorShowGuidLine); + void setEditorShowLineEdges(bool newEditorShowLineEdges); + void setEditorShowWhiteSpace(bool newEditorShowWhiteSpace); + void setConsoleShowWhiteSpace(bool newConsoleShowWhiteSpace); + void setEditorAutoCloseChar(bool newEditorAutoCloseChar); + void setConsoleAutoCloseChar(bool newConsoleAutoCloseChar); void setEditorAutoIden(bool newEditorAutoIden); private: @@ -167,10 +125,6 @@ private: bool m_editorAutoCloseChar = true; bool m_consoleAutoCloseChar = true; -private: - SETTING_ITEMS _setUnsavedEditor; - SETTING_ITEMS _setUnsavedConsole; - private: Q_DISABLE_COPY_MOVE(ScriptSettings) }; diff --git a/src/class/settingmanager.cpp b/src/class/settingmanager.cpp index 3dbac4a..24649b2 100644 --- a/src/class/settingmanager.cpp +++ b/src/class/settingmanager.cpp @@ -25,18 +25,6 @@ #include #include -#define WRITE_CONFIG_SET(config, dvalue) \ - if (this->_setUnsaved.testFlag(SETTING_ITEM::config)) { \ - WRITE_CONFIG(config, dvalue); \ - _setUnsaved.setFlag(SettingManager::SETTING_ITEM::config, false); \ - } - -#define WRITE_CONFIG_RESET(config, dvalue) \ - do { \ - WRITE_CONFIG(config, dvalue); \ - _setUnsaved.setFlag(SettingManager::SETTING_ITEM::config, false); \ - } while (0); - Q_GLOBAL_STATIC_WITH_ARGS(QString, DOCK_LAYOUT, ("dock.layout")) Q_GLOBAL_STATIC_WITH_ARGS(QString, SCRIPT_DOCK_LAYOUT, ("script.layout")) Q_GLOBAL_STATIC_WITH_ARGS(QString, APP_LASTUSED_PATH, ("app.lastusedpath")) @@ -89,7 +77,11 @@ SettingManager::SettingManager() { QString SettingManager::lastUsedPath() const { return m_lastUsedPath; } void SettingManager::setLastUsedPath(const QString &newLastUsedPath) { - m_lastUsedPath = newLastUsedPath; + if (m_lastUsedPath != newLastUsedPath) { + HANDLE_CONFIG; + WRITE_CONFIG(APP_LASTUSED_PATH, newLastUsedPath); + m_lastUsedPath = newLastUsedPath; + } } void SettingManager::load() { @@ -200,15 +192,20 @@ int SettingManager::scriptTimeout() const { return m_scriptTimeout; } void SettingManager::setScriptTimeout(int newScriptTimeout) { newScriptTimeout = qBound(0, newScriptTimeout, 312480); if (m_scriptTimeout != newScriptTimeout) { + HANDLE_CONFIG; + WRITE_CONFIG(SCRIPT_TIMEOUT, newScriptTimeout); m_scriptTimeout = newScriptTimeout; - _setUnsaved.setFlag(SETTING_ITEM::SCRIPT_TIMEOUT); } } qsizetype SettingManager::logCount() const { return m_logCount; } void SettingManager::setLogCount(qsizetype newLogCount) { - m_logCount = newLogCount; + if (m_logCount != newLogCount) { + HANDLE_CONFIG; + WRITE_CONFIG(OTHER_LOG_COUNT, newLogCount); + m_logCount = newLogCount; + } } void SettingManager::checkWriteableAndWarn() { @@ -222,15 +219,20 @@ void SettingManager::checkWriteableAndWarn() { bool SettingManager::checkUpdate() const { return m_checkUpdate; } void SettingManager::setCheckUpdate(bool newCheckUpdate) { - m_checkUpdate = newCheckUpdate; + if (m_checkUpdate != newCheckUpdate) { + HANDLE_CONFIG; + WRITE_CONFIG(OTHER_CHECK_UPDATE, newCheckUpdate); + m_checkUpdate = newCheckUpdate; + } } bool SettingManager::dontUseSplash() const { return m_dontUseSplash; } void SettingManager::setDontUseSplash(bool newDontUseSplash) { if (m_dontUseSplash != newDontUseSplash) { + HANDLE_CONFIG; + WRITE_CONFIG(OTHER_DONT_USE_SPLASH, newDontUseSplash); m_dontUseSplash = newDontUseSplash; - _setUnsaved.setFlag(SETTING_ITEM::OTHER_DONT_USE_SPLASH); } } @@ -238,8 +240,9 @@ bool SettingManager::scriptEnabled() const { return m_scriptEnabled; } void SettingManager::setScriptEnabled(bool newScriptEnabled) { if (m_scriptEnabled != newScriptEnabled) { + HANDLE_CONFIG; + WRITE_CONFIG(SCRIPT_ENABLE, newScriptEnabled); m_scriptEnabled = newScriptEnabled; - _setUnsaved.setFlag(SETTING_ITEM::SCRIPT_ENABLE); } } @@ -249,22 +252,25 @@ bool SettingManager::allowUsrScriptInRoot() const { void SettingManager::setAllowUsrScriptInRoot(bool newAllowUsrScriptInRoot) { if (m_allowUsrScriptInRoot != newAllowUsrScriptInRoot) { + HANDLE_CONFIG; + WRITE_CONFIG(SCRIPT_ALLOW_USRSCRIPT_INROOT, newAllowUsrScriptInRoot); m_allowUsrScriptInRoot = newAllowUsrScriptInRoot; - _setUnsaved.setFlag(SETTING_ITEM::SCRIPT_ALLOW_USRSCRIPT_INROOT); } } void SettingManager::setUsrHideCats(const QStringList &newUsrHideCats) { if (m_usrHideCats != newUsrHideCats) { + HANDLE_CONFIG; + WRITE_CONFIG(SCRIPT_USRHIDECATS, newUsrHideCats); m_usrHideCats = newUsrHideCats; - _setUnsaved.setFlag(SETTING_ITEM::SCRIPT_USRHIDECATS); } } void SettingManager::setSysHideCats(const QStringList &newSysHideCats) { if (m_sysHideCats != newSysHideCats) { + HANDLE_CONFIG; + WRITE_CONFIG(SCRIPT_SYSHIDECATS, newSysHideCats); m_sysHideCats = newSysHideCats; - _setUnsaved.setFlag(SETTING_ITEM::SCRIPT_SYSHIDECATS); } } @@ -272,8 +278,9 @@ int SettingManager::logLevel() const { return m_logLevel; } void SettingManager::setLogLevel(int newLogLevel) { if (m_logLevel != newLogLevel) { + HANDLE_CONFIG; + WRITE_CONFIG(OTHER_LOG_LEVEL, newLogLevel); m_logLevel = newLogLevel; - _setUnsaved.setFlag(SETTING_ITEM::OTHER_LOG_LEVEL); } } @@ -281,8 +288,9 @@ bool SettingManager::useNativeTitleBar() const { return m_useNativeTitleBar; } void SettingManager::setUseNativeTitleBar(bool newUseNativeTitleBar) { if (m_useNativeTitleBar != newUseNativeTitleBar) { + HANDLE_CONFIG; + WRITE_CONFIG(OTHER_USE_NATIVE_TITLEBAR, newUseNativeTitleBar); m_useNativeTitleBar = newUseNativeTitleBar; - _setUnsaved.setFlag(SETTING_ITEM::OTHER_USE_NATIVE_TITLEBAR); } } @@ -292,8 +300,9 @@ bool SettingManager::useNativeFileDialog() const { void SettingManager::setUseNativeFileDialog(bool newUseNativeFileDialog) { if (m_useNativeFileDialog != newUseNativeFileDialog) { + HANDLE_CONFIG; + WRITE_CONFIG(OTHER_USESYS_FILEDIALOG, newUseNativeFileDialog); m_useNativeFileDialog = newUseNativeFileDialog; - _setUnsaved.setFlag(SETTING_ITEM::OTHER_USESYS_FILEDIALOG); } } @@ -304,8 +313,9 @@ QByteArray SettingManager::scriptDockLayout() const { void SettingManager::setScriptDockLayout( const QByteArray &newScriptDockLayout) { if (m_scriptDockLayout != newScriptDockLayout) { + HANDLE_CONFIG; + WRITE_CONFIG(SCRIPT_DOCK_LAYOUT, newScriptDockLayout); m_scriptDockLayout = newScriptDockLayout; - _setUnsaved.setFlag(SETTING_ITEM::SCRIPT_DOCK_LAYOUT); } } @@ -320,8 +330,9 @@ QList SettingManager::recentScriptFiles() const { void SettingManager::setRecentScriptFiles( const QList &newRecentScriptFiles) { if (m_recentScriptFiles != newRecentScriptFiles) { + HANDLE_CONFIG; + WRITE_CONFIG(SCRIPT_RECENTFILES, getVarList(newRecentScriptFiles)); m_recentScriptFiles = newRecentScriptFiles; - _setUnsaved.setFlag(SETTING_ITEM::SCRIPT_RECENTFILES); } } @@ -329,8 +340,9 @@ QString SettingManager::appFontFamily() const { return m_appFontFamily; } void SettingManager::setAppFontFamily(const QString &newAppFontFamily) { if (m_appFontFamily != newAppFontFamily) { + HANDLE_CONFIG; + WRITE_CONFIG(APP_FONTFAMILY, newAppFontFamily); m_appFontFamily = newAppFontFamily; - _setUnsaved.setFlag(SETTING_ITEM::APP_FONTFAMILY); } } @@ -338,8 +350,9 @@ bool SettingManager::editorShowHeader() const { return m_editorShowHeader; } void SettingManager::setEditorShowHeader(bool newEditorShowAddr) { if (m_editorShowHeader != newEditorShowAddr) { + HANDLE_CONFIG; + WRITE_CONFIG(EDITOR_SHOW_ADDR, newEditorShowAddr); m_editorShowHeader = newEditorShowAddr; - _setUnsaved.setFlag(SETTING_ITEM::EDITOR_SHOW_ADDR); } } @@ -347,8 +360,9 @@ bool SettingManager::enablePlugin() const { return m_enablePlugin; } void SettingManager::setEnablePlugin(bool newEnablePlugin) { if (m_enablePlugin != newEnablePlugin) { + HANDLE_CONFIG; + WRITE_CONFIG(PLUGIN_ENABLE, newEnablePlugin); m_enablePlugin = newEnablePlugin; - _setUnsaved.setFlag(SETTING_ITEM::PLUGIN_ENABLE); } } @@ -359,8 +373,9 @@ QList SettingManager::recentHexFiles() const { void SettingManager::setRecentFiles( const QList &newRecentFiles) { if (m_recentHexFiles != newRecentFiles) { + HANDLE_CONFIG; + WRITE_CONFIG(EDITOR_RECENTFILES, getVarList(newRecentFiles)); m_recentHexFiles = newRecentFiles; - _setUnsaved.setFlag(SETTING_ITEM::EDITOR_RECENTFILES); } } @@ -379,53 +394,9 @@ void SettingManager::setDefaultWinState(Qt::WindowState newDefaultWinState) { break; } if (m_defaultWinState != newDefaultWinState) { + HANDLE_CONFIG; + WRITE_CONFIG(APP_WINDOWSIZE, newDefaultWinState); m_defaultWinState = newDefaultWinState; - _setUnsaved.setFlag(SETTING_ITEM::APP_WINDOWSIZE); - } -} - -void SettingManager::save(SETTINGS cat) { - HANDLE_CONFIG; - WRITE_CONFIG_SET(DOCK_LAYOUT, m_dockLayout); - WRITE_CONFIG_SET(SCRIPT_DOCK_LAYOUT, m_scriptDockLayout); - WRITE_CONFIG_SET(EDITOR_RECENTFILES, getVarList(m_recentHexFiles)); - WRITE_CONFIG_SET(SCRIPT_RECENTFILES, getVarList(m_recentScriptFiles)); - WRITE_CONFIG_SET(APP_LASTUSED_PATH, m_lastUsedPath); - if (cat.testFlag(SETTING::APP)) { - WRITE_CONFIG_SET(SKIN_THEME, m_themeID); - WRITE_CONFIG_SET(APP_LANGUAGE, m_defaultLang); - WRITE_CONFIG_SET(APP_FONTFAMILY, m_appFontFamily); - WRITE_CONFIG_SET(APP_FONTSIZE, m_appfontSize); - WRITE_CONFIG_SET(APP_WINDOWSIZE, m_defaultWinState); - } - if (cat.testFlag(SETTING::PLUGIN)) { - WRITE_CONFIG_SET(PLUGIN_ENABLE, m_enablePlugin); - WRITE_CONFIG_SET(PLUGIN_ENABLE_ROOT, m_enablePlgInRoot); - } - if (cat.testFlag(SETTING::EDITOR)) { - WRITE_CONFIG_SET(EDITOR_FONTSIZE, m_editorfontSize); - WRITE_CONFIG_SET(EDITOR_SHOW_ADDR, m_editorShowHeader); - WRITE_CONFIG_SET(EDITOR_SHOW_COL, m_editorShowcol); - WRITE_CONFIG_SET(EDITOR_SHOW_TEXT, m_editorShowtext); - WRITE_CONFIG_SET(EDITOR_COPY_LIMIT, m_copylimit); - WRITE_CONFIG_SET(EDITOR_DECSTRLIMIT, m_decodeStrlimit); - } - if (cat.testFlag(SETTING::SCRIPT)) { - WRITE_CONFIG_SET(SCRIPT_ENABLE, m_scriptEnabled); - WRITE_CONFIG_SET(SCRIPT_TIMEOUT, m_scriptTimeout); - WRITE_CONFIG_SET(SCRIPT_ALLOW_USRSCRIPT_INROOT, m_allowUsrScriptInRoot); - WRITE_CONFIG_SET(SCRIPT_USRHIDECATS, m_usrHideCats); - WRITE_CONFIG_SET(SCRIPT_SYSHIDECATS, m_sysHideCats); - } - if (cat.testFlag(SETTING::OTHER)) { - WRITE_CONFIG_SET(OTHER_USESYS_FILEDIALOG, m_useNativeFileDialog); -#ifdef WINGHEX_USE_FRAMELESS - WRITE_CONFIG_SET(OTHER_USE_NATIVE_TITLEBAR, m_useNativeTitleBar); -#endif - WRITE_CONFIG_SET(OTHER_DONT_USE_SPLASH, m_dontUseSplash); - WRITE_CONFIG_SET(OTHER_CHECK_UPDATE, m_checkUpdate); - WRITE_CONFIG_SET(OTHER_LOG_LEVEL, m_logLevel); - WRITE_CONFIG_SET(OTHER_LOG_COUNT, m_logCount); } } @@ -437,41 +408,41 @@ void SettingManager::reset(SETTINGS cat) { void SettingManager::__reset(SETTINGS cat) { HANDLE_CONFIG; if (cat.testFlag(SETTING::APP)) { - WRITE_CONFIG_RESET(SKIN_THEME, 0); - WRITE_CONFIG_RESET(APP_LANGUAGE, QString()); - WRITE_CONFIG_RESET(APP_FONTFAMILY, _defaultFont.family()); - WRITE_CONFIG_RESET(APP_FONTSIZE, _defaultFont.pointSize()); - WRITE_CONFIG_RESET(APP_WINDOWSIZE, Qt::WindowMaximized); + WRITE_CONFIG(SKIN_THEME, 0); + WRITE_CONFIG(APP_LANGUAGE, QString()); + WRITE_CONFIG(APP_FONTFAMILY, _defaultFont.family()); + WRITE_CONFIG(APP_FONTSIZE, _defaultFont.pointSize()); + WRITE_CONFIG(APP_WINDOWSIZE, Qt::WindowMaximized); } if (cat.testFlag(SETTING::PLUGIN)) { - WRITE_CONFIG_RESET(PLUGIN_ENABLE, true); - WRITE_CONFIG_RESET(PLUGIN_ENABLE_ROOT, false); + WRITE_CONFIG(PLUGIN_ENABLE, true); + WRITE_CONFIG(PLUGIN_ENABLE_ROOT, false); } if (cat.testFlag(SETTING::EDITOR)) { - WRITE_CONFIG_RESET(EDITOR_FONTSIZE, _defaultFont.pointSize()); - WRITE_CONFIG_RESET(EDITOR_SHOW_ADDR, true); - WRITE_CONFIG_RESET(EDITOR_SHOW_COL, true); - WRITE_CONFIG_RESET(EDITOR_SHOW_TEXT, true); - WRITE_CONFIG_RESET(EDITOR_FIND_MAXCOUNT, 100); - WRITE_CONFIG_RESET(EDITOR_COPY_LIMIT, 100); - WRITE_CONFIG_RESET(EDITOR_DECSTRLIMIT, 10); + WRITE_CONFIG(EDITOR_FONTSIZE, _defaultFont.pointSize()); + WRITE_CONFIG(EDITOR_SHOW_ADDR, true); + WRITE_CONFIG(EDITOR_SHOW_COL, true); + WRITE_CONFIG(EDITOR_SHOW_TEXT, true); + WRITE_CONFIG(EDITOR_FIND_MAXCOUNT, 100); + WRITE_CONFIG(EDITOR_COPY_LIMIT, 100); + WRITE_CONFIG(EDITOR_DECSTRLIMIT, 10); } if (cat.testFlag(SETTING::SCRIPT)) { - WRITE_CONFIG_RESET(SCRIPT_ENABLE, true); - WRITE_CONFIG_RESET(SCRIPT_TIMEOUT, 10); - WRITE_CONFIG_RESET(SCRIPT_ALLOW_USRSCRIPT_INROOT, false); - WRITE_CONFIG_RESET(SCRIPT_USRHIDECATS, QStringList()); - WRITE_CONFIG_RESET(SCRIPT_SYSHIDECATS, QStringList()); + WRITE_CONFIG(SCRIPT_ENABLE, true); + WRITE_CONFIG(SCRIPT_TIMEOUT, 10); + WRITE_CONFIG(SCRIPT_ALLOW_USRSCRIPT_INROOT, false); + WRITE_CONFIG(SCRIPT_USRHIDECATS, QStringList()); + WRITE_CONFIG(SCRIPT_SYSHIDECATS, QStringList()); } if (cat.testFlag(SETTING::OTHER)) { - WRITE_CONFIG_RESET(OTHER_USESYS_FILEDIALOG, true); + WRITE_CONFIG(OTHER_USESYS_FILEDIALOG, true); #ifdef WINGHEX_USE_FRAMELESS - WRITE_CONFIG_RESET(OTHER_USE_NATIVE_TITLEBAR, false); + WRITE_CONFIG(OTHER_USE_NATIVE_TITLEBAR, false); #endif - WRITE_CONFIG_RESET(OTHER_DONT_USE_SPLASH, false); - WRITE_CONFIG_RESET(OTHER_CHECK_UPDATE, false); - WRITE_CONFIG_RESET(OTHER_LOG_LEVEL, Logger::defaultLevel()); - WRITE_CONFIG_RESET(OTHER_LOG_COUNT, 20); + WRITE_CONFIG(OTHER_DONT_USE_SPLASH, false); + WRITE_CONFIG(OTHER_CHECK_UPDATE, false); + WRITE_CONFIG(OTHER_LOG_LEVEL, Logger::defaultLevel()); + WRITE_CONFIG(OTHER_LOG_COUNT, 20); } } @@ -481,8 +452,9 @@ void SettingManager::setDecodeStrlimit(qsizetype newDecodeStrlimit) { newDecodeStrlimit = qBound(qsizetype(100), newDecodeStrlimit, qsizetype(1024)); if (m_decodeStrlimit != newDecodeStrlimit) { + HANDLE_CONFIG; + WRITE_CONFIG(EDITOR_DECSTRLIMIT, newDecodeStrlimit); m_decodeStrlimit = newDecodeStrlimit; - _setUnsaved.setFlag(SETTING_ITEM::EDITOR_DECSTRLIMIT); Q_EMIT sigDecodeStrlimitChanged(m_decodeStrlimit); } } @@ -492,8 +464,9 @@ qsizetype SettingManager::copylimit() const { return m_copylimit; } void SettingManager::setCopylimit(qsizetype newCopylimit) { newCopylimit = qBound(qsizetype(100), newCopylimit, qsizetype(1024)); if (m_copylimit != newCopylimit) { + HANDLE_CONFIG; + WRITE_CONFIG(EDITOR_COPY_LIMIT, newCopylimit); m_copylimit = newCopylimit; - _setUnsaved.setFlag(SETTING_ITEM::EDITOR_COPY_LIMIT); Q_EMIT sigDecodeStrlimitChanged(m_copylimit); } } @@ -502,8 +475,9 @@ bool SettingManager::editorShowtext() const { return m_editorShowtext; } void SettingManager::setEditorShowtext(bool newEditorShowtext) { if (m_editorShowtext != newEditorShowtext) { + HANDLE_CONFIG; + WRITE_CONFIG(EDITOR_SHOW_TEXT, newEditorShowtext); m_editorShowtext = newEditorShowtext; - _setUnsaved.setFlag(SETTING_ITEM::EDITOR_SHOW_TEXT); } } @@ -511,8 +485,9 @@ bool SettingManager::editorShowcol() const { return m_editorShowcol; } void SettingManager::setEditorShowcol(bool newEditorShowcol) { if (m_editorShowcol != newEditorShowcol) { + HANDLE_CONFIG; + WRITE_CONFIG(EDITOR_SHOW_COL, newEditorShowcol); m_editorShowcol = newEditorShowcol; - _setUnsaved.setFlag(SETTING_ITEM::EDITOR_SHOW_COL); } } @@ -520,8 +495,9 @@ int SettingManager::editorfontSize() const { return m_editorfontSize; } void SettingManager::setEditorfontSize(int newEditorfontSize) { if (m_editorfontSize != newEditorfontSize) { + HANDLE_CONFIG; + WRITE_CONFIG(EDITOR_FONTSIZE, newEditorfontSize); m_editorfontSize = newEditorfontSize; - _setUnsaved.setFlag(SETTING_ITEM::EDITOR_FONTSIZE); Q_EMIT sigEditorfontSizeChanged(newEditorfontSize); } } @@ -530,8 +506,9 @@ int SettingManager::appfontSize() const { return m_appfontSize; } void SettingManager::setAppfontSize(int newAppfontSize) { if (m_appfontSize != newAppfontSize) { + HANDLE_CONFIG; + WRITE_CONFIG(APP_FONTSIZE, newAppfontSize); m_appfontSize = newAppfontSize; - _setUnsaved.setFlag(SETTING_ITEM::APP_FONTSIZE); } } @@ -539,8 +516,9 @@ bool SettingManager::enablePlgInRoot() const { return m_enablePlgInRoot; } void SettingManager::setEnablePlgInRoot(bool newEnablePlgInRoot) { if (m_enablePlgInRoot != newEnablePlgInRoot) { + HANDLE_CONFIG; + WRITE_CONFIG(PLUGIN_ENABLE_ROOT, newEnablePlgInRoot); m_enablePlgInRoot = newEnablePlgInRoot; - _setUnsaved.setFlag(SETTING_ITEM::PLUGIN_ENABLE_ROOT); } } @@ -548,8 +526,9 @@ QString SettingManager::defaultLang() const { return m_defaultLang; } void SettingManager::setDefaultLang(const QString &newDefaultLang) { if (m_defaultLang != newDefaultLang) { + HANDLE_CONFIG; + WRITE_CONFIG(APP_LANGUAGE, newDefaultLang); m_defaultLang = newDefaultLang; - _setUnsaved.setFlag(SETTING_ITEM::APP_LANGUAGE); } } @@ -564,8 +543,9 @@ QByteArray SettingManager::dockLayout() const { return m_dockLayout; } void SettingManager::setDockLayout(const QByteArray &newDockLayout) { if (m_dockLayout != newDockLayout) { + HANDLE_CONFIG; + WRITE_CONFIG(DOCK_LAYOUT, newDockLayout); m_dockLayout = newDockLayout; - _setUnsaved.setFlag(SETTING_ITEM::DOCK_LAYOUT); } } @@ -573,7 +553,8 @@ int SettingManager::themeID() const { return m_themeID; } void SettingManager::setThemeID(int newThemeID) { if (m_themeID != newThemeID) { + HANDLE_CONFIG; + WRITE_CONFIG(SKIN_THEME, newThemeID); m_themeID = newThemeID; - _setUnsaved.setFlag(SETTING_ITEM::SKIN_THEME); } } diff --git a/src/class/settingmanager.h b/src/class/settingmanager.h index a88c2a4..03fb704 100644 --- a/src/class/settingmanager.h +++ b/src/class/settingmanager.h @@ -40,141 +40,78 @@ public: ALL = APP | PLUGIN | EDITOR | SCRIPT | OTHER }; Q_DECLARE_FLAGS(SETTINGS, SETTING) -private: - // Flags to indicate whether the modification has been made. - // There are a maximum of 32 flags, - // but it is impossible to have more than this. - enum class SETTING_ITEM : quint32 { - DOCK_LAYOUT = 1u, - SCRIPT_DOCK_LAYOUT = 1u << 1, - APP_LASTUSED_PATH = 1u << 2, - SKIN_THEME = 1u << 3, - APP_FONTFAMILY = 1u << 4, - APP_FONTSIZE = 1u << 5, - APP_WINDOWSIZE = 1u << 6, - APP_LANGUAGE = 1u << 7, - PLUGIN_ENABLE = 1u << 8, - PLUGIN_ENABLE_ROOT = 1u << 9, - EDITOR_FONTSIZE = 1u << 10, - EDITOR_SHOW_ADDR = 1u << 11, - EDITOR_SHOW_COL = 1u << 12, - EDITOR_SHOW_TEXT = 1u << 13, - SCRIPT_TIMEOUT = 1u << 14, - EDITOR_FIND_MAXCOUNT = 1u << 15, - EDITOR_COPY_LIMIT = 1u << 16, - EDITOR_DECSTRLIMIT = 1u << 17, - EDITOR_RECENTFILES = 1u << 18, - SCRIPT_RECENTFILES = 1u << 19, - SCRIPT_ENABLE = 1u << 20, - SCRIPT_ALLOW_USRSCRIPT_INROOT = 1u << 21, - SCRIPT_USRHIDECATS = 1u << 22, - SCRIPT_SYSHIDECATS = 1u << 23, - OTHER_USESYS_FILEDIALOG = 1u << 24, - OTHER_USE_NATIVE_TITLEBAR = 1u << 25, - OTHER_DONT_USE_SPLASH = 1u << 26, - OTHER_LOG_LEVEL = 1u << 27, - OTHER_CHECK_UPDATE = 1u << 28, - OTHER_LOG_COUNT = 1u << 29, - }; - Q_DECLARE_FLAGS(SETTING_ITEMS, SETTING_ITEM) public: static SettingManager &instance(); - - ~SettingManager(); + virtual ~SettingManager(); QByteArray dockLayout() const; - void setDockLayout(const QByteArray &newDockLayout); - int themeID() const; - void setThemeID(int newThemeID); - QString defaultLang() const; - void setDefaultLang(const QString &newDefaultLang); - bool enablePlgInRoot() const; - void setEnablePlgInRoot(bool newEnablePlgInRoot); - int appfontSize() const; - void setAppfontSize(int newAppfontSize); - int editorfontSize() const; - void setEditorfontSize(int newEditorfontSize); - bool editorShowcol() const; - void setEditorShowcol(bool newEditorShowcol); - bool editorShowtext() const; - void setEditorShowtext(bool newEditorShowtext); - qsizetype copylimit() const; - void setCopylimit(qsizetype newCopylimit); - qsizetype decodeStrlimit() const; - void setDecodeStrlimit(qsizetype newDecodeStrlimit); - Qt::WindowState defaultWinState() const; - void setDefaultWinState(Qt::WindowState newDefaultWinState); - void save(SETTINGS cat = SETTING::ALL); void reset(SETTINGS cat); - void __reset(SETTINGS cat); QList recentHexFiles() const; - void - setRecentFiles(const QList &newRecentFiles); - bool enablePlugin() const; - void setEnablePlugin(bool newEnablePlugin); - bool editorShowHeader() const; - void setEditorShowHeader(bool newEditorShowAddr); - QString appFontFamily() const; - void setAppFontFamily(const QString &newAppFontFamily); - QList recentScriptFiles() const; - void setRecentScriptFiles( - const QList &newRecentScriptFiles); QStringList usrHideCats() const; QStringList sysHideCats() const; + QString lastUsedPath() const; + QByteArray scriptDockLayout() const; + bool useNativeFileDialog() const; + bool useNativeTitleBar() const; + int logLevel() const; + bool allowUsrScriptInRoot() const; + bool scriptEnabled() const; + bool dontUseSplash() const; + bool checkUpdate() const; + qsizetype logCount() const; + int scriptTimeout() const; + +public slots: + void setThemeID(int newThemeID); + void setDockLayout(const QByteArray &newDockLayout); + void setDefaultLang(const QString &newDefaultLang); + void setEnablePlgInRoot(bool newEnablePlgInRoot); + void setAppfontSize(int newAppfontSize); + void setEditorfontSize(int newEditorfontSize); + void setEditorShowcol(bool newEditorShowcol); + void setEditorShowtext(bool newEditorShowtext); + void setCopylimit(qsizetype newCopylimit); + void setDecodeStrlimit(qsizetype newDecodeStrlimit); + void setDefaultWinState(Qt::WindowState newDefaultWinState); + void + setRecentFiles(const QList &newRecentFiles); + void setEnablePlugin(bool newEnablePlugin); + void setEditorShowHeader(bool newEditorShowAddr); + void setAppFontFamily(const QString &newAppFontFamily); + void setRecentScriptFiles( + const QList &newRecentScriptFiles); void setSysHideCats(const QStringList &newSysHideCats); void setUsrHideCats(const QStringList &newUsrHideCats); - - QString lastUsedPath() const; void setLastUsedPath(const QString &newLastUsedPath); - - QByteArray scriptDockLayout() const; void setScriptDockLayout(const QByteArray &newScriptDockLayout); - - bool useNativeFileDialog() const; void setUseNativeFileDialog(bool newUseNativeFileDialog); - - bool useNativeTitleBar() const; void setUseNativeTitleBar(bool newUseNativeTitleBar); - - int logLevel() const; void setLogLevel(int newLogLevel); - - bool allowUsrScriptInRoot() const; void setAllowUsrScriptInRoot(bool newAllowUsrScriptInRoot); - - bool scriptEnabled() const; void setScriptEnabled(bool newScriptEnabled); - - bool dontUseSplash() const; void setDontUseSplash(bool newDontUseSplash); - - bool checkUpdate() const; void setCheckUpdate(bool newCheckUpdate); - - qsizetype logCount() const; void setLogCount(qsizetype newLogCount); - - int scriptTimeout() const; void setScriptTimeout(int newScriptTimeout); public: @@ -238,7 +175,6 @@ private: private: QFont _defaultFont; - SETTING_ITEMS _setUnsaved; }; #endif // SETTINGMANAGER_H diff --git a/src/dialog/mainwindow.cpp b/src/dialog/mainwindow.cpp index b309e84..7cf0090 100644 --- a/src/dialog/mainwindow.cpp +++ b/src/dialog/mainwindow.cpp @@ -293,7 +293,6 @@ MainWindow::MainWindow(SplashDialog *splash) : FramelessMainWindow() { QMessageBox::critical(this, qAppName(), tr("ScriptEngineInitFailed")); set.setScriptEnabled(false); - set.save(SettingManager::SCRIPT); throw CrashCode::ScriptInitFailed; } } @@ -4030,7 +4029,6 @@ void MainWindow::closeEvent(QCloseEvent *event) { if (m_scriptDialog) { m_scriptDialog->saveDockLayout(); set.setRecentFiles(m_recentmanager->saveRecent()); - set.save(); } PluginSystem::instance().destory(); diff --git a/src/dialog/scriptingdialog.cpp b/src/dialog/scriptingdialog.cpp index 13230c6..c54d9fd 100644 --- a/src/dialog/scriptingdialog.cpp +++ b/src/dialog/scriptingdialog.cpp @@ -278,7 +278,6 @@ bool ScriptingDialog::about2Close() { void ScriptingDialog::saveDockLayout() { auto &set = SettingManager::instance(); set.setScriptDockLayout(_savedLayout); - set.save(SettingManager::NONE); } void ScriptingDialog::buildUpRibbonBar() { diff --git a/src/dialog/settingdialog.cpp b/src/dialog/settingdialog.cpp index 3bfe140..dcb378f 100644 --- a/src/dialog/settingdialog.cpp +++ b/src/dialog/settingdialog.cpp @@ -23,21 +23,80 @@ #include "utilities.h" #include +#include #include SettingDialog::SettingDialog(QWidget *parent) : QWidget(parent), ui(new Ui::SettingDialog) { ui->setupUi(this); + connect(ui->listWidget, &QListWidget::currentItemChanged, this, + [this](QListWidgetItem *current, QListWidgetItem *previous) { + if (previous) { + auto page = m_pages.at( + ui->listWidget->indexFromItem(current).row()); + if (page->containUnsavedChanges()) { + auto ret = WingMessageBox::question( + this, tr("UnsavedChanges"), + tr("SaveChangesDiscardLeave?")); + if (ret == QMessageBox::Yes) { + page->discard(); + } else { + ui->listWidget->setCurrentItem(previous); + return; + } + } + } + if (current) { + auto curpage = m_pages.at( + ui->listWidget->indexFromItem(current).row()); + ui->stackedWidget->setCurrentWidget(curpage); + } + }); + connect(ui->btnRestore, &QPushButton::clicked, this, [this]() { + auto idx = ui->listWidget->currentRow(); + auto page = m_pages.at(idx); + page->restore(); + }); + _dialog = new FramelessDialogBase(parent); _dialog->buildUpContent(this); _dialog->setWindowTitle(this->windowTitle()); - connect(_dialog, &FramelessDialogBase::rejected, this, [=] { - for (auto &page : m_pages) { - page->cancel(); + + ui->btnRestore->setStyleSheet( + QStringLiteral("QToolButton::down-arrow { width:10px; height:10px; " + "subcontrol-position:right center; " + "subcontrol-origin:content; left: -2px;")); + auto menu = new QMenu(ui->btnRestore); + auto a = menu->addAction(tr("Restore current")); + connect(a, &QAction::triggered, this, [this]() { + auto ret = WingMessageBox::warning(this, tr("Restore"), + tr("RestoreCurPageSets?"), + QMessageBox::Yes | QMessageBox::No); + if (ret == QMessageBox::No) { + return; + } + auto idx = ui->listWidget->currentRow(); + if (idx > 0) { + auto page = m_pages.at(idx); + page->restore(); } }); + a = menu->addAction(tr("Restore all")); + connect(a, &QAction::triggered, this, [this]() { + auto ret = + WingMessageBox::critical(this, tr("Restore"), tr("RestoreAllSets?"), + QMessageBox::Yes | QMessageBox::No); + if (ret == QMessageBox::No) { + return; + } + for (auto &p : m_pages) { + p->restore(); + } + }); + ui->btnRestore->setMenu(menu); + Utilities::moveToCenter(this); } @@ -100,47 +159,3 @@ void SettingDialog::toastTakeEffectReboot() { tr("TakeEffectRestart")); } } - -void SettingDialog::on_buttonBox_clicked(QAbstractButton *button) { - auto btnbox = ui->buttonBox; - if (button == btnbox->button(QDialogButtonBox::Ok)) { - for (auto &page : m_pages) { - page->apply(); - } - _dialog->done(1); - } else if (button == btnbox->button(QDialogButtonBox::Apply)) { - for (auto &page : m_pages) { - page->apply(); - } - } else if (button == btnbox->button(QDialogButtonBox::RestoreDefaults)) { - auto index = ui->listWidget->currentRow(); - if (index >= 0) { - m_pages.at(index)->reset(); - } - toastTakeEffectReboot(); - } else if (button == btnbox->button(QDialogButtonBox::Reset)) { - auto res = WingMessageBox::warning( - this, qAppName(), - tr("This will reset all settings. Are you sure to continue?"), - QMessageBox::Yes | QMessageBox::No); - - if (res == QMessageBox::No) { - return; - } - - for (auto &page : m_pages) { - page->reset(); - } - - toastTakeEffectReboot(); - } else if (button == btnbox->button(QDialogButtonBox::Cancel)) { - for (auto &page : m_pages) { - page->cancel(); - } - _dialog->done(0); - } -} - -void SettingDialog::on_listWidget_currentRowChanged(int currentRow) { - ui->stackedWidget->setCurrentWidget(m_pages.at(currentRow)); -} diff --git a/src/dialog/settingdialog.h b/src/dialog/settingdialog.h index e79f232..86d7510 100644 --- a/src/dialog/settingdialog.h +++ b/src/dialog/settingdialog.h @@ -31,8 +31,9 @@ class SettingDialog : public QWidget { public: explicit SettingDialog(QWidget *parent = nullptr); - ~SettingDialog(); + virtual ~SettingDialog(); +public: void addPage(WingHex::SettingPage *page); void build(); // you can only call once void showConfig(int index = -1); @@ -41,11 +42,6 @@ public: public slots: void toastTakeEffectReboot(); -private slots: - void on_buttonBox_clicked(QAbstractButton *button); - - void on_listWidget_currentRowChanged(int currentRow); - private: Ui::SettingDialog *ui; QList m_pages; diff --git a/src/dialog/settingdialog.ui b/src/dialog/settingdialog.ui index 3146ef0..5997dec 100644 --- a/src/dialog/settingdialog.ui +++ b/src/dialog/settingdialog.ui @@ -6,8 +6,8 @@ 0 0 - 750 - 800 + 700 + 750 @@ -23,45 +23,69 @@ :/img/general.png:/img/general.png - - + + + 10 + + + 10 + + + 10 + + 10 - Qt::Horizontal + Qt::Orientation::Horizontal - - false - - - - - 200 - 0 - - - - QAbstractItemView::NoEditTriggers - - - false - + + + + + + + 200 + 0 + + + + QAbstractItemView::EditTrigger::NoEditTriggers + + + false + + + + + + + + 0 + 0 + + + + Restore + + + QToolButton::ToolButtonPopupMode::InstantPopup + + + Qt::ToolButtonStyle::ToolButtonTextOnly + + + Qt::ArrowType::DownArrow + + + + - - - - Qt::Horizontal - - - QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok|QDialogButtonBox::Reset|QDialogButtonBox::RestoreDefaults - - - diff --git a/src/settings/clangformatsetdialog.cpp b/src/settings/clangformatsetdialog.cpp index a97b332..0051706 100644 --- a/src/settings/clangformatsetdialog.cpp +++ b/src/settings/clangformatsetdialog.cpp @@ -10,20 +10,27 @@ ClangFormatSetDialog::ClangFormatSetDialog(QWidget *parent) : WingHex::SettingPage(parent), ui(new Ui::ClangFormatSetDialog) { ui->setupUi(this); - auto &clang = ClangFormatManager::instance(); - ui->cbStyle->addItems(clang.supportedStyles()); + auto clang = &ClangFormatManager::instance(); + ui->cbStyle->addItems(clang->supportedStyles()); ui->leLocation->setText(ClangFormatManager::getProgramName()); - if (clang.exists()) { - ui->lblClangPath->setText(clang.path()); - ui->lblClangPath->setToolTip(clang.path()); - ui->lblClangVersion->setText(clang.version()); + if (clang->exists()) { + ui->lblClangPath->setText(clang->path()); + ui->lblClangPath->setToolTip(clang->path()); + ui->lblClangVersion->setText(clang->version()); } else { ui->lblClangPath->setStyleSheet(QStringLiteral("color:red")); } reload(); + + connect(ui->cbEnabled, &QCheckBox::toggled, clang, + &ClangFormatManager::setEnabled); + connect(ui->cbAutoFmt, &QCheckBox::toggled, clang, + &ClangFormatManager::setAutoFormat); + connect(ui->cbStyle, &QComboBox::currentTextChanged, clang, + &ClangFormatManager::setClangStyle); } ClangFormatSetDialog::~ClangFormatSetDialog() { delete ui; } @@ -59,21 +66,12 @@ QString ClangFormatSetDialog::id() const { return QStringLiteral("ClangFormat"); } -void ClangFormatSetDialog::apply() { - auto &clang = ClangFormatManager::instance(); - clang.setEnabled(ui->cbEnabled->isChecked()); - clang.setAutoFormat(ui->cbAutoFmt->isChecked()); - clang.setClangStyle(ui->cbStyle->currentText()); -} - -void ClangFormatSetDialog::reset() { +void ClangFormatSetDialog::restore() { auto &clang = ClangFormatManager::instance(); clang.reset(); reload(); } -void ClangFormatSetDialog::cancel() { reload(); } - void ClangFormatSetDialog::on_cbStyle_currentTextChanged(const QString &arg1) { ui->btnStyleCustom->setEnabled(arg1 == QStringLiteral("Custom")); } diff --git a/src/settings/clangformatsetdialog.h b/src/settings/clangformatsetdialog.h index b73154b..cc846ed 100644 --- a/src/settings/clangformatsetdialog.h +++ b/src/settings/clangformatsetdialog.h @@ -30,9 +30,7 @@ public: // SettingPage interface public: - virtual void apply() override; - virtual void reset() override; - virtual void cancel() override; + virtual void restore() override; private slots: void on_cbStyle_currentTextChanged(const QString &arg1); diff --git a/src/settings/clangformatsetdialog.ui b/src/settings/clangformatsetdialog.ui index eb1b406..821310c 100644 --- a/src/settings/clangformatsetdialog.ui +++ b/src/settings/clangformatsetdialog.ui @@ -18,16 +18,16 @@ 8 - 10 + 0 - 10 + 0 - 10 + 0 - 10 + 0 @@ -58,7 +58,7 @@ - - Qt::AlignCenter + Qt::AlignmentFlag::AlignCenter @@ -75,7 +75,7 @@ - - Qt::AlignCenter + Qt::AlignmentFlag::AlignCenter @@ -184,7 +184,7 @@ - Qt::Vertical + Qt::Orientation::Vertical diff --git a/src/settings/editorsettingdialog.cpp b/src/settings/editorsettingdialog.cpp index e3c3fef..0f7f81b 100644 --- a/src/settings/editorsettingdialog.cpp +++ b/src/settings/editorsettingdialog.cpp @@ -25,6 +25,20 @@ EditorSettingDialog::EditorSettingDialog(QWidget *parent) : WingHex::SettingPage(parent), ui(new Ui::EditorSettingDialog) { ui->setupUi(this); reload(); + + auto sm = &SettingManager::instance(); + connect(ui->cbShowaddr, &QCheckBox::toggled, sm, + &SettingManager::setEditorShowHeader); + connect(ui->cbShowcol, &QCheckBox::toggled, sm, + &SettingManager::setEditorShowcol); + connect(ui->cbShowtext, &QCheckBox::toggled, sm, + &SettingManager::setEditorShowtext); + connect(ui->sbFontSize, &QSpinBox::valueChanged, sm, + &SettingManager::setEditorfontSize); + connect(ui->sbDecStrLimit, &QSpinBox::valueChanged, sm, + &SettingManager::setDecodeStrlimit); + connect(ui->sbCopyLimit, &QSpinBox::valueChanged, sm, + &SettingManager::setCopylimit); } EditorSettingDialog::~EditorSettingDialog() { delete ui; } @@ -45,20 +59,7 @@ QString EditorSettingDialog::name() const { return tr("Editor"); } QString EditorSettingDialog::id() const { return QStringLiteral("Editor"); } -void EditorSettingDialog::apply() { - auto &set = SettingManager::instance(); - set.setEditorShowHeader(ui->cbShowaddr->isChecked()); - set.setEditorShowcol(ui->cbShowcol->isChecked()); - set.setEditorShowtext(ui->cbShowtext->isChecked()); - set.setEditorfontSize(ui->sbFontSize->value()); - set.setDecodeStrlimit(ui->sbDecStrLimit->value()); - set.setCopylimit(ui->sbCopyLimit->value()); - set.save(SettingManager::SETTING::EDITOR); -} - -void EditorSettingDialog::reset() { +void EditorSettingDialog::restore() { SettingManager::instance().reset(SettingManager::SETTING::EDITOR); reload(); } - -void EditorSettingDialog::cancel() { reload(); } diff --git a/src/settings/editorsettingdialog.h b/src/settings/editorsettingdialog.h index 4485af2..1044470 100644 --- a/src/settings/editorsettingdialog.h +++ b/src/settings/editorsettingdialog.h @@ -42,9 +42,8 @@ public: virtual QIcon categoryIcon() const override; virtual QString name() const override; virtual QString id() const override; - virtual void apply() override; - virtual void reset() override; - virtual void cancel() override; + + virtual void restore() override; }; #endif // EDITORSETTINGDIALOG_H diff --git a/src/settings/editorsettingdialog.ui b/src/settings/editorsettingdialog.ui index e3f1781..6750bf2 100644 --- a/src/settings/editorsettingdialog.ui +++ b/src/settings/editorsettingdialog.ui @@ -21,16 +21,16 @@ - 10 + 0 - 10 + 0 - 10 + 0 - 10 + 0 @@ -185,7 +185,7 @@ - Qt::Vertical + Qt::Orientation::Vertical diff --git a/src/settings/generalsettingdialog.cpp b/src/settings/generalsettingdialog.cpp index f13b782..7f0d8ef 100644 --- a/src/settings/generalsettingdialog.cpp +++ b/src/settings/generalsettingdialog.cpp @@ -65,6 +65,34 @@ GeneralSettingDialog::GeneralSettingDialog(QWidget *parent) this, &GeneralSettingDialog::optionNeedRestartChanged); reload(); + + auto sm = &SettingManager::instance(); + connect(ui->cbLanguage, &QComboBox::currentIndexChanged, sm, + [this](int index) { + auto data = ui->cbLanguage->itemData(index).toString(); + SettingManager::instance().setDefaultLang(data); + }); + connect(ui->sbFontSize, &QSpinBox::valueChanged, sm, + &SettingManager::setAppfontSize); + connect(ui->cbFont, &QFontComboBox::currentTextChanged, sm, + &SettingManager::setAppFontFamily); + connect(ui->cbTheme, &QComboBox::currentIndexChanged, sm, + &SettingManager::setThemeID); + connect(ui->cbWinState, &QComboBox::currentIndexChanged, sm, [](int index) { + Qt::WindowState state; + switch (index) { + case 0: + state = Qt::WindowState::WindowNoState; + break; + case 1: + state = Qt::WindowState::WindowMaximized; + break; + default: + state = Qt::WindowState::WindowFullScreen; + break; + } + SettingManager::instance().setDefaultWinState(state); + }); } GeneralSettingDialog::~GeneralSettingDialog() { delete ui; } @@ -117,32 +145,7 @@ QString GeneralSettingDialog::name() const { return tr("General"); } QString GeneralSettingDialog::id() const { return QStringLiteral("General"); } -void GeneralSettingDialog::apply() { - auto &set = SettingManager::instance(); - set.setDefaultLang(ui->cbLanguage->currentData().toString()); - set.setAppfontSize(ui->sbFontSize->value()); - set.setAppFontFamily(ui->cbFont->currentText()); - set.setThemeID(ui->cbTheme->currentIndex()); - auto s = ui->cbWinState->currentIndex(); - Qt::WindowState state; - switch (s) { - case 0: - state = Qt::WindowState::WindowNoState; - break; - case 1: - state = Qt::WindowState::WindowMaximized; - break; - default: - state = Qt::WindowState::WindowFullScreen; - break; - } - set.setDefaultWinState(state); - set.save(SettingManager::SETTING::APP); -} - -void GeneralSettingDialog::reset() { +void GeneralSettingDialog::restore() { SettingManager::instance().reset(SettingManager::SETTING::APP); reload(); } - -void GeneralSettingDialog::cancel() { reload(); } diff --git a/src/settings/generalsettingdialog.h b/src/settings/generalsettingdialog.h index 9732f4f..59d4926 100644 --- a/src/settings/generalsettingdialog.h +++ b/src/settings/generalsettingdialog.h @@ -42,9 +42,8 @@ public: virtual QIcon categoryIcon() const override; virtual QString name() const override; virtual QString id() const override; - virtual void apply() override; - virtual void reset() override; - virtual void cancel() override; + + virtual void restore() override; }; #endif // GENERALSETTINGDIALOG_H diff --git a/src/settings/generalsettingdialog.ui b/src/settings/generalsettingdialog.ui index 0dbaa5c..fb39889 100644 --- a/src/settings/generalsettingdialog.ui +++ b/src/settings/generalsettingdialog.ui @@ -15,16 +15,16 @@ - 10 + 0 - 10 + 0 - 10 + 0 - 10 + 0 diff --git a/src/settings/othersettingsdialog.cpp b/src/settings/othersettingsdialog.cpp index a367bdf..50dde8a 100644 --- a/src/settings/othersettingsdialog.cpp +++ b/src/settings/othersettingsdialog.cpp @@ -64,6 +64,20 @@ OtherSettingsDialog::OtherSettingsDialog(QWidget *parent) this, &OtherSettingsDialog::optionNeedRestartChanged); reload(); + + auto set = &SettingManager::instance(); + connect(ui->cbDontShowSplash, &QCheckBox::toggled, set, + &SettingManager::setDontUseSplash); + connect(ui->cbNativeFileDialog, &QCheckBox::toggled, set, + &SettingManager::setUseNativeFileDialog); +#ifdef WINGHEX_USE_FRAMELESS + connect(ui->cbNativeTitile, &QCheckBox::toggled, set, + &SettingManager::setUseNativeTitleBar); +#endif + connect(ui->cbCheckWhenStartup, &QCheckBox::toggled, set, + &SettingManager::setCheckUpdate); + connect(ui->cbLogLevel, &QComboBox::currentIndexChanged, set, + &SettingManager::setLogLevel); } OtherSettingsDialog::~OtherSettingsDialog() { delete ui; } @@ -86,21 +100,7 @@ QString OtherSettingsDialog::name() const { return tr("Others"); } QString OtherSettingsDialog::id() const { return QStringLiteral("Others"); } -void OtherSettingsDialog::apply() { - auto &set = SettingManager::instance(); - set.setDontUseSplash(ui->cbDontShowSplash->isChecked()); - set.setUseNativeFileDialog(ui->cbNativeFileDialog->isChecked()); -#ifdef WINGHEX_USE_FRAMELESS - set.setUseNativeTitleBar(ui->cbNativeTitile->isChecked()); -#endif - set.setCheckUpdate(ui->cbCheckWhenStartup->isChecked()); - set.setLogLevel(ui->cbLogLevel->currentIndex()); - set.save(SettingManager::OTHER); -} - -void OtherSettingsDialog::reset() { +void OtherSettingsDialog::restore() { SettingManager::instance().reset(SettingManager::SETTING::OTHER); reload(); } - -void OtherSettingsDialog::cancel() { reload(); } diff --git a/src/settings/othersettingsdialog.h b/src/settings/othersettingsdialog.h index b26b3b9..a893365 100644 --- a/src/settings/othersettingsdialog.h +++ b/src/settings/othersettingsdialog.h @@ -42,9 +42,8 @@ public: virtual QIcon categoryIcon() const override; virtual QString name() const override; virtual QString id() const override; - virtual void apply() override; - virtual void reset() override; - virtual void cancel() override; + + virtual void restore() override; }; #endif // OTHERSETTINGSDIALOG_H diff --git a/src/settings/othersettingsdialog.ui b/src/settings/othersettingsdialog.ui index c4f7392..f9836b9 100644 --- a/src/settings/othersettingsdialog.ui +++ b/src/settings/othersettingsdialog.ui @@ -14,6 +14,18 @@ + + 0 + + + 0 + + + 0 + + + 0 + @@ -117,7 +129,7 @@ - Qt::Vertical + Qt::Orientation::Vertical diff --git a/src/settings/pluginsettingdialog.cpp b/src/settings/pluginsettingdialog.cpp index 0d219db..5710d8e 100644 --- a/src/settings/pluginsettingdialog.cpp +++ b/src/settings/pluginsettingdialog.cpp @@ -85,6 +85,12 @@ PluginSettingDialog::PluginSettingDialog(QWidget *parent) } else { ui->txtm->setText(tr("NoMonitorPlugin")); } + + auto set = &SettingManager::instance(); + connect(ui->cbEnablePlugin, &QCheckBox::toggled, set, + &SettingManager::setEnablePlugin); + connect(ui->cbEnablePluginRoot, &QCheckBox::toggled, set, + &SettingManager::setEnablePlgInRoot); } PluginSettingDialog::~PluginSettingDialog() { delete ui; } @@ -103,20 +109,11 @@ QString PluginSettingDialog::name() const { return tr("Plugin"); } QString PluginSettingDialog::id() const { return QStringLiteral("Plugin"); } -void PluginSettingDialog::apply() { - auto &set = SettingManager::instance(); - set.setEnablePlugin(ui->cbEnablePlugin->isChecked()); - set.setEnablePlgInRoot(ui->cbEnablePluginRoot->isChecked()); - set.save(SettingManager::SETTING::PLUGIN); -} - -void PluginSettingDialog::reset() { +void PluginSettingDialog::restore() { SettingManager::instance().reset(SettingManager::SETTING::PLUGIN); reload(); } -void PluginSettingDialog::cancel() { reload(); } - void PluginSettingDialog::on_devlist_currentRowChanged(int currentRow) { if (currentRow < 0) { return; diff --git a/src/settings/pluginsettingdialog.h b/src/settings/pluginsettingdialog.h index ff1ac3b..0517293 100644 --- a/src/settings/pluginsettingdialog.h +++ b/src/settings/pluginsettingdialog.h @@ -42,9 +42,8 @@ public: virtual QIcon categoryIcon() const override; virtual QString name() const override; virtual QString id() const override; - virtual void apply() override; - virtual void reset() override; - virtual void cancel() override; + + virtual void restore() override; private slots: void on_devlist_currentRowChanged(int currentRow); diff --git a/src/settings/pluginsettingdialog.ui b/src/settings/pluginsettingdialog.ui index f9cd276..9111f8b 100644 --- a/src/settings/pluginsettingdialog.ui +++ b/src/settings/pluginsettingdialog.ui @@ -15,16 +15,16 @@ - 10 + 0 - 10 + 0 - 10 + 0 - 10 + 0 diff --git a/src/settings/qeditconfig.cpp b/src/settings/qeditconfig.cpp index 9e02ce0..114245f 100644 --- a/src/settings/qeditconfig.cpp +++ b/src/settings/qeditconfig.cpp @@ -173,70 +173,87 @@ QEditConfig::QEditConfig(bool isConsole, QWidget *w) } reload(); + + auto set = &ScriptSettings::instance(); + if (m_isConsole) { + connect(ui->cbTheme, &QComboBox::currentIndexChanged, set, [this]() { + auto &set = ScriptSettings::instance(); + if (ui->cbTheme->currentIndex() == 0) { + set.setConsoleTheme({}); + } else { + set.setConsoleTheme(ui->cbTheme->currentText()); + } + }); + connect(ui->cbFont, &QFontComboBox::currentFontChanged, set, + [](const QFont &font) { + ScriptSettings::instance().setConsoleFontFamily( + font.family()); + }); + connect(ui->spnFontSize, &QSpinBox::valueChanged, set, + &ScriptSettings::setConsoleFontSize); + connect(ui->spnTabWidth, &QSpinBox::valueChanged, set, + &ScriptSettings::setConsoleTabWidth); + connect(ui->cbIndentation, &QComboBox::currentIndexChanged, set, + [this](int index) { + auto data = ui->cbIndentation->itemData(index); + ScriptSettings::instance().setConsoleInden(data.toInt()); + }); + connect(ui->chkMatchBraces, &QCheckBox::toggled, set, + &ScriptSettings::setConsoleMatchBraces); + connect(ui->chkShowWhitespace, &QCheckBox::toggled, set, + &ScriptSettings::setConsoleShowWhiteSpace); + connect(ui->chkAutoCloseChar, &QCheckBox::toggled, set, + &ScriptSettings::setConsoleAutoCloseChar); + } else { + connect(ui->cbTheme, &QComboBox::currentIndexChanged, set, [this]() { + auto &set = ScriptSettings::instance(); + if (ui->cbTheme->currentIndex() == 0) { + set.setEditorTheme({}); + } else { + set.setEditorTheme(ui->cbTheme->currentText()); + } + }); + connect(ui->cbFont, &QFontComboBox::currentFontChanged, set, + [](const QFont &font) { + ScriptSettings::instance().setEditorFontFamily( + font.family()); + }); + connect(ui->spnFontSize, &QSpinBox::valueChanged, set, + &ScriptSettings::setEditorFontSize); + connect(ui->spnTabWidth, &QSpinBox::valueChanged, set, + &ScriptSettings::setEditorTabWidth); + connect(ui->cbIndentation, &QComboBox::currentIndexChanged, set, + [this](int index) { + auto data = ui->cbIndentation->itemData(index); + ScriptSettings::instance().setEditorInden(data.toInt()); + }); + connect(ui->chkMatchBraces, &QCheckBox::toggled, set, + &ScriptSettings::setEditorShowLineNumber); + connect(ui->chkShowFolding, &QCheckBox::toggled, set, + &ScriptSettings::setEditorFolding); + connect(ui->chkShowIndentGuides, &QCheckBox::toggled, set, + &ScriptSettings::setEditorShowGuideLine); + connect(ui->chkWordWrap, &QCheckBox::toggled, set, + &ScriptSettings::setEditorWordWrap); + connect(ui->chkLongLineEdge, &QCheckBox::toggled, set, + &ScriptSettings::setEditorShowLineEdges); + connect(ui->chkShowWhitespace, &QCheckBox::toggled, set, + &ScriptSettings::setEditorShowWhiteSpace); + connect(ui->chkAutoCloseChar, &QCheckBox::toggled, set, + &ScriptSettings::setEditorAutoCloseChar); + connect(ui->chkAutoIden, &QCheckBox::toggled, set, + &ScriptSettings::setEditorAutoIden); + } } QEditConfig::~QEditConfig() { delete ui; } -/*! - \brief Apply changes -*/ -void QEditConfig::apply() { - auto &set = ScriptSettings::instance(); - if (m_isConsole) { - if (ui->cbTheme->currentIndex() == 0) { - set.setConsoleTheme({}); - } else { - set.setConsoleTheme(ui->cbTheme->currentText()); - } - - set.setConsoleFontFamily(ui->cbFont->currentFont().family()); - set.setConsoleFontSize(ui->spnFontSize->value()); - set.setConsoleTabWidth(ui->spnTabWidth->value()); - set.setConsoleInden(ui->cbIndentation->currentData().toInt()); - - set.setConsoleMatchBraces(ui->chkMatchBraces->isChecked()); - set.setConsoleShowWhiteSpace(ui->chkShowWhitespace->isChecked()); - set.setConsoleAutoCloseChar(ui->chkAutoCloseChar->isChecked()); - } else { - if (ui->cbTheme->currentIndex() == 0) { - set.setEditorTheme({}); - } else { - set.setEditorTheme(ui->cbTheme->currentText()); - } - - set.setEditorFontFamily(ui->cbFont->currentFont().family()); - set.setEditorFontSize(ui->spnFontSize->value()); - set.setEditorTabWidth(ui->spnTabWidth->value()); - set.setEditorInden(ui->cbIndentation->currentData().toInt()); - - set.setEditorShowLineNumber(ui->chkShowLineNumber->isChecked()); - set.setEditorFolding(ui->chkShowFolding->isChecked()); - set.setEditorShowGuideLine(ui->chkShowIndentGuides->isChecked()); - set.setEditorWordWrap(ui->chkWordWrap->isChecked()); - set.setEditorShowLineEdges(ui->chkLongLineEdge->isChecked()); - set.setEditorMatchBraces(ui->chkMatchBraces->isChecked()); - set.setEditorShowWhiteSpace(ui->chkShowWhitespace->isChecked()); - set.setEditorAutoCloseChar(ui->chkAutoCloseChar->isChecked()); - set.setEditorAutoIden(ui->chkAutoIden->isChecked()); - } - set.save(m_isConsole ? ScriptSettings::CONSOLE : ScriptSettings::EDITOR); -} - -/*! - \brief Reset the subcontrols to reflect the current settings - - The name can be a bit misleading at first, it has been chosen - because it directly maps to the effect a "cancel" button would - have on the widget -*/ -void QEditConfig::cancel() { reload(); } - /*! \brief Restore default values for all subcontrols \note The widgets are changed but these changes are NOT applied. */ -void QEditConfig::reset() { +void QEditConfig::restore() { auto &set = ScriptSettings::instance(); set.reset(m_isConsole ? ScriptSettings::CONSOLE : ScriptSettings::EDITOR); reload(); diff --git a/src/settings/qeditconfig.h b/src/settings/qeditconfig.h index e8e3fea..954dadd 100644 --- a/src/settings/qeditconfig.h +++ b/src/settings/qeditconfig.h @@ -40,9 +40,8 @@ public: virtual QIcon categoryIcon() const override; virtual QString name() const override; virtual QString id() const override; - virtual void apply() override; - virtual void cancel() override; - virtual void reset() override; + + virtual void restore() override; private: void reload(); diff --git a/src/settings/qeditconfig.ui b/src/settings/qeditconfig.ui index c8d4285..51bc174 100644 --- a/src/settings/qeditconfig.ui +++ b/src/settings/qeditconfig.ui @@ -14,6 +14,18 @@ QLayout::SizeConstraint::SetMinAndMaxSize + + 0 + + + 0 + + + 0 + + + 0 + diff --git a/src/settings/scriptsettingdialog.cpp b/src/settings/scriptsettingdialog.cpp index ebd5e34..f9d4b42 100644 --- a/src/settings/scriptsettingdialog.cpp +++ b/src/settings/scriptsettingdialog.cpp @@ -38,6 +38,44 @@ ScriptSettingDialog::ScriptSettingDialog(QWidget *parent) this, &ScriptSettingDialog::optionNeedRestartChanged); loadData(); + + connect(ui->listWidget, &QListWidget::itemChanged, this, + [this](QListWidgetItem *item) { + auto var = item->data(Qt::UserRole); + if (var.isValid()) { + auto meta = var.value(); + switch (item->checkState()) { + case Qt::Unchecked: { + if (meta.isSys) { + m_sysHideCats.append(meta.rawName); + } else { + m_usrHideCats.append(meta.rawName); + } + } break; + case Qt::Checked: { + if (meta.isSys) { + m_sysHideCats.removeOne(meta.rawName); + } else { + m_usrHideCats.removeOne(meta.rawName); + } + } break; + case Qt::PartiallyChecked: + break; + } + } + + auto &set = SettingManager::instance(); + set.setUsrHideCats(m_sysHideCats); + set.setSysHideCats(m_usrHideCats); + }); + + auto set = &SettingManager::instance(); + connect(ui->cbEnable, &QCheckBox::toggled, set, + &SettingManager::setScriptEnabled); + connect(ui->cbAllowUsrScript, &QCheckBox::toggled, set, + &SettingManager::setAllowUsrScriptInRoot); + connect(ui->sbTimeout, &QSpinBox::valueChanged, set, + &SettingManager::setScriptTimeout); } ScriptSettingDialog::~ScriptSettingDialog() { delete ui; } @@ -91,46 +129,12 @@ QString ScriptSettingDialog::name() const { return tr("Script"); } QString ScriptSettingDialog::id() const { return QStringLiteral("Script"); } -void ScriptSettingDialog::apply() { - QStringList usrHideCats; - QStringList sysHideCats; - - auto total = ui->listWidget->count(); - for (int i = 0; i < total; ++i) { - auto lw = ui->listWidget->item(i); - auto var = lw->data(Qt::UserRole); - if (var.isValid()) { - auto meta = var.value(); - if (lw->checkState() == Qt::Unchecked) { - if (meta.isSys) { - sysHideCats << meta.rawName; - } else { - usrHideCats << meta.rawName; - } - } - } - } - - auto &set = SettingManager::instance(); - set.setScriptEnabled(ui->cbEnable->isChecked()); - set.setAllowUsrScriptInRoot(ui->cbAllowUsrScript->isChecked()); - set.setScriptTimeout(ui->sbTimeout->value()); - set.setUsrHideCats(usrHideCats); - set.setSysHideCats(sysHideCats); - set.save(SettingManager::SCRIPT); - - m_usrHideCats = usrHideCats; - m_sysHideCats = sysHideCats; -} - -void ScriptSettingDialog::reset() { +void ScriptSettingDialog::restore() { auto &set = SettingManager::instance(); set.reset(SettingManager::SCRIPT); loadData(); } -void ScriptSettingDialog::cancel() { loadData(); } - void ScriptSettingDialog::on_btnRefresh_clicked() { ui->listWidget->clear(); ScriptManager::instance().refresh(); diff --git a/src/settings/scriptsettingdialog.h b/src/settings/scriptsettingdialog.h index c873140..229448c 100644 --- a/src/settings/scriptsettingdialog.h +++ b/src/settings/scriptsettingdialog.h @@ -49,9 +49,8 @@ public: virtual QIcon categoryIcon() const override; virtual QString name() const override; virtual QString id() const override; - virtual void apply() override; - virtual void reset() override; - virtual void cancel() override; + + virtual void restore() override; private slots: void on_btnRefresh_clicked(); diff --git a/src/settings/scriptsettingdialog.ui b/src/settings/scriptsettingdialog.ui index b7b6f3b..87a4802 100644 --- a/src/settings/scriptsettingdialog.ui +++ b/src/settings/scriptsettingdialog.ui @@ -14,6 +14,18 @@ + + 0 + + + 0 + + + 0 + + + 0 +