Search Results for

Show / Hide Table of Contents

# Class Wizard

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.

##### Inheritance

System.Object
Responder
View
Toplevel
Window
Dialog
Wizard

##### Implements

System.IDisposable
System.ComponentModel.ISupportInitializeNotification
System.ComponentModel.ISupportInitialize

##### 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.

##### 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 ();

##### Inherited Members

Dialog.AddButton(Button)
Dialog.ButtonAlignment
Window.Add(View)
Window.Remove(View)
Window.RemoveAll()
Window.Redraw(Rect)
Window.OnCanFocusChanged()
Window.OnTitleChanging(ustring, ustring)
Window.OnTitleChanged(ustring, ustring)
Window.Border
Window.Text
Window.TextAlignment
Window.TitleChanging
Window.TitleChanged
Toplevel.OnLoaded()
Toplevel.OnAlternateForwardKeyChanged(Key)
Toplevel.OnAlternateBackwardKeyChanged(Key)
Toplevel.OnQuitKeyChanged(Key)
Toplevel.Create()
Toplevel.OnKeyDown(KeyEvent)
Toplevel.OnKeyUp(KeyEvent)
Toplevel.ProcessColdKey(KeyEvent)
Toplevel.PositionToplevel(Toplevel)
Toplevel.MouseEvent(MouseEvent)
Toplevel.WillPresent()
Toplevel.MoveNext()
Toplevel.MovePrevious()
Toplevel.RequestStop()
Toplevel.RequestStop(Toplevel)
Toplevel.PositionCursor()
Toplevel.GetTopMdiChild(Type, String[])
Toplevel.ShowChild(Toplevel)
Toplevel.Running
Toplevel.CanFocus
Toplevel.MenuBar
Toplevel.StatusBar
Toplevel.IsMdiContainer
Toplevel.IsMdiChild
Toplevel.Loaded
Toplevel.Ready
Toplevel.Unloaded
Toplevel.Activate
Toplevel.Deactivate
Toplevel.ChildClosed
Toplevel.AllChildClosed
Toplevel.Closing
Toplevel.Closed
Toplevel.ChildLoaded
Toplevel.ChildUnloaded
Toplevel.Resized
Toplevel.AlternateForwardKeyChanged
Toplevel.AlternateBackwardKeyChanged
Toplevel.QuitKeyChanged
View.GetMinWidthHeight(Size)
View.SetMinWidthHeight()
View.UpdateTextFormatterText()
View.ProcessResizeView()
View.SetNeedsDisplay()
View.ClearLayoutNeeded()
View.SetNeedsDisplay(Rect)
View.SetChildNeedsDisplay()
View.Add(View[])
View.BringSubviewToFront(View)
View.SendSubviewToBack(View)
View.SendSubviewBackwards(View)
View.BringSubviewForward(View)
View.Clear()
View.Clear(Rect)
View.ScreenToView(Int32, Int32)
View.ClipToBounds()
View.SetClip(Rect)
View.DrawFrame(Rect, Int32, Boolean)
View.DrawHotString(ustring, Attribute, Attribute)
View.DrawHotString(ustring, Boolean, ColorScheme)
View.Move(Int32, Int32, Boolean)
View.OnAdded(View)
View.OnRemoved(View)
View.OnEnter(View)
View.OnLeave(View)
View.AddRune(Int32, Int32, Rune)
View.ClearNeedsDisplay()
View.OnDrawContent(Rect)
View.OnDrawContentComplete(Rect)
View.SetFocus()
View.InvokeKeybindings(KeyEvent)
View.AddKeyBinding(Key, Command)
View.ReplaceKeyBinding(Key, Key)
View.ContainsKeyBinding(Key)
View.ClearKeybindings()
View.ClearKeybinding(Key)
View.ClearKeybinding(Command)
View.AddCommand(Command, Func<Nullable<Boolean>>)
View.GetSupportedCommands()
View.GetKeyFromCommand(Command)
View.ProcessHotKey(KeyEvent)
View.EnsureFocus()
View.FocusFirst()
View.FocusLast()
View.FocusPrev()
View.FocusNext()
View.LayoutSubviews()
View.ToString()
View.GetAutoSize()
View.GetHotKeySpecifierLength(Boolean)
View.GetTextFormatterBoundsSize()
View.GetBoundsTextFormatterSize()
View.OnMouseEnter(MouseEvent)
View.OnMouseLeave(MouseEvent)
View.OnMouseEvent(MouseEvent)
View.OnMouseClick(View.MouseEventArgs)
View.OnEnabledChanged()
View.OnVisibleChanged()
View.Dispose(Boolean)
View.BeginInit()
View.EndInit()
View.SetWidth(Int32, Int32)
View.SetHeight(Int32, Int32)
View.GetCurrentWidth(Int32)
View.GetCurrentHeight(Int32)
View.GetNormalColor()
View.GetTopSuperView()
View.HotKey
View.HotKeySpecifier
View.Shortcut
View.ShortcutTag
View.ShortcutAction
View.Data
View.Driver
View.Subviews
View.TabIndexes
View.TabIndex
View.TabStop
View.Id
View.IsCurrentTop
View.WantMousePositionReports
View.WantContinuousButtonPressed
View.Frame
View.LayoutStyle
View.Bounds
View.X
View.Y
View.Width
View.Height
View.ForceValidatePosDim
View.TextFormatter
View.SuperView
View.HasFocus
View.Focused
View.MostFocused
View.ColorScheme
View.AutoSize
View.PreserveTrailingSpaces
View.VerticalTextAlignment
View.TextDirection
View.IsInitialized
View.IsAdded
View.Enabled
View.Visible
View.Added
View.Removed
View.Enter
View.Leave
View.MouseEnter
View.MouseLeave
View.MouseClick
View.CanFocusChanged
View.EnabledChanged
View.VisibleChanged
View.HotKeyChanged
View.DrawContent
View.DrawContentComplete
View.KeyPress
View.KeyDown
View.KeyUp
View.LayoutStarted
View.LayoutComplete
View.Initialized
Responder.Dispose()

###### Namespace: Terminal.Gui

###### Assembly: Terminal.Gui.dll

##### Syntax

    public class Wizard : Dialog

### Constructors

#### Wizard()

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

##### Declaration

    public Wizard()

#### Wizard(ustring)

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

##### Declaration

    public Wizard(ustring title)

##### Parameters

Type | Name | Description
--- | --- | ---
NStack.ustring | title | Sets the Title for the Wizard.

### 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.

##### Declaration

    public Button BackButton { get; }

##### Property Value

Type | Description
--- | ---
Button |

#### CurrentStep

Gets or sets the currently active Wizard.WizardStep.

##### Declaration

    public Wizard.WizardStep CurrentStep { get; set; }

##### Property Value

Type | Description
--- | ---
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, Boolean>) has been called the first step must be explicitly set by setting CurrentStep to GetNextStep():

       wizard.CurrentStep = wizard.GetNextStep();

##### Declaration

    public bool Modal { get; set; }

##### Property Value

Type | Description
--- | ---
System.Boolean |

#### 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.

##### Declaration

    public Button NextFinishButton { get; }

##### Property Value

Type | Description
--- | ---
Button |

#### Title

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

##### Declaration

    public ustring Title { get; set; }

##### Property Value

Type | Description
--- | ---
NStack.ustring |

### Methods

#### AddStep(Wizard.WizardStep)

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

##### Declaration

    public void AddStep(Wizard.WizardStep newStep)

##### Parameters

Type | Name | Description
--- | --- | ---
Wizard.WizardStep | newStep |

#### GetFirstStep()

Returns the first enabled step in the Wizard

##### Declaration

    public Wizard.WizardStep GetFirstStep()

##### Returns

Type | Description
--- | ---
Wizard.WizardStep | The last enabled step

#### GetLastStep()

Returns the last enabled step in the Wizard

##### Declaration

    public Wizard.WizardStep GetLastStep()

##### Returns

Type | Description
--- | ---
Wizard.WizardStep | The last enabled step

#### 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.

##### Declaration

    public Wizard.WizardStep GetNextStep()

##### Returns

Type | Description
--- | ---
Wizard.WizardStep | The next step after the current step, if there is one; otherwise returns `null`, which indicates either there are no enabled steps or the current step is the last 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.

##### Declaration

    public Wizard.WizardStep GetPreviousStep()

##### Returns

Type | Description
--- | ---
Wizard.WizardStep | The first step ahead of the current step, if there is one; otherwise returns `null`, which indicates either there are no enabled steps or the current step is the first 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.

##### Declaration

    public void GoBack()

#### 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.

##### Declaration

    public void GoNext()

#### GoToStep(Wizard.WizardStep)

Changes to the specified Wizard.WizardStep.

##### Declaration

    public bool GoToStep(Wizard.WizardStep newStep)

##### Parameters

Type | Name | Description
--- | --- | ---
Wizard.WizardStep | newStep | The step to go to.

##### Returns

Type | Description
--- | ---
System.Boolean | True if the transition to the step succeeded. False if the step was not found or the operation was cancelled.

#### OnStepChanged(Wizard.WizardStep, Wizard.WizardStep)

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

##### Declaration

    public virtual bool OnStepChanged(Wizard.WizardStep oldStep, Wizard.WizardStep newStep)

##### Parameters

Type | Name | Description
--- | --- | ---
Wizard.WizardStep | oldStep | The step the Wizard changed from
Wizard.WizardStep | newStep | The step the Wizard has changed to

##### Returns

Type | Description
--- | ---
System.Boolean | True if the change is to be cancelled.

#### OnStepChanging(Wizard.WizardStep, Wizard.WizardStep)

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

##### Declaration

    public virtual bool OnStepChanging(Wizard.WizardStep oldStep, Wizard.WizardStep newStep)

##### Parameters

Type | Name | Description
--- | --- | ---
Wizard.WizardStep | oldStep | The step the Wizard is about to change from
Wizard.WizardStep | newStep | The step the Wizard is about to change to

##### Returns

Type | Description
--- | ---
System.Boolean | True if the change is to be cancelled.

#### 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.

##### Declaration

    public override bool ProcessKey(KeyEvent kb)

##### Parameters

Type | Name | Description
--- | --- | ---
KeyEvent | kb |

##### Returns

Type | Description
--- | ---
System.Boolean |

##### Overrides

Dialog.ProcessKey(KeyEvent)

### 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.

##### Declaration

    public event Action<Wizard.WizardButtonEventArgs> Cancelled

##### Event Type

Type | Description
--- | ---
System.Action<Wizard.WizardButtonEventArgs> |

#### 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).

##### Declaration

    public event Action<Wizard.WizardButtonEventArgs> Finished

##### Event Type

Type | Description
--- | ---
System.Action<Wizard.WizardButtonEventArgs> |

#### 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.

##### Declaration

    public event Action<Wizard.WizardButtonEventArgs> MovingBack

##### Event Type

Type | Description
--- | ---
System.Action<Wizard.WizardButtonEventArgs> |

#### 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).

##### Declaration

    public event Action<Wizard.WizardButtonEventArgs> MovingNext

##### Event Type

Type | Description
--- | ---
System.Action<Wizard.WizardButtonEventArgs> |

#### StepChanged

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

##### Declaration

    public event Action<Wizard.StepChangeEventArgs> StepChanged

##### Event Type

Type | Description
--- | ---
System.Action<Wizard.StepChangeEventArgs> |

#### StepChanging

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

##### Declaration

    public event Action<Wizard.StepChangeEventArgs> StepChanging

##### Event Type

Type | Description
--- | ---
System.Action<Wizard.StepChangeEventArgs> |

### Implements

System.IDisposable
System.ComponentModel.ISupportInitializeNotification
System.ComponentModel.ISupportInitialize