mirror of
https://github.com/ChrisTitusTech/winutil.git
synced 2025-04-01 17:12:09 +00:00
* initial visual implementation - remove idiotic border logic from Invoke-WPFUIElements - add "application" type & style - add "radiobutton" type & style - remove prefer choco checkbox (did not modify logic outside of xaml, so i currently get errors due to that) * add image support via choco db - add image support via choco db - backup image should be taken from unigetui db - backup backup image is some random package one rn * add compatibility for every app * performance improvements - move get logo to runspace (not working rn) - readd choco checkbox to mute errors * add border name * fix scrollviewer & reimplement logo logic into ui elements * noimage fix * add notes * cleanup & remove nav from search effects * add button action * rename buttons * add sort by options * move scrollviewer & app buttons into uielements logic * format logic for app action buttons * fix app action button logic & move get & clear to sidepanel * change category of new buttons * add virtualisation & layouting fixes - commented out prefer choco logic - add virtualisation - layouting improvements * fix radiobuttons * LETS GOOO (#12) * Add Selected Apps Label, Reshuffel the nesting of the checkbox and the label to be able to reference the name from the actual checkbox * Add visual selection and allow click on the whole app section * Fix Theme definition to work with theme change * Fix Highlight on if label or icon is clicked * change applications.json to powershell object list and refactor UI Creation logic * Optimization and Add Collapsable Categories * Add Button functionality for install, uninstall, info, install selected, uninstall selected, clear and implement search * Rest application.json to Main * Reset Compile to main * Pretty much revamp_apps but without changes to applications.json * Small fixes * Add Get-Installed Loading Indicator + small fixes * Re-Add Choco Preference * Remove Logic from Invoke-WPFUIElements that is Moved to Invoke-WPFUIApps * Remove Alphabetical List, Sort Apps inside Category Alphabetically * Small fixes to the Get-Installed function and formatting stuff * Style for Hidden Checkbox but visible Content * Hotfix for Category Expansion during search * Replace Category Label with ToggleButton, Fix Search Bugs * First Try at implementing a Compact Mode for the App page * Fix Whitespace when using Search * Keep the search status when switching between compact and full view * Fix weird buggy behaviour in regards to switching the Display Mode and using Show-SelectedOnly * Improve Togglebutton - add initial implementation of togglebutton style - add togglebuttons to appnavigation.json - refractor UI element creation for Togglebutton - commit preprocessing changes * Togglebutton fixes - move dot to the right in style - cleanup code - fix arrangement of content * Add logic to the new ToggleButtons in the sidebar of the install tab and remove old buttons * reorder buttons & fix Togglebutton toggling if action not possible - reorder getinstalled and clearselection - set togglebutton back if no app is selected * Slight modificatoin to togglebutton style & fix sidebar width * Add hover effect for the app tiles * ToggleButtonStyle animation - add hover animation to white dot - remove IsPressed trigger - improve some comments * disable show selected filter on clear selection * Add a Popup Dropdown for Selected Apps with the ability to deselect them * Split up the functions to seperate files like the rest of the repo * Fix Bug where Scrollviewer dosnt work * disable autofallback checkbox * run preprocessing * remove installation scope - remove all 3 radiobuttons from appnavigation.json * remove scrollviewer from WPFUIElements * toggle showselected on GetInstalled * remove unused autofallback --------- Co-authored-by: Martin Wiethan <47688561+Marterich@users.noreply.github.com> Co-authored-by: Chris Titus <contact@christitus.com>
84 lines
3.8 KiB
PowerShell
84 lines
3.8 KiB
PowerShell
function Invoke-WPFInstall {
|
|
param (
|
|
[Parameter(Mandatory=$false)]
|
|
[PSObject[]]$PackagesToInstall = $($sync.selectedApps | Foreach-Object { $sync.configs.applicationsHashtable.$_ })
|
|
)
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Installs the selected programs using winget, if one or more of the selected programs are already installed on the system, winget will try and perform an upgrade if there's a newer version to install.
|
|
|
|
#>
|
|
|
|
if($sync.ProcessRunning) {
|
|
$msg = "[Invoke-WPFInstall] An Install process is currently running."
|
|
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning)
|
|
return
|
|
}
|
|
|
|
if ($PackagesToInstall.Count -eq 0) {
|
|
$WarningMsg = "Please select the program(s) to install or upgrade"
|
|
[System.Windows.MessageBox]::Show($WarningMsg, $AppTitle, [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning)
|
|
return
|
|
}
|
|
$ChocoPreference = $($sync.ChocoRadioButton.IsChecked)
|
|
$installHandle = Invoke-WPFRunspace -ParameterList @(("PackagesToInstall", $PackagesToInstall),("ChocoPreference", $ChocoPreference)) -DebugPreference $DebugPreference -ScriptBlock {
|
|
param($PackagesToInstall, $ChocoPreference, $DebugPreference)
|
|
if ($PackagesToInstall.count -eq 1) {
|
|
$sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -state "Indeterminate" -value 0.01 -overlay "logo" })
|
|
} else {
|
|
$sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -state "Normal" -value 0.01 -overlay "logo" })
|
|
}
|
|
$packagesWinget, $packagesChoco = {
|
|
$packagesWinget = [System.Collections.ArrayList]::new()
|
|
$packagesChoco = [System.Collections.ArrayList]::new()
|
|
|
|
foreach ($package in $PackagesToInstall) {
|
|
if ($ChocoPreference) {
|
|
if ($package.choco -eq "na") {
|
|
$packagesWinget.add($package.winget)
|
|
Write-Host "Queueing $($package.winget) for Winget install"
|
|
} else {
|
|
$null = $packagesChoco.add($package.choco)
|
|
Write-Host "Queueing $($package.choco) for Chocolatey install"
|
|
}
|
|
}
|
|
else {
|
|
if ($package.winget -eq "na") {
|
|
$packagesChoco.add($package.choco)
|
|
Write-Host "Queueing $($package.choco) for Chocolatey install"
|
|
} else {
|
|
$null = $packagesWinget.add($($package.winget))
|
|
Write-Host "Queueing $($package.winget) for Winget install"
|
|
}
|
|
}
|
|
}
|
|
return $packagesWinget, $packagesChoco
|
|
}.Invoke($PackagesToInstall)
|
|
|
|
try {
|
|
$sync.ProcessRunning = $true
|
|
$errorPackages = @()
|
|
if($packagesWinget.Count -gt 0) {
|
|
Install-WinUtilWinget
|
|
Install-WinUtilProgramWinget -Action Install -Programs $packagesWinget
|
|
|
|
}
|
|
if($packagesChoco.Count -gt 0) {
|
|
Install-WinUtilChoco
|
|
Install-WinUtilProgramChoco -Action Install -Programs $packagesChoco
|
|
}
|
|
Write-Host "==========================================="
|
|
Write-Host "-- Installs have finished ---"
|
|
Write-Host "==========================================="
|
|
$sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -state "None" -overlay "checkmark" })
|
|
} catch {
|
|
Write-Host "==========================================="
|
|
Write-Host "Error: $_"
|
|
Write-Host "==========================================="
|
|
$sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -state "Error" -overlay "warning" })
|
|
}
|
|
$sync.ProcessRunning = $False
|
|
}
|
|
}
|