mirror of
https://github.com/ChrisTitusTech/winutil.git
synced 2026-07-16 00:40:39 +00:00
* Replace FOSS highlight toggle with inline label Remove the separate "Highlight FOSS" toggle and its theming logic, and instead append an inline "- FOSS" label to FOSS app entries. Changes: remove WPFToggleFOSSHighlight from app navigation and related event handlers, delete FOSSColor resource updates in theme code and button handler, simplify checkbox setup in Invoke-WPFUIElements by removing the special-case toggle logic, and update Initialize-InstallAppEntry to build a horizontal panel containing the app name plus a small green "- FOSS" TextBlock for FOSS items. This consolidates FOSS indication into the item UI and cleans up toggle/theme handling. * Add inline FOSS label to app entries Replace the separate StackPanel/TextBlock used for the FOSS indicator with an inline System.Windows.Documents.Run appended to the app name. The run is styled (green RGB(76,175,80) and FontSize=10) and the checkbox content assignment was moved outside the conditional so the appName (with optional FOSS run) is always used. Cleaned up related comments to reflect the FOSS label change. * Add FOSS note type with green bullet Added FOSS notes in the UI and FOSS labels with a green bullet instead of the text '#FOSS' * Use larger circle glyph; remove italic text Replaced the FOSS and list bullet glyphs with a larger circle for better visual consistency and removed the italic styling * Update FOSS/bullet glyphs, colors and sizes Updated FOSS/list bullet styling by switching glyphs from U+2B24 to U+25CF, increasing size (10→11.5), and adjusting bullet/text colors for better visibility and consistency across.
85 lines
3.8 KiB
PowerShell
85 lines
3.8 KiB
PowerShell
function Initialize-InstallAppEntry {
|
|
<#
|
|
.SYNOPSIS
|
|
Creates the app entry to be placed on the install tab for a given app
|
|
Used to as part of the Install Tab UI generation
|
|
.PARAMETER TargetElement
|
|
The Element into which the Apps should be placed
|
|
.PARAMETER appKey
|
|
The Key of the app inside the $sync.configs.applicationsHashtable
|
|
#>
|
|
param(
|
|
[Windows.Controls.WrapPanel]$TargetElement,
|
|
$appKey
|
|
)
|
|
|
|
# Create the outer Border for the application type
|
|
$border = New-Object Windows.Controls.Border
|
|
$border.Style = $sync.Form.Resources.AppEntryBorderStyle
|
|
$border.Tag = $appKey
|
|
$border.ToolTip = $Apps.$appKey.description
|
|
$border.Add_MouseLeftButtonUp({
|
|
$childCheckbox = ($this.Child | Where-Object {$_.Template.TargetType -eq [System.Windows.Controls.Checkbox]})[0]
|
|
$childCheckBox.isChecked = -not $childCheckbox.IsChecked
|
|
})
|
|
$border.Add_MouseEnter({
|
|
if (($sync.$($this.Tag).IsChecked) -eq $false) {
|
|
$this.SetResourceReference([Windows.Controls.Control]::BackgroundProperty, "AppInstallHighlightedColor")
|
|
}
|
|
})
|
|
$border.Add_MouseLeave({
|
|
if (($sync.$($this.Tag).IsChecked) -eq $false) {
|
|
$this.SetResourceReference([Windows.Controls.Control]::BackgroundProperty, "AppInstallUnselectedColor")
|
|
}
|
|
})
|
|
$border.Add_MouseRightButtonUp({
|
|
# Store the selected app in a global variable so it can be used in the popup
|
|
$sync.appPopupSelectedApp = $this.Tag
|
|
# Set the popup position to the current mouse position
|
|
$sync.appPopup.PlacementTarget = $this
|
|
$sync.appPopup.IsOpen = $true
|
|
})
|
|
|
|
$checkBox = New-Object Windows.Controls.CheckBox
|
|
# Sanitize the name for WPF
|
|
$checkBox.Name = $appKey -replace '-', '_'
|
|
# Store the original appKey in Tag
|
|
$checkBox.Tag = $appKey
|
|
$checkbox.Style = $sync.Form.Resources.AppEntryCheckboxStyle
|
|
$checkbox.Add_Checked({
|
|
Invoke-WPFSelectedCheckboxesUpdate -type "Add" -checkboxName $this.Parent.Tag
|
|
$borderElement = $this.Parent
|
|
$borderElement.SetResourceReference([Windows.Controls.Control]::BackgroundProperty, "AppInstallSelectedColor")
|
|
})
|
|
|
|
$checkbox.Add_Unchecked({
|
|
Invoke-WPFSelectedCheckboxesUpdate -type "Remove" -checkboxName $this.Parent.Tag
|
|
$borderElement = $this.Parent
|
|
$borderElement.SetResourceReference([Windows.Controls.Control]::BackgroundProperty, "AppInstallUnselectedColor")
|
|
})
|
|
|
|
# Create the TextBlock for the application name
|
|
$appName = New-Object Windows.Controls.TextBlock
|
|
$appName.Style = $sync.Form.Resources.AppEntryNameStyle
|
|
$appName.Text = $Apps.$appKey.content
|
|
|
|
# Add FOSS label after the name if FOSS
|
|
if ($Apps.$appKey.foss -eq $true) {
|
|
$fossRun = [System.Windows.Documents.Run]::new(" $([char]0x25CF)")
|
|
$fossRun.Foreground = [Windows.Media.SolidColorBrush]::new([Windows.Media.Color]::FromRgb(110, 255, 114))
|
|
$fossRun.FontSize = 11.5
|
|
|
|
[void]$appName.Inlines.Add($fossRun)
|
|
}
|
|
$checkBox.Content = $appName
|
|
|
|
# Add accessibility properties to make the elements screen reader friendly
|
|
$checkBox.SetValue([Windows.Automation.AutomationProperties]::NameProperty, $Apps.$appKey.content)
|
|
$border.SetValue([Windows.Automation.AutomationProperties]::NameProperty, $Apps.$appKey.content)
|
|
|
|
$border.Child = $checkBox
|
|
# Add the border to the corresponding Category
|
|
$TargetElement.Children.Add($border) | Out-Null
|
|
return $checkbox
|
|
}
|