Table of Contents

Class Wizard

Namespace
Terminal.Gui
Assembly
Terminal.Gui.dll

Provides navigation and a user interface (UI) to collect related data across multiple steps. Each step (Wizard.WizardStep) can host arbitrary Views, much like a Dialog. Each step also has a pane for help text. Along the bottom of the Wizard view are customizable buttons enabling the user to navigate forward and backward through the Wizard.

public class Wizard : Dialog, IDisposable, ISupportInitializeNotification, ISupportInitialize
Inheritance
Wizard
Implements
Inherited Members

Examples

using Terminal.Gui;
using NStack;

Application.Init();

var wizard = new Wizard ($"Setup Wizard");

// Add 1st step
var firstStep = new Wizard.WizardStep ("End User License Agreement");
wizard.AddStep(firstStep);
firstStep.NextButtonText = "Accept!";
firstStep.HelpText = "This is the End User License Agreement.";

// Add 2nd step
var secondStep = new Wizard.WizardStep ("Second Step");
wizard.AddStep(secondStep);
secondStep.HelpText = "This is the help text for the Second Step.";
var lbl = new Label ("Name:") { AutoSize = true };
secondStep.Add(lbl);

var name = new TextField () { X = Pos.Right (lbl) + 1, Width = Dim.Fill () - 1 };
secondStep.Add(name);

wizard.Finished += (args) =>
{
    MessageBox.Query("Wizard", $"Finished. The Name entered is '{name.Text}'", "Ok");
    Application.RequestStop();
};

Application.Top.Add (wizard);
Application.Run ();
Application.Shutdown ();

Remarks

The Wizard can be displayed either as a modal (pop-up) Window (like Dialog) or as an embedded View.

By default, Modal is true. In this case launch the Wizard with Application.Run(wizard).

See Modal for more details.

Constructors

Wizard()

Initializes a new instance of the Wizard class using Computed positioning.

Wizard(ustring)

Initializes a new instance of the Wizard class using Computed positioning.

Properties

BackButton

If the CurrentStep is not the first step in the wizard, this button causes the MovingBack event to be fired and the wizard moves to the previous step.

CurrentStep

Gets or sets the currently active Wizard.WizardStep.

Modal

Determines whether the Wizard is displayed as modal pop-up or not.

The default is true. The Wizard will be shown with a frame with Title and will behave like any Toplevel window.

If set to false the Wizard will have no frame and will behave like any embedded View.

To use Wizard as an embedded View

  1. Set Modal to false.
  2. Add the Wizard to a containing view with Add(View).

If a non-Modal Wizard is added to the application after Run(Func<Exception, bool>) has been called the first step must be explicitly set by setting CurrentStep to GetNextStep():

wizard.CurrentStep = wizard.GetNextStep();
NextFinishButton

If the CurrentStep is the last step in the wizard, this button causes the Finished event to be fired and the wizard to close. If the step is not the last step, the MovingNext event will be fired and the wizard will move next step.

Title

The title of the Wizard, shown at the top of the Wizard with " - currentStep.Title" appended.

Methods

AddStep(WizardStep)

Adds a step to the wizard. The Next and Back buttons navigate through the added steps in the order they were added.

GetFirstStep()

Returns the first enabled step in the Wizard

GetLastStep()

Returns the last enabled step in the Wizard

GetNextStep()

Returns the next enabled Wizard.WizardStep after the current step. Takes into account steps which are disabled. If CurrentStep is null returns the first enabled step.

GetPreviousStep()

Returns the first enabled Wizard.WizardStep before the current step. Takes into account steps which are disabled. If CurrentStep is null returns the last enabled step.

GoBack()

Causes the wizad to move to the previous enabled step (or first step if CurrentStep is not set). If there is no previous step, does nothing.

GoNext()

Causes the wizad to move to the next enabled step (or last step if CurrentStep is not set). If there is no previous step, does nothing.

GoToStep(WizardStep)

Changes to the specified Wizard.WizardStep.

OnStepChanged(WizardStep, WizardStep)

Called when the Wizard has completed transition to a new Wizard.WizardStep. Fires the StepChanged event.

OnStepChanging(WizardStep, WizardStep)

Called when the Wizard is about to transition to another Wizard.WizardStep. Fires the StepChanging event.

ProcessKey(KeyEvent)

Wizard is derived from Dialog and Dialog causes Esc to call RequestStop(Toplevel), closing the Dialog. Wizard overrides ProcessKey(KeyEvent) to instead fire the Cancelled event when Wizard is being used as a non-modal (see Modal. See ProcessKey(KeyEvent) for more.

Events

Cancelled

Raised when the user has cancelled the Wizard by pressin the Esc key. To prevent a modal (Modal is true) Wizard from closing, cancel the event by setting Cancel to true before returning from the event handler.

Finished

Raised when the Next/Finish button in the Wizard is clicked. The Next/Finish button is always the last button in the array of Buttons passed to the Wizard constructor, if any. This event is only raised if the CurrentStep is the last Step in the Wizard flow (otherwise the Finished event is raised).

MovingBack

Raised when the Back button in the Wizard is clicked. The Back button is always the first button in the array of Buttons passed to the Wizard constructor, if any.

MovingNext

Raised when the Next/Finish button in the Wizard is clicked (or the user presses Enter). The Next/Finish button is always the last button in the array of Buttons passed to the Wizard constructor, if any. This event is only raised if the CurrentStep is the last Step in the Wizard flow (otherwise the Finished event is raised).

StepChanged

This event is raised after the Wizard has changed the CurrentStep.

StepChanging

This event is raised when the current CurrentStep) is about to change. Use Cancel to abort the transition.