Commit of the code
This commit is contained in:
parent
33cee93974
commit
f4c1b0b85c
356 changed files with 175795 additions and 0 deletions
131
ControlElements/StyledMessageBoxWindow.cs
Normal file
131
ControlElements/StyledMessageBoxWindow.cs
Normal file
|
|
@ -0,0 +1,131 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
using MatterHackers.Agg;
|
||||
using MatterHackers.Agg.UI;
|
||||
using MatterHackers.Agg.Image;
|
||||
using MatterHackers.Agg.Font;
|
||||
|
||||
namespace MatterHackers.MatterControl
|
||||
{
|
||||
public class StyledMessageBox : SystemWindow
|
||||
{
|
||||
public EventHandler ClickedOk;
|
||||
TextImageButtonFactory textImageButtonFactory = new TextImageButtonFactory();
|
||||
|
||||
public enum MessageType { OK, YES_NO };
|
||||
|
||||
public static bool ShowMessageBox(String message, string caption, MessageType messageType = MessageType.OK)
|
||||
{
|
||||
string wrappedMessage = TypeFacePrinter.InsertCRs(message, 350, 12);
|
||||
StyledMessageBox messageBox = new StyledMessageBox(wrappedMessage, caption, messageType, null, 400, 300);
|
||||
bool okClicked = false;
|
||||
messageBox.ClickedOk += (sender, e) => { okClicked = true; };
|
||||
messageBox.ShowAsSystemWindow();
|
||||
return okClicked;
|
||||
}
|
||||
|
||||
public static bool ShowMessageBox(string message, string caption, GuiWidget[] extraWidgetsToAdd, MessageType messageType)
|
||||
{
|
||||
string wrappedMessage = TypeFacePrinter.InsertCRs(message, 300, 12);
|
||||
StyledMessageBox messageBox = new StyledMessageBox(wrappedMessage, caption, messageType, extraWidgetsToAdd, 400, 300);
|
||||
bool okClicked = false;
|
||||
messageBox.ClickedOk += (sender, e) => { okClicked = true; };
|
||||
messageBox.ShowAsSystemWindow();
|
||||
return okClicked;
|
||||
}
|
||||
|
||||
public StyledMessageBox(String message, string windowTitle, MessageType messageType, GuiWidget[] extraWidgetsToAdd, double width, double height)
|
||||
: base(width, height)
|
||||
{
|
||||
BackgroundColor = ActiveTheme.Instance.PrimaryBackgroundColor;
|
||||
|
||||
textImageButtonFactory.FixedWidth = 50;
|
||||
|
||||
FlowLayoutWidget topToBottomFlow = new FlowLayoutWidget(FlowDirection.TopToBottom);
|
||||
//topToBottomFlow.DebugShowBounds = true;
|
||||
TextWidget messageContainer = new TextWidget(message, textColor: ActiveTheme.Instance.PrimaryTextColor);
|
||||
messageContainer.HAnchor = Agg.UI.HAnchor.ParentCenter;
|
||||
topToBottomFlow.AddChild(messageContainer);
|
||||
|
||||
if (extraWidgetsToAdd != null)
|
||||
{
|
||||
foreach (GuiWidget widget in extraWidgetsToAdd)
|
||||
{
|
||||
topToBottomFlow.AddChild(widget);
|
||||
}
|
||||
}
|
||||
|
||||
Title = windowTitle;
|
||||
|
||||
// add a spacer
|
||||
GuiWidget spacer = new GuiWidget(10, 10);
|
||||
spacer.HAnchor |= Agg.UI.HAnchor.ParentCenter;
|
||||
//spacer.DebugShowBounds = true;
|
||||
topToBottomFlow.AddChild(spacer);
|
||||
topToBottomFlow.HAnchor = Agg.UI.HAnchor.ParentCenter | Agg.UI.HAnchor.FitToChildren;
|
||||
topToBottomFlow.VAnchor = Agg.UI.VAnchor.ParentCenter | Agg.UI.VAnchor.FitToChildren;
|
||||
|
||||
switch (messageType)
|
||||
{
|
||||
case MessageType.YES_NO:
|
||||
{
|
||||
FlowLayoutWidget yesNoButtonsFlow = new FlowLayoutWidget();
|
||||
yesNoButtonsFlow.HAnchor |= HAnchor.ParentCenter;
|
||||
|
||||
Button yesButton = textImageButtonFactory.Generate("Yes", centerText:true);
|
||||
yesButton.Click += new ButtonBase.ButtonEventHandler(okButton_Click);
|
||||
yesNoButtonsFlow.AddChild(yesButton);
|
||||
|
||||
GuiWidget buttonSpacer = new GuiWidget(10, 10);
|
||||
yesNoButtonsFlow.AddChild(buttonSpacer);
|
||||
|
||||
Button noButton = textImageButtonFactory.Generate("No", centerText: true);
|
||||
noButton.Click += new ButtonBase.ButtonEventHandler(noButton_Click);
|
||||
yesNoButtonsFlow.AddChild(noButton);
|
||||
|
||||
topToBottomFlow.AddChild(yesNoButtonsFlow);
|
||||
}
|
||||
break;
|
||||
|
||||
case MessageType.OK:
|
||||
{
|
||||
Button okButton = textImageButtonFactory.Generate("Ok", centerText: true);
|
||||
//okButton.DebugShowBounds = true;
|
||||
okButton.Click += new ButtonBase.ButtonEventHandler(okButton_Click);
|
||||
okButton.HAnchor = HAnchor.ParentCenter;
|
||||
topToBottomFlow.AddChild(okButton);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
AddChild(topToBottomFlow);
|
||||
|
||||
IsModal = true;
|
||||
}
|
||||
|
||||
void noButton_Click(object sender, MouseEventArgs mouseEvent)
|
||||
{
|
||||
UiThread.RunOnIdle(CloseOnIdle);
|
||||
}
|
||||
|
||||
void okButton_Click(object sender, MouseEventArgs mouseEvent)
|
||||
{
|
||||
if (ClickedOk != null)
|
||||
{
|
||||
ClickedOk(this, null);
|
||||
}
|
||||
UiThread.RunOnIdle(CloseOnIdle);
|
||||
}
|
||||
|
||||
void CloseOnIdle(object state)
|
||||
{
|
||||
Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue