Ejemplo n.º 1
0
        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;
        }
Ejemplo n.º 2
0
		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;
		}