mirror of
https://github.com/Artemis-RGB/Artemis
synced 2026-11-12 03:48:56 +00:00
Merge branch 'development'
This commit is contained in:
commit
0b29f6c92c
27 files changed
+279
-579
No files matched your search
@@ -462,7 +462,7 @@
|
||||
The profile is currently running in normal mode and the timeline cannot be edited.
|
||||
</TextBlock>
|
||||
<TextBlock Style="{StaticResource MaterialDesignBody2TextBlock}" TextWrapping="Wrap" HorizontalAlignment="Center" TextAlignment="Center">
|
||||
Press <Run Text="F5" FontWeight="Bold"/> to switch between editor mode and normal mode. Auto-switching can be disabled in the options menu.
|
||||
Press <Run Text="F5" FontWeight="Bold"/> to switch between editor mode and normal mode. Auto-switching can be disabled in the run menu.
|
||||
</TextBlock>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
|
||||
@@ -234,7 +234,7 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties
|
||||
NotifyOfPropertyChange(nameof(TimeCaretPosition));
|
||||
}
|
||||
|
||||
private void ProfileEditorServiceOnSuspendEditingChanged(object? sender, EventArgs e)
|
||||
private void ProfileEditorServiceOnSuspendEditingChanged(object sender, EventArgs e)
|
||||
{
|
||||
NotifyOfPropertyChange(nameof(SuspendedEditing));
|
||||
}
|
||||
|
||||
@@ -65,6 +65,9 @@
|
||||
<MenuItem Header="View Properties"
|
||||
Icon="{materialDesign:PackIcon Kind=Settings}"
|
||||
Command="{s:Action ViewProperties}"/>
|
||||
<MenuItem Header="_View Scripts"
|
||||
Icon="{materialDesign:PackIcon Kind=BookEdit}"
|
||||
Command="{s:Action ViewScripts}"/>
|
||||
<MenuItem Header="Adapt Profile"
|
||||
Icon="{materialDesign:PackIcon Kind=Magic}"
|
||||
Command="{s:Action AdaptProfile}"/>
|
||||
@@ -110,19 +113,6 @@
|
||||
IsChecked="{Binding StopOnFocusLoss.Value}"
|
||||
InputGestureText="Shift+F5" />
|
||||
</MenuItem>
|
||||
<MenuItem Header="_Scripting" IsEnabled="False">
|
||||
<MenuItem Header="_Profile Scripts"
|
||||
Icon="{materialDesign:PackIcon Kind=BookEdit}"
|
||||
Command="{s:Action OpenProfileScripts}"/>
|
||||
<MenuItem Header="_Layer Scripts"
|
||||
Icon="{materialDesign:PackIcon Kind=Layers}"
|
||||
IsEnabled="{Binding HasSelectedElement}"
|
||||
Command="{s:Action OpenLayerScripts}"/>
|
||||
<MenuItem Header="_Property Scripts"
|
||||
Icon="{materialDesign:PackIcon Kind=FormTextbox}"
|
||||
IsEnabled="{Binding HasSelectedElement}"
|
||||
Command="{s:Action OpenLayerPropertyScripts}"/>
|
||||
</MenuItem>
|
||||
<MenuItem Header="_Options">
|
||||
<MenuItem Header="Focus Selected Layer"
|
||||
ToolTip="If enabled, displays only the layer you currently have selected"
|
||||
|
||||
@@ -249,6 +249,11 @@ namespace Artemis.UI.Screens.ProfileEditor
|
||||
await _sidebarVmFactory.SidebarProfileConfigurationViewModel(_profileEditorService.SelectedProfileConfiguration).ViewProperties();
|
||||
}
|
||||
|
||||
public void ViewScripts()
|
||||
{
|
||||
_windowManager.ShowWindow(_scriptVmFactory.ScriptsDialogViewModel(ProfileConfiguration.Profile));
|
||||
}
|
||||
|
||||
public async Task AdaptProfile()
|
||||
{
|
||||
if (_profileEditorService.SelectedProfileConfiguration?.Profile == null)
|
||||
@@ -304,22 +309,7 @@ namespace Artemis.UI.Screens.ProfileEditor
|
||||
_profileEditorService.PasteProfileElement(rootFolder, rootFolder.Children.Count);
|
||||
}
|
||||
}
|
||||
|
||||
public void OpenProfileScripts()
|
||||
{
|
||||
_windowManager.ShowWindow(_scriptVmFactory.ScriptsDialogViewModel(ProfileConfiguration.Profile));
|
||||
}
|
||||
|
||||
public void OpenLayerScripts()
|
||||
{
|
||||
if (_profileEditorService.SelectedProfileElement is Layer layer)
|
||||
_windowManager.ShowWindow(_scriptVmFactory.ScriptsDialogViewModel(layer));
|
||||
}
|
||||
|
||||
public void OpenLayerPropertyScripts()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
public void OpenDebugger()
|
||||
{
|
||||
_debugService.ShowDebugger();
|
||||
|
||||
@@ -391,7 +391,7 @@ namespace Artemis.UI.Screens.ProfileEditor.Visualization
|
||||
ActivateToolByIndex(2);
|
||||
}
|
||||
|
||||
private void ProfileEditorServiceOnSuspendEditingChanged(object? sender, EventArgs e)
|
||||
private void ProfileEditorServiceOnSuspendEditingChanged(object sender, EventArgs e)
|
||||
{
|
||||
NotifyOfPropertyChange(nameof(SuspendedEditing));
|
||||
UpdateCanSelectEditTool();
|
||||
|
||||
@@ -3,16 +3,15 @@ using System.Threading.Tasks;
|
||||
using Artemis.Core.ScriptingProviders;
|
||||
using Artemis.Core.Services;
|
||||
using Artemis.UI.Screens.Scripting.Dialogs;
|
||||
using Artemis.UI.Shared.ScriptingProviders;
|
||||
using Artemis.UI.Shared.Services;
|
||||
using Stylet;
|
||||
|
||||
namespace Artemis.UI.Screens.Scripting
|
||||
{
|
||||
public class ScriptConfigurationViewModel : Conductor<IScriptEditorViewModel>
|
||||
public class ScriptConfigurationViewModel : PropertyChangedBase
|
||||
{
|
||||
private readonly IScriptingService _scriptingService;
|
||||
private readonly IDialogService _dialogService;
|
||||
private readonly IScriptingService _scriptingService;
|
||||
|
||||
public ScriptConfigurationViewModel(ScriptConfiguration scriptConfiguration, IScriptingService scriptingService, IDialogService dialogService)
|
||||
{
|
||||
@@ -20,64 +19,9 @@ namespace Artemis.UI.Screens.Scripting
|
||||
_dialogService = dialogService;
|
||||
ScriptConfiguration = scriptConfiguration;
|
||||
Script = ScriptConfiguration.Script;
|
||||
|
||||
ActiveItem = Script switch
|
||||
{
|
||||
GlobalScript globalScript => Script.ScriptingProvider.CreateGlobalScriptEditor(globalScript),
|
||||
LayerScript layerScript => Script.ScriptingProvider.CreateLayerScriptScriptEditor(layerScript),
|
||||
ProfileScript profileScript => Script.ScriptingProvider.CreateProfileScriptEditor(profileScript),
|
||||
PropertyScript propertyScript => Script.ScriptingProvider.CreatePropertyScriptEditor(propertyScript),
|
||||
_ => new UnknownScriptEditorViewModel(null)
|
||||
};
|
||||
}
|
||||
|
||||
public Script Script { get; set; }
|
||||
public ScriptConfiguration ScriptConfiguration { get; }
|
||||
|
||||
public async Task ViewProperties()
|
||||
{
|
||||
object result = await _dialogService.ShowDialog<ScriptConfigurationEditViewModel>(new Dictionary<string, object>
|
||||
{
|
||||
{"scriptConfiguration", ScriptConfiguration}
|
||||
});
|
||||
|
||||
if (result is nameof(ScriptConfigurationEditViewModel.Delete))
|
||||
await Delete();
|
||||
}
|
||||
|
||||
private async Task Delete()
|
||||
{
|
||||
bool result = await _dialogService.ShowConfirmDialogAt("ScriptsDialog", "Delete script", $"Are you sure you want to delete '{ScriptConfiguration.Name}'?");
|
||||
if (!result)
|
||||
return;
|
||||
|
||||
switch (Script)
|
||||
{
|
||||
case GlobalScript globalScript:
|
||||
_scriptingService.DeleteScript(ScriptConfiguration);
|
||||
break;
|
||||
case LayerScript layerScript:
|
||||
layerScript.Layer.ScriptConfigurations.Remove(ScriptConfiguration);
|
||||
break;
|
||||
case ProfileScript profileScript:
|
||||
profileScript.Profile.ScriptConfigurations.Remove(ScriptConfiguration);
|
||||
break;
|
||||
case PropertyScript propertyScript:
|
||||
propertyScript.LayerProperty.ScriptConfigurations.Remove(ScriptConfiguration);
|
||||
break;
|
||||
}
|
||||
|
||||
ScriptConfiguration.DiscardPendingChanges();
|
||||
ScriptConfiguration.Script?.Dispose();
|
||||
RequestClose();
|
||||
}
|
||||
}
|
||||
|
||||
public class UnknownScriptEditorViewModel : ScriptEditorViewModel
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public UnknownScriptEditorViewModel(Script script) : base(script)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -25,6 +25,7 @@
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
<ResourceDictionary Source="../Sidebar/ArtemisSidebar.xaml" />
|
||||
</ResourceDictionary.MergedDictionaries>
|
||||
<shared:NullToVisibilityConverter x:Key="NullToVisibilityConverter" />
|
||||
</ResourceDictionary>
|
||||
</mde:MaterialWindow.Resources>
|
||||
<materialDesign:DialogHost IsTabStop="False" Focusable="False" Identifier="ScriptsDialog" DialogTheme="Inherit">
|
||||
@@ -45,16 +46,16 @@
|
||||
Margin="0 10 0 0"
|
||||
ItemContainerStyle="{StaticResource SidebarListBoxItem}"
|
||||
HorizontalContentAlignment="Stretch"
|
||||
ItemsSource="{Binding Items}"
|
||||
SelectedItem="{Binding ActiveItem}">
|
||||
ItemsSource="{Binding ScriptConfigurations}"
|
||||
SelectedItem="{Binding SelectedScript}">
|
||||
<ListBox.ItemTemplate>
|
||||
<DataTemplate DataType="{x:Type local:ScriptConfigurationViewModel}">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition />
|
||||
@@ -69,7 +70,7 @@
|
||||
Margin="0 0 10 0"
|
||||
VerticalAlignment="Center" />
|
||||
<TextBlock Grid.Row="0" Grid.Column="1" VerticalAlignment="Center" Text="{Binding ScriptConfiguration.Name}"
|
||||
Visibility="{Binding ScriptConfiguration.HasChanges, Converter={x:Static s:BoolToVisibilityConverter.InverseInstance}, Mode=OneWay}"/>
|
||||
Visibility="{Binding ScriptConfiguration.HasChanges, Converter={x:Static s:BoolToVisibilityConverter.InverseInstance}, Mode=OneWay}" />
|
||||
<TextBlock Grid.Row="0" Grid.Column="1" VerticalAlignment="Center"
|
||||
Visibility="{Binding ScriptConfiguration.HasChanges, Converter={x:Static s:BoolToVisibilityConverter.Instance}, Mode=OneWay}">
|
||||
<Run Text="{Binding ScriptConfiguration.Name}" FontWeight="Bold" />
|
||||
@@ -81,7 +82,15 @@
|
||||
Foreground="{DynamicResource MaterialDesignBodyLight}"
|
||||
VerticalAlignment="Center" />
|
||||
|
||||
<Button Grid.Row="0" Grid.RowSpan="2" Grid.Column="2" ToolTip="View properties" Width="20" Height="20" Command="{s:Action ViewProperties}" s:View.ActionTarget="{Binding}" HorizontalAlignment="Right">
|
||||
<Button Grid.Row="0"
|
||||
Grid.RowSpan="2"
|
||||
Grid.Column="2"
|
||||
ToolTip="View properties"
|
||||
Width="20"
|
||||
Height="20"
|
||||
Command="{s:Action ViewProperties}"
|
||||
CommandParameter="{Binding}"
|
||||
HorizontalAlignment="Right">
|
||||
<Button.Style>
|
||||
<Style TargetType="{x:Type Button}" BasedOn="{StaticResource MaterialDesignIconForegroundButton}">
|
||||
<Setter Property="Visibility" Value="Collapsed" />
|
||||
@@ -94,7 +103,8 @@
|
||||
</Button.Style>
|
||||
<materialDesign:PackIcon Kind="Cog" Width="16" Height="16" />
|
||||
</Button>
|
||||
<ToggleButton Grid.Row="0" Grid.RowSpan="2" Grid.Column="3" ToolTip="Suspend profile" Width="18" Height="18" Margin="2 0 0 0" IsChecked="{Binding ScriptConfiguration.IsSuspended}">
|
||||
<ToggleButton Grid.Row="0" Grid.RowSpan="2" Grid.Column="3" ToolTip="Suspend profile" Width="18" Height="18" Margin="2 0 0 0"
|
||||
IsChecked="{Binding ScriptConfiguration.IsSuspended}">
|
||||
<ToggleButton.Style>
|
||||
<Style TargetType="{x:Type ToggleButton}" BasedOn="{StaticResource MaterialDesignFlatToggleButton}">
|
||||
<Setter Property="Visibility" Value="Collapsed" />
|
||||
@@ -113,17 +123,31 @@
|
||||
</ListBox.ItemTemplate>
|
||||
</ListBox>
|
||||
|
||||
<Button Grid.Row="1"
|
||||
<StackPanel Grid.Row="0"
|
||||
Visibility="{Binding HasScripts, Converter={x:Static s:BoolToVisibilityConverter.InverseInstance}, Mode=OneWay}"
|
||||
VerticalAlignment="Center"
|
||||
HorizontalAlignment="Center" Margin="0 20 0 10">
|
||||
<TextBlock Style="{StaticResource MaterialDesignBody2TextBlock}" HorizontalAlignment="Center">Your scripts will be listed here</TextBlock>
|
||||
</StackPanel>
|
||||
<Button Grid.Row="1"
|
||||
Style="{StaticResource MaterialDesignOutlinedButton}"
|
||||
Content="ADD NEW SCRIPT"
|
||||
Margin="10 10 10 0"
|
||||
Content="ADD NEW SCRIPT"
|
||||
Margin="10 10 10 0"
|
||||
Command="{s:Action AddScriptConfiguration}"
|
||||
VerticalAlignment="Top" />
|
||||
</Grid>
|
||||
</Border>
|
||||
|
||||
<!-- Script editor -->
|
||||
<ContentControl Grid.Column="1" s:View.Model="{Binding ActiveItem.ActiveItem}" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch" IsTabStop="False" />
|
||||
<ContentControl Grid.Column="1" s:View.Model="{Binding ActiveItem}" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch" IsTabStop="False" />
|
||||
<StackPanel Grid.Column="1"
|
||||
Visibility="{Binding ActiveItem, Converter={StaticResource NullToVisibilityConverter}, ConverterParameter=Inverted}"
|
||||
VerticalAlignment="Center"
|
||||
HorizontalAlignment="Center">
|
||||
<materialDesign:PackIcon Kind="CodeGreaterThanOrEqual" Width="150" Height="150" HorizontalAlignment="Center" />
|
||||
<TextBlock Style="{StaticResource MaterialDesignHeadline4TextBlock}" HorizontalAlignment="Center">Get ready to start scripting!</TextBlock>
|
||||
<TextBlock Style="{StaticResource MaterialDesignSubtitle1TextBlock}" HorizontalAlignment="Center">Use the sidebar to create new scripts and manage existing scripts.</TextBlock>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</materialDesign:DialogHost>
|
||||
</mde:MaterialWindow>
|
||||
@@ -1,4 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Specialized;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Artemis.Core;
|
||||
@@ -11,16 +13,15 @@ using Stylet;
|
||||
|
||||
namespace Artemis.UI.Screens.Scripting
|
||||
{
|
||||
public class ScriptsDialogViewModel : Conductor<ScriptConfigurationViewModel>.Collection.OneActive
|
||||
public class ScriptsDialogViewModel : Conductor<IScriptEditorViewModel>
|
||||
{
|
||||
private readonly IScriptingService _scriptingService;
|
||||
private readonly IDialogService _dialogService;
|
||||
private readonly IProfileService _profileService;
|
||||
private readonly IProfileEditorService _profileEditorService;
|
||||
private readonly IScriptVmFactory _scriptVmFactory;
|
||||
public Profile Profile { get; }
|
||||
public Layer Layer { get; }
|
||||
public ILayerProperty LayerProperty { get; }
|
||||
private readonly Dictionary<ScriptingProvider, IScriptEditorViewModel> _providerViewModels = new();
|
||||
private ScriptConfigurationViewModel _selectedScript;
|
||||
|
||||
public ScriptsDialogViewModel(Profile profile,
|
||||
IScriptingService scriptingService,
|
||||
@@ -36,27 +37,56 @@ namespace Artemis.UI.Screens.Scripting
|
||||
_scriptVmFactory = scriptVmFactory;
|
||||
|
||||
DisplayName = "Artemis | Profile Scripts";
|
||||
ScriptType = ScriptType.Profile;
|
||||
Profile = profile ?? throw new ArgumentNullException(nameof(profile));
|
||||
|
||||
Items.AddRange(Profile.ScriptConfigurations.Select(scriptVmFactory.ScriptConfigurationViewModel));
|
||||
ScriptConfigurations.AddRange(Profile.ScriptConfigurations.Select(scriptVmFactory.ScriptConfigurationViewModel));
|
||||
ScriptConfigurations.CollectionChanged += ItemsOnCollectionChanged;
|
||||
}
|
||||
|
||||
public ScriptsDialogViewModel(Layer layer, IDialogService dialogService)
|
||||
{
|
||||
_dialogService = dialogService;
|
||||
DisplayName = "Artemins | Layer Scripts";
|
||||
Layer = layer ?? throw new ArgumentNullException(nameof(layer));
|
||||
public ScriptType ScriptType { get; }
|
||||
public Profile Profile { get; }
|
||||
public BindableCollection<ScriptConfigurationViewModel> ScriptConfigurations { get; } = new();
|
||||
public bool HasScripts => ScriptConfigurations.Any();
|
||||
|
||||
Items.AddRange(Layer.ScriptConfigurations.Select(_scriptVmFactory.ScriptConfigurationViewModel));
|
||||
public ScriptConfigurationViewModel SelectedScript
|
||||
{
|
||||
get => _selectedScript;
|
||||
set
|
||||
{
|
||||
if (!SetAndNotify(ref _selectedScript, value)) return;
|
||||
SetupScriptEditor(_selectedScript?.ScriptConfiguration);
|
||||
}
|
||||
}
|
||||
|
||||
public ScriptsDialogViewModel(ILayerProperty layerProperty, IDialogService dialogService)
|
||||
private void SetupScriptEditor(ScriptConfiguration scriptConfiguration)
|
||||
{
|
||||
_dialogService = dialogService;
|
||||
DisplayName = "Artemins | Layer Property Scripts";
|
||||
LayerProperty = layerProperty ?? throw new ArgumentNullException(nameof(layerProperty));
|
||||
if (scriptConfiguration == null)
|
||||
{
|
||||
ActiveItem = null;
|
||||
return;
|
||||
}
|
||||
|
||||
Items.AddRange(Layer.ScriptConfigurations.Select(_scriptVmFactory.ScriptConfigurationViewModel));
|
||||
// The script is null if the provider is missing
|
||||
if (scriptConfiguration.Script == null)
|
||||
{
|
||||
ActiveItem = null;
|
||||
return;
|
||||
}
|
||||
|
||||
if (!_providerViewModels.TryGetValue(scriptConfiguration.Script.ScriptingProvider, out IScriptEditorViewModel viewModel))
|
||||
{
|
||||
viewModel = scriptConfiguration.Script.ScriptingProvider.CreateScriptEditor(ScriptType);
|
||||
_providerViewModels.Add(scriptConfiguration.Script.ScriptingProvider, viewModel);
|
||||
}
|
||||
|
||||
ActiveItem = viewModel;
|
||||
ActiveItem.ChangeScript(scriptConfiguration.Script);
|
||||
}
|
||||
|
||||
private void ItemsOnCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
|
||||
{
|
||||
NotifyOfPropertyChange(nameof(HasScripts));
|
||||
}
|
||||
|
||||
public async Task AddScriptConfiguration()
|
||||
@@ -70,30 +100,71 @@ namespace Artemis.UI.Screens.Scripting
|
||||
Profile.ScriptConfigurations.Add(scriptConfiguration);
|
||||
_scriptingService.CreateScriptInstance(Profile, scriptConfiguration);
|
||||
}
|
||||
else if (Layer != null)
|
||||
{
|
||||
Layer.ScriptConfigurations.Add(scriptConfiguration);
|
||||
_scriptingService.CreateScriptInstance(Layer, scriptConfiguration);
|
||||
}
|
||||
else if (LayerProperty != null)
|
||||
{
|
||||
LayerProperty.ScriptConfigurations.Add(scriptConfiguration);
|
||||
_scriptingService.CreateScriptInstance(LayerProperty, scriptConfiguration);
|
||||
}
|
||||
|
||||
Items.Add(_scriptVmFactory.ScriptConfigurationViewModel(scriptConfiguration));
|
||||
ScriptConfigurationViewModel viewModel = _scriptVmFactory.ScriptConfigurationViewModel(scriptConfiguration);
|
||||
ScriptConfigurations.Add(viewModel);
|
||||
SelectedScript = viewModel;
|
||||
}
|
||||
|
||||
#region Overrides of OneActive
|
||||
public async Task ViewProperties(ScriptConfigurationViewModel scriptConfigurationViewModel)
|
||||
{
|
||||
object result = await _dialogService.ShowDialogAt<ScriptConfigurationEditViewModel>(
|
||||
"ScriptsDialog",
|
||||
new Dictionary<string, object> {{"scriptConfiguration", scriptConfigurationViewModel.ScriptConfiguration}}
|
||||
);
|
||||
|
||||
if (result is nameof(ScriptConfigurationEditViewModel.Delete))
|
||||
await Delete(scriptConfigurationViewModel);
|
||||
}
|
||||
|
||||
private async Task Delete(ScriptConfigurationViewModel scriptConfigurationViewModel)
|
||||
{
|
||||
bool result = await _dialogService.ShowConfirmDialogAt(
|
||||
"ScriptsDialog",
|
||||
"Delete script",
|
||||
$"Are you sure you want to delete '{scriptConfigurationViewModel.ScriptConfiguration.Name}'?"
|
||||
);
|
||||
if (!result)
|
||||
return;
|
||||
|
||||
switch (scriptConfigurationViewModel.Script)
|
||||
{
|
||||
case GlobalScript:
|
||||
_scriptingService.DeleteScript(scriptConfigurationViewModel.ScriptConfiguration);
|
||||
break;
|
||||
case ProfileScript profileScript:
|
||||
profileScript.Profile.ScriptConfigurations.Remove(scriptConfigurationViewModel.ScriptConfiguration);
|
||||
break;
|
||||
}
|
||||
|
||||
scriptConfigurationViewModel.ScriptConfiguration.DiscardPendingChanges();
|
||||
scriptConfigurationViewModel.ScriptConfiguration.Script?.Dispose();
|
||||
|
||||
SelectedScript = null;
|
||||
ScriptConfigurations.Remove(scriptConfigurationViewModel);
|
||||
}
|
||||
|
||||
#region Overrides of Screen
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void OnInitialActivate()
|
||||
{
|
||||
SelectedScript = ScriptConfigurations.FirstOrDefault();
|
||||
base.OnInitialActivate();
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void OnClose()
|
||||
{
|
||||
if (_profileEditorService.SelectedProfile == Profile)
|
||||
_profileEditorService.SaveSelectedProfileConfiguration();
|
||||
else
|
||||
_profileService.SaveProfile(Profile, false);
|
||||
if (Profile != null)
|
||||
{
|
||||
if (_profileEditorService.SelectedProfile == Profile)
|
||||
_profileEditorService.SaveSelectedProfileConfiguration();
|
||||
else
|
||||
_profileService.SaveProfile(Profile, false);
|
||||
}
|
||||
|
||||
ScriptConfigurations.CollectionChanged -= ItemsOnCollectionChanged;
|
||||
base.OnClose();
|
||||
}
|
||||
|
||||
|
||||
@@ -154,7 +154,7 @@ namespace Artemis.UI.Screens.Sidebar
|
||||
VistaOpenFileDialog dialog = new()
|
||||
{
|
||||
Filter = "Artemis Profile|*.json",
|
||||
Title = "Export Artemis profile"
|
||||
Title = "Import Artemis profile"
|
||||
};
|
||||
bool? result = dialog.ShowDialog();
|
||||
if (result != true)
|
||||
|
||||
@@ -92,9 +92,8 @@ namespace Artemis.UI.Screens.Sidebar
|
||||
ProfileConfigurationExportModel profileConfigurationExportModel = _profileService.ExportProfile(ProfileConfiguration);
|
||||
string json = JsonConvert.SerializeObject(profileConfigurationExportModel, IProfileService.ExportSettings);
|
||||
|
||||
if (!dialog.FileName.EndsWith(".json"))
|
||||
dialog.FileName += ".json";
|
||||
await File.WriteAllTextAsync(dialog.FileName, json);
|
||||
string path = Path.ChangeExtension(dialog.FileName, ".json");
|
||||
await File.WriteAllTextAsync(path, json);
|
||||
}
|
||||
|
||||
public void Duplicate()
|
||||
|
||||
Reference in new issue
Block a user