public SetupGuide(IFuse fuse, IObservable <Unit> doneLoadingMainWindow) { var output = new Subject <string>(); LogMessages = output; var report = fuse.Report; var softwares = new SoftwareCollectionStatus(fuse); var showSetupGuide = new BehaviorSubject <bool>(false); MissingPluginNotification.Create(fuse, doneLoadingMainWindow, showSetupGuide); Application.Desktop.CreateSingletonWindow( isVisible: showSetupGuide.CombineLatest(doneLoadingMainWindow, (s, _) => s), window: dialog => new Window { Title = Observable.Return("Setup guide"), Size = Optional.Some(Property.Constant(Optional.Some(new Size <Points>(500, 300)))), Content = Control.Lazy(() => Create(softwares, report, dialog).ShowWhen(showSetupGuide)) .WithBackground(Theme.PanelBackground), Background = Theme.PanelBackground, Foreground = Theme.DefaultText, Border = Separator.MediumStroke, Style = WindowStyle.Fat, }); Menu = Menu.Item("Install Android SDKs", () => fuse.RunFuse("install", new [] { "android" }, Observer.Create <string>(output.OnNext))) + Menu.Item("Setup guide", () => showSetupGuide.OnNext(true)); }
static IControl Create(SoftwareCollectionStatus softwares, IReport report, IDialog <object> dialog) { return(Layout.Dock() .Top(CreateSublimeHeaderText().WithMacWindowStyleCompensation()) .Top(Spacer.Medium) .Top(CreatePluginLine(softwares.SublimeApp, report)) .Top(CreatePluginLine(softwares.SublimePlugin, report)) .Top(Spacer.Medium) .Top(CreateAtomHeaderText()) .Bottom( Buttons.DefaultButtonPrimary(text: "Ok", cmd: Command.Enabled(() => dialog.Close())) .WithWidth(100) .DockRight()) .Bottom(Spacer.Medium) .Fill() .WithPadding(new Thickness <Points>(20))); }