From be6b5b3aa0dccb361d52d63351396b2e06e79b39 Mon Sep 17 00:00:00 2001 From: "Mr.k" Date: Thu, 29 Aug 2024 04:02:59 +0300 Subject: [PATCH] Improve 'Invoke-WPFPresets' Public Function - Made applying tweaks presets go blazingly fast - Made Clearing Selection work properly (#2608) * Improve 'Invoke-WPFPresets.ps1' Public Function as well as Simple Optimizations * Simple Optimization by providing more info to 'Invoke-WPFPresets.ps1' function calls inside 'Invoke-WPFButton.ps1' * Fix some logic issue in 'Invoke-WPFPresets.ps1' Public Function * Rename Button Names to more clear and Make them follow CamelCase Naming --- functions/public/Invoke-WPFButton.ps1 | 12 +++++----- functions/public/Invoke-WPFPresets.ps1 | 31 ++++++++++++++++---------- xaml/inputXML.xaml | 6 ++--- 3 files changed, 28 insertions(+), 21 deletions(-) diff --git a/functions/public/Invoke-WPFButton.ps1 b/functions/public/Invoke-WPFButton.ps1 index ac5b2f8c..e3015f09 100644 --- a/functions/public/Invoke-WPFButton.ps1 +++ b/functions/public/Invoke-WPFButton.ps1 @@ -21,13 +21,13 @@ function Invoke-WPFButton { Switch -Wildcard ($Button) { "WPFTab?BT" {Invoke-WPFTab $Button} - "WPFinstall" {Invoke-WPFInstall} - "WPFuninstall" {Invoke-WPFUnInstall} + "WPFInstall" {Invoke-WPFInstall} + "WPFUninstall" {Invoke-WPFUnInstall} "WPFInstallUpgrade" {Invoke-WPFInstallUpgrade} - "WPFstandard" {Invoke-WPFPresets "Standard"} - "WPFminimal" {Invoke-WPFPresets "Minimal"} - "WPFclear" {Invoke-WPFPresets -preset $null -imported $true} - "WPFclearWinget" {Invoke-WPFPresets -preset $null -imported $true -CheckBox "WPFInstall"} + "WPFStandard" {Invoke-WPFPresets "Standard" -checkboxfilterpattern "WPFTweak*"} + "WPFMinimal" {Invoke-WPFPresets "Minimal" -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 -State "Enable"} diff --git a/functions/public/Invoke-WPFPresets.ps1 b/functions/public/Invoke-WPFPresets.ps1 index 1595a8f1..90493899 100644 --- a/functions/public/Invoke-WPFPresets.ps1 +++ b/functions/public/Invoke-WPFPresets.ps1 @@ -10,29 +10,36 @@ function Invoke-WPFPresets { .PARAMETER imported If the preset is imported from a file, defaults to false - .PARAMETER checkbox - The checkbox to set the options to, defaults to 'WPFTweaks' + .PARAMETER checkboxfilterpattern + The Pattern to use when filtering through CheckBoxes, defaults to "**" #> - param( - $preset, - [bool]$imported = $false + param ( + [Parameter(position=0)] + [string]$preset = "", + + [Parameter(position=1)] + [bool]$imported = $false, + + [Parameter(position=2)] + [string]$checkboxfilterpattern = "**" ) - if($imported -eq $true) { + if ($imported -eq $true) { $CheckBoxesToCheck = $preset } else { $CheckBoxesToCheck = $sync.configs.preset.$preset } - $CheckBoxes = $sync.GetEnumerator() | Where-Object { $_.Value -is [System.Windows.Controls.CheckBox] -and $_.Name -notlike "WPFToggle*" } - Write-Debug "Getting checkboxes to set $($CheckBoxes.Count)" + $CheckBoxes = ($sync.GetEnumerator()).where{ $_.Value -is [System.Windows.Controls.CheckBox] -and $_.Name -notlike "WPFToggle*" -and $_.Name -like "$checkboxfilterpattern"} + Write-Debug "Getting checkboxes to set, number of checkboxes: $($CheckBoxes.Count)" - $CheckBoxesToCheck | ForEach-Object { - if ($_ -ne $null) { - Write-Debug $_ - } + if ($CheckBoxesToCheck -ne "") { + $debugMsg = "CheckBoxes to Check are: " + $CheckBoxesToCheck | ForEach-Object { $debugMsg += "$_, " } + $debugMsg = $debugMsg -replace (',\s*$', '') + Write-Debug "$debugMsg" } foreach ($CheckBox in $CheckBoxes) { diff --git a/xaml/inputXML.xaml b/xaml/inputXML.xaml index 827017f1..5f82c3f0 100644 --- a/xaml/inputXML.xaml +++ b/xaml/inputXML.xaml @@ -814,11 +814,11 @@ -