function Invoke-WPFButton { <# .SYNOPSIS Invokes the function associated with the clicked button .PARAMETER Button The name of the button that was clicked #> Param ([string]$Button) # Use this to get the name of the button #[System.Windows.MessageBox]::Show("$Button","Chris Titus Tech's Windows Utility","OK","Info") if (-not $sync.ProcessRunning) { Set-WinUtilProgressBar -label "" -percent 0 Set-WinUtilTweaksProgressIndicator -Visible $false } # Check if button is defined in feature config with function or InvokeScript if ($sync.configs.feature.$Button) { $buttonConfig = $sync.configs.feature.$Button # If button has a function defined, call it if ($buttonConfig.function) { $functionName = $buttonConfig.function if (Get-Command $functionName -ErrorAction SilentlyContinue) { & $functionName return } } # If button has InvokeScript defined, execute the scripts if ($buttonConfig.InvokeScript -and $buttonConfig.InvokeScript.Count -gt 0) { foreach ($script in $buttonConfig.InvokeScript) { if (-not [string]::IsNullOrWhiteSpace($script)) { Invoke-Command -ScriptBlock ([scriptblock]::Create($script)) -ErrorAction Stop } } return } } # Fallback to hard-coded switch for buttons not in feature.json Switch -Wildcard ($Button) { "WPFTab?BT" {Invoke-WPFTab $Button} "WPFInstall" {Invoke-WPFInstall} "WPFUninstall" {Invoke-WPFUnInstall} "WPFInstallUpgrade" {Invoke-WPFInstallUpgrade} "WPFCollapseAllCategories" {Invoke-WPFToggleAllCategories -Action "Collapse"} "WPFExpandAllCategories" {Invoke-WPFToggleAllCategories -Action "Expand"} "WPFStandard" {Invoke-WPFPresets "Standard" -checkboxfilterpattern "WPFTweak*"} "WPFMinimal" {Invoke-WPFPresets "Minimal" -checkboxfilterpattern "WPFTweak*"} "WPFAdvanced" {Invoke-WPFPresets "Advanced" -checkboxfilterpattern "WPFTweak*"} "WPFClearTweaksSelection" {Invoke-WPFPresets -imported $true -checkboxfilterpattern "WPFTweak*"} "WPFClearInstallSelection" {Invoke-WPFPresets -imported $true -checkboxfilterpattern "WPFInstall*"} "WPFtweaksbutton" {Invoke-WPFtweaksbutton} "WPFOOSUbutton" {Invoke-WPFOOSU} "WPFAddUltPerf" {Invoke-WPFUltimatePerformance -Enable} "WPFRemoveUltPerf" {Invoke-WPFUltimatePerformance} "WPFundoall" {Invoke-WPFundoall} "WPFUpdatesdefault" {Invoke-WPFUpdatesdefault} "WPFUpdatesdisable" {Invoke-WPFUpdatesdisable} "WPFUpdatessecurity" {Invoke-WPFUpdatessecurity} "WPFGetInstalled" {Invoke-WPFGetInstalled -CheckBox "winget"} "WPFGetInstalledTweaks" {Invoke-WPFGetInstalled -CheckBox "tweaks"} "WPFAppxRemoval" {Invoke-WPFTab "WPFTab6BT"} "WPFBackToTweaks" {Invoke-WPFTab "WPFTab2BT"} "WPFRemoveSelectedAppx" {Invoke-WPFAppxRemoval} "WPFDefaultAppxSelection" {Invoke-WPFPresets "AppxDefault" -checkboxfilterpattern "WPFAppx*"} "WPFSelectAllAppx" { $sync.configs.appxHashtable.Keys | ForEach-Object {$sync.$_.IsChecked = $true} } "WPFClearAppxSelection" { $sync.configs.appxHashtable.Keys | ForEach-Object {$sync.$_.IsChecked = $false} } "WPFGetInstalledAppx" { $installedAppxPackages = Get-AppxPackage -AllUsers | Select-Object -ExpandProperty Name foreach ($appx in $sync.configs.appxHashtable.GetEnumerator()) { if ($appx.Value.PackageId -in $installedAppxPackages) { $sync.$($appx.Key).IsChecked = $true } } } "WPFCloseButton" {$sync.Form.Close(); Write-Host "Bye bye!"} "WPFMinimizeButton" {$sync.Form.WindowState = [Windows.WindowState]::Minimized} "WPFselectedAppsButton" {$sync.selectedAppsPopup.IsOpen = -not $sync.selectedAppsPopup.IsOpen} } }