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:
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user