| OpenLab Studio | >= 0.10.x |
| OpenLab SDK | >= 1.0.x |
| IDE | Visual Studio 2022 Ver.: 17.14.13 |
| Linguaggi | C# |
| Versione .NET | 8 |
Generale #
Questa guida spiega il funzionamento di base di un plugin e come crearlo, verrà creato un plugin basilare che scrive dei messaggi di log e utilizza l’events manager per scrivere un messaggio nel alla fine del caricamento di OpenLab Studio
I plugin vengono usati per aggiungere funzionalità o eseguire operazioni ad esempio per aggiungere funzionalità ad OpenLab Studio o OpenLab Standalone, etc. In sostanza un plugin estende la classe Plugin ed interagisce col sistema OpenLab tramite gli eventi ed manager( EventManager, PluginManager, etc
Per il setup dell’ambiente di sviluppo e installare il plugin seguire questa guida
Implementare le basi #
Un plugin estende la classe Plugin innanzi tutto dobbiamo creare i metodi init e deinit e la classe per le info del plugin. Le info del plugin servono a specificare il nome, la versione, l’ID univoco del produttore del plugin e altre informazioni.
using OpenLabSDK.config;
using OpenLabSDK.error;
using OpenLabSDK.events;
using OpenLabSDK.plugin;
using OpenLabSDK.ui;
using OpenLabStudio.project;
using System.Windows;
namespace PluginUIBaseTutorial1
{
public class PluginUIBaseTutorial1 : Plugin
{
internal class Info : IPluginInfo
{
public string Name { get; } = "PluginUIBaseTutorial1";
public string Title { get; } = "Plugin UI Base Tutorial 1";
public int[] version { get; } = { 1, 0, 0 };
public string vendorUID { get; }
public string url { get; }
public string description { get; }
}
public PluginUIBaseTutorial1(
IErrorManager _errorManager,
IPluginsManager _pluginsManager,
IEventsManager _eventsManager,
IWindowsManager _windowsManager,
ProjectsManager _projectsManager,
PluginDefinition _pluginDefinition) : base(
_errorManager,
_pluginsManager,
_eventsManager,
_windowsManager,
_projectsManager,
_pluginDefinition)
{
pluginInfo = new Info();
}
public override int deinit()
{
log.info("Deinit plugin" + pluginInfo.Title);
return 0;
}
public override int init()
{
log.info("Init plugin " + pluginInfo.Title);
eventsManager.addEventHandler("ols.ready", (object sender, EventArgs e) =>
{
log.info($"Plugin: {pluginInfo.Name} hello!!");
return true;
});
return 0;
}
}
}
Nel codice sopra vengono definiti construttore e metodi basilari e viene implementata la classe per info del plugin. Al costruttore vengono passate le istanze del ErrorManager , PluginManager, EventsManager, WindowsManager, ProjectManager create da OpenLab Studio per gestire errori e plugin ed eventi. Al costruttore viene anche passata l’instanza di PluginDefinition con la configurazione e i parametri del plugin. Nel costruttore del plugin viene estratta l’istanza del log da ErrorManager e assegnata alla variabile log.
Sequenza di caricamento #
All’avvio di OpenLab Studio viene letto il file di configurazione(JSON) config.json. In questo file sono definiti i plugin(path del dll, abilitato/disabilitato, etc) e la loro configurazione.
Viene letto e caricato un plugin per volta. Una volta caricato un plugin viene chiamato il suo metodo init.
init.