diff options
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Logging')
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*"> |
