输入框鼠标编辑、图例省略、信号跨视图共享选择与网格菜单布局修复

- 输入框:支持鼠标左键点击定位插入符、拖拽框选区域,并且不再限制字符长度
- 输入框:长文本使用 ETO_CLIPPED 裁剪绘制,避免字符溢出到编辑区域之外
- 图例:信号名称超过 200px 时省略号截断,不再挤压标尺区域
- 选中状态从 TabConfig 迁移到 DataSet,切换视图后信号选中状态保持一致
- 网格右键菜单:Y 轴最大值/最小值直接显示当前值,点击后原位置弹出内联编辑框
- 标尺数值改为绘制在图例下层,不再因避让图例而隐藏
- 移除已无用的 LegendBandRect,新增共享的编辑框布局与命中检测工具
- .gitignore 忽略 TestData 测试数据目录
This commit is contained in:
DeepSeek V4.1 Flash committed 2026-09-30 17:10:23 +08:00
1 parent e3744f3eff
commit 12b3531485
19 files changed
+790 -186

No files matched your search

+25 -13
View File
@@ -249,8 +249,33 @@ namespace jdi
*/
double MaxTime() const;
/**
* @brief 获取当前选中的信号(全标签页共享)。
* @return 信号引用。
*/
const SignalRef& Selected() const { return m_selected; }
/**
* @brief 设置当前选中的信号(全标签页共享)。
* @param [IN] ref 信号引用;传入无效值表示取消选择。
*/
void SetSelected(const SignalRef& ref) { m_selected = ref; }
/**
* @brief 在数据层移除某文件之前,按旧下标修正选中引用。
* @param [IN] fileIndex 即将被移除的文件下标。
*/
void RemapSelectionAfterFileRemoval(int fileIndex);
/**
* @brief 校验选中引用是否仍指向存在的信号,失效则取消选中。
* @return 选中状态发生变化返回 true。
*/
bool ValidateSelection();
private:
std::vector<DataFile> m_files; /**< 已加载文件集合。 */
SignalRef m_selected; /**< 当前选中信号(跨标签页共享)。 */
};
/**
@@ -452,18 +477,6 @@ namespace jdi
*/
void ToggleCollapsed(int fileIndex);
/**
* @brief 获取当前选中的信号引用。
* @return 信号引用。
*/
SignalRef Selected() const { return m_selected; }
/**
* @brief 设置当前选中的信号。
* @param [IN] ref 信号引用,无效值表示取消选择。
*/
void SetSelected(const SignalRef& ref) { m_selected = ref; }
/**
* @brief 计算某网格的 Y 轴显示范围。
* @param [IN] dataSet 数据集合。
@@ -513,7 +526,6 @@ namespace jdi
std::vector<bool> m_collapsed; /**< 文件分组折叠状态,按文件索引。 */
std::vector<Lane> m_lanes; /**< 网格划分。 */
LaneMode m_laneMode = LaneMode::PER_SIGNAL; /**< 网格划分策略。 */
SignalRef m_selected; /**< 当前选中信号。 */
double m_viewMin = 0.0; /**< 视图左边界时间。 */
double m_viewMax = 1.0; /**< 视图右边界时间。 */
bool m_viewInitialized = false; /**< 视图范围是否已初始化。 */