void Build() { BorderWidth = 0; WidthRequest = GtkWorkarounds.ConvertToPixelScale(901); HeightRequest = GtkWorkarounds.ConvertToPixelScale(632); Name = "wizard_dialog"; Title = GettextCatalog.GetString("New Project"); WindowPosition = WindowPosition.CenterOnParent; TransientFor = IdeApp.Workbench.RootWindow; projectConfigurationWidget = new GtkProjectConfigurationWidget(); projectConfigurationWidget.Name = "projectConfigurationWidget"; // Top banner of dialog. var topLabelEventBox = new EventBox(); topLabelEventBox.Name = "topLabelEventBox"; topLabelEventBox.HeightRequest = GtkWorkarounds.ConvertToPixelScale(52); topLabelEventBox.ModifyBg(StateType.Normal, bannerBackgroundColor); topLabelEventBox.ModifyFg(StateType.Normal, whiteColor); topLabelEventBox.BorderWidth = 0; var topBannerTopEdgeLineEventBox = new EventBox(); topBannerTopEdgeLineEventBox.Name = "topBannerTopEdgeLineEventBox"; topBannerTopEdgeLineEventBox.HeightRequest = 1; topBannerTopEdgeLineEventBox.ModifyBg(StateType.Normal, bannerLineColor); topBannerTopEdgeLineEventBox.BorderWidth = 0; var topBannerBottomEdgeLineEventBox = new EventBox(); topBannerBottomEdgeLineEventBox.Name = "topBannerBottomEdgeLineEventBox"; topBannerBottomEdgeLineEventBox.HeightRequest = 1; topBannerBottomEdgeLineEventBox.ModifyBg(StateType.Normal, bannerLineColor); topBannerBottomEdgeLineEventBox.BorderWidth = 0; topBannerLabel = new Label(); topBannerLabel.Name = "topBannerLabel"; Pango.FontDescription font = topBannerLabel.Style.FontDescription.Copy(); // UNDONE: VV: Use FontService? font.Size = (int)(font.Size * 1.8); topBannerLabel.ModifyFont(font); topBannerLabel.ModifyFg(StateType.Normal, whiteColor); var topLabelHBox = new HBox(); topLabelHBox.Name = "topLabelHBox"; topLabelHBox.PackStart(topBannerLabel, false, false, 20); topLabelEventBox.Add(topLabelHBox); VBox.PackStart(topBannerTopEdgeLineEventBox, false, false, 0); VBox.PackStart(topLabelEventBox, false, false, 0); VBox.PackStart(topBannerBottomEdgeLineEventBox, false, false, 0); // Main templates section. centreVBox = new VBox(); centreVBox.Name = "centreVBox"; VBox.PackStart(centreVBox, true, true, 0); templatesHBox = new HBox(); templatesHBox.Name = "templatesHBox"; centreVBox.PackEnd(templatesHBox, true, true, 0); // Template categories. var templateCategoriesBgBox = new EventBox(); templateCategoriesBgBox.Name = "templateCategoriesVBox"; templateCategoriesBgBox.BorderWidth = 0; templateCategoriesBgBox.ModifyBg(StateType.Normal, categoriesBackgroundColor); templateCategoriesBgBox.WidthRequest = GtkWorkarounds.ConvertToPixelScale(220); var templateCategoriesScrolledWindow = new ScrolledWindow(); templateCategoriesScrolledWindow.Name = "templateCategoriesScrolledWindow"; templateCategoriesScrolledWindow.HscrollbarPolicy = PolicyType.Never; // Template categories tree view. templateCategoriesTreeView = new TreeView(); templateCategoriesTreeView.Name = "templateCategoriesTreeView"; templateCategoriesTreeView.BorderWidth = 0; templateCategoriesTreeView.HeadersVisible = false; templateCategoriesTreeView.Model = templateCategoriesListStore; templateCategoriesTreeView.AppendColumn(CreateTemplateCategoriesTreeViewColumn()); templateCategoriesScrolledWindow.Add(templateCategoriesTreeView); templateCategoriesBgBox.Add(templateCategoriesScrolledWindow); templatesHBox.PackStart(templateCategoriesBgBox, false, false, 0); // Templates. var templatesBgBox = new EventBox(); templatesBgBox.ModifyBg(StateType.Normal, templateListBackgroundColor); templatesBgBox.Name = "templatesVBox"; templatesBgBox.WidthRequest = GtkWorkarounds.ConvertToPixelScale(400); templatesHBox.PackStart(templatesBgBox, false, false, 0); var templatesScrolledWindow = new ScrolledWindow(); templatesScrolledWindow.Name = "templatesScrolledWindow"; templatesScrolledWindow.HscrollbarPolicy = PolicyType.Never; // Templates tree view. templatesTreeView = new TreeView(); templatesTreeView.Name = "templatesTreeView"; templatesTreeView.HeadersVisible = false; templatesTreeView.Model = templatesListStore; templatesTreeView.AppendColumn(CreateTemplateListTreeViewColumn()); templatesScrolledWindow.Add(templatesTreeView); templatesBgBox.Add(templatesScrolledWindow); // Template var templateEventBox = new EventBox(); templateEventBox.Name = "templateEventBox"; templateEventBox.ModifyBg(StateType.Normal, templateBackgroundColor); templatesHBox.PackStart(templateEventBox, true, true, 0); templateVBox = new VBox(); templateVBox.Visible = false; templateVBox.BorderWidth = 20; templateVBox.Spacing = 10; templateEventBox.Add(templateVBox); // Template large image. templateImage = new ImageView(); templateImage.Name = "templateImage"; templateImage.HeightRequest = GtkWorkarounds.ConvertToPixelScale(140); templateImage.WidthRequest = GtkWorkarounds.ConvertToPixelScale(240); templateVBox.PackStart(templateImage, false, false, 10); // Template description. templateNameLabel = new Label(); templateNameLabel.Name = "templateNameLabel"; templateNameLabel.WidthRequest = GtkWorkarounds.ConvertToPixelScale(240); templateNameLabel.Wrap = true; templateNameLabel.Xalign = 0; templateNameLabel.Markup = MarkupTemplateName("TemplateName"); templateVBox.PackStart(templateNameLabel, false, false, 0); templateDescriptionLabel = new Label(); templateDescriptionLabel.Name = "templateDescriptionLabel"; templateDescriptionLabel.WidthRequest = GtkWorkarounds.ConvertToPixelScale(240); templateDescriptionLabel.Wrap = true; templateDescriptionLabel.Xalign = 0; templateVBox.PackStart(templateDescriptionLabel, false, false, 0); templateVBox.PackStart(new Label(), true, true, 0); // Template - button separator. var templateSectionSeparatorEventBox = new EventBox(); templateSectionSeparatorEventBox.Name = "templateSectionSeparatorEventBox"; templateSectionSeparatorEventBox.HeightRequest = 1; templateSectionSeparatorEventBox.ModifyBg(StateType.Normal, templateSectionSeparatorColor); VBox.PackStart(templateSectionSeparatorEventBox, false, false, 0); // Buttons at bottom of dialog. var bottomHBox = new HBox(); bottomHBox.Name = "bottomHBox"; VBox.PackStart(bottomHBox, false, false, 0); // Cancel button - bottom left. var cancelButtonBox = new HButtonBox(); cancelButtonBox.Name = "cancelButtonBox"; cancelButtonBox.BorderWidth = 16; cancelButton = new Button(); cancelButton.Name = "cancelButton"; cancelButton.Label = "gtk-cancel"; cancelButton.UseStock = true; cancelButtonBox.PackStart(cancelButton, false, false, 0); bottomHBox.PackStart(cancelButtonBox, false, false, 0); // Previous button - bottom right. var previousNextButtonBox = new HButtonBox(); previousNextButtonBox.Name = "previousNextButtonBox"; previousNextButtonBox.BorderWidth = 16; previousNextButtonBox.Spacing = 9; bottomHBox.PackStart(previousNextButtonBox); previousNextButtonBox.Layout = ButtonBoxStyle.End; previousButton = new Button(); previousButton.Name = "previousButton"; previousButton.Label = GettextCatalog.GetString("Previous"); previousButton.Sensitive = false; previousNextButtonBox.PackEnd(previousButton); // Next button - bottom right. nextButton = new Button(); nextButton.Name = "nextButton"; nextButton.Label = GettextCatalog.GetString("Next"); previousNextButtonBox.PackEnd(nextButton); // Remove default button action area. VBox.Remove(ActionArea); if (Child != null) { Child.ShowAll(); } Show(); templatesTreeView.HasFocus = true; Resizable = false; }