feat: Add mouse click handlers for AddLabel and AddImage modes

UnifiedAGVCanvas.Mouse.cs 수정 내용:
- MouseClick switch문에 AddLabel, AddImage case 추가
- HandleAddLabelClick() 메서드 추가 (NodeType.Label 노드 생성)
- HandleAddImageClick() 메서드 추가 (NodeType.Image 노드 생성)

이제 라벨 추가 및 이미지 추가 드롭다운 메뉴를 선택하고 맵을 클릭하면
해당 위치에 라벨/이미지 노드가 정상적으로 생성됩니다.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
backuppc
2025-10-30 15:10:04 +09:00
parent 115c4037d6
commit 42bd262177

View File

@@ -27,6 +27,14 @@ namespace AGVNavigationCore.Controls
HandleAddNodeClick(worldPoint); HandleAddNodeClick(worldPoint);
break; break;
case EditMode.AddLabel:
HandleAddLabelClick(worldPoint);
break;
case EditMode.AddImage:
HandleAddImageClick(worldPoint);
break;
case EditMode.Connect: case EditMode.Connect:
HandleConnectClick(hitNode); HandleConnectClick(hitNode);
break; break;
@@ -502,6 +510,60 @@ namespace AGVNavigationCore.Controls
Invalidate(); Invalidate();
} }
private void HandleAddLabelClick(Point worldPoint)
{
// 그리드 스냅
if (ModifierKeys.HasFlag(Keys.Control))
{
worldPoint.X = (worldPoint.X / GRID_SIZE) * GRID_SIZE;
worldPoint.Y = (worldPoint.Y / GRID_SIZE) * GRID_SIZE;
}
// 고유한 NodeId 생성
string newNodeId = GenerateUniqueNodeId();
var newNode = new MapNode
{
NodeId = newNodeId,
Position = worldPoint,
Type = NodeType.Label,
Name = "새 라벨"
};
_nodes.Add(newNode);
NodeAdded?.Invoke(this, newNode);
MapChanged?.Invoke(this, EventArgs.Empty);
Invalidate();
}
private void HandleAddImageClick(Point worldPoint)
{
// 그리드 스냅
if (ModifierKeys.HasFlag(Keys.Control))
{
worldPoint.X = (worldPoint.X / GRID_SIZE) * GRID_SIZE;
worldPoint.Y = (worldPoint.Y / GRID_SIZE) * GRID_SIZE;
}
// 고유한 NodeId 생성
string newNodeId = GenerateUniqueNodeId();
var newNode = new MapNode
{
NodeId = newNodeId,
Position = worldPoint,
Type = NodeType.Image,
Name = "새 이미지"
};
_nodes.Add(newNode);
NodeAdded?.Invoke(this, newNode);
MapChanged?.Invoke(this, EventArgs.Empty);
Invalidate();
}
/// <summary> /// <summary>
/// 중복되지 않는 고유한 NodeId 생성 /// 중복되지 않는 고유한 NodeId 생성
/// </summary> /// </summary>