using Godot; using System; using EGFramework; using System.IO; public partial class ViewLocalVideoMediaViewer : Node,IEGFramework { public EGLocalFileSave localFileSave { get; set; } public VideoStreamPlayer ViewVideo { get; set; } public TextureRect ViewImage { get; set; } public VBoxContainer VideoList { get; set; } public FileDialog ImportImage { get; set; } public FileDialog ImportVideo { get; set; } // Called when the node enters the scene tree for the first time. public override void _Ready() { ViewVideo = this.GetNode("ViewVideo"); ViewImage = this.GetNode("ViewImage"); VideoList = this.GetNode("Tab/Media/MediaList"); ImportImage = this.GetNode("ImportImage"); ImportVideo = this.GetNode("ImportVideo"); LoadFileSystem(); } // Called every frame. 'delta' is the elapsed time since the previous frame. public override void _Process(double delta) { } public void LoadFileSystem(){ this.localFileSave = new EGLocalFileSave(); localFileSave.RootPath = "SaveData"; if(!localFileSave.IsRemoteDirectoryExist("Media")){ localFileSave.MakeDirectory("Media"); } RefreshList(); } public void RefreshList(){ string combinedPath = Path.Combine(localFileSave.RootPath, "Media"); VideoList.ClearChildren(); foreach (var file in localFileSave.ListRemoteFilePath("Media")){ if(file.FileName.GetStrBehindSymbol('.')!="ogv" && file.FileName.GetStrBehindSymbol('.')!="jpg" && file.FileName.GetStrBehindSymbol('.')!="png"){ continue; } Button button= new Button(); button.Name = file.FileName; button.Text = file.FileName; string combinedFile = Path.Combine(combinedPath, button.Text); button.Connect("pressed",Callable.From(()=>{ if(button.Text.GetStrBehindSymbol('.')=="ogv"){ PlayVideo(combinedFile); } if(button.Text.GetStrBehindSymbol('.')=="jpg" || button.Text.GetStrBehindSymbol('.')=="png"){ PlayImage(combinedFile); } })); VideoList.AddChild(button); } } public void PlayVideo(string videoName){ ViewVideo.Visible = true; ViewImage.Visible = false; GD.Print("PlayVideo: " + videoName); ViewVideo.Stream.File = videoName; ViewVideo.Play(); } public void PlayImage(string imageName){ ViewVideo.Visible = false; ViewImage.Visible = true; GD.Print("PlayImage: " + imageName); Image image = Image.LoadFromFile(imageName); ImageTexture texture = ImageTexture.CreateFromImage(image); ViewImage.Texture = texture; // ViewImage.Texture = imageName; } public void OpenImportVideo(){ ImportVideo.Popup(); } public void OpenImportImage(){ ImportImage.Popup(); } public void UploadVideo(string localVideoPath){ localFileSave.UploadFile(localVideoPath,"Media\\"+Path.GetFileName(localVideoPath)); RefreshList(); OS.Alert("Video Upload Success!","success"); } public void UploadImage(string localImagePath){ localFileSave.UploadFile(localImagePath,"Media\\"+Path.GetFileName(localImagePath)); RefreshList(); OS.Alert("Image Upload Success!","success"); } }