diff --git a/Source/GlobalAssemblyInfo.cs b/Source/GlobalAssemblyInfo.cs index ce0c39e606..4e5fde9f3b 100644 --- a/Source/GlobalAssemblyInfo.cs +++ b/Source/GlobalAssemblyInfo.cs @@ -6,5 +6,5 @@ [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] -[assembly: AssemblyVersion("2026.5.24.0")] -[assembly: AssemblyFileVersion("2026.5.24.0")] +[assembly: AssemblyVersion("2026.5.30.0")] +[assembly: AssemblyFileVersion("2026.5.30.0")] diff --git a/Source/NETworkManager.Localization/Resources/Strings.Designer.cs b/Source/NETworkManager.Localization/Resources/Strings.Designer.cs index 0ff7f753ea..08463b220d 100644 --- a/Source/NETworkManager.Localization/Resources/Strings.Designer.cs +++ b/Source/NETworkManager.Localization/Resources/Strings.Designer.cs @@ -1552,7 +1552,16 @@ public static string CapsLockIsEnabled { return ResourceManager.GetString("CapsLockIsEnabled", resourceCulture); } } - + + /// + /// Looks up a localized string similar to Chart time (seconds). + /// + public static string ChartTimeInSeconds { + get { + return ResourceManager.GetString("ChartTimeInSeconds", resourceCulture); + } + } + /// /// Looks up a localized string similar to Capture. /// @@ -6237,7 +6246,16 @@ public static string Lime { return ResourceManager.GetString("Lime", resourceCulture); } } - + + /// + /// Looks up a localized string similar to Live. + /// + public static string Live { + get { + return ResourceManager.GetString("Live", resourceCulture); + } + } + /// /// Looks up a localized string similar to Listeners. /// diff --git a/Source/NETworkManager.Localization/Resources/Strings.resx b/Source/NETworkManager.Localization/Resources/Strings.resx index 4cb9414464..886495042e 100644 --- a/Source/NETworkManager.Localization/Resources/Strings.resx +++ b/Source/NETworkManager.Localization/Resources/Strings.resx @@ -735,6 +735,9 @@ Caps lock is enabled! + + Chart time (seconds) + Check for updates at startup @@ -1513,6 +1516,9 @@ Profile files are not affected! Lime + + Live + Magenta diff --git a/Source/NETworkManager.Settings/GlobalStaticConfiguration.cs b/Source/NETworkManager.Settings/GlobalStaticConfiguration.cs index ef48d365e8..30df1a5117 100644 --- a/Source/NETworkManager.Settings/GlobalStaticConfiguration.cs +++ b/Source/NETworkManager.Settings/GlobalStaticConfiguration.cs @@ -143,6 +143,7 @@ public static class GlobalStaticConfiguration public static int PingMonitor_TTL => 64; public static int PingMonitor_WaitTime => 1000; public static bool PingMonitor_ExpandHostView => false; + public static int PingMonitor_ChartTime => 120; public static ExportFileType PingMonitor_ExportFileType => ExportFileType.Csv; // Application: Traceroute diff --git a/Source/NETworkManager.Settings/SettingsInfo.cs b/Source/NETworkManager.Settings/SettingsInfo.cs index 1040e8dd83..09a73eccb0 100644 --- a/Source/NETworkManager.Settings/SettingsInfo.cs +++ b/Source/NETworkManager.Settings/SettingsInfo.cs @@ -1508,6 +1508,19 @@ public bool PingMonitor_ExpandHostView } } = GlobalStaticConfiguration.PingMonitor_ExpandHostView; + public int PingMonitor_ChartTime + { + get; + set + { + if (value == field) + return; + + field = value; + OnPropertyChanged(); + } + } = GlobalStaticConfiguration.PingMonitor_ChartTime; + public string PingMonitor_ExportFilePath { get; diff --git a/Source/NETworkManager/Resources/ContextMenu/ContextMenu.xaml b/Source/NETworkManager/Resources/ContextMenu/ContextMenu.xaml index 97a0728e5a..096157919f 100644 --- a/Source/NETworkManager/Resources/ContextMenu/ContextMenu.xaml +++ b/Source/NETworkManager/Resources/ContextMenu/ContextMenu.xaml @@ -88,7 +88,7 @@ - + diff --git a/Source/NETworkManager/Resources/Styles/ExpanderStyles.xaml b/Source/NETworkManager/Resources/Styles/ExpanderStyles.xaml index 491389b5a4..5d9a6e02ae 100644 --- a/Source/NETworkManager/Resources/Styles/ExpanderStyles.xaml +++ b/Source/NETworkManager/Resources/Styles/ExpanderStyles.xaml @@ -75,6 +75,74 @@ Value="{DynamicResource ResourceKey=ExpanderDownHeader}" /> + + + + + + - - - - - - - - - - - + + - + - - - + + + + \ No newline at end of file diff --git a/Source/NETworkManager/Views/PingMonitorView.xaml b/Source/NETworkManager/Views/PingMonitorView.xaml index c2e6e2686d..6639822c1a 100644 --- a/Source/NETworkManager/Views/PingMonitorView.xaml +++ b/Source/NETworkManager/Views/PingMonitorView.xaml @@ -14,10 +14,26 @@ - + BorderBrush="{DynamicResource MahApps.Brushes.Gray8}" + Margin="0,0,0,10"> + + + + + + + + + + + + + @@ -228,11 +244,53 @@ YAxes="{Binding PingYAxes}" DrawMarginFrame="{x:Null}" EasingFunction="{x:Null}" + ZoomMode="PanX, ZoomX, NoFit" + ContextMenuOpening="Chart_ContextMenuOpening" RenderOptions.BitmapScalingMode="NearestNeighbor"> + diff --git a/Source/NETworkManager/Views/PingMonitorView.xaml.cs b/Source/NETworkManager/Views/PingMonitorView.xaml.cs index 97e6720162..004d4e1749 100644 --- a/Source/NETworkManager/Views/PingMonitorView.xaml.cs +++ b/Source/NETworkManager/Views/PingMonitorView.xaml.cs @@ -1,5 +1,6 @@ using System; using System.Net; +using System.Windows.Controls; using NETworkManager.ViewModels; namespace NETworkManager.Views; @@ -34,13 +35,29 @@ public void Stop() _viewModel.Stop(); } - public void Export() + /// + /// Releases resources held by the view model. Must be called when the host is removed. + /// + public void Cleanup() { - _ = _viewModel.Export(); + // Release the app-lifetime subscription so this transient per-host view (and its + // view model) is not kept alive until the application shuts down. + Dispatcher.ShutdownStarted -= Dispatcher_ShutdownStarted; + + _viewModel.Cleanup(); } private void Dispatcher_ShutdownStarted(object sender, EventArgs e) { Stop(); } + + /// + /// Suppresses the host context menu while the pointer is over the chart, so a + /// right-click drag can be used to zoom into a section instead of opening the menu. + /// + private void Chart_ContextMenuOpening(object sender, ContextMenuEventArgs e) + { + e.Handled = true; + } } \ No newline at end of file diff --git a/Source/NETworkManager/Views/PortScannerView.xaml b/Source/NETworkManager/Views/PortScannerView.xaml index 45fed20bdd..54bb2151fa 100644 --- a/Source/NETworkManager/Views/PortScannerView.xaml +++ b/Source/NETworkManager/Views/PortScannerView.xaml @@ -274,7 +274,7 @@ - + @@ -285,7 +285,7 @@ - + diff --git a/Source/NETworkManager/Views/SNMPView.xaml b/Source/NETworkManager/Views/SNMPView.xaml index 283800b3c5..cd62d56e7a 100644 --- a/Source/NETworkManager/Views/SNMPView.xaml +++ b/Source/NETworkManager/Views/SNMPView.xaml @@ -641,7 +641,7 @@ - + @@ -652,7 +652,7 @@ - + diff --git a/Source/NETworkManager/Views/SNTPLookupView.xaml b/Source/NETworkManager/Views/SNTPLookupView.xaml index b1808aa5b8..47688067a6 100644 --- a/Source/NETworkManager/Views/SNTPLookupView.xaml +++ b/Source/NETworkManager/Views/SNTPLookupView.xaml @@ -160,7 +160,7 @@ - + @@ -173,7 +173,7 @@ - + diff --git a/Source/NETworkManager/Views/SpeedTestWidgetView.xaml b/Source/NETworkManager/Views/SpeedTestWidgetView.xaml index 0760fc8ebc..c26830cb4b 100644 --- a/Source/NETworkManager/Views/SpeedTestWidgetView.xaml +++ b/Source/NETworkManager/Views/SpeedTestWidgetView.xaml @@ -84,15 +84,15 @@ - +