Browse Source

add path select pararms

master
jkpete 2 months ago
parent
commit
4f393ca54b
  1. 42
      addons/EGFramework/Module/GenerateTools/Templete/Godot/Dialog/EGodotBasicDialog.cs
  2. 70
      addons/EGFramework/Module/GenerateTools/Templete/Godot/Dialog/EGodotFileDialog.cs
  3. 15
      addons/EGFramework/Module/GenerateTools/Templete/Godot/UI/EGodotEditParam.cs
  4. 10
      addons/EGFramework/Module/GenerateTools/Templete/Variant/EGDataStruct.cs

42
addons/EGFramework/Module/GenerateTools/Templete/Godot/Dialog/EGodotBasicDialog.cs

@ -21,26 +21,28 @@ namespace EGFramework.UI
confirmDialog.Init(callback); confirmDialog.Init(callback);
} }
// public static void EGFileSingleSelect(this Node self, string filePath, Action<string> selectPath, string title = "FileSelect") public static void EGFileOpen(this Node self, string filePath, Action<string> selectPath, string title = "Open a file")
// { {
// FileDialog fileDialog = self.SingletoneNode<FileDialog>("FileDialog"); EGodotFileDialog fileDialog = self.SingletoneNode<EGodotFileDialog>("FileDialog");
// fileDialog.Title = title; fileDialog.Title = title;
// fileDialog.Size = new Vector2I(480, 320); fileDialog.RootSubfolder = filePath;
// fileDialog.FileMode = FileDialog.FileModeEnum.OpenFile; fileDialog.InitFileSelect(selectPath);
// fileDialog.RootSubfolder = filePath; }
// fileDialog.PopupCentered();
// fileDialog.Connect("file_selected", Callable.From<string>(selectPath));
// }
// public static void EGDocumentSelect(this Node self, string filePath, Action<string> selectPath, string title = "FileSelect") public static void EGFileSave(this Node self, string filePath, Action<string> selectPath, string title = "Save a file")
// { {
// FileDialog fileDialog = self.SingletoneNode<FileDialog>("FileDialog"); EGodotFileDialog fileDialog = self.SingletoneNode<EGodotFileDialog>("FileDialog");
// fileDialog.Title = title; fileDialog.Title = title;
// fileDialog.Size = new Vector2I(480, 320); fileDialog.RootSubfolder = filePath;
// fileDialog.FileMode = FileDialog.FileModeEnum.OpenDir; fileDialog.InitSaveFileSelect(selectPath);
// fileDialog.RootSubfolder = filePath; }
// fileDialog.PopupCentered();
// fileDialog.Connect("file_selected", Callable.From<string>(selectPath)); public static void EGDocumentOpen(this Node self, string filePath, Action<string> selectPath, string title = "FileSelect")
// } {
EGodotFileDialog fileDialog = self.SingletoneNode<EGodotFileDialog>("FileDialog");
fileDialog.Title = title;
fileDialog.RootSubfolder = filePath;
fileDialog.InitDirSelect(selectPath);
}
} }
} }

70
addons/EGFramework/Module/GenerateTools/Templete/Godot/Dialog/EGodotFileDialog.cs

@ -0,0 +1,70 @@
using System;
using Godot;
namespace EGFramework.UI
{
public partial class EGodotFileDialog : FileDialog, IEGFramework
{
private EasyEventOnce<string> OnFileSelect { set; get; } = new EasyEventOnce<string>();
private EasyEventOnce<string> OnDirSelect { set; get; } = new EasyEventOnce<string>();
private EasyEventOnce<string[]> OnFilesSelect { set; get; } = new EasyEventOnce<string[]>();
private bool IsInit { set; get; } = false;
public void Init()
{
if (!IsInit)
{
this.FileSelected += OnFileSelect.Invoke;
this.DirSelected += OnDirSelect.Invoke;
this.FilesSelected += OnFilesSelect.Invoke;
this.Size = new Vector2I(480, 320);
IsInit = true;
}
}
public void InitFileSelect(Action<string> callback)
{
OnFileSelect.Register(callback);
Init();
this.FileMode = FileModeEnum.OpenFile;
this.PopupCentered();
}
public void InitDirSelect(Action<string> callback)
{
OnDirSelect.Register(callback);
this.FileMode = FileModeEnum.OpenDir;
Init();
this.PopupCentered();
}
public void InitFilesSelect(Action<string[]> callback)
{
OnFilesSelect.Register(callback);
this.FileMode = FileModeEnum.OpenFiles;
Init();
this.PopupCentered();
}
public void InitAnySelect(Action<string> singleSelectCallback, Action<string[]> multiSelectCallback)
{
OnFileSelect.Register(singleSelectCallback);
OnDirSelect.Register(singleSelectCallback);
OnFilesSelect.Register(multiSelectCallback);
this.FileMode = FileModeEnum.OpenAny;
Init();
this.PopupCentered();
}
public void InitSaveFileSelect(Action<string> callback)
{
OnFileSelect.Register(callback);
this.FileMode = FileModeEnum.SaveFile;
Init();
this.PopupCentered();
}
}
}

15
addons/EGFramework/Module/GenerateTools/Templete/Godot/UI/EGodotEditParam.cs

@ -13,6 +13,7 @@ namespace EGFramework.UI
public Label ParamReadOnly { get; set; } public Label ParamReadOnly { get; set; }
public SpinBox ParamSpinBox { get; set; } public SpinBox ParamSpinBox { get; set; }
public HSlider ParamSlider { get; set; } public HSlider ParamSlider { get; set; }
public Button ParamOperate { get; set; }
private Type ValueType { set; get; } private Type ValueType { set; get; }
public override void Init(KeyValuePair<string, object> editValue) public override void Init(KeyValuePair<string, object> editValue)
@ -112,6 +113,20 @@ namespace EGFramework.UI
ParamSlider.Value = rangeParam.Value; ParamSlider.Value = rangeParam.Value;
this.AddChild(ParamSlider); this.AddChild(ParamSlider);
} }
else if (editValue.Value is EGPathSelect)
{
EGPathSelect pathSelect = (EGPathSelect)editValue.Value;
this.ParamReadOnly = new Label();
ParamReadOnly.Name = "ParamReadOnly";
ParamReadOnly.SizeFlagsHorizontal = SizeFlags.ExpandFill;
ParamReadOnly.Text = pathSelect.Path;
this.AddChild(ParamReadOnly);
this.ParamOperate = new Button();
ParamOperate.Name = "Select file";
ParamOperate.SizeFlagsHorizontal = SizeFlags.ExpandFill;
// ParamOperate.Pressed +=
this.AddChild(ParamOperate);
}
} }
public string GetKey() public string GetKey()

10
addons/EGFramework/Module/GenerateTools/Templete/Variant/EGDataStruct.cs

@ -27,7 +27,15 @@ namespace EGFramework
Value = value; Value = value;
} }
} }
public interface IEGReadOnlyString{
public struct EGPathSelect
{
public string Path { set; get; }
public bool IsDir { set; get; }
}
public interface IEGReadOnlyString
{
public string GetString(); public string GetString();
} }
public struct EGReadOnlyString : IEGReadOnlyString{ public struct EGReadOnlyString : IEGReadOnlyString{

Loading…
Cancel
Save