mirror of
				https://github.com/godotengine/godot.git
				synced 2025-10-31 21:51:22 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			103 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			PowerShell
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			103 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			PowerShell
		
	
	
		
			Executable file
		
	
	
	
	
| Param (
 | |
| 	[string]$file = "",
 | |
| 	[string]$text = "",
 | |
| 	[string]$buttons = "OK:0",
 | |
| 	[string]$default = "",
 | |
| 	[switch]$nearmouse = $false,
 | |
| 	[switch]$center = $false,
 | |
| 	[string]$geometry = "",
 | |
| 	[int32]$timeout = 0,
 | |
| 	[string]$title = "Message"
 | |
| )
 | |
| Add-Type -assembly System.Windows.Forms
 | |
| 
 | |
| $global:Result = 0
 | |
| 
 | |
| $main_form = New-Object System.Windows.Forms.Form
 | |
| $main_form.Text = $title
 | |
| 
 | |
| $geometry_data = $geometry.Split("+")
 | |
| if ($geometry_data.Length -ge 1) {
 | |
| 	$size_data = $geometry_data[0].Split("x")
 | |
| 	if ($size_data.Length -eq 2) {
 | |
| 		$main_form.Width = $size_data[0]
 | |
| 		$main_form.Height = $size_data[1]
 | |
| 	}
 | |
| }
 | |
| if ($geometry_data.Length -eq 3) {
 | |
| 	$main_form.StartPosition = [System.Windows.Forms.FormStartPosition]::Manual
 | |
| 	$main_form.Location = New-Object System.Drawing.Point($geometry_data[1], $geometry_data[2])
 | |
| }
 | |
| if ($nearmouse) {
 | |
| 	$main_form.StartPosition = [System.Windows.Forms.FormStartPosition]::Manual
 | |
| 	$main_form.Location = System.Windows.Forms.Cursor.Position
 | |
| }
 | |
| if ($center) {
 | |
| 	$main_form.StartPosition = [System.Windows.Forms.FormStartPosition]::CenterScreen
 | |
| }
 | |
| 
 | |
| $main_form.SuspendLayout()
 | |
| 
 | |
| $button_panel = New-Object System.Windows.Forms.FlowLayoutPanel
 | |
| $button_panel.SuspendLayout()
 | |
| $button_panel.FlowDirection = [System.Windows.Forms.FlowDirection]::RightToLeft
 | |
| $button_panel.Dock = [System.Windows.Forms.DockStyle]::Bottom
 | |
| $button_panel.Autosize = $true
 | |
| 
 | |
| if ($file -ne "") {
 | |
| 	$text = [IO.File]::ReadAllText($file).replace("`n", "`r`n")
 | |
| }
 | |
| 
 | |
| if ($text -ne "") {
 | |
| 	$text_box = New-Object System.Windows.Forms.TextBox
 | |
| 	$text_box.Multiline = $true
 | |
| 	$text_box.ReadOnly = $true
 | |
| 	$text_box.Autosize = $true
 | |
| 	$text_box.Text = $text
 | |
| 	$text_box.Select(0,0)
 | |
| 	$text_box.Dock = [System.Windows.Forms.DockStyle]::Fill
 | |
| 	$main_form.Controls.Add($text_box)
 | |
| }
 | |
| 
 | |
| $buttons_array = $buttons.Split(",")
 | |
| foreach ($button in $buttons_array) {
 | |
| 	$button_data = $button.Split(":")
 | |
| 	$button_ctl = New-Object System.Windows.Forms.Button
 | |
| 	if ($button_data.Length -eq 2) {
 | |
| 		$button_ctl.Tag = $button_data[1]
 | |
| 	} else {
 | |
| 		$button_ctl.Tag = 100 + $buttons_array.IndexOf($button)
 | |
| 	}
 | |
| 	if ($default -eq $button_data[0]) {
 | |
| 		$main_form.AcceptButton = $button_ctl
 | |
| 	}
 | |
| 	$button_ctl.Autosize = $true
 | |
| 	$button_ctl.Text = $button_data[0]
 | |
| 	$button_ctl.Add_Click(
 | |
| 		{
 | |
| 			Param($sender)
 | |
| 			$global:Result = $sender.Tag
 | |
| 			$main_form.Close()
 | |
| 		}
 | |
| 	)
 | |
| 	$button_panel.Controls.Add($button_ctl)
 | |
| }
 | |
| $main_form.Controls.Add($button_panel)
 | |
| 
 | |
| $button_panel.ResumeLayout($false)
 | |
| $main_form.ResumeLayout($false)
 | |
| 
 | |
| if ($timeout -gt 0) {
 | |
| 	$timer = New-Object System.Windows.Forms.Timer
 | |
| 	$timer.Add_Tick(
 | |
| 		{
 | |
| 			$global:Result = 0
 | |
| 			$main_form.Close()
 | |
| 		}
 | |
| 	)
 | |
| 	$timer.Interval = $timeout
 | |
| 	$timer.Start()
 | |
| }
 | |
| $dlg_res = $main_form.ShowDialog()
 | |
| 
 | |
| [Environment]::Exit($global:Result)
 | 
