iFactory.Godot/BITKit/Scripts/UX/UXContainer.cs

79 lines
1.6 KiB
C#

using System.Diagnostics;
using Godot;
using Godot.Collections;
namespace BITKit;
public interface IUXContainer
{
string Text { get; set; }
void SetText(string text);
Texture2D Icon { get; set; }
void SetIcon(Texture2D texture);
}
public partial class UXContainer:Control,IUXContainer
{
[Export] public Label label;
[Export] public RichTextLabel richTextLabel;
[Export] public Label titleLabel;
[Export] public TextureRect icon;
[Export] public Button button;
[Export] public Node contextContainer;
[ExportCategory("Label")]
[Export] public Label updateTimeLabel;
[Export] public Label createTimeLabel;
[Export] public Label headerLabel;
[Export] public Array<Label> labels;
[ExportCategory("Button")]
[Export] public Button mainButton;
[Export] public Button secButton;
[Export] public Button thirdButton;
[ExportCategory("Text Edit")]
[Export] public LineEdit lineEdit;
[Export] public Array<LineEdit> lineEdits;
public string Text
{
get =>label is not null ? label.Text : richTextLabel.Text;
set
{
switch (label, richTextLabel)
{
case (not null, null):
label.Text = value;
break;
case (null, not null):
richTextLabel.Text = value;
break;
}
}
}
public void SetText(string text)
{
Text=text;
}
public void AddContainer(Node node)
{
contextContainer.AddChild(node);
}
public void ClearContainer()
{
foreach (var x in contextContainer.GetChildren())
{
x.QueueFree();
}
}
public Texture2D Icon
{
get => icon.Texture;
set => icon.Texture=value;
}
public void SetIcon(Texture2D texture)
{
Icon = texture;
}
}