mirror of
https://github.com/ChrisTitusTech/winutil.git
synced 2025-07-01 18:42:35 -05:00
Merge branch 'Progress-bar' of https://github.com/MyDrift-user/winutil into Progress-bar
This commit is contained in:
@ -2,26 +2,92 @@ function ConvertTo-Icon {
|
||||
<#
|
||||
|
||||
.DESCRIPTION
|
||||
This function will convert PNG to ICO file
|
||||
This function will convert BMP, GIF, EXIF, JPG, PNG and TIFF to ICO file
|
||||
|
||||
.PARAMETER bitmapPath
|
||||
The file path to bitmap image to make '.ico' file out of.
|
||||
Supported file types according to Microsoft Documentation is the following:
|
||||
BMP, GIF, EXIF, JPG, PNG and TIFF.
|
||||
|
||||
.PARAMETER iconPath
|
||||
The file path to write the new '.ico' resource.
|
||||
|
||||
.PARAMETER overrideIconFile
|
||||
An optional boolean Parameter that makes the function overrides
|
||||
the Icon File Path if the file exists. Defaults to $true.
|
||||
|
||||
.EXAMPLE
|
||||
ConvertTo-Icon -bitmapPath "$env:TEMP\cttlogo.png" -iconPath $iconPath
|
||||
try {
|
||||
ConvertTo-Icon -bitmapPath "$env:TEMP\cttlogo.png" -iconPath "$env:TEMP\cttlogo.ico"
|
||||
} catch [System.IO.FileNotFoundException] {
|
||||
# Handle the thrown exception here...
|
||||
}
|
||||
|
||||
This Example makes a '.ico' file at "$env:TEMP\cttlogo.ico" File Path using the bitmap file
|
||||
found in "$env:TEMP\cttlogo.png", the function overrides the '.ico' File if it's found.
|
||||
this function will throw a FileNotFound Exception at the event of not finding the provided bitmap File Path.
|
||||
|
||||
.EXAMPLE
|
||||
try {
|
||||
ConvertTo-Icon "$env:TEMP\cttlogo.png" "$env:TEMP\cttlogo.ico"
|
||||
} catch [System.IO.FileNotFoundException] {
|
||||
# Handle the thrown exception here...
|
||||
}
|
||||
|
||||
This Example is the same as Example 1, but uses Positional Parameters instead.
|
||||
|
||||
.EXAMPLE
|
||||
if (Test-Path "$env:TEMP\cttlogo.png") {
|
||||
ConvertTo-Icon -bitmapPath "$env:TEMP\cttlogo.png" -iconPath "$env:TEMP\cttlogo.ico"
|
||||
}
|
||||
|
||||
This Example is same as Example 1, but checks if the bitmap File exists before calling 'ConvertTo-Icon' Function.
|
||||
This's the recommended way of using this function, as it doesn't require any try-catch blocks.
|
||||
|
||||
.EXAMPLE
|
||||
try {
|
||||
ConvertTo-Icon -bitmapPath "$env:TEMP\cttlogo.png" -iconPath "$env:TEMP\cttlogo.ico" -overrideIconFile $false
|
||||
} catch [System.IO.FileNotFoundException] {
|
||||
# Handle the thrown exception here...
|
||||
}
|
||||
|
||||
This Example make use of '-overrideIconFile' Optional Parameter, the default for this paramter is $true.
|
||||
By doing '-overrideIconFile $false', the 'ConvertTo-Icon' function will raise an exception that needs to be catched throw a 'catch' Code Block,
|
||||
otherwise it'll crash the running PowerShell instance/process.
|
||||
|
||||
#>
|
||||
param( [Parameter(Mandatory=$true)]
|
||||
$bitmapPath,
|
||||
$iconPath = "$env:temp\newicon.ico"
|
||||
param(
|
||||
[Parameter(Mandatory=$true, position=0)]
|
||||
[string]$bitmapPath,
|
||||
[Parameter(Mandatory=$true, position=1)]
|
||||
[string]$iconPath,
|
||||
[Parameter(position=2)]
|
||||
[bool]$overrideIconFile = $true
|
||||
)
|
||||
|
||||
Add-Type -AssemblyName System.Drawing
|
||||
|
||||
if (Test-Path $bitmapPath) {
|
||||
if ((Test-Path $iconPath) -AND ($overrideIconFile -eq $false)) {
|
||||
Write-Host "[ConvertTo-Icon] Icon File is found at '$iconPath', and the 'overrideIconFile' Parameter is set to '$overrideIconFile'. Skipping the bitmap to icon convertion..." -ForegroundColor Yellow
|
||||
return
|
||||
}
|
||||
|
||||
# Load bitmap file into memory, and make an Icon version out of it
|
||||
$b = [System.Drawing.Bitmap]::FromFile($bitmapPath)
|
||||
$icon = [System.Drawing.Icon]::FromHandle($b.GetHicon())
|
||||
|
||||
# Create the folder for the new icon file if it doesn't exists
|
||||
$iconFolder = (New-Object System.IO.FileInfo($iconPath)).Directory.FullName
|
||||
[System.IO.Directory]::CreateDirectory($iconFolder) | Out-Null
|
||||
|
||||
# Write the Icon File and do some cleaning-up
|
||||
$file = New-Object System.IO.FileStream($iconPath, 'OpenOrCreate')
|
||||
$icon.Save($file)
|
||||
$file.Close()
|
||||
$icon.Dispose()
|
||||
#explorer "/SELECT,$iconpath"
|
||||
}
|
||||
else { Write-Warning "$BitmapPath does not exist" }
|
||||
}
|
||||
else {
|
||||
throw [System.IO.FileNotFoundException] "[ConvertTo-Icon] The provided bitmap File Path is not found at '$bitmapPath'."
|
||||
}
|
||||
}
|
||||
|
@ -6,8 +6,10 @@ function Get-TabXaml {
|
||||
It takes the tabname and the number of columns to display the applications in as input and returns the XAML for the tab as output
|
||||
.PARAMETER tabname
|
||||
The name of the tab to generate XAML for
|
||||
Note: the 'tabname' parameter must equal one of the json files found in $sync.configs variable
|
||||
Otherwise, it'll throw an exception
|
||||
.PARAMETER columncount
|
||||
The number of columns to display the applications in
|
||||
The number of columns to display the applications in, default is 0
|
||||
.OUTPUTS
|
||||
The XAML for the tab
|
||||
.EXAMPLE
|
||||
@ -15,10 +17,20 @@ function Get-TabXaml {
|
||||
#>
|
||||
|
||||
|
||||
param( [Parameter(Mandatory=$true)]
|
||||
$tabname,
|
||||
$columncount = 0
|
||||
param(
|
||||
[Parameter(Mandatory, position=0)]
|
||||
[string]$tabname,
|
||||
|
||||
[Parameter(position=1)]
|
||||
[ValidateRange(0,10)] # 10 panels as max number is more then enough
|
||||
[int]$columncount = 0
|
||||
)
|
||||
|
||||
# Validate tabname
|
||||
if ($sync.configs.$tabname -eq $null) {
|
||||
throw "Invalid parameter passed, can't find '$tabname' in '`$sync.configs' variable, please double check any calls to 'Get-TabXaml' function."
|
||||
}
|
||||
|
||||
$organizedData = @{}
|
||||
# Iterate through JSON data and organize by panel and category
|
||||
foreach ($appName in $sync.configs.$tabname.PSObject.Properties.Name) {
|
||||
@ -39,6 +51,7 @@ function Get-TabXaml {
|
||||
ComboItems = $appInfo.ComboItems
|
||||
# Checked is the property to set startup checked status of checkbox (Default is false)
|
||||
Checked = $appInfo.Checked
|
||||
ButtonWidth = $appInfo.ButtonWidth
|
||||
}
|
||||
|
||||
if (-not $organizedData.ContainsKey($appObject.panel)) {
|
||||
@ -53,7 +66,22 @@ function Get-TabXaml {
|
||||
# Add Order property to keep the original order of tweaks and features
|
||||
$organizedData[$appObject.panel][$appInfo.Category]["$($appInfo.order)$appName"] = $appObject
|
||||
}
|
||||
$panelcount=0
|
||||
|
||||
# Same tab amount in last line of 'inputXML.xaml' file
|
||||
# TODO: Get the base repeat (amount) of tabs from last line (or even lines)
|
||||
# so it can dynamicly react to whatever is before this generated XML string.
|
||||
# .. may be solve this even before calling this function, and pass the result as a parameter?
|
||||
$tab_repeat = 7
|
||||
$spaces_per_tab = 4 # The convenction used across the code base
|
||||
$tab_as_spaces = $(" " * $spaces_per_tab)
|
||||
$precal_indent = $($tab_as_spaces * $tab_repeat)
|
||||
$precal_indent_p1 = $($tab_as_spaces * ($tab_repeat + 1))
|
||||
$precal_indent_p2 = $($tab_as_spaces * ($tab_repeat + 2))
|
||||
$precal_indent_m1 = $($tab_as_spaces * ($tab_repeat - 1))
|
||||
$precal_indent_m2 = $($tab_as_spaces * ($tab_repeat - 2))
|
||||
|
||||
# Calculate the needed number of panels
|
||||
$panelcount = 0
|
||||
$paneltotal = $organizedData.Keys.Count
|
||||
if ($columncount -gt 0) {
|
||||
$appcount = $sync.configs.$tabname.PSObject.Properties.Name.count + $organizedData["0"].Keys.count
|
||||
@ -61,19 +89,27 @@ function Get-TabXaml {
|
||||
$paneltotal = $columncount
|
||||
}
|
||||
# add ColumnDefinitions to evenly draw colums
|
||||
$blockXml="<Grid.ColumnDefinitions>`r`n"+("<ColumnDefinition Width=""*""/>`r`n"*($paneltotal))+"</Grid.ColumnDefinitions>`r`n"
|
||||
# Iterate through organizedData by panel, category, and application
|
||||
$blockXml = "<Grid.ColumnDefinitions>"
|
||||
$blockXml += $("`r`n" + " " * ($spaces_per_tab * $tab_repeat) +
|
||||
"<ColumnDefinition Width=""*""/>") * $paneltotal
|
||||
$blockXml += $("`r`n" + " " * ($spaces_per_tab * ($tab_repeat - 1))) +
|
||||
"</Grid.ColumnDefinitions>" + "`r`n"
|
||||
|
||||
# Iterate through 'organizedData' by panel, category, and application
|
||||
$count = 0
|
||||
foreach ($panel in ($organizedData.Keys | Sort-Object)) {
|
||||
$blockXml += "<Border Grid.Row=""1"" Grid.Column=""$panelcount"">`r`n<StackPanel Background=""{MainBackgroundColor}"" SnapsToDevicePixels=""True"">`r`n"
|
||||
$blockXml += $precal_indent_m1 + "<Border Grid.Row=""1"" Grid.Column=""$panelcount"">" + "`r`n"
|
||||
$blockXml += $precal_indent + "<StackPanel Background=""{MainBackgroundColor}"" SnapsToDevicePixels=""True"">" + "`r`n"
|
||||
$panelcount++
|
||||
foreach ($category in ($organizedData[$panel].Keys | Sort-Object)) {
|
||||
$count++
|
||||
if ($columncount -gt 0) {
|
||||
$panelcount2 = [Int](($count)/$maxcount-0.5)
|
||||
if ($panelcount -eq $panelcount2 ) {
|
||||
$blockXml +="`r`n</StackPanel>`r`n</Border>`r`n"
|
||||
$blockXml += "<Border Grid.Row=""1"" Grid.Column=""$panelcount"">`r`n<StackPanel Background=""{MainBackgroundColor}"" SnapsToDevicePixels=""True"">`r`n"
|
||||
$blockXml += $precal_indent_p2 + "</StackPanel>" + "`r`n"
|
||||
$blockXml += $precal_indent_p1 + "</Border>" + "`r`n"
|
||||
$blockXml += $precal_indent_p1 + "<Border Grid.Row=""1"" Grid.Column=""$panelcount"">" + "`r`n"
|
||||
$blockXml += $precal_indent_p2 + "<StackPanel Background=""{MainBackgroundColor}"" SnapsToDevicePixels=""True"">" + "`r`n"
|
||||
$panelcount++
|
||||
}
|
||||
}
|
||||
@ -83,49 +119,99 @@ function Get-TabXaml {
|
||||
|
||||
$categorycontent = $($category -replace '^.__', '')
|
||||
$categoryname = Get-WPFObjectName -type "Label" -name $categorycontent
|
||||
$blockXml += "<Label Name=""$categoryname"" Content=""$categorycontent"" FontSize=""16""/>`r`n"
|
||||
$blockXml += $("`r`n" + " " * ($spaces_per_tab * $tab_repeat)) +
|
||||
"<Label Name=""$categoryname"" Content=""$categorycontent""" + " " +
|
||||
"FontSize=""{FontSizeHeading}"" FontFamily=""{HeaderFontFamily}""/>" + "`r`n" + "`r`n"
|
||||
$sortedApps = $organizedData[$panel][$category].Keys | Sort-Object
|
||||
foreach ($appName in $sortedApps) {
|
||||
$count++
|
||||
|
||||
if ($columncount -gt 0) {
|
||||
$panelcount2 = [Int](($count)/$maxcount-0.5)
|
||||
# Verify the indentation actually works...
|
||||
if ($panelcount -eq $panelcount2 ) {
|
||||
$blockXml +="`r`n</StackPanel>`r`n</Border>`r`n"
|
||||
$blockXml += "<Border Grid.Row=""1"" Grid.Column=""$panelcount"">`r`n<StackPanel Background=""{MainBackgroundColor}"" SnapsToDevicePixels=""True"">`r`n"
|
||||
$blockXml += $precal_indent_m1 +
|
||||
"</StackPanel>" + "`r`n"
|
||||
$blockXml += $precal_indent_m2 +
|
||||
"</Border>" + "`r`n"
|
||||
$blockXml += $precal_indent_m2 +
|
||||
"<Border Grid.Row=""1"" Grid.Column=""$panelcount"">" + "`r`n"
|
||||
$blockXml += $precal_indent_m1 +
|
||||
"<StackPanel Background=""{MainBackgroundColor}"" SnapsToDevicePixels=""True"">" + "`r`n"
|
||||
$panelcount++
|
||||
}
|
||||
}
|
||||
|
||||
$appInfo = $organizedData[$panel][$category][$appName]
|
||||
if ("Toggle" -eq $appInfo.Type) {
|
||||
$blockXml += "<DockPanel LastChildFill=`"True`">`r`n<Label Content=`"$($appInfo.Content)`" ToolTip=`"$($appInfo.Description)`" HorizontalAlignment=`"Left`"/>`r`n"
|
||||
$blockXml += "<CheckBox Name=`"$($appInfo.Name)`" Style=`"{StaticResource ColorfulToggleSwitchStyle}`" Margin=`"2.5,0`" HorizontalAlignment=`"Right`"/>`r`n</DockPanel>`r`n"
|
||||
} elseif ("Combobox" -eq $appInfo.Type) {
|
||||
$blockXml += "<StackPanel Orientation=`"Horizontal`" Margin=`"0,5,0,0`">`r`n<Label Content=`"$($appInfo.Content)`" HorizontalAlignment=`"Left`" VerticalAlignment=`"Center`"/>`r`n"
|
||||
$blockXml += "<ComboBox Name=`"$($appInfo.Name)`" Height=`"32`" Width=`"186`" HorizontalAlignment=`"Left`" VerticalAlignment=`"Center`" Margin=`"5,5`">`r`n"
|
||||
$addfirst="IsSelected=`"True`""
|
||||
foreach ($comboitem in ($appInfo.ComboItems -split " ")) {
|
||||
$blockXml += "<ComboBoxItem $addfirst Content=`"$comboitem`"/>`r`n"
|
||||
$addfirst=""
|
||||
switch ($appInfo.Type) {
|
||||
"Toggle" {
|
||||
$blockXml += $precal_indent_m1 +
|
||||
"<DockPanel LastChildFill=""True"">" + "`r`n"
|
||||
$blockXml += $precal_indent +
|
||||
"<CheckBox Name=""$($appInfo.Name)"" Style=""{StaticResource ColorfulToggleSwitchStyle}"" Margin=""4,0""" + " " +
|
||||
"HorizontalAlignment=""Right"" FontSize=""{FontSize}""/>" + "`r`n"
|
||||
$blockXml += $precal_indent +
|
||||
"<Label Content=""$($appInfo.Content)"" ToolTip=""$($appInfo.Description)""" + " " +
|
||||
"HorizontalAlignment=""Left"" FontSize=""{FontSize}""/>" + "`r`n"
|
||||
$blockXml += $precal_indent_m1 +
|
||||
"</DockPanel>" + "`r`n"
|
||||
}
|
||||
$blockXml += "</ComboBox>`r`n</StackPanel>"
|
||||
# If it is a digit, type is button and button length is digits
|
||||
} elseif ($appInfo.Type -match "^[\d\.]+$") {
|
||||
$blockXml += "<Button Name=`"$($appInfo.Name)`" Content=`"$($appInfo.Content)`" HorizontalAlignment = `"Left`" Width=`"$($appInfo.Type)`" Margin=`"5`" Padding=`"20,5`" />`r`n"
|
||||
# else it is a checkbox
|
||||
} else {
|
||||
$checkedStatus = If ($null -eq $appInfo.Checked) {""} Else {"IsChecked=`"$($appInfo.Checked)`" "}
|
||||
if ($null -eq $appInfo.Link)
|
||||
{
|
||||
$blockXml += "<CheckBox Name=`"$($appInfo.Name)`" Content=`"$($appInfo.Content)`" $($checkedStatus)Margin=`"5,0`" ToolTip=`"$($appInfo.Description)`"/>`r`n"
|
||||
|
||||
"Combobox" {
|
||||
$blockXml += $precal_indent_m1 +
|
||||
"<StackPanel Orientation=""Horizontal"" Margin=""0,5,0,0"">" + "`r`n"
|
||||
$blockXml += $precal_indent + "<Label Content=""$($appInfo.Content)"" HorizontalAlignment=""Left""" + " " +
|
||||
"VerticalAlignment=""Center"" FontSize=""{FontSize}""/>" + "`r`n"
|
||||
$blockXml += $precal_indent +
|
||||
"<ComboBox Name=""$($appInfo.Name)"" Height=""32"" Width=""186"" HorizontalAlignment=""Left""" + " " +
|
||||
"VerticalAlignment=""Center"" Margin=""5,5"" FontSize=""{FontSize}"">" + "`r`n"
|
||||
|
||||
$addfirst="IsSelected=""True"""
|
||||
foreach ($comboitem in ($appInfo.ComboItems -split " ")) {
|
||||
$blockXml += $precal_indent_p1 +
|
||||
"<ComboBoxItem $addfirst Content=""$comboitem"" FontSize=""{FontSize}""/>" + "`r`n"
|
||||
$addfirst=""
|
||||
}
|
||||
|
||||
$blockXml += $precal_indent_p1 + "</ComboBox>" + "`r`n"
|
||||
$blockXml += $precal_indent + "</StackPanel>" + "`r`n"
|
||||
}
|
||||
else
|
||||
{
|
||||
$blockXml += "<StackPanel Orientation=""Horizontal"">`r`n<CheckBox Name=""$($appInfo.Name)"" Content=""$($appInfo.Content)"" $($checkedStatus)ToolTip=""$($appInfo.Description)"" Margin=""0,0,2,0""/><TextBlock Name=""$($appInfo.Name)Link"" Style=""{StaticResource HoverTextBlockStyle}"" Text=""(?)"" ToolTip=""$($appInfo.Link)"" />`r`n</StackPanel>`r`n"
|
||||
|
||||
"Button" {
|
||||
if ($appInfo.ButtonWidth -ne $null) {
|
||||
$ButtonWidthStr = "Width=""$($appInfo.ButtonWidth)"""
|
||||
}
|
||||
$blockXml += $precal_indent +
|
||||
"<Button Name=""$($appInfo.Name)"" Content=""$($appInfo.Content)""" + " " +
|
||||
"HorizontalAlignment=""Left"" Margin=""5"" Padding=""20,5"" $($ButtonWidthStr)/>" + "`r`n"
|
||||
}
|
||||
|
||||
# else it is a checkbox
|
||||
default {
|
||||
$checkedStatus = If ($appInfo.Checked -eq $null) {""} Else {" IsChecked=""$($appInfo.Checked)"""}
|
||||
if ($appInfo.Link -eq $null) {
|
||||
$blockXml += $precal_indent +
|
||||
"<CheckBox Name=""$($appInfo.Name)"" Content=""$($appInfo.Content)""$($checkedStatus) Margin=""5,0""" + " " +
|
||||
"ToolTip=""$($appInfo.Description)""/>" + "`r`n"
|
||||
} else {
|
||||
$blockXml += $precal_indent +
|
||||
"<StackPanel Orientation=""Horizontal"">" + "`r`n"
|
||||
$blockXml += $precal_indent_p1 +
|
||||
"<CheckBox Name=""$($appInfo.Name)"" Content=""$($appInfo.Content)""$($checkedStatus)" + " " +
|
||||
"ToolTip=""$($appInfo.Description)"" Margin=""0,0,2,0""/>" + "`r`n"
|
||||
$blockXml += $precal_indent_p1 +
|
||||
"<TextBlock Name=""$($appInfo.Name)Link"" Style=""{StaticResource HoverTextBlockStyle}"" Text=""(?)""" + " " +
|
||||
"ToolTip=""$($appInfo.Link)""/>" + "`r`n"
|
||||
$blockXml += $precal_indent +
|
||||
"</StackPanel>" + "`r`n"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$blockXml +="`r`n</StackPanel>`r`n</Border>`r`n"
|
||||
|
||||
$blockXml += $precal_indent_p1 + "</StackPanel>" + "`r`n"
|
||||
$blockXml += $precal_indent + "</Border>" + "`r`n"
|
||||
}
|
||||
return ($blockXml)
|
||||
}
|
||||
|
@ -58,6 +58,9 @@ Function Invoke-WinUtilCurrentSystem {
|
||||
$values += $False
|
||||
}
|
||||
}
|
||||
else {
|
||||
$values += $False
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2,10 +2,10 @@ function Invoke-WinUtilTaskbarSearch {
|
||||
<#
|
||||
|
||||
.SYNOPSIS
|
||||
Enable/Disable Taskbar Widgets
|
||||
Enable/Disable Taskbar Search Button.
|
||||
|
||||
.PARAMETER Enabled
|
||||
Indicates whether to enable or disable Taskbar Widgets
|
||||
Indicates whether to enable or disable Taskbar Search Button.
|
||||
|
||||
#>
|
||||
Param($Enabled)
|
||||
|
@ -24,6 +24,7 @@ function Set-WinUtilDNS {
|
||||
}
|
||||
Else{
|
||||
Set-DnsClientServerAddress -InterfaceIndex $Adapter.ifIndex -ServerAddresses ("$($sync.configs.dns.$DNSProvider.Primary)", "$($sync.configs.dns.$DNSProvider.Secondary)")
|
||||
Set-DnsClientServerAddress -InterfaceIndex $Adapter.ifIndex -ServerAddresses ("$($sync.configs.dns.$DNSProvider.Primary6)", "$($sync.configs.dns.$DNSProvider.Secondary6)")
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -31,4 +32,4 @@ function Set-WinUtilDNS {
|
||||
Write-Warning "Unable to set DNS Provider due to an unhandled exception"
|
||||
Write-Warning $psitem.Exception.StackTrace
|
||||
}
|
||||
}
|
||||
}
|
@ -15,6 +15,15 @@ function Show-CustomDialog {
|
||||
.PARAMETER Height
|
||||
The height of the custom dialog window.
|
||||
|
||||
.PARAMETER FontSize
|
||||
The Font Size for text shown inside the custom dialog window.
|
||||
|
||||
.PARAMETER HeaderFontSize
|
||||
The Font Size for the Header of the custom dialog window.
|
||||
|
||||
.PARAMETER IconSize
|
||||
The Size to use for Icon inside the custom dialog window.
|
||||
|
||||
.EXAMPLE
|
||||
Show-CustomDialog -Message "This is a custom dialog with a message and an image above." -Width 300 -Height 200
|
||||
|
||||
@ -22,7 +31,10 @@ function Show-CustomDialog {
|
||||
param(
|
||||
[string]$Message,
|
||||
[int]$Width = 300,
|
||||
[int]$Height = 200
|
||||
[int]$Height = 200,
|
||||
[int]$FontSize = 10,
|
||||
[int]$HeaderFontSize = 14,
|
||||
[int]$IconSize = 25
|
||||
)
|
||||
|
||||
Add-Type -AssemblyName PresentationFramework
|
||||
@ -48,6 +60,7 @@ function Show-CustomDialog {
|
||||
$dialog.Foreground = $foregroundColor
|
||||
$dialog.Background = $backgroundColor
|
||||
$dialog.FontFamily = $font
|
||||
$dialog.FontSize = $FontSize
|
||||
|
||||
# Create a Border for the green edge with rounded corners
|
||||
$border = New-Object Windows.Controls.Border
|
||||
@ -111,8 +124,8 @@ function Show-CustomDialog {
|
||||
[Windows.Controls.Grid]::SetRow($stackPanel, 0) # Set the row to the second row (0-based index)
|
||||
|
||||
$viewbox = New-Object Windows.Controls.Viewbox
|
||||
$viewbox.Width = 25
|
||||
$viewbox.Height = 25
|
||||
$viewbox.Width = $IconSize
|
||||
$viewbox.Height = $IconSize
|
||||
|
||||
# Combine the paths into a single string
|
||||
# $cttLogoPath = @"
|
||||
@ -174,7 +187,7 @@ $cttLogoPath = @"
|
||||
# Add "Winutil" text
|
||||
$winutilTextBlock = New-Object Windows.Controls.TextBlock
|
||||
$winutilTextBlock.Text = "Winutil"
|
||||
$winutilTextBlock.FontSize = 18 # Adjust font size as needed
|
||||
$winutilTextBlock.FontSize = $HeaderFontSize
|
||||
$winutilTextBlock.Foreground = $foregroundColor
|
||||
$winutilTextBlock.Margin = New-Object Windows.Thickness(10, 5, 10, 5) # Add margins around the text block
|
||||
$stackPanel.Children.Add($winutilTextBlock)
|
||||
@ -242,6 +255,7 @@ $cttLogoPath = @"
|
||||
# Add OK button
|
||||
$okButton = New-Object Windows.Controls.Button
|
||||
$okButton.Content = "OK"
|
||||
$okButton.FontSize = $FontSize
|
||||
$okButton.Width = 80
|
||||
$okButton.Height = 30
|
||||
$okButton.HorizontalAlignment = [Windows.HorizontalAlignment]::Center
|
||||
|
@ -27,8 +27,8 @@ function Invoke-WPFButton {
|
||||
"WPFclearWinget" {Invoke-WPFPresets -preset $null -imported $true -CheckBox "WPFInstall"}
|
||||
"WPFtweaksbutton" {Invoke-WPFtweaksbutton}
|
||||
"WPFOOSUbutton" {Invoke-WPFOOSU}
|
||||
"WPFAddUltPerf" {Invoke-WPFUltimatePerformance -State "Enabled"}
|
||||
"WPFRemoveUltPerf" {Invoke-WPFUltimatePerformance -State "Disabled"}
|
||||
"WPFAddUltPerf" {Invoke-WPFUltimatePerformance -State "Enable"}
|
||||
"WPFRemoveUltPerf" {Invoke-WPFUltimatePerformance -State "Disable"}
|
||||
"WPFundoall" {Invoke-WPFundoall}
|
||||
"WPFFeatureInstall" {Invoke-WPFFeatureInstall}
|
||||
"WPFPanelDISM" {Invoke-WPFPanelDISM}
|
||||
|
@ -178,13 +178,14 @@ public class PowerManagement {
|
||||
Remove-Features -keepDefender:$keepDefender
|
||||
Write-Host "Removing features complete!"
|
||||
|
||||
Write-Host "Removing Appx Bloat"
|
||||
if (!$keepPackages)
|
||||
{
|
||||
Write-Host "Removing OS packages"
|
||||
Remove-Packages
|
||||
}
|
||||
if (!$keepProvisionedPackages)
|
||||
{
|
||||
Write-Host "Removing Appx Bloat"
|
||||
Remove-ProvisionedPackages -keepSecurity:$keepDefender
|
||||
}
|
||||
|
||||
|
@ -27,8 +27,10 @@ function Invoke-WPFShortcut {
|
||||
$ArgumentsToSourceExe = "$powershell '$IRM'"
|
||||
$DestinationName = "WinUtil.lnk"
|
||||
|
||||
Invoke-WebRequest -Uri "https://christitus.com/images/logo-full.png" -OutFile "$env:TEMP\cttlogo.png"
|
||||
|
||||
if (Test-Path -Path "$env:TEMP\cttlogo.png") {
|
||||
$iconPath = "$env:SystempRoot\cttlogo.ico"
|
||||
$iconPath = "$env:LOCALAPPDATA\winutil\cttlogo.ico"
|
||||
ConvertTo-Icon -bitmapPath "$env:TEMP\cttlogo.png" -iconPath $iconPath
|
||||
}
|
||||
}
|
||||
@ -40,20 +42,23 @@ function Invoke-WPFShortcut {
|
||||
$FileBrowser.Filter = "Shortcut Files (*.lnk)|*.lnk"
|
||||
$FileBrowser.FileName = $DestinationName
|
||||
|
||||
# Do an Early Return if The Save Shortcut operation was cancel by User's Input.
|
||||
# Do an Early Return if the Save Operation was canceled by User's Input.
|
||||
$FileBrowserResult = $FileBrowser.ShowDialog()
|
||||
$DialogResultEnum = New-Object System.Windows.Forms.DialogResult
|
||||
if (-not ($FileBrowserResult -eq $DialogResultEnum::OK)) {
|
||||
return
|
||||
}
|
||||
|
||||
# Prepare the Shortcut paramter
|
||||
$WshShell = New-Object -comObject WScript.Shell
|
||||
$Shortcut = $WshShell.CreateShortcut($FileBrowser.FileName)
|
||||
$Shortcut.TargetPath = $SourceExe
|
||||
$Shortcut.Arguments = $ArgumentsToSourceExe
|
||||
if ($null -ne $iconPath) {
|
||||
if ($iconPath -ne $null) {
|
||||
$shortcut.IconLocation = $iconPath
|
||||
}
|
||||
|
||||
# Save the Shortcut to disk
|
||||
$Shortcut.Save()
|
||||
|
||||
if ($RunAsAdmin -eq $true) {
|
||||
|
@ -10,69 +10,44 @@ Function Invoke-WPFUltimatePerformance {
|
||||
#>
|
||||
param($State)
|
||||
Try{
|
||||
|
||||
if($state -eq "Enabled"){
|
||||
# Define the name and GUID of the power scheme
|
||||
$powerSchemeName = "Ultimate Performance"
|
||||
$powerSchemeGuid = "e9a42b02-d5df-448d-aa00-03f14749eb61"
|
||||
|
||||
# Get all power schemes
|
||||
$schemes = powercfg /list | Out-String -Stream
|
||||
|
||||
# Check if the power scheme already exists
|
||||
$ultimateScheme = $schemes | Where-Object { $_ -match $powerSchemeName }
|
||||
|
||||
if ($null -eq $ultimateScheme) {
|
||||
Write-Host "Power scheme '$powerSchemeName' not found. Adding..."
|
||||
|
||||
# Add the power scheme
|
||||
powercfg /duplicatescheme $powerSchemeGuid
|
||||
powercfg -attributes SUB_SLEEP 7bc4a2f9-d8fc-4469-b07b-33eb785aaca0 -ATTRIB_HIDE
|
||||
powercfg -setactive $powerSchemeGuid
|
||||
powercfg -change -monitor-timeout-ac 0
|
||||
|
||||
|
||||
Write-Host "Power scheme added successfully."
|
||||
# Check if Ultimate Performance plan is installed
|
||||
$ultimatePlan = powercfg -list | Select-String -Pattern "Ultimate Performance"
|
||||
if($state -eq "Enable"){
|
||||
if ($ultimatePlan) {
|
||||
Write-Host "Ultimate Performance plan is already installed."
|
||||
} else {
|
||||
Write-Host "Installing Ultimate Performance plan..."
|
||||
powercfg -duplicatescheme e9a42b02-d5df-448d-aa00-03f14749eb61
|
||||
Write-Host "> Ultimate Performance plan installed."
|
||||
}
|
||||
else {
|
||||
Write-Host "Power scheme '$powerSchemeName' already exists."
|
||||
|
||||
# Set the Ultimate Performance plan as active
|
||||
$ultimatePlanGUID = (powercfg -list | Select-String -Pattern "Ultimate Performance").Line.Split()[3]
|
||||
powercfg -setactive $ultimatePlanGUID
|
||||
|
||||
Write-Host "Ultimate Performance plan is now active."
|
||||
|
||||
|
||||
}
|
||||
elseif($state -eq "Disable"){
|
||||
if ($ultimatePlan) {
|
||||
# Extract the GUID of the Ultimate Performance plan
|
||||
$ultimatePlanGUID = $ultimatePlan.Line.Split()[3]
|
||||
|
||||
# Set a different power plan as active before deleting the Ultimate Performance plan
|
||||
$balancedPlanGUID = (powercfg -list | Select-String -Pattern "Balanced").Line.Split()[3]
|
||||
powercfg -setactive $balancedPlanGUID
|
||||
|
||||
# Delete the Ultimate Performance plan
|
||||
powercfg -delete $ultimatePlanGUID
|
||||
|
||||
Write-Host "Ultimate Performance plan has been uninstalled."
|
||||
Write-Host "> Balanced plan is now active."
|
||||
} else {
|
||||
Write-Host "Ultimate Performance plan is not installed."
|
||||
}
|
||||
}
|
||||
elseif($state -eq "Disabled"){
|
||||
# Define the name of the power scheme
|
||||
$powerSchemeName = "Ultimate Performance"
|
||||
|
||||
# Get all power schemes
|
||||
$schemes = powercfg /list | Out-String -Stream
|
||||
|
||||
# Find the scheme to be removed
|
||||
$ultimateScheme = $schemes | Where-Object { $_ -match $powerSchemeName }
|
||||
|
||||
# If the scheme exists, remove it
|
||||
if ($null -ne $ultimateScheme) {
|
||||
# Extract the GUID of the power scheme
|
||||
$guid = ($ultimateScheme -split '\s+')[3]
|
||||
|
||||
if($null -ne $guid){
|
||||
Write-Host "Found power scheme '$powerSchemeName' with GUID $guid. Removing..."
|
||||
|
||||
# Remove the power scheme
|
||||
powercfg /delete $guid
|
||||
|
||||
Write-Host "Power scheme removed successfully."
|
||||
}
|
||||
else {
|
||||
Write-Host "Could not find GUID for power scheme '$powerSchemeName'."
|
||||
}
|
||||
}
|
||||
else {
|
||||
Write-Host "Power scheme '$powerSchemeName' not found."
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Catch{
|
||||
} Catch{
|
||||
Write-Warning $psitem.Exception.Message
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user