mirror of
https://github.com/ShareX/ShareX.git
synced 2024-10-05 20:54:31 +13:00
166 lines
No EOL
6.5 KiB
C#
166 lines
No EOL
6.5 KiB
C#
#region License Information (GPL v3)
|
|
|
|
/*
|
|
ShareX - A program that allows you to take screenshots and share any file type
|
|
Copyright (c) 2007-2015 ShareX Team
|
|
|
|
This program is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU General Public License
|
|
as published by the Free Software Foundation; either version 2
|
|
of the License, or (at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
|
|
Optionally you can also view the license at <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#endregion License Information (GPL v3)
|
|
|
|
using ShareX.HelpersLib.Properties;
|
|
using System.Drawing;
|
|
using System.Windows.Forms;
|
|
|
|
namespace ShareX.HelpersLib
|
|
{
|
|
public class MyMessageBox : BaseForm
|
|
{
|
|
private const int LabelHorizontalPadding = 15;
|
|
private const int LabelVerticalPadding = 20;
|
|
private const int ButtonPadding = 10;
|
|
|
|
private DialogResult button1Result = DialogResult.OK;
|
|
private DialogResult button2Result = DialogResult.No;
|
|
|
|
public bool IsChecked { get; private set; }
|
|
|
|
public MyMessageBox(string text, string caption, MessageBoxButtons buttons = MessageBoxButtons.OK, string checkBoxText = null, bool isChecked = false)
|
|
{
|
|
BackColor = Color.White;
|
|
Width = 180;
|
|
Height = 100;
|
|
Text = caption;
|
|
FormBorderStyle = FormBorderStyle.FixedDialog;
|
|
ShowInTaskbar = false;
|
|
TopMost = true;
|
|
StartPosition = FormStartPosition.CenterScreen;
|
|
MinimizeBox = false;
|
|
MaximizeBox = false;
|
|
|
|
Shown += MyMessageBox_Shown;
|
|
|
|
Label labelText = new Label();
|
|
labelText.Margin = new Padding(0);
|
|
labelText.Font = SystemFonts.MessageBoxFont;
|
|
labelText.TextAlign = ContentAlignment.MiddleLeft;
|
|
labelText.BackColor = Color.White;
|
|
labelText.AutoSize = true;
|
|
labelText.MinimumSize = new Size(125, 0);
|
|
labelText.MaximumSize = new Size(400, 400);
|
|
labelText.Location = new Point(0, 0);
|
|
labelText.Text = text;
|
|
|
|
Button button1 = new Button();
|
|
button1.Margin = new Padding(0, ButtonPadding, ButtonPadding, ButtonPadding);
|
|
button1.BackColor = Color.Transparent;
|
|
button1.Size = new Size(80, 26);
|
|
button1.UseVisualStyleBackColor = false;
|
|
button1.Text = "button1";
|
|
button1.TabIndex = 0;
|
|
button1.Click += (sender, e) =>
|
|
{
|
|
DialogResult = button1Result;
|
|
Close();
|
|
};
|
|
|
|
Button button2 = new Button();
|
|
button2.Margin = new Padding(0, ButtonPadding, ButtonPadding, ButtonPadding);
|
|
button2.BackColor = Color.Transparent;
|
|
button2.Size = new Size(80, 26);
|
|
button2.UseVisualStyleBackColor = false;
|
|
button2.Text = "button2";
|
|
button2.TabIndex = 1;
|
|
button2.Click += (sender, e) =>
|
|
{
|
|
DialogResult = button2Result;
|
|
Close();
|
|
};
|
|
|
|
switch (buttons)
|
|
{
|
|
default:
|
|
case MessageBoxButtons.OK:
|
|
button1.Text = Resources.MyMessageBox_MyMessageBox_OK;
|
|
button1Result = DialogResult.OK;
|
|
button2.Visible = false;
|
|
break;
|
|
case MessageBoxButtons.OKCancel:
|
|
button1.Text = Resources.MyMessageBox_MyMessageBox_OK;
|
|
button1Result = DialogResult.OK;
|
|
button2.Text = Resources.MyMessageBox_MyMessageBox_Cancel;
|
|
button2Result = DialogResult.Cancel;
|
|
break;
|
|
case MessageBoxButtons.YesNo:
|
|
button1.Text = Resources.MyMessageBox_MyMessageBox_Yes;
|
|
button1Result = DialogResult.Yes;
|
|
button2.Text = Resources.MyMessageBox_MyMessageBox_No;
|
|
button2Result = DialogResult.No;
|
|
break;
|
|
}
|
|
|
|
FlowLayoutPanel panel = new FlowLayoutPanel();
|
|
panel.BackColor = Color.FromArgb(240, 240, 240);
|
|
panel.FlowDirection = FlowDirection.RightToLeft;
|
|
|
|
FlowLayoutPanel labelPanel = new FlowLayoutPanel();
|
|
labelPanel.BackColor = Color.White;
|
|
labelPanel.FlowDirection = FlowDirection.TopDown;
|
|
labelPanel.AutoSize = true;
|
|
labelPanel.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
|
labelPanel.Location = new Point(LabelHorizontalPadding, LabelVerticalPadding);
|
|
|
|
labelPanel.Controls.Add(labelText);
|
|
|
|
if (checkBoxText != null)
|
|
{
|
|
IsChecked = isChecked;
|
|
|
|
CheckBox checkBox = new CheckBox();
|
|
checkBox.Font = SystemFonts.MessageBoxFont;
|
|
checkBox.Margin = new Padding(2, LabelVerticalPadding, 0, 0);
|
|
checkBox.AutoSize = true;
|
|
checkBox.Text = checkBoxText;
|
|
checkBox.CheckedChanged += (sender, e) => IsChecked = checkBox.Checked;
|
|
labelPanel.Controls.Add(checkBox);
|
|
}
|
|
|
|
panel.Controls.Add(button2);
|
|
panel.Controls.Add(button1);
|
|
Controls.Add(labelPanel);
|
|
Controls.Add(panel);
|
|
|
|
panel.Location = new Point(0, labelPanel.Bottom + LabelVerticalPadding);
|
|
panel.Size = new Size(labelPanel.Width + (LabelHorizontalPadding * 2), button1.Height + (ButtonPadding * 2));
|
|
ClientSize = new Size(panel.Width, labelPanel.Height + (LabelVerticalPadding * 2) + panel.Height);
|
|
}
|
|
|
|
private void MyMessageBox_Shown(object sender, System.EventArgs e)
|
|
{
|
|
this.ShowActivate();
|
|
}
|
|
|
|
public static DialogResult Show(string text, string caption, MessageBoxButtons buttons = MessageBoxButtons.OK)
|
|
{
|
|
using (MyMessageBox messageBox = new MyMessageBox(text, caption, buttons))
|
|
{
|
|
return messageBox.ShowDialog();
|
|
}
|
|
}
|
|
}
|
|
} |