diff --git a/winutil.ps1 b/winutil.ps1 index 483d5e12..54d6179e 100644 --- a/winutil.ps1 +++ b/winutil.ps1 @@ -8,7 +8,7 @@ Author : Chris Titus @christitustech Runspace Author: @DeveloperDurp GitHub : https://github.com/ChrisTitusTech - Version : 24.07.13 + Version : 24.07.14 #> param ( [switch]$Debug, @@ -45,7 +45,7 @@ Add-Type -AssemblyName System.Windows.Forms # Variable to sync between runspaces $sync = [Hashtable]::Synchronized(@{}) $sync.PSScriptRoot = $PSScriptRoot -$sync.version = "24.07.13" +$sync.version = "24.07.14" $sync.configs = @{} $sync.ProcessRunning = $false @@ -2282,6 +2282,51 @@ function Invoke-WinUtilSnapWindow { Write-Warning $psitem.Exception.StackTrace } } +Function Invoke-WinUtilSponsors { + <# + .SYNOPSIS + Lists Sponsors from ChrisTitusTech + .DESCRIPTION + Lists Sponsors from ChrisTitusTech + .EXAMPLE + Invoke-WinUtilSponsors + .NOTES + This function is used to list sponsors from ChrisTitusTech + #> + try { + # Define the URL and headers + $url = "https://github.com/sponsors/ChrisTitusTech" + $headers = @{ + "User-Agent" = "Chrome/58.0.3029.110" + } + + # Fetch the webpage content + try { + $html = Invoke-RestMethod -Uri $url -Headers $headers + } catch { + Write-Output $_.Exception.Message + exit + } + + # Use regex to extract the content between "Current sponsors" and "Past sponsors" + $currentSponsorsPattern = '(?s)(?<=Current sponsors).*?(?=Past sponsors)' + $currentSponsorsHtml = [regex]::Match($html, $currentSponsorsPattern).Value + + # Use regex to extract the sponsor usernames from the alt attributes in the "Current Sponsors" section + $sponsorPattern = '(?<=alt="@)[^"]+' + $sponsors = [regex]::Matches($currentSponsorsHtml, $sponsorPattern) | ForEach-Object { $_.Value } + + # Exclude "ChrisTitusTech" from the sponsors + $sponsors = $sponsors | Where-Object { $_ -ne "ChrisTitusTech" } + + # Return the sponsors + return $sponsors + } + catch { + Write-Error "An error occurred while fetching or processing the sponsors: $_" + return $null + } +} Function Invoke-WinUtilStickyKeys { <# .SYNOPSIS @@ -2828,6 +2873,9 @@ function Show-CustomDialog { .PARAMETER IconSize The Size to use for Icon inside the custom dialog window. + .PARAMETER EnableScroll + A flag indicating whether to enable scrolling if the content exceeds the window size. + .EXAMPLE Show-CustomDialog -Message "This is a custom dialog with a message and an image above." -Width 300 -Height 200 @@ -2838,7 +2886,8 @@ function Show-CustomDialog { [int]$Height = 200, [int]$FontSize = 10, [int]$HeaderFontSize = 14, - [int]$IconSize = 25 + [int]$IconSize = 25, + [bool]$EnableScroll = $false ) Add-Type -AssemblyName PresentationFramework @@ -3050,11 +3099,18 @@ $cttLogoPath = @" $messageTextBlock.Inlines.Add((New-Object Windows.Documents.Run($Message))) } - - # Add the TextBlock to the Grid - $grid.Children.Add($messageTextBlock) - [Windows.Controls.Grid]::SetRow($messageTextBlock, 1) # Set the row to the second row (0-based index) - + # Create a ScrollViewer if EnableScroll is true + if ($EnableScroll) { + $scrollViewer = New-Object System.Windows.Controls.ScrollViewer + $scrollViewer.VerticalScrollBarVisibility = 'Auto' + $scrollViewer.HorizontalScrollBarVisibility = 'Disabled' + $scrollViewer.Content = $messageTextBlock + $grid.Children.Add($scrollViewer) + [Windows.Controls.Grid]::SetRow($scrollViewer, 1) # Set the row to the second row (0-based index) + } else { + $grid.Children.Add($messageTextBlock) + [Windows.Controls.Grid]::SetRow($messageTextBlock, 1) # Set the row to the second row (0-based index) + } # Add OK button $okButton = New-Object Windows.Controls.Button @@ -12820,6 +12876,7 @@ $inputXML = ' + @@ -15296,5 +15353,32 @@ Version : Current sponsors for ChrisTitusTech: +"@ + $authorInfo += "`n" + try { + # Call the function to get the sponsors + $sponsors = Invoke-WinUtilSponsors + + # Append the sponsors to the authorInfo + $sponsors | ForEach-Object { $authorInfo += "$_`n" } + } + catch { + $authorInfo += "An error occurred while fetching or processing the sponsors: $_`n" + } + + $FontSize = $sync.configs.themes.$ctttheme.CustomDialogFontSize + $HeaderFontSize = $sync.configs.themes.$ctttheme.CustomDialogFontSizeHeader + $IconSize = $sync.configs.themes.$ctttheme.CustomDialogIconSize + $Width = $sync.configs.themes.$ctttheme.CustomDialogWidth + $Height = $sync.configs.themes.$ctttheme.CustomDialogHeight + Show-CustomDialog -Message $authorInfo -Width $Width -Height $Height -FontSize $FontSize -HeaderFontSize $HeaderFontSize -IconSize $IconSize -EnableScroll $true +}) $sync["Form"].ShowDialog() | out-null Stop-Transcript