Files
Intune/dump/SCCM-Tool/Forms/_FORMS-DESIGNER.ps1

432 lines
13 KiB
PowerShell

Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
function mouseDown {
$Global:mCurFirstX = ([System.Windows.Forms.Cursor]::Position.X )
$Global:mCurFirstY = ([System.Windows.Forms.Cursor]::Position.Y )
}
function mouseMove ($mControlName) {
$mCurMoveX = ([System.Windows.Forms.Cursor]::Position.X )
$mCurMoveY = ([System.Windows.Forms.Cursor]::Position.Y )
if ($Global:mCurFirstX -ne 0 -and $Global:mCurFirstY -ne 0){
$mDifX = $Global:mCurFirstX - $mCurMoveX
$mDifY = $Global:mCurFirstY - $mCurMoveY
$this.Left = $this.Left - $mDifX
$this.Top = $this.Top - $mDifY
$Global:mCurFirstX = $mCurMoveX
$Global:mCurFirstY = $mCurMoveY
}
}
function mouseUP ($mControlObj) {
$mCurUpX = ([System.Windows.Forms.Cursor]::Position.X )
$mCurUpY = ([System.Windows.Forms.Cursor]::Position.Y )
$Global:mCurFirstX = 0
$Global:mCurFirstY = 0
Foreach ($mElement In $Global:mFormObj.Elements){
if ($mElement.Name -eq $this.name){
foreach( $mProp in $mElement.Properties){
Switch($mProp.Name){
'Top'{ $mProp.Value = $this.Top}
'Left'{$mProp.Value = $this.Left}
}
}
}
}
renewGrids
}
Function renewGrids {
$mList = New-Object System.Collections.ArrayList
[array]$mElementsArr = $mFormObj.Elements | select Name,Type
$mList.AddRange($mElementsArr)
$mElemetnsGrid.DataSource = $mList
$mElemetnsGrid.Columns[1].ReadOnly = $true
$mList2 = New-Object System.Collections.ArrayList
[array]$mPropertyArr = $mFormObj.Elements[$mElemetnsGrid.CurrentRow.Index].Properties
$mList2.AddRange($mPropertyArr)
$mPropertiesGrid.DataSource = $mList2
$mPropertiesGrid.Columns[0].ReadOnly=$true
}
Function DeleteElement {
$Global:mFormObj.Elements = $mFormObj.Elements | ?{$_.Name -notlike $mFormObj.Elements[$mElemetnsGrid.CurrentRow.Index].Name}
renewGrids
}
Function AddProperty ($mName,$mValue){
$mPropertyObj = New-Object PSCustomObject
$mPropertyObj | Add-Member -Name 'Name' -MemberType NoteProperty -Value $mName
$mPropertyObj | Add-Member -Name 'Value' -MemberType NoteProperty -Value $mValue
return $mPropertyObj
}
Function ElementsChanged{
$mList2 = New-Object System.Collections.ArrayList
[array]$mPropertyArr = $mFormObj.Elements[$mElemetnsGrid.CurrentRow.Index].Properties
$mList2.AddRange($mPropertyArr)
$mPropertiesGrid.DataSource = $mList2
}
function ElementsEndEdit {
$Global:mFormObj.Elements[$mElemetnsGrid.CurrentRow.Index].Name = $mElemetnsGrid.CurrentCell.FormattedValue
repaintForm
}
Function AddElement {
$mPropertiesArr =@()
$mSameType = ($mFormObj.Elements | ?{$_.Type -like $mControlType.SelectedItem})
if($mSameType.count -ne $NUll -and $mSameType -ne $null) {
$mControlName=''+$mControlType.SelectedItem+($mSameType.count+1)
}elseif($mSameType.Count -eq $null -and $mSameType -ne $null){
$mControlName=''+$mControlType.SelectedItem+'2'
}else{
$mControlName=''+$mControlType.SelectedItem+'1'
}
$mPropertiesArr+= AddProperty 'Text' $mControlName
$mPropertiesArr+= AddProperty 'SizeX' 100
$mPropertiesArr+= AddProperty 'SizeY' 23
$mPropertiesArr+= AddProperty 'Top' 5
$mPropertiesArr+= AddProperty 'Left' 5
$mPropertiesArr+= AddProperty 'Anchor' 'Left,Top'
$mElementsObj = New-Object PSCustomObject
$mElementsObj |Add-Member -Name 'Name' -MemberType NoteProperty -Value $mControlName
$mElementsObj |Add-Member -Name 'Type' -MemberType NoteProperty -Value ($mControlType.SelectedItem)
$mElementsObj |Add-Member -Name 'Properties' -MemberType NoteProperty -Value $mPropertiesArr
$Global:mFormObj.Elements += $mElementsObj
renewGrids
repaintForm
}
function AddControl ($mControl) {
$mReturnControl = $null
switch ($mControl.Type){
"TextBox" {$mReturnControl = New-Object System.Windows.Forms.TextBox}
"ListBox" {$mReturnControl = New-Object System.Windows.Forms.ListBox}
"ComboBoX" {$mReturnControl = New-Object System.Windows.Forms.ComboBox}
"Label" {$mReturnControl = New-Object System.Windows.Forms.Label}
"DataGrid" {$mReturnControl = New-Object System.Windows.Forms.DataGridView}
"Button" {$mReturnControl = New-Object System.Windows.Forms.Button}
'CheckBox' {$mReturnControl = New-Object System.Windows.Forms.CheckBox}
'DateTimePicker' {$mReturnControl = New-Object System.Windows.Forms.DateTimePicker}
'ListView' {$mReturnControl = New-Object System.Windows.Forms.ListView}
'PictureBox' {$mReturnControl = New-Object System.Windows.Forms.PictureBox}
'RichTextBox' {$mReturnControl = New-Object System.Windows.Forms.RichTextBox}
'TreeView' {$mReturnControl = New-Object System.Windows.Forms.TreeView}
'WebBrowser' {$mReturnControl = New-Object System.Windows.Forms.WebBrowser}
"default" {write-host 'something goes wrong sorry :('}
}
$mReturnControl.Name = $mControl.Name
$mSizeX=$null
$mSizeY=$null
foreach ($mProperty in $mControl.Properties){
switch ($mProperty.Name){
'Text' {$mReturnControl.Text=$mProperty.Value}
'SizeX' {$mSizeX=$mProperty.Value}
'SizeY' {$mSizeY=$mProperty.Value}
'Top' {$mReturnControl.Top=$mProperty.Value}
'Left' {$mReturnControl.Left=$mProperty.Value}
'Anchor'{$mReturnControl.Anchor=$mProperty.Value}
}
}
$mReturnControl.Size = New-Object System.Drawing.Size($mSizeX,$mSizeY)
$mReturnControl.Add_MouseDown({MouseDown})
$mReturnControl.Add_MouseMove({MouseMove ($mControl.Name)})
$mReturnControl.Add_MouseUP({MouseUP})
Return $mReturnControl
}
function PropertiesEndEdit{
foreach ($mProperty in $Global:mFormObj.Elements[$mElemetnsGrid.CurrentRow.Index].Properties){
if ($mProperty.Name -eq $mPropertiesGrid.currentrow.Cells[0].FormattedValue){
$mProperty.Value = $mPropertiesGrid.currentrow.Cells[1].FormattedValue
}
}
repaintForm
}
Function repaintForm {
$mFormGroupBox.Size = New-Object System.Drawing.Size(($mFormObj.SizeX),($mFormObj.SizeY))
$mFormGroupBox.controls.clear()
Foreach ($mElement in $mFormObj.Elements){
$mFormGroupBox.controls.add((AddControl $mElement))
}
}
Function EditFormSize ($x,$y){
$Global:mFormObj.SizeX = $X
$Global:mFormObj.SizeY = $Y
repaintForm
}
function ExportForm {
$mFormObj
$mExportString = "
"
$mExportString+= '
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
$MyForm = New-Object System.Windows.Forms.Form
$MyForm.Text="MyForm"
$MyForm.Size = New-Object System.Drawing.Size('+$mFormObj.SizeX+','+$mFormObj.SizeY+')
'
foreach ($mElement in $mFormObj.Elements){
$mExportString+='
$m'+$mElement.Name+' = New-Object System.Windows.Forms.'+$mElement.Type+''
$mPrSizeX=''
$mPrSizeY=''
foreach ($mProperty in $mElement.Properties){
If ($mProperty.Name -eq 'SizeX'){
$mPrSizeX = $mProperty.Value
}
elseIf ($mProperty.Name -eq 'SizeY'){
$mPrSizeY = $mProperty.Value
}
else{
$mExportString+='
$m'+$mElement.Name+'.'+$mProperty.Name +'="'+$mProperty.Value+'"'
}
}
$mExportString+='
$m'+$mElement.Name+'.Size = New-Object System.Drawing.Size('+$mPrSizeX+','+$mPrSizeY+')
$MyForm.Controls.Add($m'+$mElement.Name+')
'
}
$mExportString+= '$MyForm.ShowDialog()'
$mFileName=''
$mFileName = get-filename 'C:\'
if ($mFileName -notlike ''){
$mExportString > $mFileName
}
}
Function Get-FileName($initialDirectory) {
$SaveFileDialog = New-Object System.Windows.Forms.SaveFileDialog
$SaveFileDialog.initialDirectory = $initialDirectory
$SaveFileDialog.filter = Powershell Script (*.ps1)|*.ps1|All files (*.*)|*.*
$SaveFileDialog.ShowDialog() | Out-Null
$SaveFileDialog.filename
}
$mForm = New-Object System.Windows.Forms.Form
$mForm.AutoSize = $true
$mForm.Text='FormsMaker'
$mControlType = New-Object System.Windows.Forms.ComboBoX
$mControlType.Anchor = 'Left,Top'
$mControlType.Size = New-Object System.Drawing.Size(100,23)
$mControlType.Left = 5
$mControlType.Top = 5
$mControlType.Items.Add("TextBox")
$mControlType.Items.Add("ListBox")
$mControlType.Items.Add("ComboBoX")
$mControlType.Items.Add("Label")
$mControlType.Items.Add("DataGrid")
$mControlType.Items.Add("Button")
$mControlType.Items.Add("CheckBox")
$mControlType.Items.Add("DateTimePicker")
$mControlType.Items.Add("ListView")
$mControlType.Items.Add("PictureBox")
$mControlType.Items.Add("RichTextBox")
$mControlType.Items.Add("TreeView")
$mControlType.Items.Add("WebBrowser")
$mForm.Controls.Add($mControlType)
$mAddButton = New-Object System.Windows.Forms.Button
$mAddButton.Anchor = 'Left,Top'
$mAddButton.Text = 'Add'
$mAddButton.Left = 110
$mAddButton.Top = 5
$mAddButton.Size = New-Object System.Drawing.Size(50,23)
$mAddButton.Add_Click({AddElement})
$mForm.Controls.Add($mAddButton)
$mFormLabel = New-Object System.Windows.Forms.Label
$mFormLabel.Text = 'Form Size:'
$mFormLabel.Top = 5
$mFormLabel.Left = 165
$mFormLabel.Anchor = 'Left,Top'
$mFormLabel.Size = New-Object System.Drawing.Size(80,23)
$mFormLabel.TextAlign='MiddleRight'
$mForm.Controls.Add($mFormLabel)
$mFormXTextBox = New-Object System.Windows.Forms.TextBox
$mFormXTextBox.left = 250
$mFormXTextBox.top = 5
$mFormXTextBox.Size = New-Object System.Drawing.Size(30,23)
$mFormXTextBox.Anchor = 'Left,Top'
$mFormXTextBox.Text=300
$mForm.Controls.Add($mFormXTextBox)
$mFormXLabel = New-Object System.Windows.Forms.Label
$mFormXLabel.Text = 'X'
$mFormXLabel.Top = 5
$mFormXLabel.Left = 280
$mFormXLabel.Anchor = 'Left,Top'
$mFormXLabel.Size = New-Object System.Drawing.Size(20,23)
$mFormXLabel.TextAlign='MiddleCenter'
$mFormXTextBox.Add_TextChanged({EditFormSize $mFormXTextBox.Text $mFormYTextBox.Text })
$mForm.Controls.Add($mFormXLabel)
$mFormYTextBox = New-Object System.Windows.Forms.TextBox
$mFormYTextBox.left = 300
$mFormYTextBox.top = 5
$mFormYTextBox.Size = New-Object System.Drawing.Size(30,23)
$mFormYTextBox.Anchor = 'Left,Top'
$mFormYTextBox.Text= 300
$mFormYTextBox.Add_TextChanged({EditFormSize $mFormXTextBox.Text $mFormYTextBox.Text})
$mForm.Controls.Add($mFormYTextBox)
$mFormGroupBox = New-Object System.Windows.Forms.GroupBox
$mFormGroupBox.left = 350
$mFormGroupBox.top = 5
$mFormGroupBox.Anchor = 'Left,Top'
$mFormGroupBox.Size = New-Object System.Drawing.Size($mFormXTextBox.Text,$mFormYTextBox.Text)
$mFormGroupBox.Text = 'New Form'
$mForm.Controls.Add($mFormGroupBox)
$mElemetnsGrid = New-Object System.Windows.Forms.DataGridView
$mElemetnsGrid.size = New-Object System.Drawing.Size(155,600)
$mElemetnsGrid.left=5
$mElemetnsGrid.top=33
$mElemetnsGrid.Anchor='Top,Left'
$mElemetnsGrid.RowHeadersVisible =$false
$mElemetnsGrid.Add_CellContentClick({ElementsChanged})
$mElemetnsGrid.Add_CellEndEdit({ElementsEndEdit})
$mForm.Controls.Add($mElemetnsGrid)
$mPropertiesGrid = New-Object System.Windows.Forms.DataGridView
$mPropertiesGrid.size = New-Object System.Drawing.Size(155,600)
$mPropertiesGrid.left=180
$mPropertiesGrid.top=33
$mPropertiesGrid.Anchor='Top,Left'
$mPropertiesGrid.ColumnHeadersVisible=$true
$mPropertiesGrid.RowHeadersVisible =$false
$mPropertiesGrid.Add_CellEndEdit({PropertiesEndEdit})
$mForm.Controls.Add($mPropertiesGrid)
$mDeleteButton = New-Object System.Windows.Forms.Button
$mDeleteButton.size = New-Object System.Drawing.Size(155,23)
$mDeleteButton.Text = 'Delete'
$mDeleteButton.Left = 5
$mDeleteButton.Top = 638
$mDeleteButton.Anchor = 'Top,Left'
$mDeleteButton.Add_Click({DeleteElement})
$mForm.Controls.Add($mDeleteButton)
$mExportButton = New-Object System.Windows.Forms.Button
$mExportButton.size = New-Object System.Drawing.Size(155,23)
$mExportButton.text = 'Export'
$mExportButton.Left = 180
$mExportButton.top = 638
$mExportButton.Anchor='Top,Left'
$mExportButton.Add_Click({ExportForm})
$mForm.Controls.Add($mExportButton)
$Global:mFormObj = new-object PSCustomObject
$Global:mFormObj | Add-Member -Name 'SizeX' -MemberType NoteProperty -Value 300
$Global:mFormObj | Add-Member -Name 'SizeY' -MemberType NoteProperty -Value 300
$Global:mFormObj | Add-Member -Name 'Elements' -MemberType NoteProperty -Value @()
$Global:mCurFirstX =0
$Global:mCurFirstY =0
$mForm.ShowDialog()