├── nuget.exe ├── .net 5.0 ├── AssemblyInfo.cs ├── Simple.Wpf.Terminal.Example │ ├── MainWindow.xaml.cs │ ├── IRelayCommand.cs │ ├── App.xaml │ ├── App.xaml.cs │ ├── BaseViewModel.cs │ ├── RelayCommand.cs │ ├── Simple.Wpf.Terminal.Example.csproj │ ├── ExampleViewModel.cs │ └── MainWindow.xaml ├── Simple.Wpf.Terminal.Themes │ ├── IncludeThemesAssemblyAttribute.cs │ ├── BlueTheme.xaml │ ├── DarkTheme.xaml │ ├── GreenTheme.xaml │ ├── Simple - Backup.Wpf.Terminal.Themes.csproj │ └── Simple.Wpf.Terminal.Themes.csproj ├── Simple.Wpf.Terminal │ ├── Themes │ │ └── generic.xaml │ ├── ITerminalEx.cs │ ├── Simple.Wpf.Terminal.csproj │ └── VisualTreeExtensions.cs └── Simple.Wpf.Terminal.Common │ ├── Simple.Wpf.Terminal.Common.csproj │ └── ITerminal.cs ├── .net core ├── AssemblyInfo.cs ├── Simple.Wpf.Terminal.Example │ ├── MainWindow.xaml.cs │ ├── IRelayCommand.cs │ ├── App.xaml │ ├── App.xaml.cs │ ├── BaseViewModel.cs │ ├── RelayCommand.cs │ ├── ExampleViewModel.cs │ ├── Simple.Wpf.Terminal.Example.csproj │ ├── MainWindow.xaml │ └── Properties │ │ ├── Resources.Designer.cs │ │ └── Resources.resx ├── Simple.Wpf.Terminal.Themes │ ├── IncludeThemesAssemblyAttribute.cs │ ├── BlueTheme.xaml │ ├── GreenTheme.xaml │ ├── DarkTheme.xaml │ ├── Simple.Wpf.Terminal.Themes.csproj │ └── Properties │ │ ├── Resources.Designer.cs │ │ └── Resources.resx └── Simple.Wpf.Terminal │ ├── Themes │ └── generic.xaml │ ├── ITerminalEx.cs │ ├── Simple.Wpf.Terminal.csproj │ ├── VisualTreeExtensions.cs │ └── Properties │ ├── Resources.Designer.cs │ └── Resources.resx ├── Simple.Wpf.Terminal.dll ├── Readme Images ├── fsharp_repl.png └── log_window.png ├── .net framework ├── Simple.Wpf.Terminal │ ├── app.config │ ├── Properties │ │ ├── Settings.settings │ │ ├── Settings.Designer.cs │ │ ├── Resources.Designer.cs │ │ └── Resources.resx │ ├── Themes │ │ └── generic.xaml │ ├── ITerminalEx.cs │ └── VisualTreeExtensions.cs ├── Simple.Wpf.Terminal.Example │ ├── MainWindow.xaml.cs │ ├── packages.config │ ├── app.config │ ├── IRelayCommand.cs │ ├── Properties │ │ ├── Settings.settings │ │ ├── Settings.Designer.cs │ │ ├── AssemblyInfo.cs │ │ ├── Resources.Designer.cs │ │ └── Resources.resx │ ├── App.xaml.cs │ ├── App.xaml │ ├── BaseViewModel.cs │ ├── RelayCommand.cs │ ├── ExampleViewModel.cs │ ├── MainWindow.xaml │ └── Simple.Wpf.Terminal.Example.csproj ├── Simple.Wpf.Terminal.Themes │ ├── IncludeThemesAssemblyAttribute.cs │ ├── Properties │ │ ├── Settings.settings │ │ ├── Settings.Designer.cs │ │ ├── Resources.Designer.cs │ │ └── Resources.resx │ ├── BlueTheme.xaml │ ├── GreenTheme.xaml │ ├── DarkTheme.xaml │ └── Simple.Wpf.Terminal.Themes.csproj └── AssemblyInfo.cs ├── .net 6.0 ├── Simple.Wpf.Terminal.Example │ ├── MainWindow.xaml.cs │ ├── IRelayCommand.cs │ ├── App.xaml │ ├── App.xaml.cs │ ├── AssemblyInfo.cs │ ├── BaseViewModel.cs │ ├── Simple.Wpf.Terminal.Example.csproj │ ├── RelayCommand.cs │ ├── ExampleViewModel.cs │ └── MainWindow.xaml ├── Simple.Wpf.Terminal.Themes │ ├── IncludeThemesAssemblyAttribute.cs │ ├── BlueTheme.xaml │ ├── DarkTheme.xaml │ ├── GreenTheme.xaml │ └── Simple.Wpf.Terminal.Themes.csproj ├── Simple.Wpf.Terminal │ ├── Themes │ │ └── generic.xaml │ ├── AssemblyInfo.cs │ ├── ITerminalEx.cs │ ├── Simple.Wpf.Terminal.csproj │ └── VisualTreeExtensions.cs └── Simple.Wpf.Terminal.Common │ ├── Simple.Wpf.Terminal.Common.csproj │ └── ITerminal.cs ├── .net 7.0 ├── Simple.Wpf.Terminal.Example │ ├── MainWindow.xaml.cs │ ├── IRelayCommand.cs │ ├── App.xaml │ ├── App.xaml.cs │ ├── AssemblyInfo.cs │ ├── BaseViewModel.cs │ ├── Simple.Wpf.Terminal.Example.csproj │ ├── RelayCommand.cs │ ├── ExampleViewModel.cs │ └── MainWindow.xaml ├── Simple.Wpf.Terminal.Themes │ ├── IncludeThemesAssemblyAttribute.cs │ ├── BlueTheme.xaml │ ├── DarkTheme.xaml │ ├── GreenTheme.xaml │ └── Simple.Wpf.Terminal.Themes.csproj ├── Simple.Wpf.Terminal │ ├── Themes │ │ └── generic.xaml │ ├── AssemblyInfo.cs │ ├── ITerminalEx.cs │ ├── Simple.Wpf.Terminal.csproj │ └── VisualTreeExtensions.cs └── Simple.Wpf.Terminal.Common │ ├── Simple.Wpf.Terminal.Common.csproj │ └── ITerminal.cs ├── .net 8.0 ├── Simple.Wpf.Terminal.Example │ ├── MainWindow.xaml.cs │ ├── IRelayCommand.cs │ ├── App.xaml │ ├── App.xaml.cs │ ├── AssemblyInfo.cs │ ├── BaseViewModel.cs │ ├── Simple.Wpf.Terminal.Example.csproj │ ├── RelayCommand.cs │ ├── ExampleViewModel.cs │ └── MainWindow.xaml ├── Simple.Wpf.Terminal.Themes │ ├── IncludeThemesAssemblyAttribute.cs │ ├── BlueTheme.xaml │ ├── DarkTheme.xaml │ ├── GreenTheme.xaml │ └── Simple.Wpf.Terminal.Themes.csproj ├── Simple.Wpf.Terminal │ ├── Themes │ │ └── generic.xaml │ ├── AssemblyInfo.cs │ ├── ITerminalEx.cs │ ├── Simple.Wpf.Terminal.csproj │ └── VisualTreeExtensions.cs └── Simple.Wpf.Terminal.Common │ ├── Simple.Wpf.Terminal.Common.csproj │ └── ITerminal.cs ├── .net standard ├── Simple.Wpf.Terminal.Themes.Common │ ├── IncludeThemesAssemblyAttribute.cs │ └── Simple.Wpf.Terminal.Themes.Common.csproj └── Simple.Wpf.Terminal.Common │ ├── Simple.Wpf.Terminal.Common.csproj │ ├── ITerminal.cs │ └── Properties │ ├── Resources.Designer.cs │ └── Resources.resx ├── LICENSE ├── Simple.Wpf.Terminal2.nuspec ├── .gitignore ├── AssemblyInfo.cs ├── .gitattributes └── Simple.Wpf.Terminal.nuspec /nuget.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oriches/Simple.Wpf.Terminal/HEAD/nuget.exe -------------------------------------------------------------------------------- /.net 5.0/AssemblyInfo.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oriches/Simple.Wpf.Terminal/HEAD/.net 5.0/AssemblyInfo.cs -------------------------------------------------------------------------------- /.net core/AssemblyInfo.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oriches/Simple.Wpf.Terminal/HEAD/.net core/AssemblyInfo.cs -------------------------------------------------------------------------------- /Simple.Wpf.Terminal.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oriches/Simple.Wpf.Terminal/HEAD/Simple.Wpf.Terminal.dll -------------------------------------------------------------------------------- /Readme Images/fsharp_repl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oriches/Simple.Wpf.Terminal/HEAD/Readme Images/fsharp_repl.png -------------------------------------------------------------------------------- /Readme Images/log_window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oriches/Simple.Wpf.Terminal/HEAD/Readme Images/log_window.png -------------------------------------------------------------------------------- /.net framework/Simple.Wpf.Terminal/app.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /.net 6.0/Simple.Wpf.Terminal.Example/MainWindow.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace Simple.Wpf.Terminal.Example; 2 | 3 | public partial class MainWindow 4 | { 5 | public MainWindow() => InitializeComponent(); 6 | } -------------------------------------------------------------------------------- /.net 7.0/Simple.Wpf.Terminal.Example/MainWindow.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace Simple.Wpf.Terminal.Example; 2 | 3 | public partial class MainWindow 4 | { 5 | public MainWindow() => InitializeComponent(); 6 | } -------------------------------------------------------------------------------- /.net 8.0/Simple.Wpf.Terminal.Example/MainWindow.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace Simple.Wpf.Terminal.Example; 2 | 3 | public partial class MainWindow 4 | { 5 | public MainWindow() => InitializeComponent(); 6 | } -------------------------------------------------------------------------------- /.net 6.0/Simple.Wpf.Terminal.Themes/IncludeThemesAssemblyAttribute.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Simple.Wpf.Terminal.Themes; 4 | 5 | public sealed class IncludeThemesAssemblyAttribute : Attribute 6 | { 7 | } -------------------------------------------------------------------------------- /.net 7.0/Simple.Wpf.Terminal.Themes/IncludeThemesAssemblyAttribute.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Simple.Wpf.Terminal.Themes; 4 | 5 | public sealed class IncludeThemesAssemblyAttribute : Attribute 6 | { 7 | } -------------------------------------------------------------------------------- /.net 8.0/Simple.Wpf.Terminal.Themes/IncludeThemesAssemblyAttribute.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Simple.Wpf.Terminal.Themes; 4 | 5 | public sealed class IncludeThemesAssemblyAttribute : Attribute 6 | { 7 | } -------------------------------------------------------------------------------- /.net 5.0/Simple.Wpf.Terminal.Example/MainWindow.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace Simple.Wpf.Terminal.Example 2 | { 3 | public partial class MainWindow 4 | { 5 | public MainWindow() => InitializeComponent(); 6 | } 7 | } -------------------------------------------------------------------------------- /.net core/Simple.Wpf.Terminal.Example/MainWindow.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace Simple.Wpf.Terminal.Example 2 | { 3 | public partial class MainWindow 4 | { 5 | public MainWindow() => InitializeComponent(); 6 | } 7 | } -------------------------------------------------------------------------------- /.net framework/Simple.Wpf.Terminal.Example/MainWindow.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace Simple.Wpf.Terminal.Example 2 | { 3 | public partial class MainWindow 4 | { 5 | public MainWindow() => InitializeComponent(); 6 | } 7 | } -------------------------------------------------------------------------------- /.net framework/Simple.Wpf.Terminal.Example/packages.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /.net 5.0/Simple.Wpf.Terminal.Themes/IncludeThemesAssemblyAttribute.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Simple.Wpf.Terminal.Themes 4 | { 5 | public sealed class IncludeThemesAssemblyAttribute : Attribute 6 | { 7 | } 8 | } -------------------------------------------------------------------------------- /.net core/Simple.Wpf.Terminal.Themes/IncludeThemesAssemblyAttribute.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Simple.Wpf.Terminal.Themes 4 | { 5 | public sealed class IncludeThemesAssemblyAttribute : Attribute 6 | { 7 | } 8 | } -------------------------------------------------------------------------------- /.net framework/Simple.Wpf.Terminal.Themes/IncludeThemesAssemblyAttribute.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Simple.Wpf.Terminal.Themes 4 | { 5 | public sealed class IncludeThemesAssemblyAttribute : Attribute 6 | { 7 | } 8 | } -------------------------------------------------------------------------------- /.net framework/Simple.Wpf.Terminal.Example/app.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /.net 6.0/Simple.Wpf.Terminal.Example/IRelayCommand.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Input; 2 | 3 | // ReSharper disable UnusedTypeParameter 4 | 5 | namespace Simple.Wpf.Terminal.Example; 6 | 7 | public interface IRelayCommand : ICommand 8 | { 9 | } -------------------------------------------------------------------------------- /.net 7.0/Simple.Wpf.Terminal.Example/IRelayCommand.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Input; 2 | 3 | // ReSharper disable UnusedTypeParameter 4 | 5 | namespace Simple.Wpf.Terminal.Example; 6 | 7 | public interface IRelayCommand : ICommand 8 | { 9 | } -------------------------------------------------------------------------------- /.net 8.0/Simple.Wpf.Terminal.Example/IRelayCommand.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Input; 2 | 3 | // ReSharper disable UnusedTypeParameter 4 | 5 | namespace Simple.Wpf.Terminal.Example; 6 | 7 | public interface IRelayCommand : ICommand 8 | { 9 | } -------------------------------------------------------------------------------- /.net standard/Simple.Wpf.Terminal.Themes.Common/IncludeThemesAssemblyAttribute.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Simple.Wpf.Terminal.Themes.Common 4 | { 5 | public sealed class IncludeThemesAssemblyAttribute : Attribute 6 | { 7 | } 8 | } -------------------------------------------------------------------------------- /.net standard/Simple.Wpf.Terminal.Themes.Common/Simple.Wpf.Terminal.Themes.Common.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netstandard2.0 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.net 5.0/Simple.Wpf.Terminal.Example/IRelayCommand.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Input; 2 | 3 | // ReSharper disable UnusedTypeParameter 4 | 5 | namespace Simple.Wpf.Terminal.Example 6 | { 7 | public interface IRelayCommand : ICommand 8 | { 9 | } 10 | } -------------------------------------------------------------------------------- /.net core/Simple.Wpf.Terminal.Example/IRelayCommand.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Input; 2 | 3 | // ReSharper disable UnusedTypeParameter 4 | 5 | namespace Simple.Wpf.Terminal.Example 6 | { 7 | public interface IRelayCommand : ICommand 8 | { 9 | } 10 | } -------------------------------------------------------------------------------- /.net framework/Simple.Wpf.Terminal.Example/IRelayCommand.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Input; 2 | 3 | // ReSharper disable UnusedTypeParameter 4 | 5 | namespace Simple.Wpf.Terminal.Example 6 | { 7 | public interface IRelayCommand : ICommand 8 | { 9 | } 10 | } -------------------------------------------------------------------------------- /.net framework/Simple.Wpf.Terminal/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.net framework/Simple.Wpf.Terminal.Example/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.net framework/Simple.Wpf.Terminal.Themes/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.net 5.0/Simple.Wpf.Terminal.Example/App.xaml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /.net 6.0/Simple.Wpf.Terminal.Example/App.xaml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /.net 7.0/Simple.Wpf.Terminal.Example/App.xaml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /.net 8.0/Simple.Wpf.Terminal.Example/App.xaml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /.net core/Simple.Wpf.Terminal.Example/App.xaml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /.net 6.0/Simple.Wpf.Terminal.Example/App.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | namespace Simple.Wpf.Terminal.Example; 4 | 5 | public partial class App 6 | { 7 | protected override void OnStartup(StartupEventArgs e) 8 | { 9 | base.OnStartup(e); 10 | 11 | var window = new MainWindow { DataContext = new ExampleViewModel() }; 12 | 13 | window.Show(); 14 | } 15 | } -------------------------------------------------------------------------------- /.net 7.0/Simple.Wpf.Terminal.Example/App.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | namespace Simple.Wpf.Terminal.Example; 4 | 5 | public partial class App 6 | { 7 | protected override void OnStartup(StartupEventArgs e) 8 | { 9 | base.OnStartup(e); 10 | 11 | var window = new MainWindow { DataContext = new ExampleViewModel() }; 12 | 13 | window.Show(); 14 | } 15 | } -------------------------------------------------------------------------------- /.net 8.0/Simple.Wpf.Terminal.Example/App.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | namespace Simple.Wpf.Terminal.Example; 4 | 5 | public partial class App 6 | { 7 | protected override void OnStartup(StartupEventArgs e) 8 | { 9 | base.OnStartup(e); 10 | 11 | var window = new MainWindow { DataContext = new ExampleViewModel() }; 12 | 13 | window.Show(); 14 | } 15 | } -------------------------------------------------------------------------------- /.net 5.0/Simple.Wpf.Terminal.Example/App.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | namespace Simple.Wpf.Terminal.Example 4 | { 5 | public partial class App 6 | { 7 | protected override void OnStartup(StartupEventArgs e) 8 | { 9 | base.OnStartup(e); 10 | 11 | var window = new MainWindow { DataContext = new ExampleViewModel() }; 12 | 13 | window.Show(); 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /.net core/Simple.Wpf.Terminal.Example/App.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | namespace Simple.Wpf.Terminal.Example 4 | { 5 | public partial class App 6 | { 7 | protected override void OnStartup(StartupEventArgs e) 8 | { 9 | base.OnStartup(e); 10 | 11 | var window = new MainWindow { DataContext = new ExampleViewModel() }; 12 | 13 | window.Show(); 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /.net framework/Simple.Wpf.Terminal.Example/App.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | namespace Simple.Wpf.Terminal.Example 4 | { 5 | public partial class App 6 | { 7 | protected override void OnStartup(StartupEventArgs e) 8 | { 9 | base.OnStartup(e); 10 | 11 | var window = new MainWindow { DataContext = new ExampleViewModel() }; 12 | 13 | window.Show(); 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /.net 5.0/Simple.Wpf.Terminal/Themes/generic.xaml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 10 | 11 | -------------------------------------------------------------------------------- /.net 6.0/Simple.Wpf.Terminal/Themes/generic.xaml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 10 | 11 | -------------------------------------------------------------------------------- /.net 7.0/Simple.Wpf.Terminal/Themes/generic.xaml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 10 | 11 | -------------------------------------------------------------------------------- /.net 8.0/Simple.Wpf.Terminal/Themes/generic.xaml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 10 | 11 | -------------------------------------------------------------------------------- /.net core/Simple.Wpf.Terminal/Themes/generic.xaml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 10 | 11 | -------------------------------------------------------------------------------- /.net framework/Simple.Wpf.Terminal/Themes/generic.xaml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 10 | 11 | -------------------------------------------------------------------------------- /.net 6.0/Simple.Wpf.Terminal/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | [assembly: ThemeInfo( 4 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located 5 | //(used if a resource is not found in the page, 6 | // or application resource dictionaries) 7 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located 8 | //(used if a resource is not found in the page, 9 | // app, or any theme specific resource dictionaries) 10 | )] -------------------------------------------------------------------------------- /.net 7.0/Simple.Wpf.Terminal/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | [assembly: ThemeInfo( 4 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located 5 | //(used if a resource is not found in the page, 6 | // or application resource dictionaries) 7 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located 8 | //(used if a resource is not found in the page, 9 | // app, or any theme specific resource dictionaries) 10 | )] -------------------------------------------------------------------------------- /.net 8.0/Simple.Wpf.Terminal/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | [assembly: ThemeInfo( 4 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located 5 | //(used if a resource is not found in the page, 6 | // or application resource dictionaries) 7 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located 8 | //(used if a resource is not found in the page, 9 | // app, or any theme specific resource dictionaries) 10 | )] -------------------------------------------------------------------------------- /.net 6.0/Simple.Wpf.Terminal.Example/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | [assembly: ThemeInfo( 4 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located 5 | //(used if a resource is not found in the page, 6 | // or application resource dictionaries) 7 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located 8 | //(used if a resource is not found in the page, 9 | // app, or any theme specific resource dictionaries) 10 | )] -------------------------------------------------------------------------------- /.net 7.0/Simple.Wpf.Terminal.Example/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | [assembly: ThemeInfo( 4 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located 5 | //(used if a resource is not found in the page, 6 | // or application resource dictionaries) 7 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located 8 | //(used if a resource is not found in the page, 9 | // app, or any theme specific resource dictionaries) 10 | )] -------------------------------------------------------------------------------- /.net 8.0/Simple.Wpf.Terminal.Example/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | [assembly: ThemeInfo( 4 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located 5 | //(used if a resource is not found in the page, 6 | // or application resource dictionaries) 7 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located 8 | //(used if a resource is not found in the page, 9 | // app, or any theme specific resource dictionaries) 10 | )] -------------------------------------------------------------------------------- /.net 6.0/Simple.Wpf.Terminal.Common/Simple.Wpf.Terminal.Common.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net6.0-windows10.0.17763.0 5 | disable 6 | true 7 | Ollie Riches 2022 8 | 1.0.0.0 9 | 1.0.0.0 10 | 1.0.0.0 11 | 1.0.0.0 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /.net 7.0/Simple.Wpf.Terminal.Common/Simple.Wpf.Terminal.Common.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net7.0-windows10.0.17763.0 5 | disable 6 | true 7 | Ollie Riches 2022 8 | 1.0.0.0 9 | 1.0.0.0 10 | 1.0.0.0 11 | 1.0.0.0 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /.net 8.0/Simple.Wpf.Terminal.Common/Simple.Wpf.Terminal.Common.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net8.0-windows10.0.17763.0 5 | disable 6 | true 7 | Ollie Riches 2022 8 | 1.0.0.0 9 | 1.0.0.0 10 | 1.0.0.0 11 | 1.0.0.0 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /.net 5.0/Simple.Wpf.Terminal.Common/Simple.Wpf.Terminal.Common.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net5.0-windows10.0.17763.0 5 | disable 6 | true 7 | 1.0.0.0 8 | 1.0.0.0 9 | 1.0.0.0 10 | 1.0.0.0 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /.net framework/Simple.Wpf.Terminal.Example/App.xaml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.net 6.0/Simple.Wpf.Terminal/ITerminalEx.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | using System.Windows.Data; 3 | using Simple.Wpf.Terminal.Common; 4 | 5 | namespace Simple.Wpf.Terminal; 6 | 7 | public interface ITerminalEx : ITerminal 8 | { 9 | /// 10 | /// The error color for the bound items. 11 | /// 12 | IValueConverter LineColorConverter { get; set; } 13 | 14 | /// 15 | /// The individual line height for the bound items. 16 | /// 17 | int ItemHeight { get; set; } 18 | 19 | /// 20 | /// The margin around the bound items. 21 | /// 22 | Thickness ItemsMargin { get; set; } 23 | } -------------------------------------------------------------------------------- /.net 7.0/Simple.Wpf.Terminal/ITerminalEx.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | using System.Windows.Data; 3 | using Simple.Wpf.Terminal.Common; 4 | 5 | namespace Simple.Wpf.Terminal; 6 | 7 | public interface ITerminalEx : ITerminal 8 | { 9 | /// 10 | /// The error color for the bound items. 11 | /// 12 | IValueConverter LineColorConverter { get; set; } 13 | 14 | /// 15 | /// The individual line height for the bound items. 16 | /// 17 | int ItemHeight { get; set; } 18 | 19 | /// 20 | /// The margin around the bound items. 21 | /// 22 | Thickness ItemsMargin { get; set; } 23 | } -------------------------------------------------------------------------------- /.net 8.0/Simple.Wpf.Terminal/ITerminalEx.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | using System.Windows.Data; 3 | using Simple.Wpf.Terminal.Common; 4 | 5 | namespace Simple.Wpf.Terminal; 6 | 7 | public interface ITerminalEx : ITerminal 8 | { 9 | /// 10 | /// The error color for the bound items. 11 | /// 12 | IValueConverter LineColorConverter { get; set; } 13 | 14 | /// 15 | /// The individual line height for the bound items. 16 | /// 17 | int ItemHeight { get; set; } 18 | 19 | /// 20 | /// The margin around the bound items. 21 | /// 22 | Thickness ItemsMargin { get; set; } 23 | } -------------------------------------------------------------------------------- /.net 6.0/Simple.Wpf.Terminal.Example/BaseViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.ComponentModel; 3 | 4 | namespace Simple.Wpf.Terminal.Example; 5 | 6 | public abstract class BaseViewModel : INotifyPropertyChanged 7 | { 8 | public event PropertyChangedEventHandler PropertyChanged; 9 | 10 | protected virtual bool SetPropertyAndNotify(ref T existingValue, T newValue, string propertyName = null) 11 | { 12 | if (EqualityComparer.Default.Equals(existingValue, newValue)) return false; 13 | 14 | existingValue = newValue; 15 | var handler = PropertyChanged; 16 | handler?.Invoke(this, new PropertyChangedEventArgs(propertyName)); 17 | 18 | return true; 19 | } 20 | } -------------------------------------------------------------------------------- /.net 7.0/Simple.Wpf.Terminal.Example/BaseViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.ComponentModel; 3 | 4 | namespace Simple.Wpf.Terminal.Example; 5 | 6 | public abstract class BaseViewModel : INotifyPropertyChanged 7 | { 8 | public event PropertyChangedEventHandler PropertyChanged; 9 | 10 | protected virtual bool SetPropertyAndNotify(ref T existingValue, T newValue, string propertyName = null) 11 | { 12 | if (EqualityComparer.Default.Equals(existingValue, newValue)) return false; 13 | 14 | existingValue = newValue; 15 | var handler = PropertyChanged; 16 | handler?.Invoke(this, new PropertyChangedEventArgs(propertyName)); 17 | 18 | return true; 19 | } 20 | } -------------------------------------------------------------------------------- /.net 8.0/Simple.Wpf.Terminal.Example/BaseViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.ComponentModel; 3 | 4 | namespace Simple.Wpf.Terminal.Example; 5 | 6 | public abstract class BaseViewModel : INotifyPropertyChanged 7 | { 8 | public event PropertyChangedEventHandler PropertyChanged; 9 | 10 | protected virtual bool SetPropertyAndNotify(ref T existingValue, T newValue, string propertyName = null) 11 | { 12 | if (EqualityComparer.Default.Equals(existingValue, newValue)) return false; 13 | 14 | existingValue = newValue; 15 | var handler = PropertyChanged; 16 | handler?.Invoke(this, new PropertyChangedEventArgs(propertyName)); 17 | 18 | return true; 19 | } 20 | } -------------------------------------------------------------------------------- /.net 5.0/Simple.Wpf.Terminal/ITerminalEx.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | using System.Windows.Data; 3 | using Simple.Wpf.Terminal.Common; 4 | 5 | namespace Simple.Wpf.Terminal 6 | { 7 | public interface ITerminalEx : ITerminal 8 | { 9 | /// 10 | /// The error color for the bound items. 11 | /// 12 | IValueConverter LineColorConverter { get; set; } 13 | 14 | /// 15 | /// The individual line height for the bound items. 16 | /// 17 | int ItemHeight { get; set; } 18 | 19 | /// 20 | /// The margin around the bound items. 21 | /// 22 | Thickness ItemsMargin { get; set; } 23 | } 24 | } -------------------------------------------------------------------------------- /.net core/Simple.Wpf.Terminal/ITerminalEx.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | using System.Windows.Data; 3 | using Simple.Wpf.Terminal.Common; 4 | 5 | namespace Simple.Wpf.Terminal 6 | { 7 | public interface ITerminalEx : ITerminal 8 | { 9 | /// 10 | /// The error color for the bound items. 11 | /// 12 | IValueConverter LineColorConverter { get; set; } 13 | 14 | /// 15 | /// The individual line height for the bound items. 16 | /// 17 | int ItemHeight { get; set; } 18 | 19 | /// 20 | /// The margin around the bound items. 21 | /// 22 | Thickness ItemsMargin { get; set; } 23 | } 24 | } -------------------------------------------------------------------------------- /.net 5.0/Simple.Wpf.Terminal.Example/BaseViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.ComponentModel; 3 | 4 | namespace Simple.Wpf.Terminal.Example 5 | { 6 | public abstract class BaseViewModel : INotifyPropertyChanged 7 | { 8 | public event PropertyChangedEventHandler PropertyChanged; 9 | 10 | protected virtual bool SetPropertyAndNotify(ref T existingValue, T newValue, string propertyName = null) 11 | { 12 | if (EqualityComparer.Default.Equals(existingValue, newValue)) return false; 13 | 14 | existingValue = newValue; 15 | var handler = PropertyChanged; 16 | handler?.Invoke(this, new PropertyChangedEventArgs(propertyName)); 17 | 18 | return true; 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /.net framework/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | using System.Windows; 4 | 5 | [assembly: AssemblyTitle("Simple.Wpf.Terminal")] 6 | [assembly: AssemblyDescription("")] 7 | [assembly: AssemblyConfiguration("")] 8 | [assembly: AssemblyCompany("")] 9 | [assembly: AssemblyProduct("Simple.Wpf.Terminal")] 10 | [assembly: AssemblyCopyright("Copyright © 2022")] 11 | [assembly: AssemblyTrademark("")] 12 | [assembly: AssemblyCulture("")] 13 | 14 | [assembly: ComVisible(false)] 15 | 16 | [assembly: ThemeInfo( 17 | ResourceDictionaryLocation.None, 18 | ResourceDictionaryLocation.SourceAssembly 19 | )] 20 | 21 | [assembly: AssemblyVersion("1.0.0.0")] 22 | [assembly: AssemblyFileVersion("1.0.0.0")] 23 | [assembly: AssemblyInformationalVersion("1.0.0.0")] -------------------------------------------------------------------------------- /.net framework/Simple.Wpf.Terminal/ITerminalEx.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | using System.Windows.Data; 3 | using Simple.Wpf.Terminal.Common; 4 | 5 | #pragma warning disable 1591 6 | 7 | namespace Simple.Wpf.Terminal 8 | { 9 | public interface ITerminalEx : ITerminal 10 | { 11 | /// 12 | /// The error color for the bound items. 13 | /// 14 | IValueConverter LineColorConverter { get; set; } 15 | 16 | /// 17 | /// The individual line height for the bound items. 18 | /// 19 | int ItemHeight { get; set; } 20 | 21 | /// 22 | /// The margin around the bound items. 23 | /// 24 | Thickness ItemsMargin { get; set; } 25 | } 26 | } -------------------------------------------------------------------------------- /.net 6.0/Simple.Wpf.Terminal/Simple.Wpf.Terminal.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Library 5 | net6.0-windows10.0.17763.0 6 | disable 7 | true 8 | Ollie Riches 2022 9 | 1.0.0.0 10 | 1.0.0.0 11 | 1.0.0.0 12 | 1.0.0.0 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | $(DefaultXamlRuntime) 22 | Designer 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /.net 7.0/Simple.Wpf.Terminal/Simple.Wpf.Terminal.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Library 5 | net7.0-windows10.0.17763.0 6 | disable 7 | true 8 | Ollie Riches 2022 9 | 1.0.0.0 10 | 1.0.0.0 11 | 1.0.0.0 12 | 1.0.0.0 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | $(DefaultXamlRuntime) 22 | Designer 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /.net 8.0/Simple.Wpf.Terminal/Simple.Wpf.Terminal.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Library 5 | net8.0-windows10.0.17763.0 6 | disable 7 | true 8 | Ollie Riches 2022 9 | 1.0.0.0 10 | 1.0.0.0 11 | 1.0.0.0 12 | 1.0.0.0 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | $(DefaultXamlRuntime) 22 | Designer 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /.net 5.0/Simple.Wpf.Terminal/Simple.Wpf.Terminal.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net5.0-windows10.0.17763.0 5 | disable 6 | true 7 | 1.0.0.0 8 | 1.0.0.0 9 | 1.0.0.0 10 | 1.0.0.0 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | $(DefaultXamlRuntime) 24 | Designer 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /.net framework/Simple.Wpf.Terminal.Themes/BlueTheme.xaml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 20 | 21 | -------------------------------------------------------------------------------- /.net framework/Simple.Wpf.Terminal.Themes/GreenTheme.xaml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 20 | 21 | -------------------------------------------------------------------------------- /.net framework/Simple.Wpf.Terminal.Themes/DarkTheme.xaml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 20 | 21 | -------------------------------------------------------------------------------- /.net 5.0/Simple.Wpf.Terminal.Themes/BlueTheme.xaml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 21 | 22 | -------------------------------------------------------------------------------- /.net 6.0/Simple.Wpf.Terminal.Themes/BlueTheme.xaml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 21 | 22 | -------------------------------------------------------------------------------- /.net 7.0/Simple.Wpf.Terminal.Themes/BlueTheme.xaml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 21 | 22 | -------------------------------------------------------------------------------- /.net 8.0/Simple.Wpf.Terminal.Themes/BlueTheme.xaml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 21 | 22 | -------------------------------------------------------------------------------- /.net 5.0/Simple.Wpf.Terminal.Themes/DarkTheme.xaml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 21 | 22 | -------------------------------------------------------------------------------- /.net 5.0/Simple.Wpf.Terminal.Themes/GreenTheme.xaml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 21 | 22 | -------------------------------------------------------------------------------- /.net 6.0/Simple.Wpf.Terminal.Themes/DarkTheme.xaml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 21 | 22 | -------------------------------------------------------------------------------- /.net 6.0/Simple.Wpf.Terminal.Themes/GreenTheme.xaml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 21 | 22 | -------------------------------------------------------------------------------- /.net 7.0/Simple.Wpf.Terminal.Themes/DarkTheme.xaml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 21 | 22 | -------------------------------------------------------------------------------- /.net 7.0/Simple.Wpf.Terminal.Themes/GreenTheme.xaml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 21 | 22 | -------------------------------------------------------------------------------- /.net 8.0/Simple.Wpf.Terminal.Themes/DarkTheme.xaml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 21 | 22 | -------------------------------------------------------------------------------- /.net 8.0/Simple.Wpf.Terminal.Themes/GreenTheme.xaml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 21 | 22 | -------------------------------------------------------------------------------- /.net core/Simple.Wpf.Terminal.Themes/BlueTheme.xaml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 21 | 22 | -------------------------------------------------------------------------------- /.net core/Simple.Wpf.Terminal.Themes/GreenTheme.xaml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 21 | 22 | -------------------------------------------------------------------------------- /.net core/Simple.Wpf.Terminal.Themes/DarkTheme.xaml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 21 | 22 | -------------------------------------------------------------------------------- /.net core/Simple.Wpf.Terminal.Example/BaseViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.ComponentModel; 3 | 4 | namespace Simple.Wpf.Terminal.Example 5 | { 6 | public abstract class BaseViewModel : INotifyPropertyChanged 7 | { 8 | public event PropertyChangedEventHandler PropertyChanged; 9 | 10 | protected virtual void OnPropertyChanged(string propertyName = null) 11 | { 12 | var handler = PropertyChanged; 13 | handler?.Invoke(this, new PropertyChangedEventArgs(propertyName)); 14 | } 15 | 16 | protected virtual bool SetPropertyAndNotify(ref T existingValue, T newValue, string propertyName = null) 17 | { 18 | if (EqualityComparer.Default.Equals(existingValue, newValue)) return false; 19 | 20 | existingValue = newValue; 21 | var handler = PropertyChanged; 22 | handler?.Invoke(this, new PropertyChangedEventArgs(propertyName)); 23 | 24 | return true; 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /.net framework/Simple.Wpf.Terminal.Example/BaseViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.ComponentModel; 3 | 4 | namespace Simple.Wpf.Terminal.Example 5 | { 6 | public abstract class BaseViewModel : INotifyPropertyChanged 7 | { 8 | public event PropertyChangedEventHandler PropertyChanged; 9 | 10 | protected virtual void OnPropertyChanged(string propertyName = null) 11 | { 12 | var handler = PropertyChanged; 13 | handler?.Invoke(this, new PropertyChangedEventArgs(propertyName)); 14 | } 15 | 16 | protected virtual bool SetPropertyAndNotify(ref T existingValue, T newValue, string propertyName = null) 17 | { 18 | if (EqualityComparer.Default.Equals(existingValue, newValue)) return false; 19 | 20 | existingValue = newValue; 21 | var handler = PropertyChanged; 22 | handler?.Invoke(this, new PropertyChangedEventArgs(propertyName)); 23 | 24 | return true; 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /.net standard/Simple.Wpf.Terminal.Common/Simple.Wpf.Terminal.Common.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netstandard2.0 5 | 1.0.0 6 | 1.0.0.0 7 | 1.0.0.0 8 | https://github.com/oriches/Simple.Wpf.Terminal 9 | false 10 | Copyright © 2022 11 | 12 | 13 | 14 | 15 | True 16 | True 17 | Resources.resx 18 | 19 | 20 | 21 | 22 | 23 | ResXFileCodeGenerator 24 | Resources.Designer.cs 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /.net 6.0/Simple.Wpf.Terminal.Themes/Simple.Wpf.Terminal.Themes.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net6.0-windows10.0.17763.0 5 | disable 6 | true 7 | Ollie Riches 2022 8 | 1.0.0.0 9 | 1.0.0.0 10 | 1.0.0.0 11 | 1.0.0.0 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | $(DefaultXamlRuntime) 21 | Designer 22 | 23 | 24 | $(DefaultXamlRuntime) 25 | Designer 26 | 27 | 28 | $(DefaultXamlRuntime) 29 | Designer 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /.net 7.0/Simple.Wpf.Terminal.Themes/Simple.Wpf.Terminal.Themes.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net7.0-windows10.0.17763.0 5 | disable 6 | true 7 | Ollie Riches 2022 8 | 1.0.0.0 9 | 1.0.0.0 10 | 1.0.0.0 11 | 1.0.0.0 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | $(DefaultXamlRuntime) 21 | Designer 22 | 23 | 24 | $(DefaultXamlRuntime) 25 | Designer 26 | 27 | 28 | $(DefaultXamlRuntime) 29 | Designer 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /.net 8.0/Simple.Wpf.Terminal.Themes/Simple.Wpf.Terminal.Themes.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net8.0-windows10.0.17763.0 5 | disable 6 | true 7 | Ollie Riches 2022 8 | 1.0.0.0 9 | 1.0.0.0 10 | 1.0.0.0 11 | 1.0.0.0 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | $(DefaultXamlRuntime) 21 | Designer 22 | 23 | 24 | $(DefaultXamlRuntime) 25 | Designer 26 | 27 | 28 | $(DefaultXamlRuntime) 29 | Designer 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Ollie Riches 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /.net 6.0/Simple.Wpf.Terminal.Example/Simple.Wpf.Terminal.Example.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | WinExe 5 | net6.0-windows10.0.17763.0 6 | disable 7 | true 8 | Ollie Riches 2022 9 | 1.0.0.0 10 | 1.0.0.0 11 | 1.0.0.0 12 | 1.0.0.0 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | $(DefaultXamlRuntime) 26 | Designer 27 | MSBuild:Compile 28 | 29 | 30 | $(DefaultXamlRuntime) 31 | Designer 32 | MSBuild:Compile 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /.net framework/Simple.Wpf.Terminal/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace Simple.Wpf.Terminal.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.10.0.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /.net 7.0/Simple.Wpf.Terminal.Example/Simple.Wpf.Terminal.Example.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | WinExe 5 | net7.0-windows10.0.17763.0 6 | disable 7 | true 8 | Ollie Riches 2022 9 | 1.0.0.0 10 | 1.0.0.0 11 | 1.0.0.0 12 | 1.0.0.0 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | $(DefaultXamlRuntime) 26 | Designer 27 | MSBuild:Compile 28 | 29 | 30 | $(DefaultXamlRuntime) 31 | Designer 32 | MSBuild:Compile 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /.net 8.0/Simple.Wpf.Terminal.Example/Simple.Wpf.Terminal.Example.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | WinExe 5 | net8.0-windows10.0.17763.0 6 | disable 7 | true 8 | Ollie Riches 2022 9 | 1.0.0.0 10 | 1.0.0.0 11 | 1.0.0.0 12 | 1.0.0.0 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | $(DefaultXamlRuntime) 26 | Designer 27 | MSBuild:Compile 28 | 29 | 30 | $(DefaultXamlRuntime) 31 | Designer 32 | MSBuild:Compile 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /.net 6.0/Simple.Wpf.Terminal.Example/RelayCommand.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Input; 3 | 4 | namespace Simple.Wpf.Terminal.Example; 5 | 6 | public sealed class RelayCommand : RelayCommand 7 | { 8 | public RelayCommand(Action execute) 9 | : base(_ => execute(), _ => true) 10 | { 11 | } 12 | 13 | public RelayCommand(Action execute, Func canExecute) : base(_ => execute(), _ => canExecute()) 14 | { 15 | } 16 | } 17 | 18 | public class RelayCommand : IRelayCommand 19 | { 20 | private readonly Func _canExecute; 21 | private readonly Action _execute; 22 | 23 | public RelayCommand(Action execute, Func canExecute) 24 | { 25 | _execute = execute; 26 | _canExecute = canExecute; 27 | } 28 | 29 | public void Execute(object parameter) 30 | { 31 | if (CanExecute(parameter)) _execute((T)parameter); 32 | } 33 | 34 | public bool CanExecute(object parameter) => _canExecute == null || _canExecute((T)parameter); 35 | 36 | public event EventHandler CanExecuteChanged 37 | { 38 | add => CommandManager.RequerySuggested += value; 39 | remove => CommandManager.RequerySuggested -= value; 40 | } 41 | } -------------------------------------------------------------------------------- /.net 7.0/Simple.Wpf.Terminal.Example/RelayCommand.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Input; 3 | 4 | namespace Simple.Wpf.Terminal.Example; 5 | 6 | public sealed class RelayCommand : RelayCommand 7 | { 8 | public RelayCommand(Action execute) 9 | : base(_ => execute(), _ => true) 10 | { 11 | } 12 | 13 | public RelayCommand(Action execute, Func canExecute) : base(_ => execute(), _ => canExecute()) 14 | { 15 | } 16 | } 17 | 18 | public class RelayCommand : IRelayCommand 19 | { 20 | private readonly Func _canExecute; 21 | private readonly Action _execute; 22 | 23 | public RelayCommand(Action execute, Func canExecute) 24 | { 25 | _execute = execute; 26 | _canExecute = canExecute; 27 | } 28 | 29 | public void Execute(object parameter) 30 | { 31 | if (CanExecute(parameter)) _execute((T)parameter); 32 | } 33 | 34 | public bool CanExecute(object parameter) => _canExecute == null || _canExecute((T)parameter); 35 | 36 | public event EventHandler CanExecuteChanged 37 | { 38 | add => CommandManager.RequerySuggested += value; 39 | remove => CommandManager.RequerySuggested -= value; 40 | } 41 | } -------------------------------------------------------------------------------- /.net 8.0/Simple.Wpf.Terminal.Example/RelayCommand.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Input; 3 | 4 | namespace Simple.Wpf.Terminal.Example; 5 | 6 | public sealed class RelayCommand : RelayCommand 7 | { 8 | public RelayCommand(Action execute) 9 | : base(_ => execute(), _ => true) 10 | { 11 | } 12 | 13 | public RelayCommand(Action execute, Func canExecute) : base(_ => execute(), _ => canExecute()) 14 | { 15 | } 16 | } 17 | 18 | public class RelayCommand : IRelayCommand 19 | { 20 | private readonly Func _canExecute; 21 | private readonly Action _execute; 22 | 23 | public RelayCommand(Action execute, Func canExecute) 24 | { 25 | _execute = execute; 26 | _canExecute = canExecute; 27 | } 28 | 29 | public void Execute(object parameter) 30 | { 31 | if (CanExecute(parameter)) _execute((T)parameter); 32 | } 33 | 34 | public bool CanExecute(object parameter) => _canExecute == null || _canExecute((T)parameter); 35 | 36 | public event EventHandler CanExecuteChanged 37 | { 38 | add => CommandManager.RequerySuggested += value; 39 | remove => CommandManager.RequerySuggested -= value; 40 | } 41 | } -------------------------------------------------------------------------------- /.net framework/Simple.Wpf.Terminal.Example/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace Simple.Wpf.Terminal.Example.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.10.0.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /.net framework/Simple.Wpf.Terminal.Themes/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace Simple.Wpf.Terminal.Themes.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.10.0.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /.net 5.0/Simple.Wpf.Terminal.Themes/Simple - Backup.Wpf.Terminal.Themes.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net5.0-windows 5 | disable 6 | true 7 | 8 | (AssemblyName) 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | $(DefaultXamlRuntime) 22 | Designer 23 | MSBuild:Compile 24 | 25 | 26 | $(DefaultXamlRuntime) 27 | Designer 28 | MSBuild:Compile 29 | 30 | 31 | $(DefaultXamlRuntime) 32 | Designer 33 | MSBuild:Compile 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /.net core/Simple.Wpf.Terminal/Simple.Wpf.Terminal.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netcoreapp3.1 5 | true 6 | Simple.Wpf.Terminal 7 | 1.0.0 8 | 1.0.0.0 9 | 1.0.0.0 10 | https://github.com/oriches/Simple.Wpf.Terminal 11 | false 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | True 25 | True 26 | Resources.resx 27 | 28 | 29 | 30 | 31 | 32 | ResXFileCodeGenerator 33 | Resources.Designer.cs 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /.net 5.0/Simple.Wpf.Terminal.Themes/Simple.Wpf.Terminal.Themes.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net5.0-windows10.0.17763.0 5 | disable 6 | true 7 | 1.0.0.0 8 | 1.0.0.0 9 | 1.0.0.0 10 | 1.0.0.0 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | $(DefaultXamlRuntime) 24 | Designer 25 | MSBuild:Compile 26 | 27 | 28 | $(DefaultXamlRuntime) 29 | Designer 30 | MSBuild:Compile 31 | 32 | 33 | $(DefaultXamlRuntime) 34 | Designer 35 | MSBuild:Compile 36 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /.net 5.0/Simple.Wpf.Terminal.Example/RelayCommand.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Input; 3 | 4 | namespace Simple.Wpf.Terminal.Example 5 | { 6 | public sealed class RelayCommand : RelayCommand 7 | { 8 | public RelayCommand(Action execute) 9 | : base(_ => execute(), _ => true) 10 | { 11 | } 12 | 13 | public RelayCommand(Action execute, Func canExecute) : base(_ => execute(), _ => canExecute()) 14 | { 15 | } 16 | } 17 | 18 | public class RelayCommand : IRelayCommand 19 | { 20 | private readonly Func _canExecute; 21 | private readonly Action _execute; 22 | 23 | public RelayCommand(Action execute, Func canExecute) 24 | { 25 | _execute = execute; 26 | _canExecute = canExecute; 27 | } 28 | 29 | public void Execute(object parameter) 30 | { 31 | if (CanExecute(parameter)) _execute((T)parameter); 32 | } 33 | 34 | public bool CanExecute(object parameter) => _canExecute == null || _canExecute((T)parameter); 35 | 36 | public event EventHandler CanExecuteChanged 37 | { 38 | add => CommandManager.RequerySuggested += value; 39 | remove => CommandManager.RequerySuggested -= value; 40 | } 41 | } 42 | } -------------------------------------------------------------------------------- /.net core/Simple.Wpf.Terminal.Example/RelayCommand.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Input; 3 | 4 | namespace Simple.Wpf.Terminal.Example 5 | { 6 | public sealed class RelayCommand : RelayCommand 7 | { 8 | public RelayCommand(Action execute) 9 | : base(x => execute(), x => true) 10 | { 11 | } 12 | 13 | public RelayCommand(Action execute, Func canExecute) : base(x => execute(), x => canExecute()) 14 | { 15 | } 16 | } 17 | 18 | public class RelayCommand : IRelayCommand 19 | { 20 | private readonly Func _canExecute; 21 | private readonly Action _execute; 22 | 23 | public RelayCommand(Action execute, Func canExecute) 24 | { 25 | _execute = execute; 26 | _canExecute = canExecute; 27 | } 28 | 29 | public void Execute(object parameter) 30 | { 31 | if (CanExecute(parameter)) _execute((T)parameter); 32 | } 33 | 34 | public bool CanExecute(object parameter) => _canExecute == null || _canExecute((T)parameter); 35 | 36 | public event EventHandler CanExecuteChanged 37 | { 38 | add => CommandManager.RequerySuggested += value; 39 | remove => CommandManager.RequerySuggested -= value; 40 | } 41 | } 42 | } -------------------------------------------------------------------------------- /.net framework/Simple.Wpf.Terminal.Example/RelayCommand.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Input; 3 | 4 | namespace Simple.Wpf.Terminal.Example 5 | { 6 | public sealed class RelayCommand : RelayCommand 7 | { 8 | public RelayCommand(Action execute) 9 | : base(x => execute(), x => true) 10 | { 11 | } 12 | 13 | public RelayCommand(Action execute, Func canExecute) : base(x => execute(), x => canExecute()) 14 | { 15 | } 16 | } 17 | 18 | public class RelayCommand : IRelayCommand 19 | { 20 | private readonly Func _canExecute; 21 | private readonly Action _execute; 22 | 23 | public RelayCommand(Action execute, Func canExecute) 24 | { 25 | _execute = execute; 26 | _canExecute = canExecute; 27 | } 28 | 29 | public void Execute(object parameter) 30 | { 31 | if (CanExecute(parameter)) _execute((T)parameter); 32 | } 33 | 34 | public bool CanExecute(object parameter) => _canExecute == null || _canExecute((T)parameter); 35 | 36 | public event EventHandler CanExecuteChanged 37 | { 38 | add => CommandManager.RequerySuggested += value; 39 | remove => CommandManager.RequerySuggested -= value; 40 | } 41 | } 42 | } -------------------------------------------------------------------------------- /.net 6.0/Simple.Wpf.Terminal.Common/ITerminal.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | 5 | namespace Simple.Wpf.Terminal.Common; 6 | 7 | /// 8 | /// Exposes the dependency properties and events exposed by the terminal control. 9 | /// 10 | public interface ITerminal 11 | { 12 | /// 13 | /// The bound items to the terminal. 14 | /// 15 | IEnumerable ItemsSource { get; set; } 16 | 17 | /// 18 | /// Bound auto completion strings to the terminal. 19 | /// 20 | IEnumerable AutoCompletionsSource { get; set; } 21 | 22 | /// 23 | /// The prompt of the terminal. 24 | /// 25 | string Prompt { get; set; } 26 | 27 | /// 28 | /// The current editable line of the terminal (bottom line). 29 | /// 30 | string Line { get; set; } 31 | 32 | /// 33 | /// The display path for the bound items. 34 | /// 35 | string ItemDisplayPath { get; set; } 36 | 37 | /// 38 | /// Automatic scroll to end of vertical scrollbar 39 | /// 40 | bool AutoScroll { get; set; } 41 | 42 | /// 43 | /// Event fired when the user presses the Enter key. 44 | /// 45 | event EventHandler LineEntered; 46 | } -------------------------------------------------------------------------------- /.net 7.0/Simple.Wpf.Terminal.Common/ITerminal.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | 5 | namespace Simple.Wpf.Terminal.Common; 6 | 7 | /// 8 | /// Exposes the dependency properties and events exposed by the terminal control. 9 | /// 10 | public interface ITerminal 11 | { 12 | /// 13 | /// The bound items to the terminal. 14 | /// 15 | IEnumerable ItemsSource { get; set; } 16 | 17 | /// 18 | /// Bound auto completion strings to the terminal. 19 | /// 20 | IEnumerable AutoCompletionsSource { get; set; } 21 | 22 | /// 23 | /// The prompt of the terminal. 24 | /// 25 | string Prompt { get; set; } 26 | 27 | /// 28 | /// The current editable line of the terminal (bottom line). 29 | /// 30 | string Line { get; set; } 31 | 32 | /// 33 | /// The display path for the bound items. 34 | /// 35 | string ItemDisplayPath { get; set; } 36 | 37 | /// 38 | /// Automatic scroll to end of vertical scrollbar 39 | /// 40 | bool AutoScroll { get; set; } 41 | 42 | /// 43 | /// Event fired when the user presses the Enter key. 44 | /// 45 | event EventHandler LineEntered; 46 | } -------------------------------------------------------------------------------- /.net 8.0/Simple.Wpf.Terminal.Common/ITerminal.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | 5 | namespace Simple.Wpf.Terminal.Common; 6 | 7 | /// 8 | /// Exposes the dependency properties and events exposed by the terminal control. 9 | /// 10 | public interface ITerminal 11 | { 12 | /// 13 | /// The bound items to the terminal. 14 | /// 15 | IEnumerable ItemsSource { get; set; } 16 | 17 | /// 18 | /// Bound auto completion strings to the terminal. 19 | /// 20 | IEnumerable AutoCompletionsSource { get; set; } 21 | 22 | /// 23 | /// The prompt of the terminal. 24 | /// 25 | string Prompt { get; set; } 26 | 27 | /// 28 | /// The current editable line of the terminal (bottom line). 29 | /// 30 | string Line { get; set; } 31 | 32 | /// 33 | /// The display path for the bound items. 34 | /// 35 | string ItemDisplayPath { get; set; } 36 | 37 | /// 38 | /// Automatic scroll to end of vertical scrollbar 39 | /// 40 | bool AutoScroll { get; set; } 41 | 42 | /// 43 | /// Event fired when the user presses the Enter key. 44 | /// 45 | event EventHandler LineEntered; 46 | } -------------------------------------------------------------------------------- /.net 6.0/Simple.Wpf.Terminal.Example/ExampleViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Collections.ObjectModel; 3 | using System.Reflection; 4 | using System.Windows.Input; 5 | 6 | namespace Simple.Wpf.Terminal.Example; 7 | 8 | public sealed class ExampleViewModel : BaseViewModel 9 | { 10 | private readonly ObservableCollection _items; 11 | private ICommand _executeItemCommand; 12 | 13 | public ExampleViewModel() 14 | { 15 | _items = new ObservableCollection(); 16 | 17 | var executingAssembly = Assembly.GetExecutingAssembly(); 18 | foreach (var assembly in executingAssembly.GetReferencedAssemblies()) 19 | _items.Add("Referenced assembly: " + assembly.FullName); 20 | 21 | _items.Add(string.Empty); 22 | _items.Add("'>' is the default prompt, and can be overriden in an XAML style."); 23 | _items.Add(string.Empty); 24 | _items.Add("Type a line and press ENTER, it will be added to the output..."); 25 | _items.Add(string.Empty); 26 | 27 | _executeItemCommand = new RelayCommand(AddItem, _ => true); 28 | } 29 | 30 | public IEnumerable Items => _items; 31 | 32 | public ICommand ExecuteItemCommand 33 | { 34 | get => _executeItemCommand; 35 | set => SetPropertyAndNotify(ref _executeItemCommand, value, nameof(ExecuteItemCommand)); 36 | } 37 | 38 | private void AddItem(string item) => _items.Add(item); 39 | } -------------------------------------------------------------------------------- /.net 7.0/Simple.Wpf.Terminal.Example/ExampleViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Collections.ObjectModel; 3 | using System.Reflection; 4 | using System.Windows.Input; 5 | 6 | namespace Simple.Wpf.Terminal.Example; 7 | 8 | public sealed class ExampleViewModel : BaseViewModel 9 | { 10 | private readonly ObservableCollection _items; 11 | private ICommand _executeItemCommand; 12 | 13 | public ExampleViewModel() 14 | { 15 | _items = new ObservableCollection(); 16 | 17 | var executingAssembly = Assembly.GetExecutingAssembly(); 18 | foreach (var assembly in executingAssembly.GetReferencedAssemblies()) 19 | _items.Add("Referenced assembly: " + assembly.FullName); 20 | 21 | _items.Add(string.Empty); 22 | _items.Add("'>' is the default prompt, and can be overriden in an XAML style."); 23 | _items.Add(string.Empty); 24 | _items.Add("Type a line and press ENTER, it will be added to the output..."); 25 | _items.Add(string.Empty); 26 | 27 | _executeItemCommand = new RelayCommand(AddItem, _ => true); 28 | } 29 | 30 | public IEnumerable Items => _items; 31 | 32 | public ICommand ExecuteItemCommand 33 | { 34 | get => _executeItemCommand; 35 | set => SetPropertyAndNotify(ref _executeItemCommand, value, nameof(ExecuteItemCommand)); 36 | } 37 | 38 | private void AddItem(string item) => _items.Add(item); 39 | } -------------------------------------------------------------------------------- /.net 8.0/Simple.Wpf.Terminal.Example/ExampleViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Collections.ObjectModel; 3 | using System.Reflection; 4 | using System.Windows.Input; 5 | 6 | namespace Simple.Wpf.Terminal.Example; 7 | 8 | public sealed class ExampleViewModel : BaseViewModel 9 | { 10 | private readonly ObservableCollection _items; 11 | private ICommand _executeItemCommand; 12 | 13 | public ExampleViewModel() 14 | { 15 | _items = new ObservableCollection(); 16 | 17 | var executingAssembly = Assembly.GetExecutingAssembly(); 18 | foreach (var assembly in executingAssembly.GetReferencedAssemblies()) 19 | _items.Add("Referenced assembly: " + assembly.FullName); 20 | 21 | _items.Add(string.Empty); 22 | _items.Add("'>' is the default prompt, and can be overriden in an XAML style."); 23 | _items.Add(string.Empty); 24 | _items.Add("Type a line and press ENTER, it will be added to the output..."); 25 | _items.Add(string.Empty); 26 | 27 | _executeItemCommand = new RelayCommand(AddItem, _ => true); 28 | } 29 | 30 | public IEnumerable Items => _items; 31 | 32 | public ICommand ExecuteItemCommand 33 | { 34 | get => _executeItemCommand; 35 | set => SetPropertyAndNotify(ref _executeItemCommand, value, nameof(ExecuteItemCommand)); 36 | } 37 | 38 | private void AddItem(string item) => _items.Add(item); 39 | } -------------------------------------------------------------------------------- /.net 5.0/Simple.Wpf.Terminal.Example/Simple.Wpf.Terminal.Example.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | WinExe 5 | net5.0-windows10.0.17763.0 6 | disable 7 | true 8 | 1.0.0.0 9 | 1.0.0.0 10 | 1.0.0.0 11 | 1.0.0.0 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | $(DefaultXamlRuntime) 29 | Designer 30 | MSBuild:Compile 31 | 32 | 33 | 34 | 35 | 36 | $(DefaultXamlRuntime) 37 | MSBuild:Compile 38 | 39 | 40 | $(DefaultXamlRuntime) 41 | Designer 42 | MSBuild:Compile 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /.net 5.0/Simple.Wpf.Terminal.Common/ITerminal.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | 5 | namespace Simple.Wpf.Terminal.Common 6 | { 7 | /// 8 | /// Exposes the dependency properties and events exposed by the terminal control. 9 | /// 10 | public interface ITerminal 11 | { 12 | /// 13 | /// The bound items to the terminal. 14 | /// 15 | IEnumerable ItemsSource { get; set; } 16 | 17 | /// 18 | /// Bound auto completion strings to the terminal. 19 | /// 20 | IEnumerable AutoCompletionsSource { get; set; } 21 | 22 | /// 23 | /// The prompt of the terminal. 24 | /// 25 | string Prompt { get; set; } 26 | 27 | /// 28 | /// The current editable line of the terminal (bottom line). 29 | /// 30 | string Line { get; set; } 31 | 32 | /// 33 | /// The display path for the bound items. 34 | /// 35 | string ItemDisplayPath { get; set; } 36 | 37 | /// 38 | /// Automatic scroll to end of vertical scrollbar 39 | /// 40 | bool AutoScroll { get; set; } 41 | 42 | /// 43 | /// Event fired when the user presses the Enter key. 44 | /// 45 | event EventHandler LineEntered; 46 | } 47 | } -------------------------------------------------------------------------------- /.net standard/Simple.Wpf.Terminal.Common/ITerminal.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | 5 | namespace Simple.Wpf.Terminal.Common 6 | { 7 | /// 8 | /// Exposes the dependency properties and events exposed by the terminal control. 9 | /// 10 | public interface ITerminal 11 | { 12 | /// 13 | /// The bound items to the terminal. 14 | /// 15 | IEnumerable ItemsSource { get; set; } 16 | 17 | /// 18 | /// Bound auto completion strings to the terminal. 19 | /// 20 | IEnumerable AutoCompletionsSource { get; set; } 21 | 22 | /// 23 | /// The prompt of the terminal. 24 | /// 25 | string Prompt { get; set; } 26 | 27 | /// 28 | /// The current editable line of the terminal (bottom line). 29 | /// 30 | string Line { get; set; } 31 | 32 | /// 33 | /// The display path for the bound items. 34 | /// 35 | string ItemDisplayPath { get; set; } 36 | 37 | /// 38 | /// Automatic scroll to end of vertical scrollbar 39 | /// 40 | bool AutoScroll { get; set; } 41 | 42 | /// 43 | /// Event fired when the user presses the Enter key. 44 | /// 45 | event EventHandler LineEntered; 46 | } 47 | } -------------------------------------------------------------------------------- /.net core/Simple.Wpf.Terminal.Example/ExampleViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Collections.ObjectModel; 3 | using System.Reflection; 4 | using System.Windows.Input; 5 | 6 | namespace Simple.Wpf.Terminal.Example 7 | { 8 | public sealed class ExampleViewModel : BaseViewModel 9 | { 10 | private readonly ObservableCollection _items; 11 | private ICommand _executeItemCommand; 12 | 13 | public ExampleViewModel() 14 | { 15 | _items = new ObservableCollection(); 16 | 17 | var executingAssembly = Assembly.GetExecutingAssembly(); 18 | foreach (var assembly in executingAssembly.GetReferencedAssemblies()) 19 | _items.Add("Referenced assembly: " + assembly.FullName); 20 | 21 | _items.Add(string.Empty); 22 | _items.Add("'>' is the default prompt, and can be overriden in an XAML style."); 23 | _items.Add(string.Empty); 24 | _items.Add("Type a line and press ENTER, it will be added to the output..."); 25 | _items.Add(string.Empty); 26 | 27 | _executeItemCommand = new RelayCommand(AddItem, x => true); 28 | } 29 | 30 | public IEnumerable Items => _items; 31 | 32 | public ICommand ExecuteItemCommand 33 | { 34 | get => _executeItemCommand; 35 | set => SetPropertyAndNotify(ref _executeItemCommand, value, "ExecuteItemCommand"); 36 | } 37 | 38 | private void AddItem(string item) => _items.Add(item); 39 | } 40 | } -------------------------------------------------------------------------------- /.net 5.0/Simple.Wpf.Terminal.Example/ExampleViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Collections.ObjectModel; 3 | using System.Reflection; 4 | using System.Windows.Input; 5 | 6 | namespace Simple.Wpf.Terminal.Example 7 | { 8 | public sealed class ExampleViewModel : BaseViewModel 9 | { 10 | private readonly ObservableCollection _items; 11 | private ICommand _executeItemCommand; 12 | 13 | public ExampleViewModel() 14 | { 15 | _items = new ObservableCollection(); 16 | 17 | var executingAssembly = Assembly.GetExecutingAssembly(); 18 | foreach (var assembly in executingAssembly.GetReferencedAssemblies()) 19 | _items.Add("Referenced assembly: " + assembly.FullName); 20 | 21 | _items.Add(string.Empty); 22 | _items.Add("'>' is the default prompt, and can be overriden in an XAML style."); 23 | _items.Add(string.Empty); 24 | _items.Add("Type a line and press ENTER, it will be added to the output..."); 25 | _items.Add(string.Empty); 26 | 27 | _executeItemCommand = new RelayCommand(AddItem, _ => true); 28 | } 29 | 30 | public IEnumerable Items => _items; 31 | 32 | public ICommand ExecuteItemCommand 33 | { 34 | get => _executeItemCommand; 35 | set => SetPropertyAndNotify(ref _executeItemCommand, value, nameof(ExecuteItemCommand)); 36 | } 37 | 38 | private void AddItem(string item) => _items.Add(item); 39 | } 40 | } -------------------------------------------------------------------------------- /.net framework/Simple.Wpf.Terminal.Example/ExampleViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Collections.ObjectModel; 3 | using System.Reflection; 4 | using System.Windows.Input; 5 | 6 | namespace Simple.Wpf.Terminal.Example 7 | { 8 | public sealed class ExampleViewModel : BaseViewModel 9 | { 10 | private readonly ObservableCollection _items; 11 | private ICommand _executeItemCommand; 12 | 13 | public ExampleViewModel() 14 | { 15 | _items = new ObservableCollection(); 16 | 17 | var executingAssembly = Assembly.GetExecutingAssembly(); 18 | foreach (var assembly in executingAssembly.GetReferencedAssemblies()) 19 | _items.Add("Referenced assembly: " + assembly.FullName); 20 | 21 | _items.Add(string.Empty); 22 | _items.Add("'>' is the default prompt, and can be overriden in an XAML style."); 23 | _items.Add(string.Empty); 24 | _items.Add("Type a line and press ENTER, it will be added to the output..."); 25 | _items.Add(string.Empty); 26 | 27 | _executeItemCommand = new RelayCommand(AddItem, x => true); 28 | } 29 | 30 | public IEnumerable Items => _items; 31 | 32 | public ICommand ExecuteItemCommand 33 | { 34 | get => _executeItemCommand; 35 | set => SetPropertyAndNotify(ref _executeItemCommand, value, "ExecuteItemCommand"); 36 | } 37 | 38 | private void AddItem(string item) => _items.Add(item); 39 | } 40 | } -------------------------------------------------------------------------------- /.net core/Simple.Wpf.Terminal.Example/Simple.Wpf.Terminal.Example.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | WinExe 5 | netcoreapp3.1 6 | true 7 | 8 | 1.0.0 9 | 1.0.0.0 10 | 1.0.0.0 11 | https://github.com/oriches/Simple.Wpf.Terminal 12 | false 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | True 31 | True 32 | Resources.resx 33 | 34 | 35 | 36 | 37 | 38 | ResXFileCodeGenerator 39 | Resources.Designer.cs 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /.net 5.0/Simple.Wpf.Terminal.Example/MainWindow.xaml: -------------------------------------------------------------------------------- 1 | 14 | 15 | 21 | 22 | 23 | 24 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /.net 6.0/Simple.Wpf.Terminal.Example/MainWindow.xaml: -------------------------------------------------------------------------------- 1 | 14 | 15 | 21 | 22 | 23 | 24 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /.net 7.0/Simple.Wpf.Terminal.Example/MainWindow.xaml: -------------------------------------------------------------------------------- 1 | 14 | 15 | 21 | 22 | 23 | 24 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /.net 8.0/Simple.Wpf.Terminal.Example/MainWindow.xaml: -------------------------------------------------------------------------------- 1 | 14 | 15 | 21 | 22 | 23 | 24 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /.net core/Simple.Wpf.Terminal.Example/MainWindow.xaml: -------------------------------------------------------------------------------- 1 | 14 | 15 | 21 | 22 | 23 | 24 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /.net core/Simple.Wpf.Terminal.Themes/Simple.Wpf.Terminal.Themes.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Library 5 | netcoreapp3.1 6 | true 7 | 8 | 9 | 1.0.0 10 | 1.0.0.0 11 | 1.0.0.0 12 | https://github.com/oriches/Simple.Wpf.Terminal 13 | false 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | True 27 | True 28 | Resources.resx 29 | 30 | 31 | 32 | 33 | 34 | ResXFileCodeGenerator 35 | Resources.Designer.cs 36 | 37 | 38 | 39 | 40 | 41 | Designer 42 | 43 | 44 | Designer 45 | 46 | 47 | Designer 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /Simple.Wpf.Terminal2.nuspec: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Simple.Wpf.Terminal 5 | 1.0.0 6 | Ollie Riches 7 | Ollie Riches 8 | false 9 | https://github.com/oriches/Simple.Wpf.Terminal/blob/master/LICENSE 10 | https://github.com/oriches/Simple.Wpf.Terminal 11 | This user control does NOT actually do anything more than display data - the user control is the View (UI) in a MVVM implementation, the ViewModel would be responsible for the actual behaviour & contents of the console\terminal window. The user control is designed to use XAML binding for all UI properties the user can configure. 12 | A simple console\terminal window for use in a WPF application, this is a user control that will allow the user to enter a line of text (script\command) and\or display a list of items 13 | Added support for .Net 5.0 14 | Simple.Wpf.Terminal 2022 15 | en-GB 16 | WPF, XAML, Terminal, Console, UI Control 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Build Folders (you can keep bin if you'd like, to store dlls and pdbs) 2 | [Bb]in/ 3 | [Oo]bj/ 4 | 5 | # mstest test results 6 | TestResults 7 | 8 | ## Ignore Visual Studio temporary files, build results, and 9 | ## files generated by popular Visual Studio add-ons. 10 | 11 | # User-specific files 12 | *.suo 13 | *.user 14 | *.sln.docstates 15 | 16 | # Build results 17 | [Dd]ebug/ 18 | [Rr]elease/ 19 | x64/ 20 | *_i.c 21 | *_p.c 22 | *.ilk 23 | *.meta 24 | *.obj 25 | *.pch 26 | *.pdb 27 | *.pgc 28 | *.pgd 29 | *.rsp 30 | *.sbr 31 | *.tlb 32 | *.tli 33 | *.tlh 34 | *.tmp 35 | *.log 36 | *.vspscc 37 | *.vssscc 38 | .builds 39 | 40 | # Visual C++ cache files 41 | ipch/ 42 | *.aps 43 | *.ncb 44 | *.opensdf 45 | *.sdf 46 | 47 | # Visual Studio profiler 48 | *.psess 49 | *.vsp 50 | *.vspx 51 | 52 | # Guidance Automation Toolkit 53 | *.gpState 54 | 55 | # ReSharper is a .NET coding add-in 56 | _ReSharper* 57 | 58 | # NCrunch 59 | *.ncrunch* 60 | .*crunch*.local.xml 61 | 62 | # Installshield output folder 63 | [Ee]xpress 64 | 65 | # DocProject is a documentation generator add-in 66 | DocProject/buildhelp/ 67 | DocProject/Help/*.HxT 68 | DocProject/Help/*.HxC 69 | DocProject/Help/*.hhc 70 | DocProject/Help/*.hhk 71 | DocProject/Help/*.hhp 72 | DocProject/Help/Html2 73 | DocProject/Help/html 74 | 75 | # Click-Once directory 76 | publish 77 | 78 | # Publish Web Output 79 | *.Publish.xml 80 | 81 | # NuGet Packages Directory 82 | packages 83 | 84 | # Windows Azure Build Output 85 | csx 86 | *.build.csdef 87 | 88 | # Windows Store app package directory 89 | AppPackages/ 90 | 91 | # Others 92 | [Bb]in 93 | [Oo]bj 94 | sql 95 | TestResults 96 | [Tt]est[Rr]esult* 97 | *.Cache 98 | ClientBin 99 | [Ss]tyle[Cc]op.* 100 | ~$* 101 | *.dbmdl 102 | Generated_Code #added for RIA/Silverlight projects 103 | 104 | # Backup & report files from converting an old project file to a newer 105 | # Visual Studio version. Backup files are not needed, because we have git ;-) 106 | _UpgradeReport_Files/ 107 | Backup*/ 108 | UpgradeLog*.XML 109 | /.vs 110 | -------------------------------------------------------------------------------- /.net framework/Simple.Wpf.Terminal.Example/MainWindow.xaml: -------------------------------------------------------------------------------- 1 | 14 | 15 | 16 | 22 | 23 | 24 | 32 | 33 | 34 | 35 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | using System.Windows; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("Simple.Wpf.Terminal")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("Simple.Wpf.Terminal")] 13 | [assembly: AssemblyCopyright("Copyright © 2019")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | //In order to begin building localizable applications, set 23 | //CultureYouAreCodingWith in your .csproj file 24 | //inside a . For example, if you are using US english 25 | //in your source files, set the to en-US. Then uncomment 26 | //the NeutralResourceLanguage attribute below. Update the "en-US" in 27 | //the line below to match the UICulture setting in the project file. 28 | 29 | //[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] 30 | 31 | 32 | [assembly: ThemeInfo( 33 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located 34 | //(used if a resource is not found in the page, 35 | // or application resource dictionaries) 36 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located 37 | //(used if a resource is not found in the page, 38 | // app, or any theme specific resource dictionaries) 39 | )] 40 | 41 | 42 | // Version information for an assembly consists of the following four values: 43 | // 44 | // Major Version 45 | // Minor Version 46 | // Build Number 47 | // Revision 48 | // 49 | // You can specify all the values or you can default the Build and Revision Numbers 50 | // by using the '*' as shown below: 51 | // [assembly: AssemblyVersion("1.0.*")] 52 | [assembly: AssemblyVersion("2.2.0.0")] 53 | [assembly: AssemblyFileVersion("2.2.0.0")] -------------------------------------------------------------------------------- /.net framework/Simple.Wpf.Terminal.Example/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | using System.Windows; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("Simple.Wpf.Terminal.Example")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("Simple.Wpf.Terminal.Example")] 13 | [assembly: AssemblyCopyright("Copyright © 2022")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | //In order to begin building localizable applications, set 23 | //CultureYouAreCodingWith in your .csproj file 24 | //inside a . For example, if you are using US english 25 | //in your source files, set the to en-US. Then uncomment 26 | //the NeutralResourceLanguage attribute below. Update the "en-US" in 27 | //the line below to match the UICulture setting in the project file. 28 | 29 | //[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] 30 | 31 | 32 | [assembly: ThemeInfo( 33 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located 34 | //(used if a resource is not found in the page, 35 | // or application resource dictionaries) 36 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located 37 | //(used if a resource is not found in the page, 38 | // app, or any theme specific resource dictionaries) 39 | )] 40 | 41 | 42 | // Version information for an assembly consists of the following four values: 43 | // 44 | // Major Version 45 | // Minor Version 46 | // Build Number 47 | // Revision 48 | // 49 | // You can specify all the values or you can default the Build and Revision Numbers 50 | // by using the '*' as shown below: 51 | // [assembly: AssemblyVersion("1.0.*")] 52 | [assembly: AssemblyVersion("1.0.0.0")] 53 | [assembly: AssemblyFileVersion("1.0.0.0")] -------------------------------------------------------------------------------- /.net 6.0/Simple.Wpf.Terminal/VisualTreeExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Windows; 5 | using System.Windows.Media; 6 | 7 | namespace Simple.Wpf.Terminal; 8 | 9 | /// 10 | /// Extension methods for querying the Visual Tree 11 | /// 12 | internal static class VisualTreeExtensions 13 | { 14 | /// 15 | /// Search the Visual Tree for an Ancestor by Type 16 | /// 17 | /// 18 | /// 19 | /// 20 | internal static T GetVisualAncestor(this DependencyObject d) where T : class 21 | { 22 | var item = VisualTreeHelper.GetParent(d); 23 | 24 | while (item != null) 25 | { 26 | if (item is T itemAsT) return itemAsT; 27 | item = VisualTreeHelper.GetParent(item); 28 | } 29 | 30 | return null; 31 | } 32 | 33 | /// 34 | /// Search the Visual Tree for an Ancestor 35 | /// 36 | /// 37 | /// 38 | /// 39 | internal static DependencyObject GetVisualAncestor(this DependencyObject d, Type type) 40 | { 41 | var item = VisualTreeHelper.GetParent(d); 42 | 43 | while (item != null) 44 | { 45 | if (item.GetType() == type) return item; 46 | item = VisualTreeHelper.GetParent(item); 47 | } 48 | 49 | return null; 50 | } 51 | 52 | /// 53 | /// Search the Visual Tree for a Descendent (child) by Type 54 | /// 55 | /// 56 | /// 57 | /// 58 | internal static T GetVisualDescendent(this DependencyObject d) where T : DependencyObject => 59 | d.GetVisualDescendents() 60 | .FirstOrDefault(); 61 | 62 | /// 63 | /// Search the Visual Tree for multiple Descendents (children) by Type 64 | /// 65 | /// 66 | /// 67 | /// 68 | internal static IEnumerable GetVisualDescendents(this DependencyObject d) where T : DependencyObject 69 | { 70 | var childCount = VisualTreeHelper.GetChildrenCount(d); 71 | 72 | for (var n = 0; n < childCount; n++) 73 | { 74 | var child = VisualTreeHelper.GetChild(d, n); 75 | 76 | if (child is T dependencyObject) yield return dependencyObject; 77 | 78 | foreach (var match in GetVisualDescendents(child)) yield return match; 79 | } 80 | } 81 | } -------------------------------------------------------------------------------- /.net 7.0/Simple.Wpf.Terminal/VisualTreeExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Windows; 5 | using System.Windows.Media; 6 | 7 | namespace Simple.Wpf.Terminal; 8 | 9 | /// 10 | /// Extension methods for querying the Visual Tree 11 | /// 12 | internal static class VisualTreeExtensions 13 | { 14 | /// 15 | /// Search the Visual Tree for an Ancestor by Type 16 | /// 17 | /// 18 | /// 19 | /// 20 | internal static T GetVisualAncestor(this DependencyObject d) where T : class 21 | { 22 | var item = VisualTreeHelper.GetParent(d); 23 | 24 | while (item != null) 25 | { 26 | if (item is T itemAsT) return itemAsT; 27 | item = VisualTreeHelper.GetParent(item); 28 | } 29 | 30 | return null; 31 | } 32 | 33 | /// 34 | /// Search the Visual Tree for an Ancestor 35 | /// 36 | /// 37 | /// 38 | /// 39 | internal static DependencyObject GetVisualAncestor(this DependencyObject d, Type type) 40 | { 41 | var item = VisualTreeHelper.GetParent(d); 42 | 43 | while (item != null) 44 | { 45 | if (item.GetType() == type) return item; 46 | item = VisualTreeHelper.GetParent(item); 47 | } 48 | 49 | return null; 50 | } 51 | 52 | /// 53 | /// Search the Visual Tree for a Descendent (child) by Type 54 | /// 55 | /// 56 | /// 57 | /// 58 | internal static T GetVisualDescendent(this DependencyObject d) where T : DependencyObject => 59 | d.GetVisualDescendents() 60 | .FirstOrDefault(); 61 | 62 | /// 63 | /// Search the Visual Tree for multiple Descendents (children) by Type 64 | /// 65 | /// 66 | /// 67 | /// 68 | internal static IEnumerable GetVisualDescendents(this DependencyObject d) where T : DependencyObject 69 | { 70 | var childCount = VisualTreeHelper.GetChildrenCount(d); 71 | 72 | for (var n = 0; n < childCount; n++) 73 | { 74 | var child = VisualTreeHelper.GetChild(d, n); 75 | 76 | if (child is T dependencyObject) yield return dependencyObject; 77 | 78 | foreach (var match in GetVisualDescendents(child)) yield return match; 79 | } 80 | } 81 | } -------------------------------------------------------------------------------- /.net 8.0/Simple.Wpf.Terminal/VisualTreeExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Windows; 5 | using System.Windows.Media; 6 | 7 | namespace Simple.Wpf.Terminal; 8 | 9 | /// 10 | /// Extension methods for querying the Visual Tree 11 | /// 12 | internal static class VisualTreeExtensions 13 | { 14 | /// 15 | /// Search the Visual Tree for an Ancestor by Type 16 | /// 17 | /// 18 | /// 19 | /// 20 | internal static T GetVisualAncestor(this DependencyObject d) where T : class 21 | { 22 | var item = VisualTreeHelper.GetParent(d); 23 | 24 | while (item != null) 25 | { 26 | if (item is T itemAsT) return itemAsT; 27 | item = VisualTreeHelper.GetParent(item); 28 | } 29 | 30 | return null; 31 | } 32 | 33 | /// 34 | /// Search the Visual Tree for an Ancestor 35 | /// 36 | /// 37 | /// 38 | /// 39 | internal static DependencyObject GetVisualAncestor(this DependencyObject d, Type type) 40 | { 41 | var item = VisualTreeHelper.GetParent(d); 42 | 43 | while (item != null) 44 | { 45 | if (item.GetType() == type) return item; 46 | item = VisualTreeHelper.GetParent(item); 47 | } 48 | 49 | return null; 50 | } 51 | 52 | /// 53 | /// Search the Visual Tree for a Descendent (child) by Type 54 | /// 55 | /// 56 | /// 57 | /// 58 | internal static T GetVisualDescendent(this DependencyObject d) where T : DependencyObject => 59 | d.GetVisualDescendents() 60 | .FirstOrDefault(); 61 | 62 | /// 63 | /// Search the Visual Tree for multiple Descendents (children) by Type 64 | /// 65 | /// 66 | /// 67 | /// 68 | internal static IEnumerable GetVisualDescendents(this DependencyObject d) where T : DependencyObject 69 | { 70 | var childCount = VisualTreeHelper.GetChildrenCount(d); 71 | 72 | for (var n = 0; n < childCount; n++) 73 | { 74 | var child = VisualTreeHelper.GetChild(d, n); 75 | 76 | if (child is T dependencyObject) yield return dependencyObject; 77 | 78 | foreach (var match in GetVisualDescendents(child)) yield return match; 79 | } 80 | } 81 | } -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | # Set default behavior to automatically normalize line endings. 3 | ############################################################################### 4 | * text=auto 5 | 6 | ############################################################################### 7 | # Set default behavior for command prompt diff. 8 | # 9 | # This is need for earlier builds of msysgit that does not have it on by 10 | # default for csharp files. 11 | # Note: This is only used by command line 12 | ############################################################################### 13 | #*.cs diff=csharp 14 | 15 | ############################################################################### 16 | # Set the merge driver for project and solution files 17 | # 18 | # Merging from the command prompt will add diff markers to the files if there 19 | # are conflicts (Merging from VS is not affected by the settings below, in VS 20 | # the diff markers are never inserted). Diff markers may cause the following 21 | # file extensions to fail to load in VS. An alternative would be to treat 22 | # these files as binary and thus will always conflict and require user 23 | # intervention with every merge. To do so, just uncomment the entries below 24 | ############################################################################### 25 | #*.sln merge=binary 26 | #*.csproj merge=binary 27 | #*.vbproj merge=binary 28 | #*.vcxproj merge=binary 29 | #*.vcproj merge=binary 30 | #*.dbproj merge=binary 31 | #*.fsproj merge=binary 32 | #*.lsproj merge=binary 33 | #*.wixproj merge=binary 34 | #*.modelproj merge=binary 35 | #*.sqlproj merge=binary 36 | #*.wwaproj merge=binary 37 | 38 | ############################################################################### 39 | # behavior for image files 40 | # 41 | # image files are treated as binary by default. 42 | ############################################################################### 43 | #*.jpg binary 44 | #*.png binary 45 | #*.gif binary 46 | 47 | ############################################################################### 48 | # diff behavior for common document formats 49 | # 50 | # Convert binary document formats to text before diffing them. This feature 51 | # is only available from the command line. Turn it on by uncommenting the 52 | # entries below. 53 | ############################################################################### 54 | #*.doc diff=astextplain 55 | #*.DOC diff=astextplain 56 | #*.docx diff=astextplain 57 | #*.DOCX diff=astextplain 58 | #*.dot diff=astextplain 59 | #*.DOT diff=astextplain 60 | #*.pdf diff=astextplain 61 | #*.PDF diff=astextplain 62 | #*.rtf diff=astextplain 63 | #*.RTF diff=astextplain 64 | -------------------------------------------------------------------------------- /.net 5.0/Simple.Wpf.Terminal/VisualTreeExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Windows; 5 | using System.Windows.Media; 6 | 7 | namespace Simple.Wpf.Terminal 8 | { 9 | /// 10 | /// Extension methods for querying the Visual Tree 11 | /// 12 | internal static class VisualTreeExtensions 13 | { 14 | /// 15 | /// Search the Visual Tree for an Ancestor by Type 16 | /// 17 | /// 18 | /// 19 | /// 20 | internal static T GetVisualAncestor(this DependencyObject d) where T : class 21 | { 22 | var item = VisualTreeHelper.GetParent(d); 23 | 24 | while (item != null) 25 | { 26 | if (item is T itemAsT) return itemAsT; 27 | item = VisualTreeHelper.GetParent(item); 28 | } 29 | 30 | return null; 31 | } 32 | 33 | /// 34 | /// Search the Visual Tree for an Ancestor 35 | /// 36 | /// 37 | /// 38 | /// 39 | internal static DependencyObject GetVisualAncestor(this DependencyObject d, Type type) 40 | { 41 | var item = VisualTreeHelper.GetParent(d); 42 | 43 | while (item != null) 44 | { 45 | if (item.GetType() == type) return item; 46 | item = VisualTreeHelper.GetParent(item); 47 | } 48 | 49 | return null; 50 | } 51 | 52 | /// 53 | /// Search the Visual Tree for a Descendent (child) by Type 54 | /// 55 | /// 56 | /// 57 | /// 58 | internal static T GetVisualDescendent(this DependencyObject d) where T : DependencyObject => 59 | d.GetVisualDescendents() 60 | .FirstOrDefault(); 61 | 62 | /// 63 | /// Search the Visual Tree for multiple Descendents (children) by Type 64 | /// 65 | /// 66 | /// 67 | /// 68 | internal static IEnumerable GetVisualDescendents(this DependencyObject d) where T : DependencyObject 69 | { 70 | var childCount = VisualTreeHelper.GetChildrenCount(d); 71 | 72 | for (var n = 0; n < childCount; n++) 73 | { 74 | var child = VisualTreeHelper.GetChild(d, n); 75 | 76 | if (child is T dependencyObject) yield return dependencyObject; 77 | 78 | foreach (var match in GetVisualDescendents(child)) yield return match; 79 | } 80 | } 81 | } 82 | } -------------------------------------------------------------------------------- /.net core/Simple.Wpf.Terminal/VisualTreeExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Windows; 5 | using System.Windows.Media; 6 | 7 | namespace Simple.Wpf.Terminal 8 | { 9 | /// 10 | /// Extension methods for querying the Visual Tree 11 | /// 12 | internal static class VisualTreeExtensions 13 | { 14 | /// 15 | /// Search the Visual Tree for an Ancestor by Type 16 | /// 17 | /// 18 | /// 19 | /// 20 | internal static T GetVisualAncestor(this DependencyObject d) where T : class 21 | { 22 | var item = VisualTreeHelper.GetParent(d); 23 | 24 | while (item != null) 25 | { 26 | if (item is T itemAsT) return itemAsT; 27 | item = VisualTreeHelper.GetParent(item); 28 | } 29 | 30 | return null; 31 | } 32 | 33 | /// 34 | /// Search the Visual Tree for an Ancestor 35 | /// 36 | /// 37 | /// 38 | /// 39 | internal static DependencyObject GetVisualAncestor(this DependencyObject d, Type type) 40 | { 41 | var item = VisualTreeHelper.GetParent(d); 42 | 43 | while (item != null) 44 | { 45 | if (item.GetType() == type) return item; 46 | item = VisualTreeHelper.GetParent(item); 47 | } 48 | 49 | return null; 50 | } 51 | 52 | /// 53 | /// Search the Visual Tree for a Descendent (child) by Type 54 | /// 55 | /// 56 | /// 57 | /// 58 | internal static T GetVisualDescendent(this DependencyObject d) where T : DependencyObject => 59 | d.GetVisualDescendents() 60 | .FirstOrDefault(); 61 | 62 | /// 63 | /// Search the Visual Tree for multiple Descendents (children) by Type 64 | /// 65 | /// 66 | /// 67 | /// 68 | internal static IEnumerable GetVisualDescendents(this DependencyObject d) where T : DependencyObject 69 | { 70 | var childCount = VisualTreeHelper.GetChildrenCount(d); 71 | 72 | for (var n = 0; n < childCount; n++) 73 | { 74 | var child = VisualTreeHelper.GetChild(d, n); 75 | 76 | if (child is T dependencyObject) yield return dependencyObject; 77 | 78 | foreach (var match in GetVisualDescendents(child)) yield return match; 79 | } 80 | } 81 | } 82 | } -------------------------------------------------------------------------------- /.net framework/Simple.Wpf.Terminal/VisualTreeExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Windows; 5 | using System.Windows.Media; 6 | 7 | namespace Simple.Wpf.Terminal 8 | { 9 | /// 10 | /// Extension methods for querying the Visual Tree 11 | /// 12 | internal static class VisualTreeExtensions 13 | { 14 | /// 15 | /// Search the Visual Tree for an Ancestor by Type 16 | /// 17 | /// 18 | /// 19 | /// 20 | internal static T GetVisualAncestor(this DependencyObject d) where T : class 21 | { 22 | var item = VisualTreeHelper.GetParent(d); 23 | 24 | while (item != null) 25 | { 26 | if (item is T itemAsT) return itemAsT; 27 | item = VisualTreeHelper.GetParent(item); 28 | } 29 | 30 | return null; 31 | } 32 | 33 | /// 34 | /// Search the Visual Tree for an Ancestor 35 | /// 36 | /// 37 | /// 38 | /// 39 | internal static DependencyObject GetVisualAncestor(this DependencyObject d, Type type) 40 | { 41 | var item = VisualTreeHelper.GetParent(d); 42 | 43 | while (item != null) 44 | { 45 | if (item.GetType() == type) return item; 46 | item = VisualTreeHelper.GetParent(item); 47 | } 48 | 49 | return null; 50 | } 51 | 52 | /// 53 | /// Search the Visual Tree for a Descendent (child) by Type 54 | /// 55 | /// 56 | /// 57 | /// 58 | internal static T GetVisualDescendent(this DependencyObject d) where T : DependencyObject => 59 | d.GetVisualDescendents() 60 | .FirstOrDefault(); 61 | 62 | /// 63 | /// Search the Visual Tree for multiple Descendents (children) by Type 64 | /// 65 | /// 66 | /// 67 | /// 68 | internal static IEnumerable GetVisualDescendents(this DependencyObject d) where T : DependencyObject 69 | { 70 | var childCount = VisualTreeHelper.GetChildrenCount(d); 71 | 72 | for (var n = 0; n < childCount; n++) 73 | { 74 | var child = VisualTreeHelper.GetChild(d, n); 75 | 76 | if (child is T dependencyObject) yield return dependencyObject; 77 | 78 | foreach (var match in GetVisualDescendents(child)) yield return match; 79 | } 80 | } 81 | } 82 | } -------------------------------------------------------------------------------- /.net core/Simple.Wpf.Terminal/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace Simple.Wpf.Terminal.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// A strongly-typed resource class, for looking up localized strings, etc. 17 | /// 18 | // This class was auto-generated by the StronglyTypedResourceBuilder 19 | // class via a tool like ResGen or Visual Studio. 20 | // To add or remove a member, edit your .ResX file then rerun ResGen 21 | // with the /str option, or rebuild your VS project. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resources() { 33 | } 34 | 35 | /// 36 | /// Returns the cached ResourceManager instance used by this class. 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Simple.Wpf.Terminal.Properties.Resources", typeof(Resources).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// Overrides the current thread's CurrentUICulture property for all 51 | /// resource lookups using this strongly typed resource class. 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /.net framework/Simple.Wpf.Terminal/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace Simple.Wpf.Terminal.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// A strongly-typed resource class, for looking up localized strings, etc. 17 | /// 18 | // This class was auto-generated by the StronglyTypedResourceBuilder 19 | // class via a tool like ResGen or Visual Studio. 20 | // To add or remove a member, edit your .ResX file then rerun ResGen 21 | // with the /str option, or rebuild your VS project. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resources() { 33 | } 34 | 35 | /// 36 | /// Returns the cached ResourceManager instance used by this class. 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Simple.Wpf.Terminal.Properties.Resources", typeof(Resources).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// Overrides the current thread's CurrentUICulture property for all 51 | /// resource lookups using this strongly typed resource class. 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /.net core/Simple.Wpf.Terminal.Example/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace Simple.Wpf.Terminal.Example.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// A strongly-typed resource class, for looking up localized strings, etc. 17 | /// 18 | // This class was auto-generated by the StronglyTypedResourceBuilder 19 | // class via a tool like ResGen or Visual Studio. 20 | // To add or remove a member, edit your .ResX file then rerun ResGen 21 | // with the /str option, or rebuild your VS project. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resources() { 33 | } 34 | 35 | /// 36 | /// Returns the cached ResourceManager instance used by this class. 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Simple.Wpf.Terminal.Example.Properties.Resources", typeof(Resources).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// Overrides the current thread's CurrentUICulture property for all 51 | /// resource lookups using this strongly typed resource class. 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /.net core/Simple.Wpf.Terminal.Themes/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace Simple.Wpf.Terminal.Themes.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// A strongly-typed resource class, for looking up localized strings, etc. 17 | /// 18 | // This class was auto-generated by the StronglyTypedResourceBuilder 19 | // class via a tool like ResGen or Visual Studio. 20 | // To add or remove a member, edit your .ResX file then rerun ResGen 21 | // with the /str option, or rebuild your VS project. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resources() { 33 | } 34 | 35 | /// 36 | /// Returns the cached ResourceManager instance used by this class. 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Simple.Wpf.Terminal.Themes.Properties.Resources", typeof(Resources).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// Overrides the current thread's CurrentUICulture property for all 51 | /// resource lookups using this strongly typed resource class. 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /.net framework/Simple.Wpf.Terminal.Example/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace Simple.Wpf.Terminal.Example.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// A strongly-typed resource class, for looking up localized strings, etc. 17 | /// 18 | // This class was auto-generated by the StronglyTypedResourceBuilder 19 | // class via a tool like ResGen or Visual Studio. 20 | // To add or remove a member, edit your .ResX file then rerun ResGen 21 | // with the /str option, or rebuild your VS project. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resources() { 33 | } 34 | 35 | /// 36 | /// Returns the cached ResourceManager instance used by this class. 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Simple.Wpf.Terminal.Example.Properties.Resources", typeof(Resources).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// Overrides the current thread's CurrentUICulture property for all 51 | /// resource lookups using this strongly typed resource class. 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /.net framework/Simple.Wpf.Terminal.Themes/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace Simple.Wpf.Terminal.Themes.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// A strongly-typed resource class, for looking up localized strings, etc. 17 | /// 18 | // This class was auto-generated by the StronglyTypedResourceBuilder 19 | // class via a tool like ResGen or Visual Studio. 20 | // To add or remove a member, edit your .ResX file then rerun ResGen 21 | // with the /str option, or rebuild your VS project. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resources() { 33 | } 34 | 35 | /// 36 | /// Returns the cached ResourceManager instance used by this class. 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Simple.Wpf.Terminal.Themes.Properties.Resources", typeof(Resources).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// Overrides the current thread's CurrentUICulture property for all 51 | /// resource lookups using this strongly typed resource class. 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /.net standard/Simple.Wpf.Terminal.Common/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace Simple.Wpf.Terminal.Common.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// A strongly-typed resource class, for looking up localized strings, etc. 17 | /// 18 | // This class was auto-generated by the StronglyTypedResourceBuilder 19 | // class via a tool like ResGen or Visual Studio. 20 | // To add or remove a member, edit your .ResX file then rerun ResGen 21 | // with the /str option, or rebuild your VS project. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resources() { 33 | } 34 | 35 | /// 36 | /// Returns the cached ResourceManager instance used by this class. 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Simple.Wpf.Terminal.Common.Properties.Resources", typeof(Resources).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// Overrides the current thread's CurrentUICulture property for all 51 | /// resource lookups using this strongly typed resource class. 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /.net core/Simple.Wpf.Terminal/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | text/microsoft-resx 91 | 92 | 93 | 1.3 94 | 95 | 96 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 97 | 98 | 99 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 100 | 101 | -------------------------------------------------------------------------------- /.net core/Simple.Wpf.Terminal.Example/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | text/microsoft-resx 91 | 92 | 93 | 1.3 94 | 95 | 96 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 97 | 98 | 99 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 100 | 101 | -------------------------------------------------------------------------------- /.net core/Simple.Wpf.Terminal.Themes/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | text/microsoft-resx 91 | 92 | 93 | 1.3 94 | 95 | 96 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 97 | 98 | 99 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 100 | 101 | -------------------------------------------------------------------------------- /.net standard/Simple.Wpf.Terminal.Common/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | text/microsoft-resx 91 | 92 | 93 | 1.3 94 | 95 | 96 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 97 | 98 | 99 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 100 | 101 | -------------------------------------------------------------------------------- /.net framework/Simple.Wpf.Terminal.Themes/Simple.Wpf.Terminal.Themes.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {1A275FCE-F3D4-47AD-9549-A64683D0909A} 8 | library 9 | Properties 10 | Simple.Wpf.Terminal.Themes 11 | Simple.Wpf.Terminal.Themes 12 | v4.7 13 | 512 14 | {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 15 | 4 16 | 17 | 18 | 19 | true 20 | full 21 | false 22 | bin\Debug\ 23 | DEBUG;TRACE 24 | prompt 25 | 4 26 | false 27 | 28 | 29 | pdbonly 30 | true 31 | bin\Release\ 32 | TRACE 33 | prompt 34 | 4 35 | false 36 | 37 | 38 | 39 | 40 | 41 | 42 | 4.0 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | Properties\AssemblyInfo.cs 51 | 52 | 53 | 54 | True 55 | True 56 | Resources.resx 57 | 58 | 59 | True 60 | Settings.settings 61 | True 62 | 63 | 64 | ResXFileCodeGenerator 65 | Resources.Designer.cs 66 | 67 | 68 | SettingsSingleFileGenerator 69 | Settings.Designer.cs 70 | 71 | 72 | 73 | 74 | 75 | MSBuild:Compile 76 | Designer 77 | 78 | 79 | MSBuild:Compile 80 | Designer 81 | 82 | 83 | MSBuild:Compile 84 | Designer 85 | 86 | 87 | 88 | 89 | {88a9ad3b-c379-4b78-8cf5-8acd0995dd07} 90 | Simple.Wpf.Terminal.Common 91 | 92 | 93 | {F956185B-7111-460E-A9C9-6FE8F4E29693} 94 | Simple.Wpf.Terminal 95 | 96 | 97 | 98 | 105 | -------------------------------------------------------------------------------- /Simple.Wpf.Terminal.nuspec: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Simple.Wpf.Terminal 6 | 1.0.0 7 | Ollie Riches 8 | Ollie Riches 9 | false 10 | https://github.com/oriches/Simple.Wpf.Terminal/blob/master/LICENSE 11 | https://github.com/oriches/Simple.Wpf.Terminal 12 | This user control does NOT actually do anything more than display data - the user control is the View (UI) in a MVVM implementation, the ViewModel would be responsible for the actual behaviour & contents of the console\terminal window. The user control is designed to use XAML binding for all UI properties the user can configure. 13 | A simple console\terminal window for use in a WPF application, this is a user control that will allow the user to enter a line of text (script\command) and\or display a list of items 14 | Added support for .Net 8.0 15 | Simple.Wpf.Terminal 2023 16 | en-GB 17 | WPF, XAML, Terminal, Console, UI Control 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 32 | 34 | 36 | 38 | 40 | 42 | 44 | 46 | 48 | 50 | 52 | 54 | 56 | 58 | 60 | 62 | 64 | 66 | 68 | 70 | 71 | -------------------------------------------------------------------------------- /.net framework/Simple.Wpf.Terminal.Example/Simple.Wpf.Terminal.Example.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {8740606C-96AB-4465-A07F-E83B426E6BEA} 8 | WinExe 9 | Properties 10 | Simple.Wpf.Terminal.Example 11 | Simple.Wpf.Terminal.Example 12 | v4.7 13 | 512 14 | {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 15 | 4 16 | 17 | 18 | 19 | AnyCPU 20 | true 21 | full 22 | false 23 | bin\Debug\ 24 | DEBUG;TRACE 25 | prompt 26 | 4 27 | false 28 | 29 | 30 | AnyCPU 31 | pdbonly 32 | true 33 | bin\Release\ 34 | TRACE 35 | prompt 36 | 4 37 | false 38 | 39 | 40 | true 41 | 42 | 43 | 44 | ..\..\packages\Microsoft.Xaml.Behaviors.Wpf.1.1.77\lib\net462\Microsoft.Xaml.Behaviors.dll 45 | 46 | 47 | 48 | 49 | 4.0 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | MSBuild:Compile 58 | Designer 59 | 60 | 61 | 62 | 63 | 64 | MSBuild:Compile 65 | Designer 66 | 67 | 68 | App.xaml 69 | Code 70 | 71 | 72 | 73 | MainWindow.xaml 74 | Code 75 | 76 | 77 | 78 | 79 | Code 80 | 81 | 82 | True 83 | True 84 | Resources.resx 85 | 86 | 87 | True 88 | Settings.settings 89 | True 90 | 91 | 92 | ResXFileCodeGenerator 93 | Resources.Designer.cs 94 | 95 | 96 | 97 | 98 | SettingsSingleFileGenerator 99 | Settings.Designer.cs 100 | 101 | 102 | 103 | 104 | 105 | {88a9ad3b-c379-4b78-8cf5-8acd0995dd07} 106 | Simple.Wpf.Terminal.Common 107 | 108 | 109 | {1a275fce-f3d4-47ad-9549-a64683d0909a} 110 | Simple.Wpf.Terminal.Themes 111 | 112 | 113 | {f956185b-7111-460e-a9c9-6fe8f4e29693} 114 | Simple.Wpf.Terminal 115 | 116 | 117 | 118 | 125 | -------------------------------------------------------------------------------- /.net framework/Simple.Wpf.Terminal/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | -------------------------------------------------------------------------------- /.net framework/Simple.Wpf.Terminal.Themes/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | -------------------------------------------------------------------------------- /.net framework/Simple.Wpf.Terminal.Example/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | --------------------------------------------------------------------------------