src/GUI/DialogLoader.ps1

$Script:dialogInfo = @{}

."$PSScriptRoot/../LocaleLoader.ps1" -Localize $Localize -LoadLocaleData {
    param (
        [string]$Localize
    )
    $Xml = [xml](Get-Content "$LocalizeDir\$Localize.fbs" -Encoding utf8)
    $Script:MainForm = $Xml.Data.Form.OuterXml
    $Xml.Data.ChildNodes | Where-Object { $_.Name -match 'Dialog$' } | ForEach-Object {
        $Script:dialogInfo.Add($_.Name, $_.OuterXml)
    }
    $Script:LocalizeData = &"$LocalizeDir\$Localize.ps1"
} -CheckLocaleData {
    $null -ne $Script:MainForm -and $Script:dialogInfo.Count -gt 0 -and $null -ne $Script:LocalizeData
} -FaildLoadLocaleData {
    param (
        [string]$Localize
    )
    [System.Windows.Forms.MessageBox]::Show("Failed to load locale data $Localize`nSee $LocalizeDir/README.md for how to add custom locale.", "ps12exe GUI locale Error", [System.Windows.Forms.MessageBoxButtons]::OK, [System.Windows.Forms.MessageBoxIcon]::Warning)
} | Out-Null

try {
    ConvertFrom-WinFormsXML -Reference refs -Suppress -Xml $Script:MainForm

    foreach ($key in $Script:dialogInfo.Keys) {
        ConvertFrom-WinFormsXML -Xml $Script:dialoginfo[$key] | Set-Variable -Name $key -Scope Script
    }
}
catch { Update-ErrorLog -ErrorRecord $_ -Message "Exception encountered during Form Initialization." }