1- using System . Collections . ObjectModel ;
1+ using ArkBot . Utils . Extensions ;
2+ using System ;
3+ using System . Collections . Generic ;
4+ using System . Collections . ObjectModel ;
5+ using System . Collections . Specialized ;
6+ using System . ComponentModel ;
7+ using System . Linq ;
28using System . Threading . Tasks ;
39using System . Windows ;
410using System . Windows . Controls ;
@@ -7,11 +13,11 @@ namespace ArkBot.Modules.Application.ViewModel
713{
814 public sealed class ConsoleViewModel : TabViewModel
915 {
10- public ObservableCollection < string > ConsoleOutput { get ; set ; }
16+ public ObservableCollection < ConsoleLogEntry > ConsoleOutput { get ; set ; }
1117
1218 private ConsoleViewModel ( ) : base ( "Console" , "Console" )
1319 {
14- ConsoleOutput = new ObservableCollection < string > ( ) ;
20+ ConsoleOutput = new ObservableCollection < ConsoleLogEntry > ( ) ;
1521 }
1622
1723 private async Task < ConsoleViewModel > InitializeAsync ( )
@@ -25,15 +31,40 @@ public static Task<ConsoleViewModel> CreateAsync(bool isVisible = false)
2531 return ret . InitializeAsync ( ) ;
2632 }
2733
28- public void AddLog ( string message )
34+ public void AddLog ( string message , System . Windows . Media . Brush color = null )
2935 {
3036 if ( message == null ) return ;
3137
3238 System . Windows . Application . Current ? . Dispatcher . Invoke ( delegate
3339 {
34- ConsoleOutput . Add ( message . TrimEnd ( '\n ' , '\r ' ) ) ;
40+ while ( ConsoleOutput . Count >= 1000 ) ConsoleOutput . RemoveAt ( 0 ) ;
41+ ConsoleOutput . Add ( new ConsoleLogEntry ( message . TrimEnd ( '\n ' , '\r ' ) , color ) ) ;
3542 } ) ;
3643 }
44+
45+ public void AddLogError ( string message )
46+ {
47+ AddLog ( message , System . Windows . Media . Brushes . Red ) ;
48+ }
49+
50+ public void AddLogWarning ( string message )
51+ {
52+ AddLog ( message , System . Windows . Media . Brushes . Orange ) ;
53+ }
54+ }
55+
56+ public class ConsoleLogEntry
57+ {
58+ public ConsoleLogEntry ( string message , System . Windows . Media . Brush color = null )
59+ {
60+ When = DateTime . Now ;
61+ Message = message ;
62+ Color = color ?? System . Windows . Media . Brushes . Black ;
63+ }
64+
65+ public DateTime When { get ; set ; }
66+ public string Message { get ; set ; }
67+ public System . Windows . Media . Brush Color { get ; set ; }
3768 }
3869
3970 public static class AutoScrollBehavior
0 commit comments