Split project
This commit is contained in:
113
Manual/ModuleManual.cs
Normal file
113
Manual/ModuleManual.cs
Normal file
@@ -0,0 +1,113 @@
|
||||
using Enigmos.Modules.ProgrammableModules;
|
||||
using Godot;
|
||||
using Nocturnis.Enigmos.ModuleManuals;
|
||||
using Nocturnis.Enigmos.Modules;
|
||||
using TabulaSmaragdina;
|
||||
|
||||
namespace Enigmos.Manual;
|
||||
|
||||
public partial class ModuleManual : Panel
|
||||
{
|
||||
private bool InitFlag { get; set; }
|
||||
|
||||
public void Init(IBaseModule module)
|
||||
{
|
||||
Module = module;
|
||||
InitFlag = true;
|
||||
}
|
||||
|
||||
private Label ModuleDescriptionTitle { get; set; }
|
||||
private RichTextLabel ModuleDescription { get; set; }
|
||||
private Label ModuleConfigurationTitle { get; set; }
|
||||
private TextureButton Close { get; set; }
|
||||
private TabContainer ConfigurationTabs { get; set; }
|
||||
private IBaseModule Module { get; set; }
|
||||
private List<IModuleManualTab> Tabs { get; set; }
|
||||
private LineEdit LabelString { get; set; }
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
if(!InitFlag)
|
||||
throw new Exception("TODO - NEED INIT");
|
||||
ModuleDescriptionTitle = GetNode<Label>("ModuleDescriptionTitle");
|
||||
ModuleDescription = GetNode<RichTextLabel>("ModuleDescription");
|
||||
ModuleConfigurationTitle = GetNode<Label>("ModuleConfigurationTitle");
|
||||
Close = GetNode<TextureButton>("Close");
|
||||
ConfigurationTabs = GetNode<TabContainer>("ConfigurationTabs");
|
||||
ModuleDescription.Text = Module.GetDescription;
|
||||
LabelString = GetNode<LineEdit>("LabelString");
|
||||
LabelString.Text = Module.LabelString;
|
||||
Tabs = new List<IModuleManualTab>();
|
||||
PortMaintenanceTab mainTab = GlobalProvider.SceneProvider
|
||||
.AssetMapper<PortMaintenanceTab>()
|
||||
.Instantiate<PortMaintenanceTab>();
|
||||
mainTab.Init(Module);
|
||||
Tabs.Add(mainTab);
|
||||
ConfigurationTabs.AddChild(mainTab);
|
||||
if (Module is IPolymorphismModule polyModule)
|
||||
{
|
||||
ModulePolymorphismTab polyTab = GlobalProvider.SceneProvider
|
||||
.AssetMapper<ModulePolymorphismTab>()
|
||||
.Instantiate<ModulePolymorphismTab>();
|
||||
polyTab.Init(polyModule);
|
||||
Tabs.Add(polyTab);
|
||||
ConfigurationTabs.AddChild(polyTab);
|
||||
}
|
||||
|
||||
if (Module is IParameterizedModule paraModule)
|
||||
{
|
||||
ModuleParameterTab paraTab = GlobalProvider.SceneProvider
|
||||
.AssetMapper<ModuleParameterTab>()
|
||||
.Instantiate<ModuleParameterTab>();
|
||||
paraTab.Init(paraModule);
|
||||
Tabs.Add(paraTab);
|
||||
ConfigurationTabs.AddChild(paraTab);
|
||||
}
|
||||
|
||||
if (Module is ICommunicateModule comModule)
|
||||
{
|
||||
CommunicatorPairTab pairTab = GlobalProvider.SceneProvider
|
||||
.AssetMapper<CommunicatorPairTab>()
|
||||
.Instantiate<CommunicatorPairTab>();
|
||||
pairTab.Init(comModule);
|
||||
Tabs.Add(pairTab);
|
||||
ConfigurationTabs.AddChild(pairTab);
|
||||
}
|
||||
|
||||
if (Module is ProgrammableModule programmableModule)
|
||||
{
|
||||
ProgrammableModuleSettingTab progTab =GlobalProvider.SceneProvider
|
||||
.AssetMapper<ProgrammableModuleSettingTab>()
|
||||
.Instantiate<ProgrammableModuleSettingTab>();
|
||||
progTab.Init(programmableModule);
|
||||
Tabs.Add(progTab);
|
||||
ConfigurationTabs.AddChild(progTab);
|
||||
}
|
||||
|
||||
if (Module is IErrorHandlerModule errorHandlerModule)
|
||||
{
|
||||
ErrorHandlerTab errTab = GlobalProvider.SceneProvider
|
||||
.AssetMapper<ErrorHandlerTab>()
|
||||
.Instantiate<ErrorHandlerTab>();
|
||||
errTab.Init(errorHandlerModule);
|
||||
Tabs.Add(errTab);
|
||||
ConfigurationTabs.AddChild(errTab);
|
||||
}
|
||||
|
||||
base._Ready();
|
||||
}
|
||||
|
||||
private void ShowTabTooltip(int idx) => ModuleConfigurationTitle.Text = Tabs[idx].FullName();
|
||||
|
||||
private void CloseManual()
|
||||
{
|
||||
GetParent().RemoveChild(this);
|
||||
Module.Board.ManualOpened = false;
|
||||
}
|
||||
|
||||
private void SetLabel(string label)
|
||||
{
|
||||
Module.Label.Text = label;
|
||||
Module.LabelString = label;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user