# encoding: ascii # api: powershell # title: Snippet Compiler # description: Fixed bug with output textbox (other improvements are in progress). # version: 3.5 # type: script # author: greg zakharov # license: CC0 # function: Invoke-Atom # x-poshcode-id: 4079 # x-archived: 2013-04-10T00:24:18 # x-published: 2013-04-06T12:20:00 # # #Required 2.0 $def = $(if ((gi .).FullName -eq (gi .).Root) { ([string](gi .).Root).TrimEnd("\") } else { (gi .).FullName } ) ################################################################################################## $mnuOpen_Click= { (New-Object Windows.Forms.OpenFileDialog) | % { $_.FileName = "source" $_.Filter = "C# (*.cs)|*.cs" $_.InitialDirectory = $def if ($_.ShowDialog() -eq [Windows.Forms.DialogResult]::OK) { $sr = New-Object IO.StreamReader $_.FileName $txtEdit.Text = $sr.ReadToEnd() $sr.Close() } } } $mnuFont_Click= { (New-Object Windows.Forms.FontDialog) | % { $_.Font = "Lucida Console" $_.MinSize = 10 $_.MaxSize = 12 $_.ShowEffects = $false if ($_.ShowDialog() -eq [Windows.Forms.DialogResult]::OK) { $txtEdit.Font = $_.Font } } } $mnuOpaF_Click= { $frmMain.Opacity = 1 $cur.Checked = $false $mnuOpaF.Checked = $true $cur = $mnuOpaF } $mnuWrap_Click= { $toggle =! $mnuWrap.Checked $mnuWrap.Checked = $toggle $txtEdit.WordWrap = $toggle } $tbTools_ButtonClick= { switch ($_.Button.Tag) { "Atom" { Invoke-Atom; break } "Progress" { Show-Panel $mnuToS1 $scSplt1; break } "Params" { Show-Panel $mnuToS2 $scSplt2; break } "Build" { Invoke-Builder; break } "BuildEx" { Start-AfterBuilding; break } "Exit" { $frmMain.Close(); break } } } $cboPlat_SelectedIndexChanged= { switch ($cboPlat.SelectedIndex) { "0" { $lboRefs.Items.Remove("`"System.Core.dll`""); break } "1" { $lboRefs.Items.Add("`"System.Core.dll`""); break } } } $chkExec_Click= { switch ($chkExec.Checked) { $true { $txtIOut.Text = $def + '\app.exe' $chkWApp.Enabled = $true $chkIMem.Enabled = $false $mnuBnRA.Enabled = $true $btnBnRA.Enabled = $true break } $false { $txtIOut.Text = $def + '\lib.dll' $chkWApp.Enabled = $false $chkIMem.Enabled = $true $mnuBnRA.Enabled = $false $btnBnRA.Enabled = $false break } } } $chkWApp_Click= { switch ($chkWApp.Checked) { $true { $lboRefs.Items.AddRange(@("`"System.Drawing.dll`"", "`"System.Windows.Forms.dll`"")) break } $false { $lboRefs.Items.Remove("`"System.Windows.Forms.dll`"") $lboRefs.Items.Remove("`"System.Drawing.dll`"") break } } } $mnuICnM_Click= { $script:buff = $lboRefs.SelectedItem $lboRefs.Items.Remove($lboRefs.SelectedItem) } $mnuIIns_Click= { (New-Object Windows.Forms.OpenFileDialog) | % { $_.Filter = "PE File (*.dll)|*.dll" $_.InitialDirectory = [Runtime.InteropServices.RuntimeEnvironment]::GetRuntimeDirectory() if ($_.ShowDialog() -eq [Windows.Forms.DialogResult]::OK) { $lboRefs.Items.Add('"' + (Split-Path -leaf $_.FileName) + '"') } } } $frmMain_Load= { $txtIOut.Text = $def + '\app.exe' $sbPnl_2.Text = "Str: 1, Col: 0" $lboRefs.Items.Add("`"System.dll`"") } ################################################################################################## function frmMain_Show { Add-Type -AssemblyName System.Windows.Forms [Windows.Forms.Application]::EnableVisualStyles() $ico = [Drawing.Icon]::ExtractAssociatedIcon($($PSHome + '\powershell_ise.exe')) $cdcp = New-Object CodeDom.Compiler.CompilerParameters $dict = New-Object "Collections.Generic.Dictionary[String, String]" $dict.Add("CompilerVersion", "v3.5") $frmMain = New-Object Windows.Forms.Form $mnuMain = New-Object Windows.Forms.MainMenu $mnuFile = New-Object Windows.Forms.MenuItem $mnuAtom = New-Object Windows.Forms.MenuItem $mnuOpen = New-Object Windows.Forms.MenuItem $mnuEmp1 = New-Object Windows.Forms.MenuItem $mnuExit = New-Object Windows.Forms.MenuItem $mnuEdit = New-Object Windows.Forms.MenuItem $mnuUndo = New-Object Windows.Forms.MenuItem $mnuEmp2 = New-Object Windows.Forms.MenuItem $mnuCopy = New-Object Windows.Forms.MenuItem $mnuPast = New-Object Windows.Forms.MenuItem $mnuICut = New-Object Windows.Forms.MenuItem $mnuEmp3 = New-Object Windows.Forms.MenuItem $mnuSAll = New-Object Windows.Forms.MenuItem $mnuView = New-Object Windows.Forms.MenuItem $mnuFont = New-Object Windows.Forms.MenuItem $mnuEmp4 = New-Object Windows.Forms.MenuItem $mnuOpac = New-Object Windows.Forms.MenuItem $mnuOp50 = New-Object Windows.Forms.MenuItem $mnuOp60 = New-Object Windows.Forms.MenuItem $mnuOp70 = New-Object Windows.Forms.MenuItem $mnuOp80 = New-Object Windows.Forms.MenuItem $mnuOp90 = New-Object Windows.Forms.MenuItem $mnuOpaF = New-Object Windows.Forms.MenuItem $mnuTgls = New-Object Windows.Forms.MenuItem $mnuWrap = New-Object Windows.Forms.MenuItem $mnuToS1 = New-Object Windows.Forms.MenuItem $mnuToS2 = New-Object Windows.Forms.MenuItem $mnuMake = New-Object Windows.Forms.MenuItem $mnuBAsm = New-Object Windows.Forms.MenuItem $mnuBnRA = New-Object Windows.Forms.MenuItem $mnuHelp = New-Object Windows.Forms.MenuItem $mnuInfo = New-Object Windows.Forms.MenuItem $tbTools = New-Object Windows.Forms.ToolBar $btnAtom = New-Object Windows.Forms.ToolBarButton $btnToS1 = New-Object Windows.Forms.ToolBarButton $btnMake = New-Object Windows.Forms.ToolBarButton $btnBAsm = New-Object Windows.Forms.ToolBarButton $btnBnRA = New-Object Windows.Forms.ToolBarButton $btnExit = New-Object Windows.Forms.ToolBarButton $scSplt1 = New-Object Windows.Forms.SplitContainer $scSplt2 = New-Object Windows.Forms.SplitContainer $lstView = New-Object Windows.Forms.ListView $chPoint = New-Object Windows.Forms.ColumnHeader $chError = New-Object Windows.Forms.ColumnHeader $chCause = New-Object Windows.Forms.ColumnHeader $txtEdit = New-Object Windows.Forms.RichTextBox $gboMake = New-Object Windows.Forms.GroupBox $lblLab1 = New-Object Windows.Forms.Label $cboPlat = New-Object Windows.Forms.ComboBox $chkExec = New-Object Windows.Forms.CheckBox $chkWApp = New-Object Windows.Forms.CheckBox $chkIDbg = New-Object Windows.Forms.CheckBox $chkIMem = New-Object Windows.Forms.CheckBox $lblLab2 = New-Object Windows.Forms.Label $txtIOut = New-Object Windows.Forms.TextBox $lblLab3 = New-Object Windows.Forms.Label $lboRefs = New-Object Windows.Forms.ListBox $sbPanel = New-Object Windows.Forms.StatusBar $sbPnl_1 = New-Object Windows.Forms.StatusBarPanel $sbPnl_2 = New-Object Windows.Forms.StatusBarPanel $imgList = New-Object Windows.Forms.ImageList $mnuRefs = New-Object Windows.Forms.ContextMenu $mnuIMov = New-Object Windows.Forms.MenuItem $mnuICnM = New-Object Windows.Forms.MenuItem $mnuIBuf = New-Object Windows.Forms.MenuItem $mnuIIns = New-Object Windows.Forms.MenuItem # #mnuMain # $mnuMain.MenuItems.AddRange(@($mnuFile, $mnuEdit, $mnuView, $mnuMake, $mnuHelp)) # #mnuFile # $mnuFile.MenuItems.AddRange(@($mnuAtom, $mnuOpen, $mnuEmp1, $mnuExit)) $mnuFile.Text = "&File" # #mnuAtom # $mnuAtom.Shortcut = "F3" $mnuAtom.Text = "Nu&Clear..." $mnuAtom.Add_Click({Invoke-Atom}) # #mnuOpen # $mnuOpen.Shortcut = "CtrlO" $mnuOpen.Text = "&Open" $mnuOpen.Add_Click($mnuOpen_Click) # #mnuEmp1 # $mnuEmp1.Text = "-" # #mnuExit # $mnuExit.Shortcut = "CtrlX" $mnuExit.Text = "E&xit" $mnuExit.Add_Click({$frmMain.Close()}) # #mnuEdit # $mnuEdit.menuItems.AddRange(@($mnuUndo, $mnuEmp2, $mnuCopy, $mnuPast, $mnuICut, ` $mnuEmp3, $mnuSAll)) $mnuEdit.Text = "&Edit" # #mnuUndo # $mnuUndo.Shortcut = "CtrlZ" $mnuUndo.Text = "&Undo" $mnuUndo.Add_Click({$txtEdit.Undo()}) # #mnuEmp2 # $mnuEmp2.Text = "-" # #mnuCopy # $mnuCopy.Shortcut = "CtrlC" $mnuCopy.Text = "&Copy" $mnuCopy.Add_Click({if ($txtEdit.SelectionLength -ge 0) {$txtEdit.Copy()}}) # #mnuPast # $mnuPast.Shortcut = "CtrlV" $mnuPast.Text = "&Paste" $mnuPast.Add_Click({$txtEdit.Paste()}) # #mnuICut # $mnuICut.Shortcut = "Del" $mnuICut.Text = "Cut &Item" $mnuICut.Add_Click({if ($txtEdit.SelectionLength -ge 0) {$txtEdit.Cut()}}) # #mnuEmp3 # $mnuEmp3.Text = "-" # #mnuSAll # $mnuSAll.Shortcut = "CtrlA" $mnuSAll.Text = "Select &All" $mnuSAll.Add_Click({$txtEdit.SelectAll()}) # #mnuView # $mnuView.MenuItems.AddRange(@($mnuFont, $mnuEmp4, $mnuOpac, $mnuTgls)) $mnuView.Text = "&View" # #mnuFont # $mnuFont.Text = "&Font..." $mnuFont.Add_Click($mnuFont_Click) # #mnuEmp4 # $mnuEmp4.Text = "-" # #mnuOpac # $mnuOpac.MenuItems.AddRange(@($mnuOp50, $mnuOp60, $mnuOp70, $mnuOp80, $mnuOp90, $mnuOpaF)) $mnuOpac.Text = "&Opacity" # #mnuOp50 # $mnuOp50.Text = "50%" $mnuOp50.Add_Click({Set-Opacity $mnuOp50; $cur = $mnuOp50}) # #mnuOp60 # $mnuOp60.Text = "60%" $mnuOp60.Add_Click({Set-Opacity $mnuOp60; $cur = $mnuOp60}) # #mnuOp70 # $mnuOp70.Text = "70%" $mnuOp70.Add_Click({Set-Opacity $mnuOp70; $cur = $mnuOp70}) # #mnuOp80 # $mnuOp80.Text = "80%" $mnuOp80.Add_Click({Set-Opacity $mnuOp80; $cur = $mnuOp80}) # #mnuOp90 # $mnuOp90.Text = "90%" $mnuOp90.Add_Click({Set-Opacity $mnuOp90; $cur = $mnuOp90}) # #mnuOpaF # $cur = $mnuOpaF #checked item by default $mnuOpaF.Checked = $true $mnuOpaF.Text = "Opaque" $mnuOpaF.Add_Click($mnuOpaF_Click) # #mnuTgls # $mnuTgls.MenuItems.AddRange(@($mnuWrap, $mnuToS1, $mnuToS2)) $mnuTgls.Text = "&Toggles" # #mnuWrap # $mnuWrap.Checked = $true $mnuWrap.Shortcut = "CtrlW" $mnuWrap.Text = "&Wrap Mode" $mnuWrap.Add_Click($mnuWrap_Click) # #mnuToS1 # $mnuToS1.Checked = $true $mnuToS1.Text = "Building &Progress" $mnuToS1.Add_Click({Show-Panel $mnuToS1 $scSplt1}) # #mnuToS2 # $mnuToS2.Checked = $true $mnuToS2.Shortcut = "F12" $mnuToS2.Text = "Building P&roperties" $mnuToS2.Add_Click({Show-Panel $mnuToS2 $scSplt2}) # #mnuMake # $mnuMake.MenuItems.AddRange(@($mnuBAsm, $mnuBnRA)) $mnuMake.Text = "&Build" # #mnuBAsm # $mnuBAsm.Shortcut = "F5" $mnuBAsm.Text = "&Compile" $mnuBAsm.Add_Click({Invoke-Builder}) # #mnuBnRA # $mnuBnRA.Shortcut = "F9" $mnuBnRA.Text = "Compile And &Run" $mnuBnRA.Add_Click({Start-AfterBuilding}) # #mnuHelp # $mnuHelp.MenuItems.AddRange(@($mnuInfo)) $mnuHelp.Text = "&Help" # #mnuInfo # $mnuInfo.Text = "About..." $mnuInfo.Add_Click({frmInfo_Show}) # #tbTools # $tbTools.Buttons.AddRange(@($btnAtom, $btnToS1, $btnMake, $btnBAsm, $btnBnRA, $btnExit)) $tbTools.ImageList = $imgList $tbTools.Add_ButtonClick($tbTools_ButtonClick) # #btnAtom # $btnAtom.ImageIndex = 0 $btnAtom.Tag = "Atom" $btnAtom.ToolTipText = "NuClear (F3)" # #btnToS1 # $btnToS1.ImageIndex = 1 $btnToS1.Tag = "Progress" $btnToS1.ToolTipText = "Building Progress Panel" # #btnMake # $btnMake.ImageIndex = 2 $btnMake.Tag = "Params" $btnMake.ToolTipText = "Building Properties (F12)" # #btnBAsm # $btnBAsm.ImageIndex = 3 $btnBAsm.Tag = "Build" $btnBAsm.ToolTipText = "Compile (F5)" # #btnBnRA # $btnBnRA.ImageIndex = 4 $btnBnRA.Tag = "BuildEx" $btnBnRA.ToolTipText = "Compile And Run (F9)" # #btnExit # $btnExit.ImageIndex = 5 $btnExit.Tag = "Exit" $btnExit.ToolTipText = "Exit (Ctrl+X)" # #scSplt1 # $scSplt1.Anchor = "Left, Top, Right, Bottom" $scSplt1.Location = New-Object Drawing.Point(0, 28) $scSplt1.Orientation = "Horizontal" $scSplt1.Panel1.Controls.Add($scSplt2) $scSplt1.Panel2.Controls.Add($lstView) $scSplt1.Size = New-Object Drawing.Size(790, 500) $scSplt1.SplitterDistance = 410 $scSplt1.SplitterWidth = 1 # #scSplt2 # $scSplt2.Dock = "Fill" $scSplt2.Panel1.Controls.Add($txtEdit) $scSplt2.Panel2.Controls.Add($gboMake) $scSplt2.SplitterDistance = 510 $scSplt2.SplitterWidth = 1 # #lstView # $lstView.Columns.AddRange(@($chPoint, $chError, $chCause)) $lstView.Dock = "Fill" $lstView.FullRowSelect = $true $lstView.GridLines = $true $lstView.MultiSelect = $false $lstView.ShowItemToolTips = $true $lstView.SmallImageList = $imgList $lstView.View = "Details" # #chPoint # $chPoint.Text = "Line" $chPoint.Width = 50 # #chError # $chError.Text = "Error" $chError.TextAlign = "Right" $chError.Width = 65 # #chCause # $chCause.Text = "Description" $chCause.Width = 650 # #txtEdit # $txtEdit.AcceptsTab = $true $txtEdit.Dock = "Fill" $txtEdit.Font = New-Object Drawing.Font("Courier New", 10) $txtEdit.ScrollBars = "Both" $txtEdit.Add_Click({Write-CursorPoint}) $txtEdit.Add_KeyUp({Write-CursorPoint}) $txtEdit.Add_TextChanged({Write-CursorPoint}) # #gboMake # $gboMake.Controls.AddRange(@($lblLab1, $cboPlat, $chkExec, $chkWApp, $chkIDbg, ` $chkIMem, $lblLab2, $txtIOut, $lblLab3, $lboRefs)) $gboMake.Dock = "Fill" $gboMake.Text = "Building Parameters" # #lblLab1 # $lblLab1.Location = New-Object Drawing.Point(21, 33) $lblLab1.Text = "Platform:" $lblLab1.Width = 50 # #cboPlat # $cboPlat.Anchor = "Left, Top, Right" $cboPlat.Items.AddRange(@(".NET Framework 2.0", ".NET Framework 3.5")) $cboPlat.Location = New-Object Drawing.Point(71, 30) $cboPlat.SelectedItem = ".NET Framework 2.0" $cboPlat.Width = 180 $cboPlat.Add_SelectedIndexChanged($cboPlat_SelectedIndexChanged) # #chkExec # $chkExec.Checked = $true $chkExec.Location = New-Object Drawing.Point(23, 63) $chkExec.Text = "Create Executable" $chkExec.Width = 120 $chkExec.Add_Click($chkExec_Click) # #chkWApp # $chkWApp.Location = New-Object Drawing.Point(43, 83) $chkWApp.Text = "Windows Application" $chkWApp.Width = 130 $chkWApp.Add_Click($chkWApp_Click) # #chkIDbg # $chkIDbg.Checked = $true $chkIDbg.Location = New-Object Drawing.Point(23, 103) $chkIDbg.Text = "Include Debug Information" $chkIDbg.Width = 157 # #chkIMem # $chkIMem.Enabled = $false $chkIMem.Location = New-Object Drawing.Point(23, 123) $chkIMem.Text = "Building In Memory" $chkIMem.Width = 130 # #lblLab2 # $lblLab2.Location = New-Object Drawing.Point(23, 163) $lblLab2.Text = "Output:" $lblLab2.Width = 45 # #txtIOut # $txtIOut.Anchor = "Left, Top, Right" $txtIOut.Location = New-Object Drawing.Point(71, 160) $txtIOut.Width = 180 # #lblLab3 # $lblLab3.Location = New-Object Drawing.Point(23, 203) $lblLab3.Size = New-Object Drawing.Size(70, 17) $lblLab3.Text = "References:" # #lboRefs # $lboRefs.Anchor = "Left, Top, Right, Bottom" $lboRefs.ContextMenu = $mnuRefs $lboRefs.Location = New-Object Drawing.Point(23, 223) $lboRefs.SelectionMode = "One" $lboRefs.Size = New-Object Drawing.Size(229, 157) # #sbPanle # $sbPanel.Panels.AddRange(@($sbPnl_1, $sbPnl_2)) $sbPanel.ShowPanels = $true $sbPanel.SizingGrip = $false # #sbPnl_1 # $sbPnl_1.AutoSize = "Spring" # #sbPnl_2 # $sbPnl_2.Alignment = "Center" $sbPnl_2.AutoSize = "Contents" # #imgList # $i_1, $i_2, $i_3, $i_4, $i_5, $i_6, $i_7, $i_8 | % { $imgList.Images.Add((Get-Image $_)) } # #mnuRefs # $mnuRefs.MenuItems.AddRange(@($mnuIMov, $mnuICnM, $mnuIBuf, $mnuIIns)) # #mnuIMov # $mnuIMov.Shortcut = "Del" $mnuIMov.Text = "Remove Item" $mnuIMov.Add_Click({$lboRefs.Items.Remove($lboRefs.SelectedItem)}) # #mnuICnM # $mnuICnM.Shortcut = "CtrlM" $mnuICnM.Text = "Copy And Remove" $mnuICnM.Add_Click($mnuICnM_Click) # #mnuIBuf # $mnuIBuf.Text = "Insert Copied..." $mnuIBuf.Add_Click({if ($script:buff -ne $null) {$lboRefs.Items.Add($script:buff)}}) # #mnuIIns # $mnuIIns.Shortcut = "CtrlR" $mnuIIns.Text = "Add Reference" $mnuIIns.Add_Click($mnuIIns_Click) # #frmMain # $frmMain.ClientSize = New-Object Drawing.Size(790, 550) $frmMain.Controls.AddRange(@($tbTools, $scSplt1, $sbPanel)) $frmMain.FormBorderStyle = "FixedSingle" $frmMain.Icon = $ico $frmMain.Menu = $mnuMain $frmMain.StartPosition = "CenterScreen" $frmMain.Text = "Snippet Compiler" $frmMain.Add_Load($frmMain_Load) [void]$frmMain.ShowDialog() } ################################################################################################## function frmInfo_Show { $frmInfo = New-Object Windows.Forms.Form $pbImage = New-Object Windows.Forms.PictureBox $lblName = New-Object Windows.Forms.Label $lblCopy = New-Object Windows.Forms.Label $btnExit = New-Object Windows.Forms.Button # #pbImage # $pbImage.Location = New-Object Drawing.Point(16, 16) $pbImage.Size = New-Object Drawing.Size(32, 32) $pbImage.SizeMode = "StretchImage" # #lblName # $lblName.Font = New-Object Drawing.Font("Microsoft Sans Serif", 8, [Drawing.FontStyle]::Bold) $lblName.Location = New-Object Drawing.Point(53, 19) $lblName.Size = New-Object Drawing.Size(360, 18) $lblName.Text = "Snippet Compiler v2.54" # #lblCopy # $lblCopy.Location = New-Object Drawing.Point(67, 37) $lblCopy.Size = New-Object Drawing.Size(360, 23) $lblCopy.Text = "(C) 2012-2013 greg zakharov gregzakh@gmail.com" # #btnExit # $btnExit.Location = New-Object Drawing.Point(135, 67) $btnExit.Text = "OK" # #frmInfo # $frmInfo.AcceptButton = $btnExit $frmInfo.CancelButton = $btnExit $frmInfo.ClientSize = New-Object Drawing.Size(350, 110) $frmInfo.ControlBox = $false $frmInfo.Controls.AddRange(@($pbImage, $lblName, $lblCopy, $btnExit)) $frmInfo.ShowInTaskBar = $false $frmInfo.StartPosition = "CenterScreen" $frmInfo.Text = "About..." $frmInfo.Add_Load({$pbImage.Image = $ico.ToBitmap()}) [void]$frmInfo.ShowDialog() } ################################################################################################## function Invoke-Atom { if ($txtEdit.Text -ne "") { $res = [Windows.Forms.MessageBox]::Show("Do you want to save data before?", ` $frmMain.Text, [Windows.Forms.MessageBoxButtons]::YesNoCancel, ` [Windows.Forms.MessageBoxIcon]::Question) switch ($res) { 'Yes' { (New-Object Windows.Forms.SaveFileDialog) | % { $_.FileName = "source" $_.Filter = "C# (*.cs)|*.cs" $_.InitialDirectory = $def if ($_.ShowDialog() -eq [Windows.Forms.DialogResult]::OK) { Out-File $_.FileName -enc UTF8 -input $txtEdit.Text } } break } 'No' { $txtEdit.Clear(); break } 'Cancel' { return } } }#if } function Set-Opacity($obj) { $cur.Checked = $false $frmMain.Opacity = [float]('.' + $($obj.Text)[0]) $obj.Checked = $true } function Show-Panel($obj1, $obj2) { switch ($obj1.Checked) { $true {$obj1.Checked = $false; $obj2.Panel2Collapsed = $true; break } $false {$obj1.Checked = $true; $obj2.Panel2Collapsed = $false; break } } } function Get-CursorPoint { $z = $txtEdit.SelectionStart $y = $txtEdit.GetLineFromCharIndex($z) + 1 $x = $z - $txtEdit.GetFirstCharIndexOfCurrentLine() return (New-Object Drawing.Point($x, $y)) } function Write-CursorPoint { $sbPnl_2.Text = 'Str: ' + (Get-CursorPoint).Y.ToString() + ', Col: ' + ` (Get-CursorPoint).X.ToString() } function Invoke-Builder { $lstView.Items.Clear() if ($txtEdit.Text -ne "") { switch ($cboPlat.SelectedIndex) { "0" { $cscp = New-Object Microsoft.CSharp.CSharpCodeProvider; break } "1" { $cscp = New-Object Microsoft.CSharp.CSharpCodeProvider($dict); break} } $cdcp.GenerateExecutable = $chkExec.Checked if ($chkWApp.Checked) { $cdcp.CompilerOptions = "/t:winexe" } $cdcp.IncludeDebugInformation = $chkIDbg.Checked $cdcp.GenerateInMemory = $chkIMem.Checked if ($lboRefs.Items.Count -ne 0) { for ($i = 0; $i -lt $lboRefs.Items.Count; $i++) { $cdcp.ReferencedAssemblies.Add($lboRefs.Items[$i].ToString()) } } $cdcp.WarningLevel = 3 $cdcp.OutputAssembly = $txtIOut.Text $script:make = $cscp.CompileAssemblyFromSource($cdcp, $txtEdit.Text) $make.Errors | % { if ($_.Line -ne 0 -and $_.Column -ne 0) { $err = $_.Line.ToString() + ', ' + ($_.Column - 1).ToString() } elseif ($_.Line -ne 0 -and $_.Column -eq 0) { $err = $_.Line.ToString() + ', 0' } elseif ($_.Line -eq 0 -and $_.Column -eq 0) { $err = '*' } if (!($_.IsWarning)) { $lstView.ForeColor = [Drawing.Color]::Crimson $itm = $lstView.Items.Add($err, 6) } else { $lstView.ForeColor = [Drawing.Color]::Gray $itm = $lstView.Items.Add($err, 7) } $itm.SubItems.Add($_.ErrorNumber) $itm.SubItems.Add($_.ErrorText) } }#if } function Start-AfterBuilding { Invoke-Builder if ($script:make.Errors.Count -eq 0) { Invoke-Item $txtIOut.Text } } function Get-Image($img) { [Drawing.Image]::FromStream((New-Object IO.MemoryStream(($$ = ` [Convert]::FromBase64String($img)), 0, $$.Length))) } ################################################################################################## # #do not modify or remove this because these are images for toolbar and lower panel # $i_1 = "iVBORw0KGgoAAAANSUhEUgAAAA8AAAARCAIAAACNaGH2AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAA" + ` "AAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAVFJREFUOE91kTGOgzAQRc2ZOA" + ` "s9lU+Uxj1lak7hMtJKVCjalSIZkpiEVbSN980Y2GijjEaDgTff3+PiNs/GmJQKKk+txuhboR9TsX7kCd22rXP" + ` "eeU/d7/eydr5pGuput6NO8yx5n810/4Z7vMT1kUjrCJod9G2h3XvaOp8ScqW1St8iTt5qW1dVVV3XpXXxHoVm" + ` "r3+0ejCDhveiTYPQcYqcbKN/wof+ddCkXyLhJE5XodFGjAaffIaeE21aVjqODCvTWYzd+75nXcqroATu4zSaG" + ` "Ee0IWjw3mbHzEE75UtusJwS+hIHxgkkB1KIPBwOyHddt/aIk8s1LDQc9KtpvWIJJij0+XzievOkqHi11ujdO7" + ` "Q336J9PgnNfW2j5ffz4NYJim+hx/EL7U0Dx8veG7hOcBw+heaU2GIvar7kvNYqiTATFDqE418Ox6A55AySz8A" + ` "v1EEhBG84RKcAAAAASUVORK5CYII=" $i_2 = "iVBORw0KGgoAAAANSUhEUgAAABIAAAARCAIAAABfOGuuAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAA" + ` "AAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAOVJREFUOE+VkUEOgyAQRfFMnM" + ` "NrzJ3Yu3TtKTiEaVOTFgICXXQ3nQG1xjapkOEzII8vQ5OeSQiB1IVoysBZGZY5Yp4vi7QNBWFKoVJ6U8g5Kaw" + ` "qQUuFrMCaUlwxjeoQfBbBHFtCZxEWV0wDMd8mbMj71iiGGYvRE/A63SRAiI6xYRiIwnNNyoxRL27nKPpPCCFj" + ` "1W6MzabOTcIcDGN93+dX+h9aa7obY94/6iopwfs7Y13XVZRkwdxUdzcA527Cu6nWjTFrr3VuEqy9MEZuVB96R" + ` "9ZfSdu2n3XImDHjFtaM+9h/OuRvranSBDuoeeYAAAAASUVORK5CYII=" $i_3 = "iVBORw0KGgoAAAANSUhEUgAAABIAAAAQCAIAAACUZLgLAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAA" + ` "AAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAWJJREFUOE+FkTFywjAQRcUROI" + ` "sqWnpKeirVHIFD0OwdqDnFnsANZiZFEguwncad8tYCm2Bmovksa3nffq08a38aN13psTXLyeM5/7MJ9kdtoyK" + ` "qBFbY7/fE3W4nIRyPR1EJGsxpiqUk2+02pWDSe1QNEjwtIA1r2muvS1ZZljQGoGJgLFGP2PTiKTPMOgiFmg9H" + ` "UWYWi0UPBFWv4pO4EaubyCyiSTUxTeL0wXOkzWaD53K5BOjlcPJIPIjjhw8M09MYhi5E8tVqxcG8d/P5nLher" + ` "/vXhri6/sKk67oYIzdBJKcNRZgAYEtBXX8iEh8MGTGqn9fhcOBURVHQCNuMAWS52816vDA81l0C0GQz40zZs0" + ` "bMvqYoQE6Yl0gO7EN4xa7Xj6lbtjI3bjglDkmZ6XKXG7DBLZsMhpBvsBjPb93G2Xq3SzyjGEtTdXZg3DsvmJv" + ` "4nOTHvF6xqjr9r+9TlfUo/gXNq15sSG6qYQAAAABJRU5ErkJggg==" $i_4 = "iVBORw0KGgoAAAANSUhEUgAAABQAAAARCAIAAABSJhvpAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAA" + ` "AAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAARRJREFUOE9tklFuxCAMROH+J9" + ` "jTNU1VabUQAmT/qc3AwNJYoyQEPzwYbH5fthRTo1iLN4a26LD0oYyRhFkNga8rQ/JdlR8PUzSMfEA1M6kkrUt" + ` "+yaDRzKuw8sDmGJWuPGBWa1uoldXmPwvNpsL5zDmIWA01p2ezQF8pB2jAUmR2C8NYAlMIkgqndMQURFgY+8ST" + ` "/LLtqMghYINnz51p3eIW2PkBx+hifLFb7DDOic7nY0vpJRLKANavGkhiKrq92B7weT6p5WB6WWXZsI98Dmbny" + ` "zktV20UC+H3rGLP6B+GedXYf0EgQ1j4eW+8WMuGSSrs/c/h90W3Bb3fq7679ntY1loKyp8b2LltkXfbrGn2y7" + ` "lZ2x9XMW8UGH69+AAAAABJRU5ErkJggg==" $i_5 = "iVBORw0KGgoAAAANSUhEUgAAABIAAAAQCAIAAACUZLgLAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAA" + ` "AAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAhNJREFUOE9jfPPyBgMZAKgNju" + ` "o2nlWtXqVVtQpOAhnIKGDqbohiBmQ9fXuv77rzbsOdtxC08dY7NLTu0tvgaXtQtOk3rQcq7Tv5BEheePFx4rm" + ` "X7SefQ1DrcRC7+9TLxVdfuEzdiaIN6IAZpx/V7r0F1Pbr77/7H382HH9eeugpEBXvA6GmA89699/OX3ISRVve" + ` "irNAPambrhXvubPzwXugznOvvmYffJq0/SEQxa+/V7ntYeHasyh+q1x3unLzhYTV53wWnw1afSVpx929jz8Bd" + ` "a66+8Fu8W3TKZd0u85FzbvqO20fijagC4Ha3OccNZ9+zGTOOasll6P2PHjx9fenn39MZ1xTaTqjUnEideYls9" + ` "aNKNqAoQx0pFbHTo2+Q0BtufsfPv3yC+i92A13gfYA9egWHMxfchFdm23Xlri5B4DarOadAAYX0HnAgHFdegP" + ` "oPL3mM5oVx8zKjhStuARUg2Jb1Kx9QTP3WE/bBwx6oMMaD98LX3sdEmnAuAIit8ZjQOd0br+I0Na27ULB4iPu" + ` "E7YA42T5hYdBi0+Y9O/3n3fmwL13Jx992nH9HRAFdZ0On30YnjZAqQRodeXyg5b1yzTKFwERMHEBkXbtLuPmg" + ` "0BkUHkE6DFgeAA9gqINmF6m7blQtfJQ/sL9+YsPAW0GxikYXYSg0mVXJ+6+DQw2FG1ADlAnWqpF40KSIro2ZC" + ` "Fi2ACR3EDpQ7cspgAAAABJRU5ErkJggg==" $i_6 = "iVBORw0KGgoAAAANSUhEUgAAAA8AAAANCAIAAAD5fKMWAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAA" + ` "AAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAJxJREFUKFONjEEOwyAMBMn/P5" + ` "lD1FSCENt5QLpgcA1tpaI52LtjFrk42LvvMi59r9uwwn4jJOAqwAS2llAoMCegHUsq9LWFVVAG22odADm12hS" + ` "JGyb1s8ioICgcBxudP8A620RPz/T91IZPG4m/8UI4z92AVOcH8AeaoPppfzvYQ86bgs/ysQ3U0ED1l91+hJ3i" + ` "mlLjiCsoidJzG15Z2J4gUYDWoQAAAABJRU5ErkJggg==" $i_7 = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAA" + ` "AAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAsZJREFUOE9FkmtIk1EYx9/nvH" + ` "u3V+dUyltIIaI5DAsiyy5SlphmCprpirnp8MWaoEikXwzayrQgzTLtQ0hN0UIssyQv1AcnQnMaXlIzTDOsvG7" + ` "OnG7qTmdq+vBwLpzf/znP4fwBY0z9D6O+k6qpdlha5lOwsri4zDI2eSqz/4DQyWmLoYiAhNlg+JsQjzkOFxXh" + ` "ykpcUYELCnBGBo6Onj1xfH5iYgOzV9+gLafDcGoqVqlwYSHOzcUKBU5JsWd8PA4NnQvY211fty2Yi47CERE2i" + ` "eRDerotONjm7W1xdV11d1/192+NicFBQSaxWO/jM/Fz3H7DtE5nDgzEISHNKtXIzExTVtYUwC+A3wBPpFL96K" + ` "g2O9vg5TXg6VkadtIuGEpKMPj62vz8Rjhu1mIxLi015+aOATy7cvWP0UiIaaXyh0jU6eKicXXt7+ulevcFjnl" + ` "4kBqTLNsnkxms1sWVlX6t1mQ2E3qc477weH1CYZujY4ODw7VMJdW+c0ePs/N3F5dhgaAfoFuWvGyzEXQN428K" + ` "hQ5AzzA6gaCVz28QCKRxsVSrl6eWZT+zbA+f3wVQl5NjXSMwJqI2tbodoJ2mP/J4r2i6imEuno+img4famSYN" + ` "ob5hFCJXD41P0/oSY1mBeMFq/VldnYLQANCGoTu03RSQhzVVVJcw+O9BXisVE6uv7KP494BdHCcaXXVZLHU5+" + ` "VVkVOaTqbp/PyblMlorBYKNQCNEgmp2p2W9hrgDUJkbJHLib41MfEBwD2EgtzchgYH7D/dUV5WjlAZQK1Y/By" + ` "gmiRClQBPAaoCAu4C5CMUSdPy5Eub1iDTe7W6mHQJUAJQShoAeAhAtvkAKoBYhI4dPTK/3vCm+ciq/lHJDZHo" + ` "DkK3AW6tcyQzETrIspFnw41Gw7aXtpw4/HXwuuyyNFB8YZfXOU+PkD27w8+cqq19sbBg2mL+AY/qjcgixtNMA" + ` "AAAAElFTkSuQmCC" $i_8 = "iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAIAAAC0tAIdAAAABGdBTUEAALGPC/xhBQAAAglJREFUKFN1jktoE" + ` "1EUhufMTCbJNNNFS01xZ9GFCCIYhBYUF1XR7nygSxvRVSS6kbQoEoklYggUiuJj300NkRpsXdqNZhHRpp1ETW" + ` "LSdJJ08piZmFGbx3EmDdoUvfxc/vvf/3wcArtPsXir2bBUq+bZ2Vc7vrQnsT1S1ZKYB0Rbq8F5vSM8n9wx0NU" + ` "uCK6axCCy2ByURMbhmPlvW1XLxQy5keu96aAWFqxYZ+65j6XT69sH/rILmQlVNLjdrBn2HRiyYbO/+M3k8wX+" + ` "0VZrlQ2exp/c00cMRx4ZGz6E2NeSmTuu0UpF+TPQYeeTt6spAypsOgZDg+efePejQuMPq7DM+v3BrrZak3IRQ" + ` "73QgwKJMowcvLwU6kcBUB1orFOuGyclqYPX2YWEW4pSKFowDViGC2eGy3FK9zlTq9SXCfdMT7/cwhP6xmFjY4" + ` "3DFI0JwAyEnlkxC7r/Cvh9dzNJTzpPyW08kefvKhEasxzGAD+DEqPck8Z3QbNejQOmTCjuyi6x/jaeyL811WM" + ` "s8hSuAPLwYIKxGPeeOHwa10BPooD5gUaUctrHZFkhsm/gV4Ta/EBqqn8kl+eNo7aj4cDVehQ64Se69p5afL5n" + ` "5vFr4st878ocuToHW4oHQFiERBBWX3QSLcyESNe142fPTRGKrDiv++zjnivj93XZNeNp35pvJ7o8Fy89LJWk3" + ` "9PM0i5eafwSAAAAAElFTkSuQmCC" ################################################################################################## frmMain_Show