mirror of
https://github.com/Artemis-RGB/Artemis
synced 2026-11-12 03:48:56 +00:00
Merge branch 'feature/visual-scripting' into feature/avalonia
This commit is contained in:
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);
|
||||
|
||||
|
||||
Reference in new issue
Block a user