public static DialogWindow Show(IStagedSetupWizard setupWizard, bool advanceToIncompleteStage = false) { var type = setupWizard.GetType(); var wizardWindow = new StagedSetupWindow(setupWizard); wizardWindow.Closed += (s, e) => allWindows.Remove(type); allWindows[type] = wizardWindow; wizardWindow.Size = setupWizard.WindowSize; var homePage = setupWizard.HomePageGenerator(); SetSizeAndShow(wizardWindow, homePage); if (advanceToIncompleteStage) { wizardWindow.NextIncompleteStage(); } else { wizardWindow.ChangeToPage(homePage); } return(wizardWindow); }
public StagedSetupWindow(IStagedSetupWizard setupWizard) { this.setupWizard = setupWizard; var theme = AppContext.Theme; var row = new FlowLayoutWidget() { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Stretch }; row.AddChild(leftPanel = new FlowLayoutWidget(FlowDirection.TopToBottom) { BackgroundColor = theme.MinimalShade, HAnchor = HAnchor.Absolute, VAnchor = VAnchor.Stretch, Margin = new BorderDouble(right: theme.DefaultContainerPadding), Padding = theme.DefaultContainerPadding, Width = 250 }); int i = 1; foreach (var stage in setupWizard.Stages.Where(s => s.Visible)) { var stageWidget = new WizardStageRow( $"{i++}. {stage.Title}", "", stage, theme) { TabStop = true, ToolTipText = stage.HelpText }; stageWidget.Name = stage.Title + " Row"; stageWidget.Enabled = stage.Enabled; stageWidget.Click += (s, e) => { // Only allow leftnav when not running SetupWizard if (this.ActiveStage == null) { this.ActiveStage = stage; } }; rowsByStage.Add(stage, stageWidget); leftPanel.AddChild(stageWidget); } row.AddChild(rightPanel = new GuiWidget() { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Stretch }); this.Title = setupWizard.Title; // Multi-part wizard should not try to resize per page this.UseChildWindowSize = false; this.AddChild(row); }