143 lines
4.2 KiB
C#
143 lines
4.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
|
|
using MatterHackers.Agg;
|
|
using MatterHackers.Agg.UI;
|
|
using MatterHackers.Localizations;
|
|
|
|
namespace MatterHackers.MatterControl
|
|
{
|
|
public class WizardPage : GuiWidget
|
|
{
|
|
public WizardPage()
|
|
{
|
|
}
|
|
|
|
public virtual void PageIsBecomingActive()
|
|
{
|
|
}
|
|
|
|
public virtual void PageIsBecomingInactive()
|
|
{
|
|
}
|
|
}
|
|
|
|
public class WizardControl : GuiWidget
|
|
{
|
|
protected TextImageButtonFactory textImageButtonFactory = new TextImageButtonFactory();
|
|
|
|
FlowLayoutWidget bottomToTopLayout;
|
|
List<WizardPage> pages = new List<WizardPage>();
|
|
int pageIndex = 0;
|
|
Button backButton;
|
|
public Button nextButton;
|
|
Button doneButton;
|
|
|
|
public Button DoneButton
|
|
{
|
|
get { return doneButton; }
|
|
}
|
|
|
|
public WizardControl()
|
|
{
|
|
Padding = new BorderDouble(10);
|
|
textImageButtonFactory.normalTextColor = RGBA_Bytes.White;
|
|
textImageButtonFactory.hoverTextColor = RGBA_Bytes.White;
|
|
textImageButtonFactory.disabledTextColor = new RGBA_Bytes(200, 200, 200);
|
|
textImageButtonFactory.disabledFillColor = new RGBA_Bytes(0, 0, 0, 0);
|
|
textImageButtonFactory.pressedTextColor = RGBA_Bytes.White;
|
|
|
|
AnchorAll();
|
|
BackgroundColor = ActiveTheme.Instance.PrimaryBackgroundColor;
|
|
|
|
bottomToTopLayout = new FlowLayoutWidget(FlowDirection.BottomToTop);
|
|
FlowLayoutWidget buttonBar = new FlowLayoutWidget();
|
|
|
|
textImageButtonFactory.FixedWidth = 60;
|
|
backButton = textImageButtonFactory.Generate(new LocalizedString("Back").Translated, centerText: true);
|
|
backButton.Click += new ButtonBase.ButtonEventHandler(back_Click);
|
|
|
|
nextButton = textImageButtonFactory.Generate(new LocalizedString("Next").Translated, centerText: true);
|
|
nextButton.Click += new ButtonBase.ButtonEventHandler(next_Click);
|
|
|
|
doneButton = textImageButtonFactory.Generate(new LocalizedString("Done").Translated, centerText: true);
|
|
doneButton.Click += new ButtonBase.ButtonEventHandler(done_Click);
|
|
|
|
textImageButtonFactory.FixedWidth = 0;
|
|
|
|
buttonBar.AddChild(backButton);
|
|
buttonBar.AddChild(nextButton);
|
|
buttonBar.AddChild(doneButton);
|
|
|
|
bottomToTopLayout.AddChild(buttonBar);
|
|
bottomToTopLayout.AnchorAll();
|
|
|
|
AddChild(bottomToTopLayout);
|
|
}
|
|
|
|
void done_Click(object sender, MouseEventArgs mouseEvent)
|
|
{
|
|
UiThread.RunOnIdle(CloseOnIdle);
|
|
}
|
|
|
|
void CloseOnIdle(object state)
|
|
{
|
|
Close();
|
|
}
|
|
|
|
void next_Click(object sender, MouseEventArgs mouseEvent)
|
|
{
|
|
pageIndex = Math.Min(pages.Count - 1, pageIndex + 1);
|
|
SetPageVisibility();
|
|
}
|
|
|
|
void back_Click(object sender, MouseEventArgs mouseEvent)
|
|
{
|
|
pageIndex = Math.Max(0, pageIndex - 1);
|
|
SetPageVisibility();
|
|
}
|
|
|
|
void SetPageVisibility()
|
|
{
|
|
backButton.Enabled = true;
|
|
nextButton.Visible = true;
|
|
doneButton.Visible = false;
|
|
|
|
for (int i = 0; i < pages.Count; i++)
|
|
{
|
|
if (i == pageIndex)
|
|
{
|
|
pages[i].Visible = true;
|
|
pages[i].PageIsBecomingActive();
|
|
}
|
|
else
|
|
{
|
|
if (pages[i].Visible)
|
|
{
|
|
pages[i].Visible = false;
|
|
pages[i].PageIsBecomingInactive();
|
|
}
|
|
}
|
|
}
|
|
|
|
if (pageIndex == 0)
|
|
{
|
|
backButton.Enabled = false;
|
|
}
|
|
if (pageIndex >= pages.Count -1)
|
|
{
|
|
nextButton.Visible = false;
|
|
doneButton.Visible = true;
|
|
}
|
|
}
|
|
|
|
public void AddPage(WizardPage widgetForPage)
|
|
{
|
|
pages.Add(widgetForPage);
|
|
bottomToTopLayout.AddChild(widgetForPage);
|
|
SetPageVisibility();
|
|
}
|
|
}
|
|
}
|