From ab67de166800d66b312b5776a52397817eb0c463 Mon Sep 17 00:00:00 2001 From: php Date: Sat, 16 Nov 2024 21:51:57 -0600 Subject: [PATCH] Add support for larger codeplugs with many channels --- WhackerLinkConsoleV2/MainWindow.xaml | 12 +++++++--- WhackerLinkConsoleV2/MainWindow.xaml.cs | 32 ++++++++++++++++++++++--- 2 files changed, 38 insertions(+), 6 deletions(-) diff --git a/WhackerLinkConsoleV2/MainWindow.xaml b/WhackerLinkConsoleV2/MainWindow.xaml index 6b83bc8..b80add5 100644 --- a/WhackerLinkConsoleV2/MainWindow.xaml +++ b/WhackerLinkConsoleV2/MainWindow.xaml @@ -4,7 +4,12 @@ xmlns:local="clr-namespace:WhackerLinkConsoleV2.Controls" Title="WhackerLinkConsoleV2" Height="600" Width="1000" Background="#1e1e1e"> - + + + + + + @@ -18,7 +23,8 @@ - - + + + diff --git a/WhackerLinkConsoleV2/MainWindow.xaml.cs b/WhackerLinkConsoleV2/MainWindow.xaml.cs index 2d6f940..e369279 100644 --- a/WhackerLinkConsoleV2/MainWindow.xaml.cs +++ b/WhackerLinkConsoleV2/MainWindow.xaml.cs @@ -192,6 +192,8 @@ namespace WhackerLinkConsoleV2 ChannelsCanvas.Children.Add(alertTone); } + + AdjustCanvasHeight(); } private void SelectWidgets_Click(object sender, RoutedEventArgs e) @@ -235,6 +237,8 @@ namespace WhackerLinkConsoleV2 { _settingsManager.UpdateChannelPosition(channelBox.ChannelName, newLeft, newTop); } + + AdjustCanvasHeight(); } private void ChannelBox_MouseRightButtonDown(object sender, MouseButtonEventArgs e) @@ -265,6 +269,8 @@ namespace WhackerLinkConsoleV2 _settingsManager.SystemStatusPositions[systemStatusBox.SystemName] = new ChannelPosition { X = x, Y = y }; ChannelBox_MouseRightButtonDown(sender, e); + + AdjustCanvasHeight(); } } @@ -323,6 +329,8 @@ namespace WhackerLinkConsoleV2 ChannelsCanvas.Children.Add(alertTone); _settingsManager.UpdateAlertTonePaths(alertFilePath); + + AdjustCanvasHeight(); } } @@ -335,13 +343,25 @@ namespace WhackerLinkConsoleV2 double x = Canvas.GetLeft(alertTone); double y = Canvas.GetTop(alertTone); _settingsManager.UpdateAlertTonePosition(alertTone.AlertFilePath, x, y); + + AdjustCanvasHeight(); } } - protected override void OnClosing(System.ComponentModel.CancelEventArgs e) + private void AdjustCanvasHeight() { - _settingsManager.SaveSettings(); - base.OnClosing(e); + double maxBottom = 0; + + foreach (UIElement child in ChannelsCanvas.Children) + { + double childBottom = Canvas.GetTop(child) + child.RenderSize.Height; + if (childBottom > maxBottom) + { + maxBottom = childBottom; + } + } + + ChannelsCanvas.Height = maxBottom + 150; } private void MainWindow_Loaded(object sender, RoutedEventArgs e) @@ -355,5 +375,11 @@ namespace WhackerLinkConsoleV2 GenerateChannelWidgets(); } } + + protected override void OnClosing(System.ComponentModel.CancelEventArgs e) + { + _settingsManager.SaveSettings(); + base.OnClosing(e); + } } }