Răsfoiți Sursa

add main loop

Tobias Simetsreiter 4 ani în urmă
părinte
comite
6c5e8b6d73

+ 26 - 21
WinImager/WinImager.ps1

@@ -5,33 +5,38 @@ $env:WINIMAGER = $PSCommandPath
 $env:PSLIB = [System.IO.Path]::Combine($PSScriptRoot, "LibWinImager.psm1")
 Import-Module -Name $env:PSLIB
 
-if ($Script -eq $null){
+while ($true){
 
-    $items = Get-ChildItem ([System.IO.Path]::Combine($PSScriptRoot,"bin"))
-    $items
+    if ($Script -eq $null){
+        $items = Get-ChildItem ([System.IO.Path]::Combine($PSScriptRoot,"bin"))
+        $items
 
-    ""
+        ""
 
-    $dia = GuiSelectDialog ($items|foreach {$_.Name}) -Title "Select Command" -Label "Select Command"
-    $result = $dia.form.ShowDialog()
-    $result
+        $dia = GuiSelectDialog ($items|foreach {$_.Name}) -Title "Select Command" -Label "Select Command"
+        $result = $dia.form.ShowDialog()
+        $result
 
-    if ($result -eq "OK"){
-        $Script = ($items| where {$_.Name -eq $dia.listbox.selecteditem}).FullName
-    } else {
-        "Abort"
-        Break
+        if ($result -eq "OK"){
+            $Script = ($items| where {$_.Name -eq $dia.listbox.selecteditem}).FullName
+        } else {
+            "Abort"
+            Break
+        }
     }
 
-}
-
-$logpath = LogFilePath ([io.path]::GetFileNameWithoutExtension($Script))
-$logpath
+    $logpath = LogFilePath ([io.path]::GetFileNameWithoutExtension($Script))
+    $logpath
 
-try{
-    &$Script | Tee-Object -FilePath $logpath
-} catch {
-    Write-Error $_.Exception | Tee-Object -FilePath $logpath -Append
-    pause
+    try{
+        &$Script | Tee-Object -FilePath $logpath
+        $Script = $null
+    } catch {
+        Write-Error $_.Exception | Tee-Object -FilePath $logpath -Append
+        "An error Occurred. Save $logpath before continuing..."
+        pause
+        Break
+    }
 }
 
+

+ 3 - 2
WinImager/lib/wpf.psm1

@@ -137,8 +137,9 @@ Function TextDialog
 
 	$Form = $MyApp.Form
 	$MyApp.WPF.btnDialogOk.Add_Click({
-		$MyApp.Form.DialogResult = $true
-		$MyApp.Form.Close()
+        $app = $Using:MyApp
+		$app.Form.DialogResult = $true
+		$app.Form.Close()
 	})
 	if ($MyApp.Form.ShowDialog()){
 		$MyApp.WPF.txtAnswer.Text

BIN
WinImager/mingw/fdisk.exe


BIN
WinImager/mingw/sfdisk.exe


BIN
test/Get-Listbox.ps1


BIN
test/Show-Control.ps1


+ 24 - 0
test/testwpf2.ps1

@@ -0,0 +1,24 @@
+#XAML Code kann zwischen @" und "@ ersetzt werden:
+[xml]$XAML = @"
+<Window x:Class="WpfApplication.MainWindow"
+xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+xmlns:local="clr-namespace:WpfApplication"
+mc:Ignorable="d"
+Title="MainWindow" Height="768" Width="1024">
+        <StackPanel x:Name="StackPanel" Margin = "50,50,50,50">                                          
+        </StackPanel>
+</Window>
+"@ -replace 'mc:Ignorable="d"','' -replace "x:N",'N' -replace '^<Win.*', '<Window' #-replace wird benötigt, wenn XAML aus Visual Studio kopiert wird.
+
+
+Function TestWPF(){
+    #XAML laden
+    [void][System.Reflection.Assembly]::LoadWithPartialName('presentationframework')
+
+
+    [Windows.Markup.XamlReader]::Load( (New-Object System.Xml.XmlNodeReader $XAML) )
+
+}