mirror of
https://git.alee14.me/shiftos-archive/ShiftOS_TheReturn.git
synced 2025-01-22 18:02:16 +00:00
206 lines
5.8 KiB
C#
206 lines
5.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using ShiftOS.Engine;
|
|
using ShiftOS.Frontend.Desktop;
|
|
using ShiftOS.Frontend.GraphicsSubsystem;
|
|
using ShiftOS.Frontend.GUI;
|
|
|
|
namespace ShiftOS.Frontend
|
|
{
|
|
public class Infobox : IInfobox
|
|
{
|
|
public void Open(string title, string msg, Action callback = null)
|
|
{
|
|
var imsg = new InfoboxMessage(title, msg);
|
|
imsg.ShowPrompt(callback);
|
|
}
|
|
|
|
public void PromptText(string title, string message, Action<string> callback, bool isPassword)
|
|
{
|
|
var imsg = new InfoboxMessage(title, message);
|
|
imsg.ShowText(callback);
|
|
}
|
|
|
|
public void PromptYesNo(string title, string message, Action<bool> callback)
|
|
{
|
|
var imsg = new InfoboxMessage(title, message);
|
|
imsg.ShowYesNo(callback);
|
|
|
|
}
|
|
}
|
|
|
|
public class InfoboxMessage : GUI.Control, IShiftOSWindow
|
|
{
|
|
public InfoboxMessage(string title, string message)
|
|
{
|
|
InitializeComponent();
|
|
lbmessage.Text = Localization.Parse(message);
|
|
Title = title;
|
|
}
|
|
|
|
public string Title { get; private set; }
|
|
|
|
public void OnLoad()
|
|
{
|
|
AppearanceManager.SetWindowTitle(this, Title);
|
|
}
|
|
|
|
public void ShowPrompt(Action callback)
|
|
{
|
|
AppearanceManager.SetupDialog(this);
|
|
flyesno.Visible = false;
|
|
txtinput.Visible = false;
|
|
btnok.Visible = true;
|
|
btnok.Click += () =>
|
|
{
|
|
callback?.Invoke();
|
|
AppearanceManager.Close(this);
|
|
};
|
|
}
|
|
|
|
public void ShowYesNo(Action<bool> callback)
|
|
{
|
|
AppearanceManager.SetupDialog(this);
|
|
flyesno.Visible = true;
|
|
txtinput.Visible = false;
|
|
btnok.Visible = false;
|
|
btnyes.Click += () =>
|
|
{
|
|
callback?.Invoke(true);
|
|
AppearanceManager.Close(this);
|
|
};
|
|
btnno.Click += () =>
|
|
{
|
|
callback?.Invoke(false);
|
|
AppearanceManager.Close(this);
|
|
};
|
|
}
|
|
|
|
public void ShowText(Action<string> callback)
|
|
{
|
|
AppearanceManager.SetupDialog(this);
|
|
flyesno.Visible = false;
|
|
btnok.Visible = true;
|
|
txtinput.Visible = true;
|
|
btnok.Click += () =>
|
|
{
|
|
callback?.Invoke(txtinput.Text);
|
|
AppearanceManager.Close(this);
|
|
};
|
|
}
|
|
|
|
public void OnSkinLoad()
|
|
{
|
|
}
|
|
|
|
public bool OnUnload()
|
|
{
|
|
return true;
|
|
}
|
|
|
|
public void OnUpgrade()
|
|
{
|
|
}
|
|
|
|
//NOTE: The following code is ported over from Windows Forms.
|
|
/// <summary>
|
|
/// Required method for Designer support - do not modify
|
|
/// the contents of this method with the code editor.
|
|
/// </summary>
|
|
private void InitializeComponent()
|
|
{
|
|
this.txtinput = new TextInput();
|
|
this.lbmessage = new TextControl();
|
|
this.flyesno = new ItemGroup();
|
|
this.btnyes = new Button();
|
|
this.btnno = new Button();
|
|
this.btnok = new Button();
|
|
this.pbicon = new PictureBox();
|
|
//
|
|
// txtinput
|
|
//
|
|
this.txtinput.X = 88;
|
|
this.txtinput.Y = 116;
|
|
this.txtinput.Width = 250;
|
|
this.txtinput.Height = 20;
|
|
//
|
|
// lbmessage
|
|
//
|
|
this.lbmessage.X = 85;
|
|
this.lbmessage.Y = 19;
|
|
this.lbmessage.Width = 213;
|
|
this.lbmessage.Height = 94;
|
|
this.lbmessage.Text = "label1";
|
|
this.lbmessage.TextAlign = TextAlign.MiddleLeft;
|
|
//
|
|
// flyesno
|
|
//
|
|
this.flyesno.AutoSize = true;
|
|
this.flyesno.AddControl(this.btnyes);
|
|
this.flyesno.AddControl(this.btnno);
|
|
this.flyesno.X = 129;
|
|
this.flyesno.Y = 134;
|
|
//
|
|
// btnyes
|
|
//
|
|
this.btnyes.AutoSize = true;
|
|
this.btnyes.Text = Localization.Parse("{GEN_YES}");
|
|
//
|
|
// btnno
|
|
//
|
|
this.btnno.AutoSize = true;
|
|
this.btnno.Text = Localization.Parse("{GEN_NO}");
|
|
//
|
|
// btnok
|
|
//
|
|
this.btnok.AutoSize = true;
|
|
this.btnok.X = 140;
|
|
this.btnok.Y = 140;
|
|
this.btnok.Text = Localization.Parse("{GEN_OK}");
|
|
//
|
|
// pbicon
|
|
//
|
|
this.pbicon.X = 14;
|
|
this.pbicon.Y = 19;
|
|
this.pbicon.Width = 64;
|
|
this.pbicon.Height = 64;
|
|
this.pbicon.Image = Properties.Resources.justthes.ToTexture2D(UIManager.GraphicsDevice);
|
|
this.pbicon.ImageLayout = ImageLayout.Stretch;
|
|
//
|
|
// Dialog
|
|
//
|
|
this.Width = 341;
|
|
this.Height = 157;
|
|
this.AddControl(pbicon);
|
|
this.AddControl(btnok);
|
|
this.AddControl(flyesno);
|
|
this.AddControl(lbmessage);
|
|
|
|
this.Layout();
|
|
}
|
|
|
|
protected override void OnLayout()
|
|
{
|
|
try
|
|
{
|
|
btnok.Y = this.Height - btnok.Height - 10;
|
|
flyesno.Y = this.Height - flyesno.Height - 10;
|
|
}
|
|
catch { }
|
|
}
|
|
|
|
|
|
private Control panel1;
|
|
private TextControl lbmessage;
|
|
private ItemGroup flyesno;
|
|
private Button btnyes;
|
|
private Button btnno;
|
|
private Button btnok;
|
|
private PictureBox pbicon;
|
|
private TextInput txtinput;
|
|
|
|
}
|
|
}
|