mirror of
https://github.com/Artemis-RGB/Artemis
synced 2026-11-11 19:36:28 +00:00
Plugin import - Overwrite existing folder if needed
Plugin import - Enable newly imported plugins straight away
This commit is contained in:
1 parent
2179c889a3
commit
496f0e9b74
2 files changed
+15
-7
No files matched your search
@@ -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()
|
||||||
|
|||||||
Reference in new issue
Block a user