Init-Files/WindowsPowershell/Modules/PowerBoots/PowerBoots.psm1
2012-03-22 07:16:09 -07:00

151 lines
17 KiB
PowerShell
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

##Requires -Version 2.0
####################################################################################################
$PowerBootsPath = $PSScriptRoot
$ParameterHashCache = @{}
$DependencyProperties = @{}
if(Test-Path $PowerBootsPath\DependencyProperties.clixml) {
$DependencyProperties = Import-CliXml $PowerBootsPath\DependencyProperties.clixml
}
$LoadedAssemblies = @();
$null = [Reflection.Assembly]::Load( "PresentationFramework, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" )
## Dot-Source all of these
. "$PowerBootsPath\UtilityFunctions.ps1"
. "$PowerBootsPath\ContentProperties.ps1"
. "$PowerBootsPath\Add-BootsFunction.ps1"
. "$PowerBootsPath\Set-DependencyProperty.ps1"
. "$PowerBootsPath\New-BootsImage.ps1"
# This is #Requires -STA
$IsSTA = [System.Threading.Thread]::CurrentThread.ApartmentState -eq "STA"
if( !$IsSTA ) {
Write-Warning "Out-BootsWindow disabled in MTA mode. (Must run PowerShell with -STA switch to enable)"
} else { # Requires -STA
. "$PowerBootsPath\Out-BootsWindow.ps1"
}
## Put ths scripts into the path
[string[]]$path = ${Env:Path}.Split(";")
if($path -notcontains "$PowerBootsPath\Functions\") {
$path += "$PowerBootsPath\Functions\"
${Env:Path} = [string]::Join(";", $path)
}
## Generate aliases for all the functions ....
$Scripts = Get-ChildItem "$PowerBootsPath\Functions\New-*.ps1" -ErrorAction 0
if($Scripts) {
foreach($script in $Scripts) {
$TypeName = $script.Name -replace 'New-(.*).ps1','$1'
# Set-Alias -Name "New-$TypeName" $Script.FullName -EA "SilentlyContinue" -EV +ErrorList
Set-Alias -Name "$($TypeName.Split('.')[-1])" "New-$TypeName" -EA "SilentlyContinue" -EV +ErrorList
}
} else {
& "$PowerBootsPath\Reset-DefaultBoots.ps1"
## Generate aliases for all the functions ....
foreach($script in Get-ChildItem "$PowerBootsPath\Functions\New-*.ps1" -ErrorAction 0) {
$TypeName = $script.Name -replace 'New-(.*).ps1','$1'
# Set-Alias -Name "New-$TypeName" $Script.FullName -EA "SilentlyContinue" -EV +ErrorList
Set-Alias -Name "$($TypeName.Split('.')[-1])" "New-$TypeName" -EA "SilentlyContinue" -EV +ErrorList
}
}
## Extra aliases....
# A work around for the built-in "Grid" alias, call it GridPanel (which is what the class ought to be anyway?)
$errorList = @()
Set-Alias -Name GridPanel -Value "New-System.Windows.Controls.Grid" -EA "SilentlyContinue" -EV +ErrorList
if($ErrorList.Count) { Write-Warning """GridPanel"" alias not created, you must use New-System.Windows.Controls.Grid" }
$errorList = @()
Set-Alias -Name Boots -Value "New-BootsWindow" -EA "SilentlyContinue" -EV +ErrorList
if($ErrorList.Count) { Write-Warning "Boots alias not created, you must use the full New-BootsWindow function name!" }
$errorList = @()
Set-Alias -Name BootsImage -Value "Out-BootsImage" -EA "SilentlyContinue" -EV +ErrorList
if($ErrorList.Count) { Write-Warning "BootsImage alias not created, you must use the full Out-BootsImage function name!" }
Set-Alias -Name obi -Value "Out-BootsImage" -EA "SilentlyContinue"
Set-Alias -Name sap -Value "Set-DependencyProperty" -EA "SilentlyContinue"
Set-Alias -Name gbw -Value "Get-BootsWindow" -EA "SilentlyContinue"
Set-Alias -Name rbw -Value "Remove-BootsWindow" -EA "SilentlyContinue"
# Write-Warning "======================================================================="
# Write-Warning "== NOTICE: It is a known bug that the alias ""Grid"" will not be created."
# Write-Warning "== We create ""GridPanel"" instead, but if there are other warnings above"
# Write-Warning "== you should take note of them, as PowerBoots samples may not work."
# Write-Warning "======================================================================="
$BootsFunctions = @("Add-BootsFunction", "Set-DependencyProperty", "New-*") +
@("Get-BootsModule", "Get-BootsAssemblies", "Get-Parameter", "Get-BootsParam" ) +
@("Get-BootsContentProperty", "Add-BootsContentProperty", "Remove-BootsContentProperty") +
@("Get-BootsHelp", "Get-BootsCommand", "Out-BootsWindow", "New-BootsImage")
Export-ModuleMember -Function $BootsFunctions -Alias * -Variable IsSTA, PowerBootsPath
## Post CTP3 we have to export the submodule separately:
if($PSVersionTable.BuildVersion -ge "6.1.7100.0") {
Export-ModuleMember -Cmdlet (Get-Command -Module PoshWpf)
}
# SIG # Begin signature block
# MIILCQYJKoZIhvcNAQcCoIIK+jCCCvYCAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB
# gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR
# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUR7VEx7LrX2dfu0qSJ5DECU/S
# PHagggbgMIIG3DCCBMSgAwIBAgIJALPpqDj9wp7xMA0GCSqGSIb3DQEBBQUAMIHj
# MQswCQYDVQQGEwJVUzERMA8GA1UECBMITmV3IFlvcmsxEjAQBgNVBAcTCVJvY2hl
# c3RlcjEhMB8GA1UEChMYaHR0cDovL0h1ZGRsZWRNYXNzZXMub3JnMSgwJgYDVQQL
# Ex9TY3JpcHRpbmcgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MTcwNQYDVQQDEy5odHRw
# Oi8vSHVkZGxlZE1hc3Nlcy5vcmcgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MScwJQYJ
# KoZIhvcNAQkBFhhKYXlrdWxASHVkZGxlZE1hc3Nlcy5vcmcwHhcNMDkwMzE1MTkx
# OTE5WhcNMTAwMzE1MTkxOTE5WjCBqzELMAkGA1UEBhMCVVMxETAPBgNVBAgTCE5l
# dyBZb3JrMRIwEAYDVQQHEwlSb2NoZXN0ZXIxITAfBgNVBAoTGGh0dHA6Ly9IdWRk
# bGVkTWFzc2VzLm9yZzESMBAGA1UECxMJU2NyaXB0aW5nMRUwEwYDVQQDEwxKb2Vs
# IEJlbm5ldHQxJzAlBgkqhkiG9w0BCQEWGEpheWt1bEBIdWRkbGVkTWFzc2VzLm9y
# ZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAPfqxOG9TQN+qZjZ6KfM
# +zBK0YpjeyPL/cFgiGBhiIdYWTBtkbZydFr3IiERKRsUJ0/SKFbhf0C3Bvd/neTJ
# qiZjH4D6xkrfdLlWMmmSXXqjSt48jZp+zfCAIaF8K84e9//7lMicdVFE6VcgoATZ
# /eMKQky4JvphJpzDHYPLxLJQrKd0pjDDwspjdX5RedWkzeZBG7VfBnebLWUzgnMX
# IxRQKfFCMryQDP8weceOnJjfJEf2FYmdpsEg5EKKKbuHsQCMVTxfteKdPvh1oh05
# 1GWyPsvEPh4auJUT8pAVvrdxq+/O9KW/UV01UxjRYM1vdklNw8g7mkJTrrHjSjl7
# tuugCnJjt5kN6v/OaUtRRMR68O85bSTVGOxJGCHUKlyuuTx9tnfIgy4siFYX1Ve8
# xwaAdN3haTon3UkWzncHOq3reCIVF0luwRZu7u+TnOAnz2BRlt+rcT0O73GN20Fx
# gyN2f5VGBbw1KuS7T8XZ0TFCspUdgwAcmTGuEVJKGhVcGAvNlLx+KPc5dba4qEfs
# VZ0MssC2rALC1z61qWuucb5psHYhuD2tw1SrztywuxihIirZD+1+yKE4LsjkM1zG
# fQwDO/DQJwkdByjfB2I64p6mk36OlZAFxVfRBpXSCzdzbgKpuPsbtjkb5lGvKjE1
# JFVls1SHLJ9q80jHz6yW7juBAgMBAAGjgcgwgcUwHQYDVR0OBBYEFO0wLZyg+qGH
# Z4WO8ucEGNIdU1T9MB8GA1UdIwQYMBaAFN2N42ZweJLF1mz0j70TMxePMcUHMAkG
# A1UdEwQCMAAwEQYJYIZIAYb4QgEBBAQDAgTwMCoGA1UdJQEB/wQgMB4GCCsGAQUF
# BwMBBggrBgEFBQcDAgYIKwYBBQUHAwMwCwYDVR0PBAQDAgTwMCwGCWCGSAGG+EIB
# DQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTANBgkqhkiG9w0BAQUF
# AAOCAgEAmKihxd6KYamLG0YLvs/unUTVJ+NW3jZP16R28PpmidY/kaBFOPhYyMl2
# bBGQABe7LA5rpHFAs0F56gYETNoFk0qREVvaoz9u18VfLb0Uwqtnq0P68L4c7p2q
# V3nKmWjeI6H7BAyFuogxmMH5TGDfiqrrVSuh1LtPbkV2Wtto0SAxP0Ndyts2J8Ha
# vu/2rt0Ic5AkyD+RblFPtzkCC/MLVwSNAiDSKGRPRrLaiGxntEzR59GRyf2vwhGg
# oAXUqcJ/CVeHCP6qdSTM39Ut3RmMZHXz5qY8bvLgNYL6MtcJAx+EeUhW497alzm1
# jInXdbikIh0d/peTSDyLbjS8CPFFtS6Z56TDGMf+ouTpEA16otcWIPA8Zfjq+7n7
# iBHjeuy7ONoJ2VDNgqn9B+ft8UWRwnJbyB85T83OAGf4vyhCPz3Kg8kWxY30Bhnp
# Fayc6zQKCpn5o5T0/a0BBHwAyMfr7Lhav+61GpzzG1KfAw58N2GV8KCPKNEd3Zdz
# y07aJadroVkW5R+35mSafKRJp5pz20GDRwZQllqGH1Y/UJFEiI0Bme9ecbl2vzNp
# JjHyl/jLVzNVrBI5Zwb0lCLsykApgNY0yrwEqaiqwcxq5nkXFDhDPQvbdulihSo0
# u33fJreCm2fFyGbTuvR61goSksAvLQhvijLAzcKqWKG+laOtYpAxggOTMIIDjwIB
# ATCB8TCB4zELMAkGA1UEBhMCVVMxETAPBgNVBAgTCE5ldyBZb3JrMRIwEAYDVQQH
# EwlSb2NoZXN0ZXIxITAfBgNVBAoTGGh0dHA6Ly9IdWRkbGVkTWFzc2VzLm9yZzEo
# MCYGA1UECxMfU2NyaXB0aW5nIENlcnRpZmljYXRlIEF1dGhvcml0eTE3MDUGA1UE
# AxMuaHR0cDovL0h1ZGRsZWRNYXNzZXMub3JnIENlcnRpZmljYXRlIEF1dGhvcml0
# eTEnMCUGCSqGSIb3DQEJARYYSmF5a3VsQEh1ZGRsZWRNYXNzZXMub3JnAgkAs+mo
# OP3CnvEwCQYFKw4DAhoFAKB4MBgGCisGAQQBgjcCAQwxCjAIoAKAAKECgAAwGQYJ
# KoZIhvcNAQkDMQwGCisGAQQBgjcCAQQwHAYKKwYBBAGCNwIBCzEOMAwGCisGAQQB
# gjcCARUwIwYJKoZIhvcNAQkEMRYEFB92V5zsSwi1KlFOwTfUsPnD0RQUMA0GCSqG
# SIb3DQEBAQUABIICANZYi0/CbmXKwfAvtDz8Qu36EgoJf5aBcz6Zx6UNoOg4unXT
# 8N/0mErkJKUgOHGv3tpmhFlNMrWLBKPJXJBxxUqZg4IuKDWp96nTSatke1SfVu4U
# +aTuM3dlBQnXSr1wG1Gkk01jsXSl30i6whuzs3GclelLpSUp7BfVHh9H0n3YyqRu
# gPXlO8Oe6BpsQVpvAnUScnuf/2AAoAc0T8DM/Sll66Re9pxqAbCtA3h7/RNRpuQc
# dOmsyAULWkjqYoMtGRZfcw6QEBMoORFyeuS9CvWL8faRDGC2OFmFpydUmEglrfk4
# SwbV+7Lwy6QK8ZRSQldvlnVzEkFqW0k9erQdeNgI0D114qeWlAROaQ3jax6lUdMt
# KENMnXxX9FBsv1gNwdnnm+0o3JO0YwSQjcMWgEgkPrqrfK/f49Jh66vQPqlGbc48
# 9J3p0ktsXmPWlyf0FOQgsKETBC4YQTTfjn+9UTyPGf8D5i3KfV6AeYRc3xegMQcU
# 6ouepRDUzJ/vuEoF5vNJCNTfwfJRJM0Me3BP1a1ZnX5tJXuEJXty2TOJiSq0yaGh
# hux0Yn8z2FUgw2aKD2+2soObDyEB8jSaVKcbP+wMN/7s6rpcXCsSx5VXJih8ERuK
# fPhJZyQHKo0HeF//r1YzizVhz5bZFEwzWTpqB63GUg/apykOvMICqW2z5efI
# SIG # End signature block