mirror of
https://github.com/n00mkrad/flowframes.git
synced 2025-12-16 08:27:44 +01:00
118 lines
3.6 KiB
C#
118 lines
3.6 KiB
C#
using System;
|
|
using System.Drawing;
|
|
using System.Windows.Forms;
|
|
|
|
namespace Flowframes.Forms
|
|
{
|
|
public partial class MessageForm : Form
|
|
{
|
|
private string _text = "";
|
|
private string _title = "";
|
|
private MessageBoxButtons _btns;
|
|
private bool _monospace;
|
|
|
|
private bool _dialogResultSet = false;
|
|
|
|
public MessageForm(string text, string title, MessageBoxButtons buttons = MessageBoxButtons.OK, bool monospace = false)
|
|
{
|
|
_text = text;
|
|
_title = title;
|
|
_btns = buttons;
|
|
_monospace = monospace;
|
|
|
|
InitializeComponent();
|
|
}
|
|
|
|
private void MessageForm_Load(object sender, EventArgs e)
|
|
{
|
|
Text = _title;
|
|
textLabel.Text = _text;
|
|
|
|
if (_monospace)
|
|
{
|
|
textLabel.Font = new Font("Cascadia Code", textLabel.Font.Size, textLabel.Font.Style);
|
|
}
|
|
|
|
if(_btns == MessageBoxButtons.OK)
|
|
{
|
|
SetButtons(true, false, false);
|
|
btn1.Text = "OK";
|
|
AcceptButton = btn1;
|
|
}
|
|
else if(_btns == MessageBoxButtons.YesNo)
|
|
{
|
|
SetButtons(true, true, false);
|
|
btn1.Text = "No";
|
|
btn2.Text = "Yes";
|
|
AcceptButton = btn2;
|
|
CancelButton = btn1;
|
|
}
|
|
else if (_btns == MessageBoxButtons.YesNoCancel)
|
|
{
|
|
SetButtons(true, true, true);
|
|
btn1.Text = "Cancel";
|
|
btn2.Text = "No";
|
|
btn3.Text = "Yes";
|
|
AcceptButton = btn3;
|
|
CancelButton = btn1;
|
|
}
|
|
|
|
Size labelSize = GetLabelSize(textLabel);
|
|
Size = new Size((labelSize.Width + 60).Clamp(360, Program.mainForm.Size.Width), (labelSize.Height + 120).Clamp(200, Program.mainForm.Size.Height));
|
|
|
|
CenterToScreen();
|
|
}
|
|
|
|
private Size GetLabelSize(Label label)
|
|
{
|
|
return TextRenderer.MeasureText(label.Text, label.Font, label.ClientSize, TextFormatFlags.WordBreak | TextFormatFlags.TextBoxControl);
|
|
}
|
|
|
|
private void SetButtons(bool b1, bool b2, bool b3)
|
|
{
|
|
btn1.Visible = b1;
|
|
btn2.Visible = b2;
|
|
btn3.Visible = b3;
|
|
}
|
|
|
|
private void btn1_Click(object sender, EventArgs e)
|
|
{
|
|
if (_btns == MessageBoxButtons.OK) // OK Button
|
|
DialogResult = DialogResult.OK;
|
|
else if (_btns == MessageBoxButtons.YesNo) // No Button
|
|
DialogResult = DialogResult.No;
|
|
else if (_btns == MessageBoxButtons.YesNoCancel) // Cancel Button
|
|
DialogResult = DialogResult.Cancel;
|
|
|
|
_dialogResultSet = true;
|
|
Close();
|
|
}
|
|
|
|
private void btn2_Click(object sender, EventArgs e)
|
|
{
|
|
if (_btns == MessageBoxButtons.YesNo) // Yes Button
|
|
DialogResult = DialogResult.Yes;
|
|
else if (_btns == MessageBoxButtons.YesNoCancel) // No Button
|
|
DialogResult = DialogResult.No;
|
|
|
|
_dialogResultSet = true;
|
|
Close();
|
|
}
|
|
|
|
private void btn3_Click(object sender, EventArgs e)
|
|
{
|
|
if (_btns == MessageBoxButtons.YesNoCancel) // Yes Button
|
|
DialogResult = DialogResult.Yes;
|
|
|
|
_dialogResultSet = true;
|
|
Close();
|
|
}
|
|
|
|
private void MessageForm_FormClosing(object sender, FormClosingEventArgs e)
|
|
{
|
|
if (_btns != MessageBoxButtons.OK && !_dialogResultSet)
|
|
e.Cancel = true;
|
|
}
|
|
}
|
|
}
|