aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Logging
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Logging')
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Logging/ViewModels/ApplicationLogsViewVM.cs59
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Logging/Views/ApplicationLogsView.xaml28
2 files changed, 67 insertions, 20 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Logging/ViewModels/ApplicationLogsViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Logging/ViewModels/ApplicationLogsViewVM.cs
index b0bc613bd..3e0e3ab84 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Logging/ViewModels/ApplicationLogsViewVM.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Logging/ViewModels/ApplicationLogsViewVM.cs
@@ -13,6 +13,7 @@ using Tango.MachineStudio.Logging.Navigation;
using Tango.MachineStudio.Logging.Parsing;
using Tango.MachineStudio.Logging.Views;
using Tango.SharedUI;
+using Tango.SharedUI.Components;
namespace Tango.MachineStudio.Logging.ViewModels
{
@@ -41,6 +42,8 @@ namespace Tango.MachineStudio.Logging.ViewModels
set { _logsViewSource = value; RaisePropertyChangedAuto(); }
}
+ public SelectedObjectCollection<LogCategory> SelectedLogCategories { get; set; }
+
private String _filter;
public String Filter
{
@@ -118,22 +121,7 @@ namespace Tango.MachineStudio.Logging.ViewModels
{
_realTimePaused = value;
RaisePropertyChangedAuto();
-
- if (!_realTimePaused)
- {
- LogsViewSource.Filter = null;
- _realTimeLogs.InsertRange(0, _pausedLogs);
- _pausedLogs.Clear();
- }
- else
- {
- LogsViewSource.Filter = (x) =>
- {
- if (String.IsNullOrWhiteSpace(Filter)) return true;
- LogItemBase log = x as LogItemBase;
- return log.Message.ToLower().Contains(Filter.ToLower());
- };
- }
+ ApplyLogsFilter();
}
}
@@ -149,6 +137,27 @@ namespace Tango.MachineStudio.Logging.ViewModels
NavigateToHomeCommand = new RelayCommand(() => navigation.NavigateTo(LoggingNavigationView.HomeView));
+ SelectedLogCategories = new SelectedObjectCollection<LogCategory>(new ObservableCollection<LogCategory>()
+ {
+ LogCategory.Info,
+ LogCategory.Warning,
+ LogCategory.Error,
+ LogCategory.Critical,
+ LogCategory.Debug,
+ }, new ObservableCollection<LogCategory>()
+ {
+ LogCategory.Info,
+ LogCategory.Warning,
+ LogCategory.Error,
+ LogCategory.Critical,
+ LogCategory.Debug,
+ });
+
+ SelectedLogCategories.SynchedSource.CollectionChanged += (_, __) =>
+ {
+ ApplyLogsFilter();
+ };
+
_parser = new ApplicationLogFileParser();
_logFiles = _parser.GetLogFiles();
@@ -177,6 +186,24 @@ namespace Tango.MachineStudio.Logging.ViewModels
_is_debug = LogManager.Categories.Contains(LogCategory.Debug);
}
+ private void ApplyLogsFilter()
+ {
+ if ((_realTimePaused && _isRealTime) || !_isRealTime)
+ {
+ LogsViewSource.Filter = (x) =>
+ {
+ LogItemBase log = x as LogItemBase;
+ return (SelectedLogCategories.SynchedSource.Contains(log.Category) && (String.IsNullOrWhiteSpace(Filter) || log.Message.ToLower().Contains(Filter.ToLower())));
+ };
+ }
+ else
+ {
+ LogsViewSource.Filter = null;
+ _realTimeLogs.InsertRange(0, _pausedLogs);
+ _pausedLogs.Clear();
+ }
+ }
+
private void LogManager_NewLog(object sender, LogItemBase log)
{
if (log.Category == LogCategory.Debug && !DisplayDebug) return;
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Logging/Views/ApplicationLogsView.xaml b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Logging/Views/ApplicationLogsView.xaml
index eeb7204d1..b67b14612 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Logging/Views/ApplicationLogsView.xaml
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Logging/Views/ApplicationLogsView.xaml
@@ -78,7 +78,7 @@
</StackPanel>
</Border>
- <Button Style="{StaticResource MaterialDesignFlatButton}" Command="{Binding ToggleRealTimePaused}" Padding="0" Height="50" Width="50" Foreground="#202020" ToolTip="Pause/Resume Real-Time">
+ <Button Style="{StaticResource MaterialDesignFlatButton}" IsEnabled="{Binding IsRealTime}" Command="{Binding ToggleRealTimePaused}" Padding="0" Height="50" Width="50" Foreground="#202020" ToolTip="Pause/Resume Real-Time">
<materialDesign:PackIcon Width="50" Height="50">
<materialDesign:PackIcon.Style>
<Style TargetType="materialDesign:PackIcon">
@@ -93,14 +93,34 @@
</materialDesign:PackIcon>
</Button>
- <Button Margin="20 0 0 0" Background="#FF7777" BorderBrush="#FF7777" ToolTip="Clear real-time logs" Command="{Binding ClearRealTimeLogsCommand}">
+ <Button Margin="20 0 0 0" Background="#FF7777" BorderBrush="#FF7777" IsEnabled="{Binding IsRealTime}" ToolTip="Clear real-time logs" Command="{Binding ClearRealTimeLogsCommand}">
<StackPanel Orientation="Horizontal">
<materialDesign:PackIcon Width="24" Height="24" Kind="DeleteSweep" />
<TextBlock VerticalAlignment="Center" Margin="10 0 0 0">CLEAR</TextBlock>
</StackPanel>
</Button>
- <CheckBox VerticalAlignment="Center" Margin="20 0 0 0" IsChecked="{Binding DisplayDebug}" ToolTip="Hide/Display debug logs (applies only when debug logs are enabled in the settings file)">Process Debug Logs</CheckBox>
+ <Border BorderThickness="1" BorderBrush="#3B3B3B" VerticalAlignment="Center" Padding="10 7" CornerRadius="5" Margin="30 0 0 0">
+ <StackPanel>
+ <ItemsControl VerticalAlignment="Center" ItemsSource="{Binding SelectedLogCategories}">
+ <ItemsControl.ItemsPanel>
+ <ItemsPanelTemplate>
+ <StackPanel Orientation="Horizontal" />
+ </ItemsPanelTemplate>
+ </ItemsControl.ItemsPanel>
+ <ItemsControl.ItemTemplate>
+ <DataTemplate>
+ <StackPanel Orientation="Horizontal" Margin="10 0 0 0">
+ <CheckBox IsChecked="{Binding IsSelected}" VerticalAlignment="Center"></CheckBox>
+ <TextBlock Text="{Binding Data}" Margin="5 0 0 0" VerticalAlignment="Center"></TextBlock>
+ </StackPanel>
+ </DataTemplate>
+ </ItemsControl.ItemTemplate>
+ </ItemsControl>
+ </StackPanel>
+ </Border>
+
+ <CheckBox VerticalAlignment="Center" Margin="20 0 0 0" IsChecked="{Binding DisplayDebug}" IsEnabled="{Binding IsRealTime}" ToolTip="Hide/Display debug logs (applies only when debug logs are enabled in the settings file)">Process Debug Logs</CheckBox>
</StackPanel>
<StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="0 0 30 0">
@@ -203,7 +223,7 @@
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="DATE TIME" Binding="{Binding TimeStamp,StringFormat='MM/dd/yyyy HH:mm:ss.ff'}" />
- <DataGridTextColumn Header="FILE" Binding="{Binding RelativeCallerFile}" />
+ <DataGridTextColumn Header="FILE" Binding="{Binding RelativeCallerFile}" />
<DataGridTextColumn Header="METHOD" Binding="{Binding CallerMethodName}" />
<DataGridTextColumn Header="LINE" Binding="{Binding CallerLineNumber}" />
<DataGridTemplateColumn Header="MESSAGE" Width="1*">