From 9a970799459259fd00414899deb94eb5fcb1cfe8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mat=C4=9Bj=20Kub=C3=AD=C4=8Dek?= Date: Fri, 10 Apr 2026 12:46:06 +0200 Subject: [PATCH] Fixed up the text creation placement --- NetworkDiagram/Assets/video camera.jpg | Bin 0 -> 42218 bytes NetworkDiagram/MainWindow.xaml | 4 ++-- NetworkDiagram/MainWindow.xaml.cs | 9 ++++++++- NetworkDiagram/devices.json | 4 ++++ 4 files changed, 14 insertions(+), 3 deletions(-) create mode 100644 NetworkDiagram/Assets/video camera.jpg diff --git a/NetworkDiagram/Assets/video camera.jpg b/NetworkDiagram/Assets/video camera.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a109faf28369493676d92df854c345d042229a9f GIT binary patch literal 42218 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 jZ3E`vxBnR)OVusx=4*c1{v)wF^%|K9`v`_};y literal 0 HcmV?d00001 diff --git a/NetworkDiagram/MainWindow.xaml b/NetworkDiagram/MainWindow.xaml index b36c3ec..5b0bd16 100644 --- a/NetworkDiagram/MainWindow.xaml +++ b/NetworkDiagram/MainWindow.xaml @@ -42,8 +42,8 @@ - EN - CZ + EN + CZ diff --git a/NetworkDiagram/MainWindow.xaml.cs b/NetworkDiagram/MainWindow.xaml.cs index 4bdaca8..a9ceeab 100644 --- a/NetworkDiagram/MainWindow.xaml.cs +++ b/NetworkDiagram/MainWindow.xaml.cs @@ -607,7 +607,14 @@ namespace NetworkDiagram private void WireTool_Click(object sender, RoutedEventArgs e) => _activeTool = ConnectionType.Wire; private void WifiTool_Click(object sender, RoutedEventArgs e) => _activeTool = ConnectionType.Wifi; - private void AddText_Click(object sender, RoutedEventArgs e) => AddDeviceToCanvas(new DeviceTemplate { Name = "Note", IconPath = "" }, 100, 100); + private void AddText_Click(object sender, RoutedEventArgs e) + { + // Center of the current viewport in canvas coordinates + double centerX = (CanvasViewport.ActualWidth / 2 - CanvasTranslate.X) / CanvasScale.ScaleX; + double centerY = (CanvasViewport.ActualHeight / 2 - CanvasTranslate.Y) / CanvasScale.ScaleY; + + AddDeviceToCanvas(new DeviceTemplate { Name = "Note", IconPath = "" }, centerX, centerY); + } private void ExportPng_Click(object sender, RoutedEventArgs e) { diff --git a/NetworkDiagram/devices.json b/NetworkDiagram/devices.json index 1586700..ed6a548 100644 --- a/NetworkDiagram/devices.json +++ b/NetworkDiagram/devices.json @@ -54,5 +54,9 @@ { "Name": "Wireless Router", "IconPath": "Assets/wireless router.jpg" + }, + { + "Name": "Video camera", + "IconPath": "Assets/video camera.jpg" } ]