public WizardDialog(IWizardDialogController controller) { Controller = controller; Dialog = new Dialog(); Dialog.Name = "wizard_dialog"; Dialog.Resizable = false; Dialog.Padding = 0; if (string.IsNullOrEmpty(controller.Title)) { Dialog.Title = BrandingService.ApplicationName; } else { Dialog.Title = controller.Title; } // FIXME: Gtk dialogs don't support ThemedImage //if (controller.Image != null) // Dialog.Icon = controller.Image.WithSize (IconSize.Large); Dialog.ShowInTaskbar = false; Dialog.Shown += HandleDialogShown; Dialog.CloseRequested += HandleDialogCloseRequested; container = new VBox(); container.Spacing = 0; header = new MonoDevelop.Components.ExtendedHeaderBox(controller.Title, null, controller.Icon); header.BackgroundColor = Styles.Wizard.BannerBackgroundColor; header.TitleColor = Styles.Wizard.BannerForegroundColor; header.SubtitleColor = Styles.Wizard.BannerSecondaryForegroundColor; header.BorderColor = Styles.Wizard.BannerShadowColor; buttonBox = new HBox(); var buttonFrame = new FrameBox(buttonBox); buttonFrame.Padding = 20; buttonFrame.PaddingRight = 0; cancelButton = new Button(GettextCatalog.GetString("Cancel")); cancelButton.Clicked += HandleCancelButtonClicked; backButton = new Button(GettextCatalog.GetString("Back")); backButton.Clicked += HandleBackButtonClicked; nextButton = new Button(GettextCatalog.GetString("Next")); nextButton.Clicked += HandleNextButtonClicked; statusImage = new ImageView(ImageService.GetIcon("md-empty", Gtk.IconSize.Button)); if (Toolkit.CurrentEngine.Type == ToolkitType.XamMac) { var s = cancelButton.Surface.GetPreferredSize(); cancelButton.MinWidth = Math.Max(s.Width + 16, 100); s = backButton.Surface.GetPreferredSize(); backButton.MinWidth = Math.Max(s.Width + 16, 100); s = nextButton.Surface.GetPreferredSize(); nextButton.MinWidth = Math.Max(s.Width + 16, 100); buttonBox.Spacing = 0; statusImage.MarginRight = 6; #if MAC var nativeNext = nextButton.Surface.NativeWidget as AppKit.NSButton; nativeNext.KeyEquivalent = "\r"; #endif } else { cancelButton.MinWidth = 70; backButton.MinWidth = 70; nextButton.MinWidth = 70; statusImage.MarginRight = 3; } if (ImageService.IsAnimation("md-spinner-18", Gtk.IconSize.Button)) { animatedStatusIcon = ImageService.GetAnimatedIcon("md-spinner-18", Gtk.IconSize.Button); } buttonBox.PackStart(cancelButton, false, false); buttonBox.PackEnd(statusImage, false, false); buttonBox.PackEnd(nextButton, false, false); buttonBox.PackEnd(backButton, false, false); statusImage.VerticalPlacement = cancelButton.VerticalPlacement = nextButton.VerticalPlacement = backButton.VerticalPlacement = WidgetPlacement.Center; container.PackStart(header); var contentHBox = new HBox(); contentHBox.Spacing = 0; currentPageFrame = new FrameBox(); currentPageFrame.BackgroundColor = Styles.Wizard.PageBackgroundColor; contentHBox.PackStart(currentPageFrame, true, true); rightSideFrame = new FrameBox() { Visible = false }; //rightSideFrame.BorderColor = Styles.Wizard.ContentSeparatorColor; //rightSideFrame.BorderWidthLeft = 1; rightSideFrame.WidthRequest = RightSideWidgetWidth; rightSideFrame.BackgroundColor = Styles.Wizard.RightSideBackgroundColor; contentHBox.PackEnd(rightSideFrame, false, true); rightSideFrame.VerticalPlacement = rightSideFrame.HorizontalPlacement = WidgetPlacement.Fill; var contentFrame = new FrameBox(contentHBox); contentFrame.Padding = 0; contentFrame.BorderColor = Styles.Wizard.ContentShadowColor; contentFrame.BorderWidth = 0; contentFrame.BorderWidthBottom = 1; container.PackStart(contentFrame, true, true); container.PackEnd(buttonFrame); Dialog.Content = container; if (Toolkit.CurrentEngine.Type == ToolkitType.Gtk) { var nativeNext = nextButton.Surface.NativeWidget as Gtk.Button; nativeNext.CanDefault = true; nativeNext.GrabDefault(); } CurrentPage = controller.CurrentPage; controller.PropertyChanged += HandleControllerPropertyChanged; controller.Completed += HandleControllerCompleted; }
public WizardDialog (IWizardDialogController controller) { Controller = controller; Dialog = new Dialog (); Dialog.Name = "wizard_dialog"; Dialog.Resizable = false; Dialog.Padding = 0; if (string.IsNullOrEmpty (controller.Title)) Dialog.Title = BrandingService.ApplicationName; else Dialog.Title = controller.Title; // FIXME: Gtk dialogs don't support ThemedImage //if (controller.Image != null) // Dialog.Icon = controller.Image.WithSize (IconSize.Large); Dialog.ShowInTaskbar = false; Dialog.Shown += HandleDialogShown; Dialog.CloseRequested += HandleDialogCloseRequested; container = new VBox (); container.Spacing = 0; header = new MonoDevelop.Components.ExtendedHeaderBox (controller.Title, null, controller.Icon); header.BackgroundColor = Styles.Wizard.BannerBackgroundColor; header.TitleColor = Styles.Wizard.BannerForegroundColor; header.SubtitleColor = Styles.Wizard.BannerSecondaryForegroundColor; header.BorderColor = Styles.Wizard.BannerShadowColor; buttonBox = new HBox (); var buttonFrame = new FrameBox (buttonBox); buttonFrame.Padding = 20; buttonFrame.PaddingRight = 0; cancelButton = new Button (GettextCatalog.GetString ("Cancel")); cancelButton.Clicked += HandleCancelButtonClicked; backButton = new Button (GettextCatalog.GetString ("Back")); backButton.Clicked += HandleBackButtonClicked; nextButton = new Button (GettextCatalog.GetString ("Next")); nextButton.Clicked += HandleNextButtonClicked; statusImage = new ImageView (ImageService.GetIcon ("md-empty", Gtk.IconSize.Button)); if (Toolkit.CurrentEngine.Type == ToolkitType.XamMac) { var s = cancelButton.Surface.GetPreferredSize (); cancelButton.MinWidth = Math.Max (s.Width + 16, 100); s = backButton.Surface.GetPreferredSize (); backButton.MinWidth = Math.Max (s.Width + 16, 100); s = nextButton.Surface.GetPreferredSize (); nextButton.MinWidth = Math.Max (s.Width + 16, 100); buttonBox.Spacing = 0; statusImage.MarginRight = 6; #if MAC var nativeNext = nextButton.Surface.NativeWidget as AppKit.NSButton; nativeNext.KeyEquivalent = "\r"; #endif } else { cancelButton.MinWidth = 70; backButton.MinWidth = 70; nextButton.MinWidth = 70; statusImage.MarginRight = 3; } if (ImageService.IsAnimation ("md-spinner-18", Gtk.IconSize.Button)) { animatedStatusIcon = ImageService.GetAnimatedIcon ("md-spinner-18", Gtk.IconSize.Button); } buttonBox.PackStart (cancelButton, false, false); buttonBox.PackEnd (statusImage, false, false); buttonBox.PackEnd (nextButton, false, false); buttonBox.PackEnd (backButton, false, false); statusImage.VerticalPlacement = cancelButton.VerticalPlacement = nextButton.VerticalPlacement = backButton.VerticalPlacement = WidgetPlacement.Center; container.PackStart (header); var contentHBox = new HBox (); contentHBox.Spacing = 0; currentPageFrame = new FrameBox (); currentPageFrame.BackgroundColor = Styles.Wizard.PageBackgroundColor; contentHBox.PackStart (currentPageFrame, true, true); rightSideFrame = new FrameBox () { Visible = false }; //rightSideFrame.BorderColor = Styles.Wizard.ContentSeparatorColor; //rightSideFrame.BorderWidthLeft = 1; rightSideFrame.WidthRequest = RightSideWidgetWidth; rightSideFrame.BackgroundColor = Styles.Wizard.RightSideBackgroundColor; contentHBox.PackEnd (rightSideFrame, false, true); rightSideFrame.VerticalPlacement = rightSideFrame.HorizontalPlacement = WidgetPlacement.Fill; var contentFrame = new FrameBox (contentHBox); contentFrame.Padding = 0; contentFrame.BorderColor = Styles.Wizard.ContentShadowColor; contentFrame.BorderWidth = 0; contentFrame.BorderWidthBottom = 1; container.PackStart (contentFrame, true, true); container.PackEnd (buttonFrame); Dialog.Content = container; if (Toolkit.CurrentEngine.Type == ToolkitType.Gtk) { var nativeNext = nextButton.Surface.NativeWidget as Gtk.Button; nativeNext.CanDefault = true; nativeNext.GrabDefault (); } CurrentPage = controller.CurrentPage; controller.PropertyChanged += HandleControllerPropertyChanged; controller.Completed += HandleControllerCompleted; }