Merge branch 'feature/visual-scripting' into feature/avalonia

This commit is contained in:
Robert committed 2021-11-17 23:07:36 +01:00
commit 4ef7c83c74
366 files changed
+11986 -10866

No files matched your search

@@ -3,14 +3,10 @@ using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using Artemis.Core;
using Artemis.Core.Modules;
using Artemis.Core.Services;
using Artemis.UI.Ninject.Factories;
using Artemis.UI.Screens.ProfileEditor.Conditions;
using Artemis.UI.Shared;
using Artemis.UI.Shared.Services;
using FluentValidation;
@@ -23,7 +19,6 @@ namespace Artemis.UI.Screens.Sidebar.Dialogs.ProfileEdit
{
public class ProfileEditViewModel : DialogViewModelBase
{
private readonly DataModelConditionGroup _dataModelConditionGroup;
private readonly List<Module> _modules;
private readonly IProfileService _profileService;
private bool _changedImage;
@@ -38,14 +33,12 @@ namespace Artemis.UI.Screens.Sidebar.Dialogs.ProfileEdit
IProfileService profileService,
IPluginManagementService pluginManagementService,
ISidebarVmFactory sidebarVmFactory,
IDataModelConditionsVmFactory dataModelConditionsVmFactory,
IModelValidator<ProfileEditViewModel> validator) : base(validator)
{
ProfileConfiguration = profileConfiguration;
IsNew = isNew;
_profileService = profileService;
_dataModelConditionGroup = ProfileConfiguration.ActivationCondition ?? new DataModelConditionGroup(null);
_modules = ProfileConfiguration.Module != null ? new List<Module> {ProfileConfiguration.Module} : new List<Module>();
IconTypes = new BindableCollection<ValueDescription>(EnumUtilities.GetAllValuesAndDescriptions(typeof(ProfileConfigurationIconType)));
@@ -55,10 +48,7 @@ namespace Artemis.UI.Screens.Sidebar.Dialogs.ProfileEdit
pluginManagementService.GetFeaturesOfType<Module>().Where(m => !m.IsAlwaysAvailable).Select(m => new ProfileModuleViewModel(m))
);
Initializing = true;
ActivationConditionViewModel = dataModelConditionsVmFactory.DataModelConditionGroupViewModel(_dataModelConditionGroup, ConditionGroupType.General, _modules);
ActivationConditionViewModel.ConductWith(this);
ActivationConditionViewModel.IsRootGroup = true;
ModuleActivationRequirementsViewModel = new ModuleActivationRequirementsViewModel(sidebarVmFactory);
ModuleActivationRequirementsViewModel.ConductWith(this);
ModuleActivationRequirementsViewModel.SetModule(ProfileConfiguration.Module);
@@ -85,8 +75,7 @@ namespace Artemis.UI.Screens.Sidebar.Dialogs.ProfileEdit
Initializing = false;
});
}
public DataModelConditionGroupViewModel ActivationConditionViewModel { get; }
public ModuleActivationRequirementsViewModel ModuleActivationRequirementsViewModel { get; }
public ProfileConfigurationHotkeyViewModel EnableHotkeyViewModel { get; }
public ProfileConfigurationHotkeyViewModel DisableHotkeyViewModel { get; }
@@ -161,7 +150,6 @@ namespace Artemis.UI.Screens.Sidebar.Dialogs.ProfileEdit
if (value != null)
_modules.Add(value.Module);
ActivationConditionViewModel.UpdateModules();
ModuleActivationRequirementsViewModel.SetModule(value?.Module);
}
}
@@ -185,9 +173,6 @@ namespace Artemis.UI.Screens.Sidebar.Dialogs.ProfileEdit
ProfileConfiguration.Module = SelectedModule?.Module;
if (_dataModelConditionGroup.Children.Any())
ProfileConfiguration.ActivationCondition = _dataModelConditionGroup;
if (_changedImage)
{
ProfileConfiguration.Icon.FileIcon = SelectedImage;
@@ -19,6 +19,7 @@
<!-- Above is a dumb hack to get the context menu to cover the entire item -->
<UserControl.Resources>
<converters:ValuesAdditionConverter x:Key="ValuesAddition" />
<shared:NullToVisibilityConverter x:Key="NullToVisibilityConverter" />
</UserControl.Resources>
<UserControl.ContextMenu>
<ContextMenu>
@@ -183,7 +184,13 @@
</Border.Style>
</Border>
<Button Grid.Column="2" ToolTip="View properties" Width="20" Height="20" Command="{s:Action ViewProperties}" HorizontalAlignment="Right">
<Button Grid.Column="2"
ToolTip="View properties"
Width="20"
Height="20"
Command="{s:Action ViewProperties}"
HorizontalAlignment="Right"
Visibility="{Binding ProfileConfiguration.BrokenState, Converter={StaticResource NullToVisibilityConverter}, ConverterParameter=Inverted}">
<Button.Style>
<Style TargetType="{x:Type Button}" BasedOn="{StaticResource MaterialDesignIconForegroundButton}">
<Setter Property="Visibility" Value="Collapsed" />
@@ -196,7 +203,13 @@
</Button.Style>
<materialDesign:PackIcon Kind="Cog" Width="16" Height="16" />
</Button>
<ToggleButton Grid.Column="3" ToolTip="Suspend profile" Width="18" Height="18" Margin="2 0 0 0" IsChecked="{Binding IsSuspended}">
<ToggleButton Grid.Column="3"
ToolTip="Suspend profile"
Width="18"
Height="18"
Margin="2 0 0 0"
IsChecked="{Binding IsSuspended}"
Visibility="{Binding ProfileConfiguration.BrokenState, Converter={StaticResource NullToVisibilityConverter}, ConverterParameter=Inverted}">
<ToggleButton.Style>
<Style TargetType="{x:Type ToggleButton}" BasedOn="{StaticResource MaterialDesignFlatToggleButton}">
<Setter Property="Visibility" Value="Collapsed" />
@@ -209,5 +222,14 @@
</ToggleButton.Style>
<materialDesign:PackIcon Kind="Pause" Height="14" Width="14" />
</ToggleButton>
<materialDesign:PackIcon Grid.Column="3"
Margin="-2"
Kind="AlertCircle"
Height="22"
Width="22"
Foreground="#E74C4C"
ToolTip="{Binding ProfileConfiguration.BrokenState}"
Visibility="{Binding ProfileConfiguration.BrokenState, Converter={StaticResource NullToVisibilityConverter}}" />
</Grid>
</UserControl>
@@ -157,6 +157,12 @@ namespace Artemis.UI.Screens.Sidebar
public void SelectProfileConfiguration(ProfileConfiguration profileConfiguration)
{
if (profileConfiguration?.BrokenStateException != null)
{
_dialogService.ShowExceptionDialog("The profile failed to load", profileConfiguration.BrokenStateException);
return;
}
foreach (SidebarCategoryViewModel sidebarCategoryViewModel in Items)
sidebarCategoryViewModel.SelectedProfileConfiguration = sidebarCategoryViewModel.Items.FirstOrDefault(i => i.ProfileConfiguration == profileConfiguration);