mirror of
https://github.com/Artemis-RGB/Artemis
synced 2025-12-13 05:48:35 +00:00
Plugin import - Overwrite existing folder if needed
Plugin import - Enable newly imported plugins straight away
This commit is contained in:
parent
2179c889a3
commit
496f0e9b74
@ -529,7 +529,7 @@ namespace Artemis.Core.Services
|
|||||||
|
|
||||||
string targetDirectory = pluginInfo.PreferredPluginDirectory;
|
string targetDirectory = pluginInfo.PreferredPluginDirectory;
|
||||||
if (Directory.Exists(Path.Combine(pluginDirectory.FullName, targetDirectory)))
|
if (Directory.Exists(Path.Combine(pluginDirectory.FullName, targetDirectory)))
|
||||||
throw new ArtemisPluginException($"A directory for this plugin already exists {Path.Combine(pluginDirectory.FullName, targetDirectory)}");
|
Directory.Delete(Path.Combine(pluginDirectory.FullName, targetDirectory), true);
|
||||||
|
|
||||||
// Extract everything in the same archive directory to the unique plugin directory
|
// Extract everything in the same archive directory to the unique plugin directory
|
||||||
DirectoryInfo directoryInfo = new(Path.Combine(pluginDirectory.FullName, targetDirectory));
|
DirectoryInfo directoryInfo = new(Path.Combine(pluginDirectory.FullName, targetDirectory));
|
||||||
|
|||||||
@ -55,6 +55,7 @@ namespace Artemis.UI.Screens.Settings.Tabs.Plugins
|
|||||||
if (!Items.Contains(pluginSettingsViewModel))
|
if (!Items.Contains(pluginSettingsViewModel))
|
||||||
Items.Add(pluginSettingsViewModel);
|
Items.Add(pluginSettingsViewModel);
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (PluginSettingsViewModel pluginSettingsViewModel in Items.ToList())
|
foreach (PluginSettingsViewModel pluginSettingsViewModel in Items.ToList())
|
||||||
{
|
{
|
||||||
if (!instances.Contains(pluginSettingsViewModel))
|
if (!instances.Contains(pluginSettingsViewModel))
|
||||||
@ -76,21 +77,28 @@ namespace Artemis.UI.Screens.Settings.Tabs.Plugins
|
|||||||
base.OnInitialActivate();
|
base.OnInitialActivate();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ImportPlugin()
|
public async Task ImportPlugin()
|
||||||
{
|
{
|
||||||
VistaOpenFileDialog dialog = new();
|
VistaOpenFileDialog dialog = new() {Filter = "ZIP files (*.zip)|*.zip", Title = "Import Artemis plugin"};
|
||||||
dialog.Filter = "ZIP files (*.zip)|*.zip";
|
|
||||||
dialog.Title = "Import Artemis plugin";
|
|
||||||
bool? result = dialog.ShowDialog();
|
bool? result = dialog.ShowDialog();
|
||||||
if (result == true)
|
if (result != true)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// Take the actual import off of the UI thread
|
||||||
|
await Task.Run(() =>
|
||||||
{
|
{
|
||||||
Plugin plugin = _pluginManagementService.ImportPlugin(dialog.FileName);
|
Plugin plugin = _pluginManagementService.ImportPlugin(dialog.FileName);
|
||||||
|
|
||||||
GetPluginInstances();
|
GetPluginInstances();
|
||||||
SearchPluginInput = plugin.Info.Name;
|
SearchPluginInput = plugin.Info.Name;
|
||||||
|
|
||||||
|
// Enable it via the VM to enable the prerequisite dialog
|
||||||
|
PluginSettingsViewModel pluginViewModel = Items.FirstOrDefault(i => i.Plugin == plugin);
|
||||||
|
if (pluginViewModel is {IsEnabled: false})
|
||||||
|
pluginViewModel.IsEnabled = true;
|
||||||
|
|
||||||
_messageService.ShowMessage($"Imported plugin: {plugin.Info.Name}");
|
_messageService.ShowMessage($"Imported plugin: {plugin.Info.Name}");
|
||||||
}
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public void GetPluginInstances()
|
public void GetPluginInstances()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user