|
@@ -48,7 +48,12 @@ const {
|
|
|
Enums: csToolsEnums,
|
|
Enums: csToolsEnums,
|
|
|
PlanarRotateTool,
|
|
PlanarRotateTool,
|
|
|
} = cornerstoneTools;
|
|
} = cornerstoneTools;
|
|
|
|
|
+
|
|
|
|
|
+// 导入 cursors 用于光标管理
|
|
|
|
|
+import { cursors } from '@cornerstonejs/tools';
|
|
|
const { MouseBindings } = csToolsEnums;
|
|
const { MouseBindings } = csToolsEnums;
|
|
|
|
|
+// 全局工具状态变化监听器注册标志
|
|
|
|
|
+let cursorResetListenerRegistered = false;
|
|
|
// let toolGroup: cornerstoneTools.Types.IToolGroup;
|
|
// let toolGroup: cornerstoneTools.Types.IToolGroup;
|
|
|
// let currentViewportId: string;
|
|
// let currentViewportId: string;
|
|
|
|
|
|
|
@@ -252,6 +257,43 @@ function registerTools(viewportId, renderingEngineId) {
|
|
|
// 添加 viewport 到工具组
|
|
// 添加 viewport 到工具组
|
|
|
toolGroup.addViewport(viewportId, renderingEngineId);
|
|
toolGroup.addViewport(viewportId, renderingEngineId);
|
|
|
|
|
|
|
|
|
|
+ // 添加全局工具模式变化监听器,自动重置光标(当前项目中使用一对一映射)
|
|
|
|
|
+ if (!cursorResetListenerRegistered) {
|
|
|
|
|
+ eventTarget.addEventListener(
|
|
|
|
|
+ cornerstoneTools.Enums.Events.TOOL_MODE_CHANGED,
|
|
|
|
|
+ (event) => {
|
|
|
|
|
+ // 检查是否有活动工具,当前一对一映射设计只关注全局活动工具状态
|
|
|
|
|
+ const allToolGroups = ToolGroupManager.getAllToolGroups();
|
|
|
|
|
+
|
|
|
|
|
+ let hasActiveTool = false;
|
|
|
|
|
+ for (const toolGroup of allToolGroups) {
|
|
|
|
|
+ if (toolGroup.getActivePrimaryMouseButtonTool()) {
|
|
|
|
|
+ hasActiveTool = true;
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (!hasActiveTool) {
|
|
|
|
|
+ // 没有活动工具时,重置所有视口光标为默认(适用于当前一对一设计)
|
|
|
|
|
+ for (const toolGroup of allToolGroups) {
|
|
|
|
|
+ const viewportIds = toolGroup.getViewportIds();
|
|
|
|
|
+ viewportIds.forEach(viewportId => {
|
|
|
|
|
+ try {
|
|
|
|
|
+ const enabledElement = cornerstone.getEnabledElementByViewportId(viewportId);
|
|
|
|
|
+ if (enabledElement?.viewport.element) {
|
|
|
|
|
+ enabledElement.viewport.element.style.cursor = 'default';
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (error) {
|
|
|
|
|
+ // 忽略错误,可能视口已被销毁
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ );
|
|
|
|
|
+ cursorResetListenerRegistered = true; // 防止重复注册
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
console.log(`[registerTools] Tools registered for viewport: ${viewportId}`);
|
|
console.log(`[registerTools] Tools registered for viewport: ${viewportId}`);
|
|
|
}
|
|
}
|
|
|
|
|
|