Calabonga.Commandex.Engine
2.5.0
See the version list below for details.
dotnet add package Calabonga.Commandex.Engine --version 2.5.0
NuGet\Install-Package Calabonga.Commandex.Engine -Version 2.5.0
<PackageReference Include="Calabonga.Commandex.Engine" Version="2.5.0" />
<PackageVersion Include="Calabonga.Commandex.Engine" Version="2.5.0" />
<PackageReference Include="Calabonga.Commandex.Engine" />
paket add Calabonga.Commandex.Engine --version 2.5.0
#r "nuget: Calabonga.Commandex.Engine, 2.5.0"
#:package Calabonga.Commandex.Engine@2.5.0
#addin nuget:?package=Calabonga.Commandex.Engine&version=2.5.0
#tool nuget:?package=Calabonga.Commandex.Engine&version=2.5.0
Calabonga.Commandex.Engine
This is a nuget-package for modular monolith application on WPF platform with plugins as modules. Engine and contracts library for Calabonga.Commandex. Contracts are using for developing a modules for Commandex Shell.
What is Calabonga.Commandex
The Calabonga.Commandex - This is an application on WPF-platform built with CommunityToolkit.MVVM for modules (plugins) using: launch and execute.
What is the Calabonga.Commandex can:
- Find a modules
.dll(plugins) in the folder you set up. - Launch or execute modules
.dll(plughis) from GUI. - Get the results of the module's (plugis) work after they completed.
It's a complex solution with a few repositories:
- Calabonga.Commandex.Shell → Command Executer or Command Launcher. To run commands of any type for any purpose. For example, to execute a stored procedure or just to copy some files to some destination.
- Calabonga.Commandex.Commands → Commands for Calabonga.Commandex.Shell that can execute them from unified shell.
- Calabonga.Commandex.Shell.Develop.Template → This is a Developer version of the Command Executer (
Calabonga.Commandex). Which is created to runs commands of any type for any purposes. For example, to execute a stored procedure or just to co… - Calabonga.Commandex.Engine → Engine and contracts library for Calabonga.Commandex. Contracts are using for developing a modules for Commandex Shell.
- Calabonga.Commandex.Engine.Processors → Results Processors for Calabonga.Commandex.Shell commands execution results. This is an extended version of the just show string in the notification dialog.
History of changes
v2.5.0 2025-06-29
Toast Notification implemented: Success, Information, Warning, Error. How it works? It's really easy.
- Inject
INotificationManagerinto your ViewModel constructor:public partial class MainWindowsViewModel : ViewModelBase, IDisposable { private readonly INotificationManager _notificationManager; public MainWindowsViewModel(INotificationManager notificationManager) { _notificationManager = notificationManager; } // ... other code... } - Create a toast message:
var errorToast = NotificationManager.CreateErrorToast("Message text", "Title"); // or var successToast = NotificationManager.CreateSuccessToast("Message text", "Title"); // or var warningToast = NotificationManager.CreateWarningToast("Message text", "Title"); // or var informationToast = NotificationManager.CreateInformationToast("Message text", "Title"); - The show a toast:
_notificationManager.Show(errorToast); // or _notificationManager.Show(successToast); // or _notificationManager.Show(warningToast); // or _notificationManager.Show(informationToast); - There are two zone where you can show a toasts:
Screen- All toast notifications will show on the screen outside of the application. In this case you do not do anything. This case already works "out of the box".NotificationZone- All toast notification will show in the special controlNotificationZoneyou should add on your XAML (VisualTree). You can do this something like shown below:Add namespace first
xmlns:controls="clr-namespace:Calabonga.Commandex.Engine.ToastNotifications.Controls;assembly=Calabonga.Commandex.Engine"Then add control
NotificationZonewith name "NotificationZone":<controls:NotificationZone x:Name="NotificationZone" ItemsCountMax="3" Position="TopRight" />After than you should add a
NotificationZoneas a parameter forShow()method:_notificationManager.Show(errorToast, "NotificationZone"); // or _notificationManager.Show(successToast, "NotificationZone"); // or _notificationManager.Show(warningToast , "NotificationZone"); // or _notificationManager.Show(informationToast, "NotificationZone");
v2.3.0 2025-06-18
ViewModelLocationProvider and ViewModelLocation created for Views and ViewModels binding automation. If you want to use AutoBindingViewModel on the View (XAML), something like shown below:
<UserControl x:Class="Commandex.MyDemoCommand.Views.MyDemoView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:Commandex.MyDemoCommand.Views"
xmlns:viewModels="clr-namespace:Commandex.MyDemoCommand.ViewModels"
+ xmlns:viewModelLocator="clr-namespace:Calabonga.Commandex.Engine.ViewModelLocator;assembly=Calabonga.Commandex.Engine"
+ viewModelLocator:ViewModelLocator.AutoBindingViewModel="True"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
Than you should initialize ViewModelLocationProvider in your Shell project in the Composition Root of your Application. For example:
var buildServiceProvider = services.BuildServiceProvider();
ViewModelLocationProvider.SetDefaultViewModelFactory(type => buildServiceProvider.GetRequiredService(type));
return buildServiceProvider;
You should also follow the naming rules for Views and ViewModels (or create your own overrides). What's the rule? Everything is simple. For example, if your have a view with name PersonProfileView.xaml than you should create a ViewModel for it with name PersonProfileViewModel.
v2.2.0 2025-04-15
- Open dialog in the window maximized now available. See the override for DialogResult
IsMaximized - Some summaries updated/added/improved.
- Some refactoring made, syntax error fixed.
v2.1.0 2025-01-30
ICommandexIdentityabstraction added for user managing. This abstraction help to create an application user and store it on theShell. Please see Wiki samples.ISecureDataabstraction added for availability to store on the Shell side data about tokens (access_token,refresh_token).IIdentityManagerabstraction for dependency injection container. This can help to make availdable a logged user on the Shell for commands (plugins/modules).- Some summaries updated/added/improved.
- Some refactoring made, syntax error fixed.
v2.0.0 2024-11-19
- Migration to NET9.0
- Some summaries were updated (added)
v1.4.2 2024-11-05
The result for ConfirmationDialog as Func result added (delegate). Now you can use async/await for confirmation.
v1.4.1 2024-11-01
New feature implemented ConfirmationDialog. Now you can ask your user some confirmations:
[RelayCommand]
private void OpenLogsFolder()
=> _dialogService.ShowConfirmation("Open logs folder?", result =>
{
if (result.ConfirmResult != ConfirmationType.Ok)
{
return;
}
var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "logs");
if (!Path.Exists(path))
{
_dialogService.ShowNotification($"Folder not found: {path}");
return;
}
Process.Start(new ProcessStartInfo
{
FileName = path,
UseShellExecute = true,
Verb = "open"
});
}, ConfirmationTypes.OkCancel);
v1.3.0 2024-10-12
- The
SettingsPathparameter was created to allow you to store the command's settings env-files in a separate folder - Summaries for some members were updated
v1.2.0 2024-10-09
- Nugets dependencies versions updated
ServiceCollectionextension created for DefaultResultProcessor registration in container- Base commands processing implementation updated for new type of the result creation available
IResultProcessorinterface created as abstraction for pipeline processing- Some classes and interface was renamed
- Some base commands property Result is marked as virtual
v1.1.0 2024-10-07
- Dialog window size management improved for ObservableValidator too. Now, you can set up a size of the dialog window.
v1.1.0-beta.1 2024-10-03
- Dialog window size management improved
v1.0.0 2024-10-01
- First Release
v1.0.0-rc.17 2024-09-28
ParameterCommandexCommandgetting parameter and setting parameter refactored. PropertyParameterremoved. For read data you can useReadParameter()method. And for write -WriteParameter().- Some summaries added/updated
v1.0.0-rc.16 2024-09-16
- UX refactored
- Menu added
- Shortcuts added
- Three type of the command list view added
IDialogResultrenamed toIViewModel- New property
Tagsadded toICommandexCommandfor future commands groups management
v1.0.0-rc.15 2024-09-15
- Restart Wizard command crash fixed.
- NotificationDialog windows size fixed.
v1.0.0-rc.14 2024-09-14
- Main window MinHeight and MinWitdth are set
- Wizard window MinHeight and MinWidth are set
- Wizard window UX management properties make as virtual
- Some controls sizing improved
- Nugets dependencies updated
- Windows accent color is set for
ActiveStepon Wizard dialog.
v1.0.0-rc.13 2024-09-13
- Nugets versions updated
OnSetParameter()method created forIDialogResultDialogServiceimplementation moved into engine nugetNotificationDialogimplementation moved into engine nugetWizardcomponent moved into engine nugetAppSettingsmoved into engine nuget
v1.0.0-rc.11 2024-09-11
ShoeDialog()added override with special parameter forViewModel- Nuget feed URL moved into configuration parameters
v1.0.0-rc.3 2024-08-14
Реализован новый тип команды Wizard для Commandex. Теперь можно формировать набор шагов, которые проходит команда при в выполнении.
Обновлен также Shell для Developer, чтобы иметь возможность запускать новый тип команд.
v1.0.0-beta.9 2024-08-02
- Добавлена возможность управлять типом
Windowпри отображении модального окна.
v1.0.0-beta.7 2024-07-31
- Первая публичная сборка в nuget
Видео (Video)
В основном репозитории Calabonga.Commandex.Shell есть несколько видео с инструкциями и разъяснениями, как использовать Commandex. А также видео о том, какие типы команд существуют и как для Commandex создавать команды разных типов.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net9.0-windows8.0 is compatible. net10.0-windows was computed. |
-
net9.0-windows8.0
- Calabonga.Results (>= 1.1.0)
- Calabonga.Utils.Extensions (>= 1.2.0)
- Calabonga.Wpf.AppDefinitions (>= 2.0.0)
- CommunityToolkit.Common (>= 8.4.0)
- CommunityToolkit.Diagnostics (>= 8.4.0)
- CommunityToolkit.Mvvm (>= 8.4.0)
- DotNetEnv (>= 3.1.1)
- Microsoft.Xaml.Behaviors.Wpf (>= 1.1.135)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Calabonga.Commandex.Engine:
| Package | Downloads |
|---|---|
|
Calabonga.Commandex.Engine.Processors
Results Processors for Calabonga.Commandex commands execution results. This is an extended version of the just show string in the notification dialog. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 3.0.0 | 170 | 7/18/2025 |
| 3.0.0-rc.3 | 125 | 7/17/2025 |
| 3.0.0-rc.2 | 121 | 7/17/2025 |
| 3.0.0-rc.1 | 131 | 7/17/2025 |
| 3.0.0-beta.2 | 123 | 7/17/2025 |
| 3.0.0-beta.1 | 125 | 7/16/2025 |
| 2.8.1 | 175 | 7/9/2025 |
| 2.8.0 | 177 | 7/8/2025 |
| 2.8.0-beta.2 | 128 | 7/8/2025 |
| 2.7.0 | 173 | 7/8/2025 |
| 2.7.0-beta.2 | 130 | 7/6/2025 |
| 2.7.0-beta.1 | 62 | 7/5/2025 |
| 2.6.0 | 155 | 7/4/2025 |
| 2.6.0-beta.1 | 131 | 7/2/2025 |
| 2.5.0 | 127 | 6/29/2025 |
| 2.3.0 | 192 | 6/18/2025 |
| 2.2.0 | 253 | 4/15/2025 |
| 2.1.0 | 174 | 1/30/2025 |
| 2.0.3 | 149 | 1/20/2025 |
| 2.0.2 | 144 | 1/16/2025 |
| 2.0.0 | 160 | 11/19/2024 |
| 2.0.0-beta.1 | 79 | 11/19/2024 |
| 1.4.2 | 172 | 11/5/2024 |
| 1.4.1 | 183 | 11/1/2024 |
| 1.3.0 | 161 | 10/12/2024 |
| 1.2.0 | 169 | 10/9/2024 |
| 1.2.0-beta.1 | 98 | 10/9/2024 |
| 1.1.0 | 158 | 10/7/2024 |
| 1.1.0-beta.2 | 87 | 10/3/2024 |
| 1.1.0-beta.1 | 111 | 10/3/2024 |
| 1.0.0 | 163 | 9/30/2024 |
| 1.0.0-rc.17 | 113 | 9/28/2024 |
| 1.0.0-rc.16 | 123 | 9/16/2024 |
| 1.0.0-rc.15 | 96 | 9/14/2024 |
| 1.0.0-rc.13 | 98 | 9/13/2024 |
| 1.0.0-rc.12 | 90 | 9/13/2024 |
| 1.0.0-rc.11 | 103 | 9/11/2024 |
| 1.0.0-rc.10 | 96 | 9/10/2024 |
| 1.0.0-rc.9 | 95 | 9/5/2024 |
| 1.0.0-rc.8 | 84 | 9/5/2024 |
| 1.0.0-rc.7 | 90 | 9/4/2024 |
| 1.0.0-rc.6 | 100 | 9/4/2024 |
| 1.0.0-rc.5 | 112 | 8/20/2024 |
| 1.0.0-rc.4 | 104 | 8/16/2024 |
| 1.0.0-rc.3 | 117 | 8/14/2024 |
| 1.0.0-beta.20 | 114 | 8/7/2024 |
| 1.0.0-beta.17 | 93 | 8/5/2024 |
| 1.0.0-beta.16 | 65 | 8/5/2024 |
| 1.0.0-beta.13 | 67 | 8/4/2024 |
| 1.0.0-beta.10 | 75 | 8/2/2024 |
| 1.0.0-beta.9 | 74 | 8/2/2024 |
| 1.0.0-beta.7 | 75 | 7/31/2024 |
Notification toast messages implemented