From e4201aebff0be7efe916ed96cd55f06c168eee5a Mon Sep 17 00:00:00 2001 From: rbalsleyMSFT <53497092+rbalsleyMSFT@users.noreply.github.com> Date: Tue, 10 Jun 2025 20:09:13 -0700 Subject: [PATCH] Refactor UI initialization to utilize centralized state object for control management - Introduced the Initialize-UIControls function to streamline the assignment of UI control references to the centralized state object. - Removed repetitive control assignments from the window loading event, enhancing maintainability and readability. - Improved the overall structure of the UI initialization process for better consistency across the application. --- FFUDevelopment/BuildFFUVM_UI.ps1 | 155 +-------------------- FFUDevelopment/FFUUI.Core/FFUUI.Core.psm1 | 156 +++++++++++++++++++++- 2 files changed, 159 insertions(+), 152 deletions(-) diff --git a/FFUDevelopment/BuildFFUVM_UI.ps1 b/FFUDevelopment/BuildFFUVM_UI.ps1 index 964a069..017a0ca 100644 --- a/FFUDevelopment/BuildFFUVM_UI.ps1 +++ b/FFUDevelopment/BuildFFUVM_UI.ps1 @@ -1466,26 +1466,10 @@ function Update-CopyButtonState { # -------------------------------------------------------------------------- $window.Add_Loaded({ - # Assign UI elements to script variables + # Pass the state object to all initialization functions $script:uiState.Window = $window - $script:uiState.Controls.cmbWindowsRelease = $window.FindName('cmbWindowsRelease') - $script:uiState.Controls.cmbWindowsVersion = $window.FindName('cmbWindowsVersion') - $script:uiState.Controls.txtISOPath = $window.FindName('txtISOPath') - $script:uiState.Controls.btnBrowseISO = $window.FindName('btnBrowseISO') - $script:uiState.Controls.cmbWindowsArch = $window.FindName('cmbWindowsArch') - $script:uiState.Controls.cmbWindowsLang = $window.FindName('cmbWindowsLang') - $script:uiState.Controls.cmbWindowsSKU = $window.FindName('cmbWindowsSKU') - $script:uiState.Controls.cmbMediaType = $window.FindName('cmbMediaType') - $script:uiState.Controls.txtOptionalFeatures = $window.FindName('txtOptionalFeatures') - $script:uiState.Controls.featuresPanel = $window.FindName('stackFeaturesContainer') - $script:uiState.Controls.chkDownloadDrivers = $window.FindName('chkDownloadDrivers') - $script:uiState.Controls.cmbMake = $window.FindName('cmbMake') - # $script:uiState.Controls.cmbModel = $window.FindName('cmbModel') # cmbModel TextBox removed from XAML - $script:uiState.Controls.spMakeSection = $window.FindName('spMakeSection') # Updated StackPanel name - $script:uiState.Controls.btnGetModels = $window.FindName('btnGetModels') - $script:uiState.Controls.spModelFilterSection = $window.FindName('spModelFilterSection') # New StackPanel for filter - $script:uiState.Controls.txtModelFilter = $window.FindName('txtModelFilter') # New TextBox for filter - $script:uiState.Controls.lstDriverModels = $window.FindName('lstDriverModels') + Initialize-UIControls -State $script:uiState + # Set ListViewItem style to stretch content horizontally so cell templates fill the cell $itemStyleDriverModels = New-Object System.Windows.Style([System.Windows.Controls.ListViewItem]) $itemStyleDriverModels.Setters.Add((New-Object System.Windows.Setter([System.Windows.Controls.ListViewItem]::HorizontalContentAlignmentProperty, [System.Windows.HorizontalAlignment]::Stretch))) @@ -1512,136 +1496,11 @@ $window.Add_Loaded({ } } ) - $script:uiState.Controls.spDriverActionButtons = $window.FindName('spDriverActionButtons') - $script:uiState.Controls.btnSaveDriversJson = $window.FindName('btnSaveDriversJson') - $script:uiState.Controls.btnImportDriversJson = $window.FindName('btnImportDriversJson') - $script:uiState.Controls.btnDownloadSelectedDrivers = $window.FindName('btnDownloadSelectedDrivers') - $script:uiState.Controls.btnClearDriverList = $window.FindName('btnClearDriverList') - # New button - $script:uiState.Controls.chkInstallOffice = $window.FindName('chkInstallOffice') - $script:uiState.Controls.chkInstallApps = $window.FindName('chkInstallApps') - $script:uiState.Controls.OfficePathStackPanel = $window.FindName('OfficePathStackPanel') - $script:uiState.Controls.OfficePathGrid = $window.FindName('OfficePathGrid') - $script:uiState.Controls.CopyOfficeConfigXMLStackPanel = $window.FindName('CopyOfficeConfigXMLStackPanel') - $script:uiState.Controls.OfficeConfigurationXMLFileStackPanel = $window.FindName('OfficeConfigurationXMLFileStackPanel') - $script:uiState.Controls.OfficeConfigurationXMLFileGrid = $window.FindName('OfficeConfigurationXMLFileGrid') - $script:uiState.Controls.chkCopyOfficeConfigXML = $window.FindName('chkCopyOfficeConfigXML') - $script:uiState.Controls.chkLatestCU = $window.FindName('chkUpdateLatestCU') - $script:uiState.Controls.chkPreviewCU = $window.FindName('chkUpdatePreviewCU') - $script:uiState.Controls.btnCheckUSBDrives = $window.FindName('btnCheckUSBDrives') - $script:uiState.Controls.lstUSBDrives = $window.FindName('lstUSBDrives') - $script:uiState.Controls.chkSelectAllUSBDrives = $window.FindName('chkSelectAllUSBDrives') - $script:uiState.Controls.chkBuildUSBDriveEnable = $window.FindName('chkBuildUSBDriveEnable') - $script:uiState.Controls.usbSection = $window.FindName('usbDriveSection') - $script:uiState.Controls.chkSelectSpecificUSBDrives = $window.FindName('chkSelectSpecificUSBDrives') - $script:uiState.Controls.usbSelectionPanel = $window.FindName('usbDriveSelectionPanel') - $script:uiState.Controls.chkAllowExternalHardDiskMedia = $window.FindName('chkAllowExternalHardDiskMedia') - $script:uiState.Controls.chkPromptExternalHardDiskMedia = $window.FindName('chkPromptExternalHardDiskMedia') - $script:uiState.Controls.chkInstallWingetApps = $window.FindName('chkInstallWingetApps') - $script:uiState.Controls.wingetPanel = $window.FindName('wingetPanel') - $script:uiState.Controls.btnCheckWingetModule = $window.FindName('btnCheckWingetModule') - $script:uiState.Controls.txtWingetVersion = $window.FindName('txtWingetVersion') - $script:uiState.Controls.txtWingetModuleVersion = $window.FindName('txtWingetModuleVersion') - $script:uiState.Controls.applicationPathPanel = $window.FindName('applicationPathPanel') - $script:uiState.Controls.appListJsonPathPanel = $window.FindName('appListJsonPathPanel') - $script:uiState.Controls.btnBrowseApplicationPath = $window.FindName('btnBrowseApplicationPath') - $script:uiState.Controls.btnBrowseAppListJsonPath = $window.FindName('btnBrowseAppListJsonPath') - $script:uiState.Controls.chkBringYourOwnApps = $window.FindName('chkBringYourOwnApps') - $script:uiState.Controls.byoApplicationPanel = $window.FindName('byoApplicationPanel') - $script:uiState.Controls.wingetSearchPanel = $window.FindName('wingetSearchPanel') - $script:uiState.Controls.txtWingetSearch = $window.FindName('txtWingetSearch') - $script:uiState.Controls.btnWingetSearch = $window.FindName('btnWingetSearch') - $script:uiState.Controls.lstWingetResults = $window.FindName('lstWingetResults') # Set ListViewItem style to stretch content horizontally so cell templates fill the cell $itemStyleWingetResults = New-Object System.Windows.Style([System.Windows.Controls.ListViewItem]) $itemStyleWingetResults.Setters.Add((New-Object System.Windows.Setter([System.Windows.Controls.ListViewItem]::HorizontalContentAlignmentProperty, [System.Windows.HorizontalAlignment]::Stretch))) $script:uiState.Controls.lstWingetResults.ItemContainerStyle = $itemStyleWingetResults - $script:uiState.Controls.btnSaveWingetList = $window.FindName('btnSaveWingetList') - $script:uiState.Controls.btnImportWingetList = $window.FindName('btnImportWingetList') - $script:uiState.Controls.btnClearWingetList = $window.FindName('btnClearWingetList') - $script:uiState.Controls.btnDownloadSelected = $window.FindName('btnDownloadSelected') - $script:uiState.Controls.btnBrowseAppSource = $window.FindName('btnBrowseAppSource') - $script:uiState.Controls.btnBrowseFFUDevPath = $window.FindName('btnBrowseFFUDevPath') - $script:uiState.Controls.btnBrowseFFUCaptureLocation = $window.FindName('btnBrowseFFUCaptureLocation') - $script:uiState.Controls.btnBrowseOfficePath = $window.FindName('btnBrowseOfficePath') - $script:uiState.Controls.btnBrowseDriversFolder = $window.FindName('btnBrowseDriversFolder') - $script:uiState.Controls.btnBrowsePEDriversFolder = $window.FindName('btnBrowsePEDriversFolder') - $script:uiState.Controls.txtAppName = $window.FindName('txtAppName') - $script:uiState.Controls.txtAppCommandLine = $window.FindName('txtAppCommandLine') - $script:uiState.Controls.txtAppArguments = $window.FindName('txtAppArguments') - $script:uiState.Controls.txtAppSource = $window.FindName('txtAppSource') - $script:uiState.Controls.btnAddApplication = $window.FindName('btnAddApplication') - $script:uiState.Controls.btnSaveBYOApplications = $window.FindName('btnSaveBYOApplications') - $script:uiState.Controls.btnLoadBYOApplications = $window.FindName('btnLoadBYOApplications') - $script:uiState.Controls.btnClearBYOApplications = $window.FindName('btnClearBYOApplications') - $script:uiState.Controls.btnCopyBYOApps = $window.FindName('btnCopyBYOApps') - $script:uiState.Controls.lstApplications = $window.FindName('lstApplications') - $script:uiState.Controls.btnMoveTop = $window.FindName('btnMoveTop') - $script:uiState.Controls.btnMoveUp = $window.FindName('btnMoveUp') - $script:uiState.Controls.btnMoveDown = $window.FindName('btnMoveDown') - $script:uiState.Controls.btnMoveBottom = $window.FindName('btnMoveBottom') - $script:uiState.Controls.txtStatus = $window.FindName('txtStatus') # Assign txtStatus control - # Assign Progress Bar and Overall Status Text controls to script variables - $script:uiState.Controls.pbOverallProgress = $window.FindName('progressBar') # Use the correct x:Name from XAML - $script:uiState.Controls.txtOverallStatus = $window.FindName('txtStatus') # Use the correct x:Name from XAML (assuming it's txtStatus) - $script:uiState.Controls.cmbVMSwitchName = $window.FindName('cmbVMSwitchName') - $script:uiState.Controls.txtVMHostIPAddress = $window.FindName('txtVMHostIPAddress') - $script:uiState.Controls.txtCustomVMSwitchName = $window.FindName('txtCustomVMSwitchName') - $script:uiState.Controls.txtFFUDevPath = $window.FindName('txtFFUDevPath') - $script:uiState.Controls.txtCustomFFUNameTemplate = $window.FindName('txtCustomFFUNameTemplate') - $script:uiState.Controls.txtFFUCaptureLocation = $window.FindName('txtFFUCaptureLocation') - $script:uiState.Controls.txtShareName = $window.FindName('txtShareName') - $script:uiState.Controls.txtUsername = $window.FindName('txtUsername') - $script:uiState.Controls.chkCompactOS = $window.FindName('chkCompactOS') - $script:uiState.Controls.chkOptimize = $window.FindName('chkOptimize') - $script:uiState.Controls.chkAllowVHDXCaching = $window.FindName('chkAllowVHDXCaching') - $script:uiState.Controls.chkCreateCaptureMedia = $window.FindName('chkCreateCaptureMedia') - $script:uiState.Controls.chkCreateDeploymentMedia = $window.FindName('chkCreateDeploymentMedia') - $script:uiState.Controls.chkCopyAutopilot = $window.FindName('chkCopyAutopilot') - $script:uiState.Controls.chkCopyUnattend = $window.FindName('chkCopyUnattend') - $script:uiState.Controls.chkCopyPPKG = $window.FindName('chkCopyPPKG') - $script:uiState.Controls.chkCleanupAppsISO = $window.FindName('chkCleanupAppsISO') - $script:uiState.Controls.chkCleanupCaptureISO = $window.FindName('chkCleanupCaptureISO') - $script:uiState.Controls.chkCleanupDeployISO = $window.FindName('chkCleanupDeployISO') - $script:uiState.Controls.chkCleanupDrivers = $window.FindName('chkCleanupDrivers') - $script:uiState.Controls.chkRemoveFFU = $window.FindName('chkRemoveFFU') - $script:uiState.Controls.txtDiskSize = $window.FindName('txtDiskSize') - $script:uiState.Controls.txtMemory = $window.FindName('txtMemory') - $script:uiState.Controls.txtProcessors = $window.FindName('txtProcessors') - $script:uiState.Controls.txtVMLocation = $window.FindName('txtVMLocation') - $script:uiState.Controls.txtVMNamePrefix = $window.FindName('txtVMNamePrefix') - $script:uiState.Controls.cmbLogicalSectorSize = $window.FindName('cmbLogicalSectorSize') - $script:uiState.Controls.txtProductKey = $window.FindName('txtProductKey') - $script:uiState.Controls.txtOfficePath = $window.FindName('txtOfficePath') - $script:uiState.Controls.txtOfficeConfigXMLFilePath = $window.FindName('txtOfficeConfigXMLFilePath') - $script:uiState.Controls.txtDriversFolder = $window.FindName('txtDriversFolder') - $script:uiState.Controls.txtPEDriversFolder = $window.FindName('txtPEDriversFolder') - $script:uiState.Controls.chkCopyPEDrivers = $window.FindName('chkCopyPEDrivers') - $script:uiState.Controls.chkUpdateLatestCU = $window.FindName('chkUpdateLatestCU') - $script:uiState.Controls.chkUpdateLatestNet = $window.FindName('chkUpdateLatestNet') - $script:uiState.Controls.chkUpdateLatestDefender = $window.FindName('chkUpdateLatestDefender') - $script:uiState.Controls.chkUpdateEdge = $window.FindName('chkUpdateEdge') - $script:uiState.Controls.chkUpdateOneDrive = $window.FindName('chkUpdateOneDrive') - $script:uiState.Controls.chkUpdateLatestMSRT = $window.FindName('chkUpdateLatestMSRT') - $script:uiState.Controls.chkUpdatePreviewCU = $window.FindName('chkUpdatePreviewCU') - $script:uiState.Controls.txtApplicationPath = $window.FindName('txtApplicationPath') - $script:uiState.Controls.txtAppListJsonPath = $window.FindName('txtAppListJsonPath') - - # Assign Driver Checkboxes - $script:uiState.Controls.chkInstallDrivers = $window.FindName('chkInstallDrivers') - $script:uiState.Controls.chkCopyDrivers = $window.FindName('chkCopyDrivers') - $script:uiState.Controls.chkCompressDriversToWIM = $window.FindName('chkCompressDriversToWIM') - $script:uiState.Controls.chkRemoveApps = $window.FindName('chkRemoveApps') - $script:uiState.Controls.chkRemoveUpdates = $window.FindName('chkRemoveUpdates') - $script:uiState.Controls.chkUpdateLatestMicrocode = $window.FindName('chkUpdateLatestMicrocode') - - # AppsScriptVariables Controls - $script:uiState.Controls.chkDefineAppsScriptVariables = $window.FindName('chkDefineAppsScriptVariables') - $script:uiState.Controls.appsScriptVariablesPanel = $window.FindName('appsScriptVariablesPanel') - $script:uiState.Controls.txtAppsScriptKey = $window.FindName('txtAppsScriptKey') - $script:uiState.Controls.txtAppsScriptValue = $window.FindName('txtAppsScriptValue') - $script:uiState.Controls.btnAddAppsScriptVariable = $window.FindName('btnAddAppsScriptVariable') - $script:uiState.Controls.lstAppsScriptVariables = $window.FindName('lstAppsScriptVariables') + # Bind ItemsSource to the data list $script:uiState.Controls.lstAppsScriptVariables.ItemsSource = $script:uiState.Data.appsScriptVariablesDataList.ToArray() @@ -1693,9 +1552,6 @@ $window.Add_Loaded({ WriteLog "Warning: lstAppsScriptVariables.View is not a GridView. Selectable column not added, and sorting cannot be enabled." } - $script:uiState.Controls.btnRemoveSelectedAppsScriptVariables = $window.FindName('btnRemoveSelectedAppsScriptVariables') # Updated variable name - $script:uiState.Controls.btnClearAppsScriptVariables = $window.FindName('btnClearAppsScriptVariables') - # Get Windows Settings defaults and lists from helper module $script:uiState.Defaults.windowsSettingsDefaults = Get-WindowsSettingsDefaults # Get General defaults from helper module @@ -1746,7 +1602,6 @@ $window.Add_Loaded({ $window.FindName('txtUsername').Text = $script:uiState.Defaults.generalDefaults.Username $window.FindName('chkBuildUSBDriveEnable').IsChecked = $script:uiState.Defaults.generalDefaults.BuildUSBDriveEnable $window.FindName('chkCompactOS').IsChecked = $script:uiState.Defaults.generalDefaults.CompactOS - $script:uiState.Controls.chkUpdateADK = $window.FindName('chkUpdateADK') # Assign chkUpdateADK $script:uiState.Controls.chkUpdateADK.IsChecked = $script:uiState.Defaults.generalDefaults.UpdateADK # Set default for chkUpdateADK $window.FindName('chkOptimize').IsChecked = $script:uiState.Defaults.generalDefaults.Optimize $window.FindName('chkAllowVHDXCaching').IsChecked = $script:uiState.Defaults.generalDefaults.AllowVHDXCaching @@ -1842,9 +1697,7 @@ $window.Add_Loaded({ # Drivers tab defaults from General Defaults $window.FindName('txtDriversFolder').Text = $script:uiState.Defaults.generalDefaults.DriversFolder $window.FindName('txtPEDriversFolder').Text = $script:uiState.Defaults.generalDefaults.PEDriversFolder - $script:uiState.Controls.txtDriversJsonPath = $window.FindName('txtDriversJsonPath') # Assign new TextBox $script:uiState.Controls.txtDriversJsonPath.Text = $script:uiState.Defaults.generalDefaults.DriversJsonPath # Set default text - $script:uiState.Controls.btnBrowseDriversJsonPath = $window.FindName('btnBrowseDriversJsonPath') # Assign new Button $window.FindName('chkDownloadDrivers').IsChecked = $script:uiState.Defaults.generalDefaults.DownloadDrivers $window.FindName('chkInstallDrivers').IsChecked = $script:uiState.Defaults.generalDefaults.InstallDrivers $window.FindName('chkCopyDrivers').IsChecked = $script:uiState.Defaults.generalDefaults.CopyDrivers diff --git a/FFUDevelopment/FFUUI.Core/FFUUI.Core.psm1 b/FFUDevelopment/FFUUI.Core/FFUUI.Core.psm1 index f96505d..878560f 100644 --- a/FFUDevelopment/FFUUI.Core/FFUUI.Core.psm1 +++ b/FFUDevelopment/FFUUI.Core/FFUUI.Core.psm1 @@ -3834,6 +3834,159 @@ function Get-UIConfig { return $config } +# -------------------------------------------------------------------------- +# SECTION: UI Initialization Functions +# -------------------------------------------------------------------------- + +function Initialize-UIControls { + param([PSCustomObject]$State) + WriteLog "Initializing UI control references..." + $window = $State.Window + # Find all controls ONCE and store them in the state object + $State.Controls.cmbWindowsRelease = $window.FindName('cmbWindowsRelease') + $State.Controls.cmbWindowsVersion = $window.FindName('cmbWindowsVersion') + $State.Controls.txtISOPath = $window.FindName('txtISOPath') + $State.Controls.btnBrowseISO = $window.FindName('btnBrowseISO') + $State.Controls.cmbWindowsArch = $window.FindName('cmbWindowsArch') + $State.Controls.cmbWindowsLang = $window.FindName('cmbWindowsLang') + $State.Controls.cmbWindowsSKU = $window.FindName('cmbWindowsSKU') + $State.Controls.cmbMediaType = $window.FindName('cmbMediaType') + $State.Controls.txtOptionalFeatures = $window.FindName('txtOptionalFeatures') + $State.Controls.featuresPanel = $window.FindName('stackFeaturesContainer') + $State.Controls.chkDownloadDrivers = $window.FindName('chkDownloadDrivers') + $State.Controls.cmbMake = $window.FindName('cmbMake') + $State.Controls.spMakeSection = $window.FindName('spMakeSection') + $State.Controls.btnGetModels = $window.FindName('btnGetModels') + $State.Controls.spModelFilterSection = $window.FindName('spModelFilterSection') + $State.Controls.txtModelFilter = $window.FindName('txtModelFilter') + $State.Controls.lstDriverModels = $window.FindName('lstDriverModels') + $State.Controls.spDriverActionButtons = $window.FindName('spDriverActionButtons') + $State.Controls.btnSaveDriversJson = $window.FindName('btnSaveDriversJson') + $State.Controls.btnImportDriversJson = $window.FindName('btnImportDriversJson') + $State.Controls.btnDownloadSelectedDrivers = $window.FindName('btnDownloadSelectedDrivers') + $State.Controls.btnClearDriverList = $window.FindName('btnClearDriverList') + $State.Controls.chkInstallOffice = $window.FindName('chkInstallOffice') + $State.Controls.chkInstallApps = $window.FindName('chkInstallApps') + $State.Controls.OfficePathStackPanel = $window.FindName('OfficePathStackPanel') + $State.Controls.OfficePathGrid = $window.FindName('OfficePathGrid') + $State.Controls.CopyOfficeConfigXMLStackPanel = $window.FindName('CopyOfficeConfigXMLStackPanel') + $State.Controls.OfficeConfigurationXMLFileStackPanel = $window.FindName('OfficeConfigurationXMLFileStackPanel') + $State.Controls.OfficeConfigurationXMLFileGrid = $window.FindName('OfficeConfigurationXMLFileGrid') + $State.Controls.chkCopyOfficeConfigXML = $window.FindName('chkCopyOfficeConfigXML') + $State.Controls.chkLatestCU = $window.FindName('chkUpdateLatestCU') + $State.Controls.chkPreviewCU = $window.FindName('chkUpdatePreviewCU') + $State.Controls.btnCheckUSBDrives = $window.FindName('btnCheckUSBDrives') + $State.Controls.lstUSBDrives = $window.FindName('lstUSBDrives') + $State.Controls.chkSelectAllUSBDrives = $window.FindName('chkSelectAllUSBDrives') + $State.Controls.chkBuildUSBDriveEnable = $window.FindName('chkBuildUSBDriveEnable') + $State.Controls.usbSection = $window.FindName('usbDriveSection') + $State.Controls.chkSelectSpecificUSBDrives = $window.FindName('chkSelectSpecificUSBDrives') + $State.Controls.usbSelectionPanel = $window.FindName('usbDriveSelectionPanel') + $State.Controls.chkAllowExternalHardDiskMedia = $window.FindName('chkAllowExternalHardDiskMedia') + $State.Controls.chkPromptExternalHardDiskMedia = $window.FindName('chkPromptExternalHardDiskMedia') + $State.Controls.chkInstallWingetApps = $window.FindName('chkInstallWingetApps') + $State.Controls.wingetPanel = $window.FindName('wingetPanel') + $State.Controls.btnCheckWingetModule = $window.FindName('btnCheckWingetModule') + $State.Controls.txtWingetVersion = $window.FindName('txtWingetVersion') + $State.Controls.txtWingetModuleVersion = $window.FindName('txtWingetModuleVersion') + $State.Controls.applicationPathPanel = $window.FindName('applicationPathPanel') + $State.Controls.appListJsonPathPanel = $window.FindName('appListJsonPathPanel') + $State.Controls.btnBrowseApplicationPath = $window.FindName('btnBrowseApplicationPath') + $State.Controls.btnBrowseAppListJsonPath = $window.FindName('btnBrowseAppListJsonPath') + $State.Controls.chkBringYourOwnApps = $window.FindName('chkBringYourOwnApps') + $State.Controls.byoApplicationPanel = $window.FindName('byoApplicationPanel') + $State.Controls.wingetSearchPanel = $window.FindName('wingetSearchPanel') + $State.Controls.txtWingetSearch = $window.FindName('txtWingetSearch') + $State.Controls.btnWingetSearch = $window.FindName('btnWingetSearch') + $State.Controls.lstWingetResults = $window.FindName('lstWingetResults') + $State.Controls.btnSaveWingetList = $window.FindName('btnSaveWingetList') + $State.Controls.btnImportWingetList = $window.FindName('btnImportWingetList') + $State.Controls.btnClearWingetList = $window.FindName('btnClearWingetList') + $State.Controls.btnDownloadSelected = $window.FindName('btnDownloadSelected') + $State.Controls.btnBrowseAppSource = $window.FindName('btnBrowseAppSource') + $State.Controls.btnBrowseFFUDevPath = $window.FindName('btnBrowseFFUDevPath') + $State.Controls.btnBrowseFFUCaptureLocation = $window.FindName('btnBrowseFFUCaptureLocation') + $State.Controls.btnBrowseOfficePath = $window.FindName('btnBrowseOfficePath') + $State.Controls.btnBrowseDriversFolder = $window.FindName('btnBrowseDriversFolder') + $State.Controls.btnBrowsePEDriversFolder = $window.FindName('btnBrowsePEDriversFolder') + $State.Controls.txtAppName = $window.FindName('txtAppName') + $State.Controls.txtAppCommandLine = $window.FindName('txtAppCommandLine') + $State.Controls.txtAppArguments = $window.FindName('txtAppArguments') + $State.Controls.txtAppSource = $window.FindName('txtAppSource') + $State.Controls.btnAddApplication = $window.FindName('btnAddApplication') + $State.Controls.btnSaveBYOApplications = $window.FindName('btnSaveBYOApplications') + $State.Controls.btnLoadBYOApplications = $window.FindName('btnLoadBYOApplications') + $State.Controls.btnClearBYOApplications = $window.FindName('btnClearBYOApplications') + $State.Controls.btnCopyBYOApps = $window.FindName('btnCopyBYOApps') + $State.Controls.lstApplications = $window.FindName('lstApplications') + $State.Controls.btnMoveTop = $window.FindName('btnMoveTop') + $State.Controls.btnMoveUp = $window.FindName('btnMoveUp') + $State.Controls.btnMoveDown = $window.FindName('btnMoveDown') + $State.Controls.btnMoveBottom = $window.FindName('btnMoveBottom') + $State.Controls.txtStatus = $window.FindName('txtStatus') + $State.Controls.pbOverallProgress = $window.FindName('progressBar') + $State.Controls.txtOverallStatus = $window.FindName('txtStatus') + $State.Controls.cmbVMSwitchName = $window.FindName('cmbVMSwitchName') + $State.Controls.txtVMHostIPAddress = $window.FindName('txtVMHostIPAddress') + $State.Controls.txtCustomVMSwitchName = $window.FindName('txtCustomVMSwitchName') + $State.Controls.txtFFUDevPath = $window.FindName('txtFFUDevPath') + $State.Controls.txtCustomFFUNameTemplate = $window.FindName('txtCustomFFUNameTemplate') + $State.Controls.txtFFUCaptureLocation = $window.FindName('txtFFUCaptureLocation') + $State.Controls.txtShareName = $window.FindName('txtShareName') + $State.Controls.txtUsername = $window.FindName('txtUsername') + $State.Controls.chkCompactOS = $window.FindName('chkCompactOS') + $State.Controls.chkOptimize = $window.FindName('chkOptimize') + $State.Controls.chkAllowVHDXCaching = $window.FindName('chkAllowVHDXCaching') + $State.Controls.chkCreateCaptureMedia = $window.FindName('chkCreateCaptureMedia') + $State.Controls.chkCreateDeploymentMedia = $window.FindName('chkCreateDeploymentMedia') + $State.Controls.chkCopyAutopilot = $window.FindName('chkCopyAutopilot') + $State.Controls.chkCopyUnattend = $window.FindName('chkCopyUnattend') + $State.Controls.chkCopyPPKG = $window.FindName('chkCopyPPKG') + $State.Controls.chkCleanupAppsISO = $window.FindName('chkCleanupAppsISO') + $State.Controls.chkCleanupCaptureISO = $window.FindName('chkCleanupCaptureISO') + $State.Controls.chkCleanupDeployISO = $window.FindName('chkCleanupDeployISO') + $State.Controls.chkCleanupDrivers = $window.FindName('chkCleanupDrivers') + $State.Controls.chkRemoveFFU = $window.FindName('chkRemoveFFU') + $State.Controls.txtDiskSize = $window.FindName('txtDiskSize') + $State.Controls.txtMemory = $window.FindName('txtMemory') + $State.Controls.txtProcessors = $window.FindName('txtProcessors') + $State.Controls.txtVMLocation = $window.FindName('txtVMLocation') + $State.Controls.txtVMNamePrefix = $window.FindName('txtVMNamePrefix') + $State.Controls.cmbLogicalSectorSize = $window.FindName('cmbLogicalSectorSize') + $State.Controls.txtProductKey = $window.FindName('txtProductKey') + $State.Controls.txtOfficePath = $window.FindName('txtOfficePath') + $State.Controls.txtOfficeConfigXMLFilePath = $window.FindName('txtOfficeConfigXMLFilePath') + $State.Controls.txtDriversFolder = $window.FindName('txtDriversFolder') + $State.Controls.txtPEDriversFolder = $window.FindName('txtPEDriversFolder') + $State.Controls.chkCopyPEDrivers = $window.FindName('chkCopyPEDrivers') + $State.Controls.chkUpdateLatestCU = $window.FindName('chkUpdateLatestCU') + $State.Controls.chkUpdateLatestNet = $window.FindName('chkUpdateLatestNet') + $State.Controls.chkUpdateLatestDefender = $window.FindName('chkUpdateLatestDefender') + $State.Controls.chkUpdateEdge = $window.FindName('chkUpdateEdge') + $State.Controls.chkUpdateOneDrive = $window.FindName('chkUpdateOneDrive') + $State.Controls.chkUpdateLatestMSRT = $window.FindName('chkUpdateLatestMSRT') + $State.Controls.chkUpdatePreviewCU = $window.FindName('chkUpdatePreviewCU') + $State.Controls.txtApplicationPath = $window.FindName('txtApplicationPath') + $State.Controls.txtAppListJsonPath = $window.FindName('txtAppListJsonPath') + $State.Controls.chkInstallDrivers = $window.FindName('chkInstallDrivers') + $State.Controls.chkCopyDrivers = $window.FindName('chkCopyDrivers') + $State.Controls.chkCompressDriversToWIM = $window.FindName('chkCompressDriversToWIM') + $State.Controls.chkRemoveApps = $window.FindName('chkRemoveApps') + $State.Controls.chkRemoveUpdates = $window.FindName('chkRemoveUpdates') + $State.Controls.chkUpdateLatestMicrocode = $window.FindName('chkUpdateLatestMicrocode') + $State.Controls.chkDefineAppsScriptVariables = $window.FindName('chkDefineAppsScriptVariables') + $State.Controls.appsScriptVariablesPanel = $window.FindName('appsScriptVariablesPanel') + $State.Controls.txtAppsScriptKey = $window.FindName('txtAppsScriptKey') + $State.Controls.txtAppsScriptValue = $window.FindName('txtAppsScriptValue') + $State.Controls.btnAddAppsScriptVariable = $window.FindName('btnAddAppsScriptVariable') + $State.Controls.lstAppsScriptVariables = $window.FindName('lstAppsScriptVariables') + $State.Controls.btnRemoveSelectedAppsScriptVariables = $window.FindName('btnRemoveSelectedAppsScriptVariables') + $State.Controls.btnClearAppsScriptVariables = $window.FindName('btnClearAppsScriptVariables') + $State.Controls.txtDriversJsonPath = $window.FindName('txtDriversJsonPath') + $State.Controls.btnBrowseDriversJsonPath = $window.FindName('btnBrowseDriversJsonPath') + $State.Controls.chkUpdateADK = $window.FindName('chkUpdateADK') +} + # -------------------------------------------------------------------------- # SECTION: Module Export # -------------------------------------------------------------------------- @@ -3866,4 +4019,5 @@ Invoke-ParallelProcessing, Update-ListViewItemStatus, Update-OverallProgress, Compress-DriverFolderToWim, -Get-AvailableSkusForRelease +Get-AvailableSkusForRelease, +Initialize-UIControls