public TaskView(IQueueableTask task) { if (task == null) throw new ArgumentNullException(nameof(task)); Task = task; task.StatusChanged += Task_StatusChanged; _nameLabel = new Label { Font = Font.SystemFont.WithWeight(FontWeight.Bold).WithSize(15) }; _descriptionlabel = new Label { Font = Font.SystemFont.WithStyle(FontStyle.Italic) }; _spinner = new Spinner {Visible = false}; var hBox = new HBox(); hBox.PackStart(_spinner); hBox.PackStart(_descriptionlabel); PackStart(_nameLabel); PackStart(hBox); HeightRequest = 64; MinHeight = 64; UpdateLabels(); }
public Spinners () { var button = new Spinner (); button.Animate = true; PackStart (button); PackStart (new Spinner ()); }
public Spinners () { var button = new Spinner (); button.Animate = true; PackStart (button); PackStart (new Spinner ()); PackStart (new Spinner () { MinHeight = 50 }); PackStart (new Label ("Click to toggle animation:")); var clickable = new Spinner () { MinHeight = 30, Animate = true }; clickable.ButtonPressed += (sender, e) => clickable.Animate = !clickable.Animate; PackStart (clickable); }
public ProgressBarSample() { indeterminateProgressBar = new ProgressBar (); PackStart (indeterminateProgressBar, BoxMode.FillAndExpand); indeterminateProgressBar.Indeterminate = true; timer.Elapsed += Increase; determinateProgressBar = new ProgressBar (); determinateProgressBar.Fraction = 0.0; PackStart(determinateProgressBar, BoxMode.FillAndExpand); timer.Start (); var spinner = new Spinner (); spinner.Animate = true; PackStart (spinner); }
public ProgressBarSample () { PackStart (new ProgressBar { Fraction = 0 }); PackStart (new ProgressBar { Fraction = 0.5d, MinHeight = 20 }); PackStart (new ProgressBar { Fraction = 1 }); indeterminateProgressBar = new ProgressBar (); PackStart (indeterminateProgressBar, true); indeterminateProgressBar.Indeterminate = true; timer.Elapsed += Increase; determinateProgressBar = new ProgressBar (); determinateProgressBar.Fraction = 0.0; PackStart(determinateProgressBar, true); timer.Start (); var spinner = new Spinner (); spinner.Animate = true; PackStart (spinner); }
void Build () { Title = Catalog.GetString ("Add Packages"); Width = 820; Height = 520; Padding = new WidgetSpacing (); // Top part of dialog: // Package sources and search. var topHBox = new HBox (); topHBox.Margin = new WidgetSpacing (8, 5, 6, 5); packageSourceComboBox = new ComboBox (); packageSourceComboBox.MinWidth = 200; topHBox.PackStart (packageSourceComboBox); packageSearchEntry = new SearchTextEntry (); packageSearchEntry.WidthRequest = 187; topHBox.PackEnd (packageSearchEntry); this.HeaderContent = topHBox; // Middle of dialog: // Packages and package information. var mainVBox = new VBox (); Content = mainVBox; var middleHBox = new HBox (); middleHBox.Spacing = 0; var middleFrame = new FrameBox (); middleFrame.Content = middleHBox; middleFrame.BorderWidth = new WidgetSpacing (0, 0, 0, 1); middleFrame.BorderColor = lineBorderColor; mainVBox.PackStart (middleFrame, true, true); // Error information. var packagesListVBox = new VBox (); packagesListVBox.Spacing = 0; errorMessageHBox = new HBox (); errorMessageHBox.Margin = new WidgetSpacing (); errorMessageHBox.BackgroundColor = Colors.Orange; errorMessageHBox.Visible = false; var errorImage = new ImageView (); errorImage.Margin = new WidgetSpacing (10, 0, 0, 0); errorImage.Image = ImageService.GetIcon (Stock.Warning, Gtk.IconSize.Menu); errorImage.HorizontalPlacement = WidgetPlacement.End; errorMessageHBox.PackStart (errorImage); errorMessageLabel = new Label (); errorMessageLabel.TextColor = Colors.White; errorMessageLabel.Margin = new WidgetSpacing (5, 5, 5, 5); errorMessageLabel.Wrap = WrapMode.Word; errorMessageHBox.PackStart (errorMessageLabel, true); packagesListVBox.PackStart (errorMessageHBox); // Packages list. middleHBox.PackStart (packagesListVBox, true, true); packagesListView = new ListView (); packagesListView.BorderVisible = false; packagesListView.HeadersVisible = false; packagesListVBox.PackStart (packagesListView, true, true); // Loading spinner. var loadingSpinnerHBox = new HBox (); loadingSpinnerHBox.HorizontalPlacement = WidgetPlacement.Center; var loadingSpinner = new Spinner (); loadingSpinner.Animate = true; loadingSpinner.MinWidth = 20; loadingSpinnerHBox.PackStart (loadingSpinner); loadingSpinnerLabel = new Label (); loadingSpinnerLabel.Text = Catalog.GetString ("Loading package list..."); loadingSpinnerHBox.PackEnd (loadingSpinnerLabel); loadingSpinnerFrame = new FrameBox (); loadingSpinnerFrame.Visible = false; loadingSpinnerFrame.BackgroundColor = Colors.White; loadingSpinnerFrame.Content = loadingSpinnerHBox; loadingSpinnerFrame.BorderWidth = new WidgetSpacing (); packagesListVBox.PackStart (loadingSpinnerFrame, true, true); // No packages found label. var noPackagesFoundHBox = new HBox (); noPackagesFoundHBox.HorizontalPlacement = WidgetPlacement.Center; var noPackagesFoundLabel = new Label (); noPackagesFoundLabel.Text = Catalog.GetString ("No matching packages found."); noPackagesFoundHBox.PackEnd (noPackagesFoundLabel); noPackagesFoundFrame = new FrameBox (); noPackagesFoundFrame.Visible = false; noPackagesFoundFrame.BackgroundColor = Colors.White; noPackagesFoundFrame.Content = noPackagesFoundHBox; noPackagesFoundFrame.BorderWidth = new WidgetSpacing (); packagesListVBox.PackStart (noPackagesFoundFrame, true, true); // Package information packageInfoVBox = new VBox (); var packageInfoFrame = new FrameBox (); packageInfoFrame.BackgroundColor = packageInfoBackgroundColor; packageInfoFrame.BorderWidth = new WidgetSpacing (); packageInfoFrame.Content = packageInfoVBox; packageInfoVBox.Margin = new WidgetSpacing (15, 12, 15, 12); var packageInfoContainerVBox = new VBox (); packageInfoContainerVBox.WidthRequest = 240; packageInfoContainerVBox.PackStart (packageInfoFrame, true, true); var packageInfoScrollView = new ScrollView (); packageInfoScrollView.BorderVisible = false; packageInfoScrollView.HorizontalScrollPolicy = ScrollPolicy.Never; packageInfoScrollView.Content = packageInfoContainerVBox; packageInfoScrollView.BackgroundColor = packageInfoBackgroundColor; var packageInfoScrollViewFrame = new FrameBox (); packageInfoScrollViewFrame.BackgroundColor = packageInfoBackgroundColor; packageInfoScrollViewFrame.BorderWidth = new WidgetSpacing (1, 0, 0, 0); packageInfoScrollViewFrame.BorderColor = lineBorderColor; packageInfoScrollViewFrame.Content = packageInfoScrollView; middleHBox.PackEnd (packageInfoScrollViewFrame); // Package name and version. var packageNameHBox = new HBox (); packageInfoVBox.PackStart (packageNameHBox); packageNameLabel = new Label (); packageNameLabel.Ellipsize = EllipsizeMode.End; Font packageInfoSmallFont = packageNameLabel.Font.WithScaledSize (0.8); packageNameHBox.PackStart (packageNameLabel, true); packageVersionLabel = new Label (); packageVersionLabel.TextAlignment = Alignment.End; packageNameHBox.PackEnd (packageVersionLabel); // Package description. packageDescription = new Label (); packageDescription.Wrap = WrapMode.Word; packageDescription.Font = packageNameLabel.Font.WithScaledSize (0.9); packageDescription.BackgroundColor = packageInfoBackgroundColor; packageInfoVBox.PackStart (packageDescription); // Package id. var packageIdHBox = new HBox (); packageIdHBox.MarginTop = 7; packageInfoVBox.PackStart (packageIdHBox); var packageIdLabel = new Label (); packageIdLabel.Font = packageInfoSmallFont; packageIdLabel.Markup = Catalog.GetString ("<b>Id</b>"); packageIdHBox.PackStart (packageIdLabel); packageId = new Label (); packageId.Ellipsize = EllipsizeMode.End; packageId.TextAlignment = Alignment.End; packageId.Font = packageInfoSmallFont; packageIdLink = new LinkLabel (); packageIdLink.Ellipsize = EllipsizeMode.End; packageIdLink.TextAlignment = Alignment.End; packageIdLink.Font = packageInfoSmallFont; packageIdHBox.PackEnd (packageIdLink, true); packageIdHBox.PackEnd (packageId, true); // Package author var packageAuthorHBox = new HBox (); packageInfoVBox.PackStart (packageAuthorHBox); var packageAuthorLabel = new Label (); packageAuthorLabel.Markup = Catalog.GetString ("<b>Author</b>"); packageAuthorLabel.Font = packageInfoSmallFont; packageAuthorHBox.PackStart (packageAuthorLabel); packageAuthor = new Label (); packageAuthor.TextAlignment = Alignment.End; packageAuthor.Ellipsize = EllipsizeMode.End; packageAuthor.Font = packageInfoSmallFont; packageAuthorHBox.PackEnd (packageAuthor, true); // Package published var packagePublishedHBox = new HBox (); packageInfoVBox.PackStart (packagePublishedHBox); var packagePublishedLabel = new Label (); packagePublishedLabel.Markup = Catalog.GetString ("<b>Published</b>"); packagePublishedLabel.Font = packageInfoSmallFont; packagePublishedHBox.PackStart (packagePublishedLabel); packagePublishedDate = new Label (); packagePublishedDate.Font = packageInfoSmallFont; packagePublishedHBox.PackEnd (packagePublishedDate); // Package downloads var packageDownloadsHBox = new HBox (); packageInfoVBox.PackStart (packageDownloadsHBox); var packageDownloadsLabel = new Label (); packageDownloadsLabel.Markup = Catalog.GetString ("<b>Downloads</b>"); packageDownloadsLabel.Font = packageInfoSmallFont; packageDownloadsHBox.PackStart (packageDownloadsLabel); packageDownloads = new Label (); packageDownloads.Font = packageInfoSmallFont; packageDownloadsHBox.PackEnd (packageDownloads); // Package license. var packageLicenseHBox = new HBox (); packageInfoVBox.PackStart (packageLicenseHBox); var packageLicenseLabel = new Label (); packageLicenseLabel.Markup = Catalog.GetString ("<b>License</b>"); packageLicenseLabel.Font = packageInfoSmallFont; packageLicenseHBox.PackStart (packageLicenseLabel); packageLicenseLink = new LinkLabel (); packageLicenseLink.Text = Catalog.GetString ("View License"); packageLicenseLink.Font = packageInfoSmallFont; packageLicenseHBox.PackEnd (packageLicenseLink); // Package project page. var packageProjectPageHBox = new HBox (); packageInfoVBox.PackStart (packageProjectPageHBox); var packageProjectPageLabel = new Label (); packageProjectPageLabel.Markup = Catalog.GetString ("<b>Project Page</b>"); packageProjectPageLabel.Font = packageInfoSmallFont; packageProjectPageHBox.PackStart (packageProjectPageLabel); packageProjectPageLink = new LinkLabel (); packageProjectPageLink.Text = Catalog.GetString ("Visit Page"); packageProjectPageLink.Font = packageInfoSmallFont; packageProjectPageHBox.PackEnd (packageProjectPageLink); // Package dependencies var packageDependenciesHBox = new HBox (); packageInfoVBox.PackStart (packageDependenciesHBox); var packageDependenciesLabel = new Label (); packageDependenciesLabel.Markup = Catalog.GetString ("<b>Dependencies</b>"); packageDependenciesLabel.Font = packageInfoSmallFont; packageDependenciesHBox.PackStart (packageDependenciesLabel); packageDependenciesNoneLabel = new Label (); packageDependenciesNoneLabel.Text = Catalog.GetString ("None"); packageDependenciesNoneLabel.Font = packageInfoSmallFont; packageDependenciesHBox.PackEnd (packageDependenciesNoneLabel); // Package dependencies list. packageDependenciesListHBox = new HBox (); packageDependenciesListHBox.Visible = false; packageInfoVBox.PackStart (packageDependenciesListHBox); packageDependenciesList = new Label (); packageDependenciesList.Wrap = WrapMode.WordAndCharacter; packageDependenciesList.Margin = new WidgetSpacing (5); packageDependenciesList.Font = packageInfoSmallFont; packageDependenciesListHBox.PackStart (packageDependenciesList, true); // Bottom part of dialog: // Show pre-release packages and Close/Add to Project buttons. var bottomHBox = new HBox (); bottomHBox.Margin = new WidgetSpacing (8, 5, 14, 10); bottomHBox.Spacing = 5; mainVBox.PackStart (bottomHBox); showPrereleaseCheckBox = new CheckBox (); showPrereleaseCheckBox.Label = Catalog.GetString ("Show pre-release packages"); bottomHBox.PackStart (showPrereleaseCheckBox); addPackagesButton = new Button (); addPackagesButton.MinWidth = 120; addPackagesButton.MinHeight = 25; addPackagesButton.Label = Catalog.GetString ("Add Package"); bottomHBox.PackEnd (addPackagesButton); var closeButton = new Button (); closeButton.MinWidth = 120; closeButton.MinHeight = 25; closeButton.Label = Catalog.GetString ("Close"); closeButton.Clicked += (sender, e) => Close (); bottomHBox.PackEnd (closeButton); packageSearchEntry.SetFocus (); packageInfoVBox.Visible = false; }
public async void RefreshTiles() { // Cancel previous loads if (_tokenSource != null) { _tokenSource.Cancel(); while (_tokenSource != null) await Task.Delay(1); } Spinner spinner = null; Application.Invoke(() => { // Clear controls _buttons.Clear(); ClearTiles(); Content = spinner = new Spinner { Animate = true, MinHeight = 50, MinWidth = 50 }; }); while (spinner == null) await Task.Delay(5); _buttonsPerRow = CalculateButtonsPerRow((float) Size.Width); var i = 0; _tokenSource = new CancellationTokenSource(); try { var tiles = await LoadTiles(_tokenSource.Token); Application.Invoke(() => { foreach (var tile in tiles) { if (tile == null) continue; if (i >= _buttonsPerRow) { PushNewRow(); i = 0; } try { var button = new Button(tile.Image?.ToXwtImage()?.ScaleToSize(100)) { Label = tile.Image == null ? tile.Text : null, TooltipText = tile.Text, WidthRequest = 100, HeightRequest = 100, MinWidth = 0, Style = ButtonStyle.Borderless, BackgroundColor = tile.BackgroundColor, ImagePosition = ContentPosition.Center }; button.Clicked += (sender, args) => tile.ClickAction(); _buttons.Add(button); _rows.Peek().PackStart(button); i++; } catch (Exception e) { _log.WriteLine("Failed to convert Tile object to UI"); _log.WriteException(e); } } Content = _box; }); } catch (TaskCanceledException) { } catch (OperationCanceledException) { } finally { _tokenSource?.Dispose(); _tokenSource = null; } }
public XwtSourcePageWidget (XwtSourceWizardPage page) { Page = page; cGitHub = new Octokit.GitHubClient (new Octokit.ProductHeaderValue ("xwt_addin")).Repository; var optBuiltIn = new RadioButton(GettextCatalog.GetString ("Local Package / GAC")) { TooltipText = GettextCatalog.GetString ( "Xwt must be installed to the GAC (Global Assembly Cache),\n" + "otherwise you will have to add a HintPath property manually.") }; var optGithub = new RadioButton(GettextCatalog.GetString ("GitHub:")) { TooltipText = GettextCatalog.GetString ( "A separate solution folder named 'Xwt' will be added to the solution.\n" + "If the solution already contains the Xwt project,\nit will be referenced instead " + "and the git checkout will be skipped.") }; var linkGithub = new Label { Markup = "(<a href='https://github.com/mono/xwt'>Official Repository</a>)", TooltipText = "https://github.com/mono/xwt" }; var optNuGet = new RadioButton(GettextCatalog.GetString ("NuGet package")) { TooltipText = GettextCatalog.GetString ("All registered NuGet repositories will be searched.") }; var sourceGroup = optBuiltIn.Group = optGithub.Group = optNuGet.Group; sourceGroup.ActiveRadioButtonChanged += (sender, e) => { if (sourceGroup.ActiveRadioButton == optGithub) Page.XwtReferenceSource = XwtSource.Github; else if (sourceGroup.ActiveRadioButton == optNuGet) Page.XwtReferenceSource = XwtSource.NuGet; else Page.XwtReferenceSource = XwtSource.Local; }; optGithub.Active = true; CheckBox chkGitSubmodule = null; if (page.Wizard.Parameters["CreateSolution"] == true.ToString ()) { chkGitSubmodule = new CheckBox(GettextCatalog.GetString ("Register Git Submodule\n(will be committed automatically)")) { TooltipText = GettextCatalog.GetString ( "Only if you enable git version control for the new project in the last creation step.\n" + "The Xwt submodule will be registered and initialized during the creation process.") }; chkGitSubmodule.MarginLeft = 30; chkGitSubmodule.Toggled += (sender, e) => Page.XwtGitSubmodule = chkGitSubmodule.Active; sourceGroup.ActiveRadioButtonChanged += (sender, e) => { if (sourceGroup.ActiveRadioButton == optGithub) chkGitSubmodule.Sensitive = true; else chkGitSubmodule.Sensitive = false; }; } var tbl = new Table (); BackgroundColor = Styles.NewProjectDialog.ProjectConfigurationLeftHandBackgroundColor; // use inner table for selection to make it easier to add more options var tblSource = new Table (); var boxGithub = new HBox (); boxGithub.PackStart (optGithub); boxGithub.PackStart (linkGithub); tblSource.Add (boxGithub, 0, 0); var tblGithubRepo = new Table (); tblGithubRepo.MarginLeft = 30; tblGithubRepo.Add (new Label (GettextCatalog.GetString ("Repository:")), 0, 0); cmbGithubRepo = new ComboBox (); cmbGithubRepo.Items.Add ("mono/xwt"); cmbGithubRepo.SelectedIndex = 0; cmbGithubRepo.SelectionChanged += (sender, e) => UpdateBranches (cmbGithubRepo.SelectedText); tblGithubRepo.Add (cmbGithubRepo, 1, 0); spinnerRepo = new Spinner { Visible = false }; tblGithubRepo.Add (spinnerRepo, 2, 0); tblGithubRepo.Add (new Label (GettextCatalog.GetString ("Branch:")), 0, 1); cmbGithubBranch = new ComboBox (); cmbGithubBranch.Items.Add ("master"); cmbGithubBranch.SelectedIndex = 0; cmbGithubBranch.SelectionChanged += (sender, e) => Page.XwtGithubBranch = cmbGithubBranch.SelectedText; tblGithubRepo.Add (cmbGithubBranch, 1, 1); spinnerBranches = new Spinner { Visible = false }; tblGithubRepo.Add (spinnerBranches, 2, 1); tblSource.Add (tblGithubRepo, 0, 1); if (chkGitSubmodule != null) tblSource.Add (chkGitSubmodule, 0, 2); tblSource.Add (optNuGet, 0, 3); tblSource.Add (optBuiltIn, 0, 4); tbl.Add (new Label (GettextCatalog.GetString ("Xwt reference source:")), 0, 0, vpos: WidgetPlacement.Start, hpos: WidgetPlacement.End); tbl.Add (tblSource, 1, 0); var rightFrame = new FrameBox (); rightFrame.BackgroundColor = Styles.NewProjectDialog.ProjectConfigurationRightHandBackgroundColor; ; rightFrame.WidthRequest = 280; Spacing = 0; PackStart (tbl, true, WidgetPlacement.Center, marginLeft: 30, marginRight: 30); PackStart (rightFrame, false, false); UpdateForks (); UpdateBranches ("mono/xwt"); }