From 0467c3a7c85b35d06e8cc838b6cd88aa353e2d30 Mon Sep 17 00:00:00 2001 From: MyDrift Date: Sun, 29 Sep 2024 09:32:10 +0200 Subject: [PATCH] move scrollviewer & app buttons into uielements logic --- functions/public/Invoke-WPFUIElements.ps1 | 74 +++++++++++++++++++++-- xaml/inputXML.xaml | 26 ++------ 2 files changed, 73 insertions(+), 27 deletions(-) diff --git a/functions/public/Invoke-WPFUIElements.ps1 b/functions/public/Invoke-WPFUIElements.ps1 index 80c841c3..70dc6e9d 100644 --- a/functions/public/Invoke-WPFUIElements.ps1 +++ b/functions/public/Invoke-WPFUIElements.ps1 @@ -110,14 +110,78 @@ function Invoke-WPFUIElements { $border.style = $borderstyle $targetGrid.Children.Add($border) | Out-Null - # Create a StackPanel inside the Border + # Use a DockPanel to contain both the top buttons and the main content + $dockPanelContainer = New-Object Windows.Controls.DockPanel + $border.Child = $dockPanelContainer + + # Check if configVariable equals $sync.configs.applications + if ($configVariable -eq $sync.configs.applications) { + # Create the StackPanel with buttons at the top inside the border + $stackPanelTop = New-Object Windows.Controls.StackPanel + $stackPanelTop.Background = $window.FindResource("MainBackgroundColor") # Dynamic resource for the background + $stackPanelTop.Orientation = "Horizontal" + $stackPanelTop.HorizontalAlignment = "Left" + $stackPanelTop.VerticalAlignment = "Top" + $stackPanelTop.Margin = $window.FindResource("TabContentMargin") # Dynamic resource for the margin + + # Create the buttons and add them to the StackPanel + $installButton = New-Object Windows.Controls.Button + $installButton.Name = "WPFInstall" + $installButton.Content = " Install/Upgrade Selected" + $installButton.Margin = New-Object Windows.Thickness(2) + $stackPanelTop.Children.Add($installButton) | Out-Null + + $upgradeButton = New-Object Windows.Controls.Button + $upgradeButton.Name = "WPFInstallUpgrade" + $upgradeButton.Content = " Upgrade All" + $upgradeButton.Margin = New-Object Windows.Thickness(2) + $stackPanelTop.Children.Add($upgradeButton) | Out-Null + + $uninstallButton = New-Object Windows.Controls.Button + $uninstallButton.Name = "WPFUninstall" + $uninstallButton.Content = " Uninstall Selected" + $uninstallButton.Margin = New-Object Windows.Thickness(2) + $stackPanelTop.Children.Add($uninstallButton) | Out-Null + + $getInstalledButton = New-Object Windows.Controls.Button + $getInstalledButton.Name = "WPFGetInstalled" + $getInstalledButton.Content = " Get Installed" + $getInstalledButton.Margin = New-Object Windows.Thickness(2) + $stackPanelTop.Children.Add($getInstalledButton) | Out-Null + + $clearSelectionButton = New-Object Windows.Controls.Button + $clearSelectionButton.Name = "WPFClearInstallSelection" + $clearSelectionButton.Content = " Clear Selection" + $clearSelectionButton.Margin = New-Object Windows.Thickness(2) + $stackPanelTop.Children.Add($clearSelectionButton) | Out-Null + + # Dock the top StackPanel at the top of the DockPanel + [Windows.Controls.DockPanel]::SetDock($stackPanelTop, [Windows.Controls.Dock]::Top) + $dockPanelContainer.Children.Add($stackPanelTop) | Out-Null + } + + # Create a ScrollViewer to contain the main content (excluding buttons) + $scrollViewer = New-Object Windows.Controls.ScrollViewer + $scrollViewer.VerticalScrollBarVisibility = 'Auto' + $scrollViewer.HorizontalScrollBarVisibility = 'Auto' + $scrollViewer.HorizontalAlignment = 'Stretch' + $scrollViewer.VerticalAlignment = 'Stretch' + + # Create a StackPanel inside the ScrollViewer for application content $stackPanel = New-Object Windows.Controls.StackPanel - $stackPanel.Background = [Windows.Media.Brushes]::Transparent - $stackPanel.SnapsToDevicePixels = $true - $stackPanel.VerticalAlignment = "Stretch" # Ensure the stack panel stretches vertically - $border.Child = $stackPanel + $stackPanel.Orientation = "Vertical" + $stackPanel.HorizontalAlignment = 'Stretch' + $stackPanel.VerticalAlignment = 'Stretch' + + # Add the StackPanel to the ScrollViewer + $scrollViewer.Content = $stackPanel + + # Add the ScrollViewer to the DockPanel (it will be below the top buttons StackPanel) + [Windows.Controls.DockPanel]::SetDock($scrollViewer, [Windows.Controls.Dock]::Bottom) + $dockPanelContainer.Children.Add($scrollViewer) | Out-Null $panelcount++ + # Now proceed with adding category labels and entries to $stackPanel (as before) foreach ($category in ($organizedData[$panelKey].Keys | Sort-Object)) { $count++ diff --git a/xaml/inputXML.xaml b/xaml/inputXML.xaml index cba779f1..6b4594b7 100644 --- a/xaml/inputXML.xaml +++ b/xaml/inputXML.xaml @@ -917,23 +917,7 @@ - - - - - -