mirror of
https://github.com/ChrisTitusTech/winutil.git
synced 2025-06-28 00:54:47 -05:00
Add the option to change the UI Theme at runtime (#2693)
* Setup for testing * Working Example for Background * Almost all MainBackgrounColor working * Random Color PoC * Fix DBorderColor * prevent old logic from replacing colors in memory at startup * Comment out resources in xaml * Finish new Button * Remove Pulse, Load Windows default Theme * Fix Colors * Fix Toggle Colors * working version, with shared still being mostly applied be replace instead of resouces * Load all entries in themes.json as Resource and reference them in inputXML.xaml * Rename File to match Function Name * Hotfix for Sync with main * Remove Static Set-WinUtilUITheme function/file * Rename File and Function * Cleanup and Stuff * Unify Button Theme with rest of UI * Refactor/Optimazation * Performance optimization * Add Comments * Rename Functions and Variables to be more concise and descriptive * Add persistence to the user Theme Preference across winutil restarts * Reimplement Theme Chagnes from #2722 * Add AUTO option to follow window theme and add dropdown instead toggle * Formatting and deleting temp file * Fix small display bug where Dropdown would remain open for settings and themes * Remove terniary operators because only PS7+ is supported
This commit is contained in:
@ -52,29 +52,6 @@ $sync.runspace.Open()
|
||||
|
||||
$inputXML = $inputXML -replace 'mc:Ignorable="d"', '' -replace "x:N", 'N' -replace '^<Win.*', '<Window'
|
||||
|
||||
$defaulttheme = '_default'
|
||||
if ((Get-WinUtilToggleStatus WPFToggleDarkMode) -eq $True) {
|
||||
if (Invoke-WinUtilGPU -eq $True) {
|
||||
$ctttheme = 'Matrix'
|
||||
} else {
|
||||
$ctttheme = 'Dark'
|
||||
}
|
||||
} else {
|
||||
$ctttheme = 'Classic'
|
||||
}
|
||||
|
||||
$returnVal = Set-WinUtilUITheme -inputXML $inputXML -customThemeName $ctttheme -defaultThemeName $defaulttheme
|
||||
if ($returnVal[0] -eq "") {
|
||||
Write-Host "Failed to statically apply theming to xaml content using Set-WinUtilTheme, please check previous Error/Warning messages." -ForegroundColor Red
|
||||
Write-Host "Quitting winutil..." -ForegroundColor Red
|
||||
$sync.runspace.Dispose()
|
||||
$sync.runspace.Close()
|
||||
[System.GC]::Collect()
|
||||
exit 1
|
||||
}
|
||||
$inputXML = $returnVal[0]
|
||||
$ctttheme = $returnVal[1]
|
||||
|
||||
[void][System.Reflection.Assembly]::LoadWithPartialName('presentationframework')
|
||||
[xml]$XAML = $inputXML
|
||||
|
||||
@ -103,7 +80,7 @@ if (-NOT ($readerOperationSuccessful)) {
|
||||
[System.GC]::Collect()
|
||||
exit 1
|
||||
}
|
||||
|
||||
Invoke-WinutilThemeChange -init $true
|
||||
# Load the configuration files
|
||||
#Invoke-WPFUIElements -configVariable $sync.configs.nav -targetGridName "WPFMainGrid"
|
||||
Invoke-WPFUIElements -configVariable $sync.configs.applications -targetGridName "appspanel" -columncount 5
|
||||
@ -248,9 +225,12 @@ $commonKeyEvents = {
|
||||
$sync["Form"].Add_PreViewKeyDown($commonKeyEvents)
|
||||
|
||||
$sync["Form"].Add_MouseLeftButtonDown({
|
||||
if ($sync["SettingsPopup"].IsOpen) {
|
||||
$sync["SettingsPopup"].IsOpen = $false
|
||||
}
|
||||
# Hide Settings and Theme Popup on click anywhere else
|
||||
if ($sync.SettingsButton.IsOpen -or
|
||||
$sync.ThemePopup.IsOpen){
|
||||
$sync.SettingsPopup.IsOpen = $false
|
||||
$sync.ThemePopup.IsOpen = $false
|
||||
}
|
||||
$sync["Form"].DragMove()
|
||||
})
|
||||
|
||||
@ -268,8 +248,11 @@ $sync["Form"].Add_MouseDoubleClick({
|
||||
|
||||
$sync["Form"].Add_Deactivated({
|
||||
Write-Debug "WinUtil lost focus"
|
||||
if ($sync["SettingsPopup"].IsOpen) {
|
||||
$sync["SettingsPopup"].IsOpen = $false
|
||||
# Hide Settings and Theme Popup on Winutil Focus Loss
|
||||
if ($sync.SettingsButton.IsOpen -or
|
||||
$sync.ThemePopup.IsOpen){
|
||||
$sync.SettingsPopup.IsOpen = $false
|
||||
$sync.ThemePopup.IsOpen = $false
|
||||
}
|
||||
})
|
||||
|
||||
@ -482,15 +465,47 @@ Set-WinUtilTaskbaritem -overlay "logo"
|
||||
$sync["Form"].Add_Activated({
|
||||
Set-WinUtilTaskbaritem -overlay "logo"
|
||||
})
|
||||
# Define event handler for ThemeButton click
|
||||
$sync["ThemeButton"].Add_Click({
|
||||
if ($sync.ThemePopup.IsOpen){
|
||||
$sync.ThemePopup.IsOpen = $false
|
||||
}
|
||||
else{
|
||||
$sync.ThemePopup.IsOpen = $true
|
||||
}
|
||||
$sync.SettingsPopup.IsOpen = $false
|
||||
})
|
||||
|
||||
# Define event handlers for menu items
|
||||
$sync["AutoThemeMenuItem"].Add_Click({
|
||||
$sync.ThemePopup.IsOpen = $false
|
||||
Invoke-WinutilThemeChange -theme "Auto"
|
||||
$_.Handled = $false
|
||||
})
|
||||
# Define event handlers for menu items
|
||||
$sync["DarkThemeMenuItem"].Add_Click({
|
||||
$sync.ThemePopup.IsOpen = $false
|
||||
Invoke-WinutilThemeChange -theme "Dark"
|
||||
$_.Handled = $false
|
||||
})
|
||||
# Define event handlers for menu items
|
||||
$sync["LightThemeMenuItem"].Add_Click({
|
||||
$sync.ThemePopup.IsOpen = $false
|
||||
Invoke-WinutilThemeChange -theme "Light"
|
||||
$_.Handled = $false
|
||||
})
|
||||
|
||||
|
||||
# Define event handler for button click
|
||||
$sync["SettingsButton"].Add_Click({
|
||||
Write-Debug "SettingsButton clicked"
|
||||
if ($sync["SettingsPopup"].IsOpen) {
|
||||
$sync["SettingsPopup"].IsOpen = $false
|
||||
} else {
|
||||
$sync["SettingsPopup"].IsOpen = $true
|
||||
if ($sync.Settings.IsOpen){
|
||||
$sync.Settings.IsOpen = $false
|
||||
}
|
||||
else{
|
||||
$sync.Settings.IsOpen = $true
|
||||
}
|
||||
$sync.Settings.IsOpen = $false
|
||||
$_.Handled = $false
|
||||
})
|
||||
|
||||
@ -522,12 +537,8 @@ MicroWin : <a href="https://github.com/KonTy">@KonTy</a>
|
||||
GitHub : <a href="https://github.com/ChrisTitusTech/winutil">ChrisTitusTech/winutil</a>
|
||||
Version : <a href="https://github.com/ChrisTitusTech/winutil/releases/tag/$($sync.version)">$($sync.version)</a>
|
||||
"@
|
||||
$FontSize = $sync.configs.themes.$ctttheme.CustomDialogFontSize
|
||||
$HeaderFontSize = $sync.configs.themes.$ctttheme.CustomDialogFontSizeHeader
|
||||
$LogoSize = $sync.configs.themes.$ctttheme.CustomDialogLogoSize
|
||||
$Width = $sync.configs.themes.$ctttheme.CustomDialogWidth
|
||||
$Height = $sync.configs.themes.$ctttheme.CustomDialogHeight
|
||||
Show-CustomDialog -Message $authorInfo -Width $Width -Height $Height -FontSize $FontSize -HeaderFontSize $HeaderFontSize -LogoSize $LogoSize
|
||||
|
||||
Show-CustomDialog -Message $authorInfo -LogoSize $LogoSize
|
||||
})
|
||||
|
||||
$sync["SponsorMenuItem"].Add_Click({
|
||||
@ -548,12 +559,8 @@ $sync["SponsorMenuItem"].Add_Click({
|
||||
$authorInfo += "An error occurred while fetching or processing the sponsors: $_`n"
|
||||
}
|
||||
|
||||
$FontSize = $sync.configs.themes.$ctttheme.CustomDialogFontSize
|
||||
$HeaderFontSize = $sync.configs.themes.$ctttheme.CustomDialogFontSizeHeader
|
||||
$LogoSize = $sync.configs.themes.$ctttheme.CustomDialogLogoSize
|
||||
$Width = $sync.configs.themes.$ctttheme.CustomDialogWidth
|
||||
$Height = $sync.configs.themes.$ctttheme.CustomDialogHeight
|
||||
Show-CustomDialog -Message $authorInfo -Width $Width -Height $Height -FontSize $FontSize -HeaderFontSize $HeaderFontSize -LogoSize $LogoSize -EnableScroll $true
|
||||
Show-CustomDialog -Message $authorInfo -EnableScroll $true
|
||||
})
|
||||
|
||||
$sync["Form"].ShowDialog() | out-null
|
||||
Stop-Transcript
|
||||
|
Reference in New Issue
Block a user