feat: 重构信号样式区并统一主题化弹出菜单
样式编辑区: - 移除顶部「样式 + 信号名 + 文件名」标题行,选中信号即代表编辑目标。 - 绘制方式取消阶梯选项,仅保留线段/散点/点线,标签由「方式」改为「样式」。 - 线宽改为「最细预设 + 数值旋钮 + 最粗预设」:中间为带左右增减箭头的输入框, 步进 0.2px,取值范围 0.5-6.0px,并标注单位为 px。 - 颜色在 10 个预设色块后新增带加号图标的方格,点击展开 RGB 三通道滑块面板, 可实时预览并显示十六进制值;点击面板外任意位置收起。 - 移除网格归属下拉框,改由每条信号行末尾的 G 徽标承载,点击弹出网格归属菜单。 信号面板与菜单: - 文件分组行新增关闭按钮,可直接从工作区移除该文件,与整体风格保持一致。 - 新增 PopupMenu 组件:绘制在窗口后备缓冲区内的自绘菜单,含圆角、投影、悬停高亮、 单选对勾、色块行与分组标题,彻底替换系统默认弹出菜单; 菜单打开期间接管鼠标与键盘(Esc / 上下键 / 回车),失焦或在菜单外释放时自动关闭。 - 信号、文件、网格、标签页四类右键菜单全部改用该组件。 其他修复: - 信号名称不再保留尾部单位括号,避免名称后再重复显示单位。 - 数据模型移除 DrawMode::STEP 枚举。 - 标签栏与信号面板弹出菜单后补充重绘请求,修复菜单不显示的问题。
This commit is contained in:
1 parent
9c6c374cce
commit
eb868b2679
12 files changed
+2148
-531
No files matched your search
@@ -11,6 +11,7 @@
|
||||
#include "DataModel.hpp"
|
||||
#include "PaintUtil.hpp"
|
||||
#include "PlotView.hpp"
|
||||
#include "PopupMenu.hpp"
|
||||
#include "SignalPanel.hpp"
|
||||
#include "TabBar.hpp"
|
||||
#include "Theme.hpp"
|
||||
@@ -186,11 +187,17 @@ namespace jdi
|
||||
void OnTabBarResult(const TabBarResult& result);
|
||||
|
||||
/**
|
||||
* @brief 弹出标签页右键菜单。
|
||||
* @param [IN] result 上下文菜单请求。
|
||||
* @brief 弹出标签页右键菜单(主题化自绘菜单)。
|
||||
* @param [IN] result 标签栏交互结果。
|
||||
*/
|
||||
void ShowTabContextMenu(const TabBarResult& result);
|
||||
|
||||
/**
|
||||
* @brief 派发弹出菜单的选择结果。
|
||||
* @param [IN] result 菜单选择结果。
|
||||
*/
|
||||
void DispatchMenuResult(const MenuResult& result);
|
||||
|
||||
/**
|
||||
* @brief 弹出文件选择对话框并加载所选文件。
|
||||
*/
|
||||
@@ -250,8 +257,7 @@ namespace jdi
|
||||
bool m_gdiplusReady = false; /**< GDI+ 是否初始化成功。 */
|
||||
|
||||
Theme m_theme; /**< 主题配色。 */
|
||||
UiFonts m_fonts; /**< 界面字体。 */
|
||||
DataSet m_dataSet; /**< 全局共享的数据集合。 */
|
||||
UiFonts m_fonts; /**< 界面字体。 */ PopupMenu m_menu; /**< 与主题一致的自绘弹出菜单。 */ DataSet m_dataSet; /**< 全局共享的数据集合。 */
|
||||
std::vector<TabConfig> m_tabs; /**< 标签页配置集合。 */
|
||||
int m_activeTab = -1; /**< 当前激活标签页下标。 */
|
||||
int m_tabNameCounter = 0; /**< 标签页命名计数器。 */
|
||||
@@ -280,6 +286,7 @@ namespace jdi
|
||||
|
||||
Target m_activeTarget = Target::NONE; /**< 当前鼠标作用目标。 */
|
||||
bool m_trackingLeave = false; /**< 是否已注册鼠标离开通知。 */
|
||||
int m_tabMenuIndex = -1; /**< 标签栏右键菜单的目标标签页下标。 */
|
||||
std::wstring m_statusMessage; /**< 状态栏提示文本。 */
|
||||
bool m_statusIsError = false; /**< 状态提示是否为错误。 */
|
||||
|
||||
|
||||
Reference in new issue
Block a user