Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Func _Box($pX, $pY, $rX, $rY, $szTitle, $szLines)
- _Console_SetCursorVisible(-1, False)
- Local $aSplit = StringSplit($szLines, ";")
- Local $IsButton[$aSplit[0]], $IsInput[$aSplit[0]], $iButtons = 0, $iInps = 0, $iMax = 0, $cMouse, $isLighted[$aSplit[0]], $aInput[4] = [".", ".", ".", "."]
- _Fill($pX, $pY, $rX, 1, "9", "F", " ")
- _Fill($pX + _Box_Center($rX, $szTitle), $pY, StringLen(StringLeft($szTitle, $rX)), 1, "9", "F", $szTitle)
- _Fill($pX, $pY + 1, $rX, $rY, "F", "F", " ")
- _Fill($pX + 1, $pY + $rY + 1, $rX, 1, "0", "7", "▀")
- _Fill($pX + $rX, $pY + 1, 1, $rY, "0", "7", "█")
- _Fill($pX + $rX, $pY, 1, 1, "0", "7", "▄")
- For $iLines = 1 To $aSplit[0]
- If StringLeft($aSplit[$iLines], 2) = "##" Then
- If _Box_ParseLine($aSplit[$iLines], "X") + StringLen(_Box_ParseLine($aSplit[$iLines], "Text")) - 1 <= $rX And _Box_ParseLine($aSplit[$iLines], "Y") - 1 < $rY Then
- $iButtons += 1
- $IsButton[$iLines - 1] = $iButtons
- _Fill($pX + _Box_ParseLine($aSplit[$iLines], "X") - 1, $pY + _Box_ParseLine($aSplit[$iLines], "Y"), StringLen(_Box_ParseLine($aSplit[$iLines], "Text")), 1, "C", "F", _Box_ParseLine($aSplit[$iLines], "Text"))
- EndIf
- ElseIf StringLeft($aSplit[$iLines], 2) = "!!" Then
- If _Box_ParseLine($aSplit[$iLines], "X") + StringLen(_Box_ParseLine($aSplit[$iLines], "Text")) - 1 <= $rX And _Box_ParseLine($aSplit[$iLines], "Y") - 1 < $rY Then
- $IsButton[$iLines - 1] = 0
- _Fill($pX + _Box_ParseLine($aSplit[$iLines], "X") - 1, $pY + _Box_ParseLine($aSplit[$iLines], "Y"), StringLen(_Box_ParseLine($aSplit[$iLines], "Text")), 1, "F", "0", _Box_ParseLine($aSplit[$iLines], "Text"))
- EndIf
- ElseIf StringLeft($aSplit[$iLines], 2) = "$$" Then
- If _Box_ParseLine($aSplit[$iLines], "X") + _Box_ParseLine($aSplit[$iLines], "Text") - 1 <= $rX And _Box_ParseLine($aSplit[$iLines], "Y") - 1 < $rY Then
- $iInps += 1
- $IsInput[$iLines - 1] = $iInps
- _Fill($pX + _Box_ParseLine($aSplit[$iLines], "X") - 1, $pY + _Box_ParseLine($aSplit[$iLines], "Y"), _Box_ParseLine($aSplit[$iLines], "Text"), 1, "8", "F", " ")
- EndIf
- EndIf
- Next
- If $iButtons <> 0 Then
- Local $inpsData[$iInps], $cCode, $tKeyRecord, $cChar, $bPressed
- While 1
- _Console_ReadConsoleInput($hStdIn, $tRecord, 1, $iRecordsRead)
- If DllStructGetData($tRecord, "EventType") = $MOUSE_EVENT Then
- Local $tMouseRecord = DllStructCreate($tagINPUT_RECORD_MOUSE, DllStructGetPtr($tRecord))
- Local $iMouseEvent = DllStructGetData($tMouseRecord, "dwEventFlags")
- Local $cMouse[3] = [DllStructGetData($tMouseRecord, "X") + 1, DllStructGetData($tMouseRecord, "Y") + 1, DllStructGetData($tMouseRecord, "dwButtonState")]
- For $iLines = 1 To $aSplit[0]
- If $IsButton[$iLines - 1] <> 0 And $cMouse[1] = $pY + _Box_ParseLine($aSplit[$iLines], "Y") Then
- Switch $cMouse[0]
- Case $pX + _Box_ParseLine($aSplit[$iLines], "X") - 1 To $pX + _Box_ParseLine($aSplit[$iLines], "X") - 2 + StringLen(_Box_ParseLine($aSplit[$iLines], "Text"))
- _Fill($pX + _Box_ParseLine($aSplit[$iLines], "X") - 1, $pY + _Box_ParseLine($aSplit[$iLines], "Y"), StringLen(_Box_ParseLine($aSplit[$iLines], "Text")), 1, "2", "7", _Box_ParseLine($aSplit[$iLines], "Text"))
- While 1
- _Console_ReadConsoleInput($hStdIn, $tRecord, 1, $iRecordsRead)
- If DllStructGetData($tRecord, "EventType") = $MOUSE_EVENT Then
- Local $tMouseRecord = DllStructCreate($tagINPUT_RECORD_MOUSE, DllStructGetPtr($tRecord))
- Local $iMouseEvent = DllStructGetData($tMouseRecord, "dwEventFlags")
- Local $cMouse[3] = [DllStructGetData($tMouseRecord, "X") + 1, DllStructGetData($tMouseRecord, "Y") + 1, DllStructGetData($tMouseRecord, "dwButtonState")]
- If $cMouse[2] = 1 Then
- _Console_SetCursorVisible(-1, False)
- _ExitVar("ButtonText", _Box_ParseLine($aSplit[$iLines], "Text"), 1)
- _ExitVar("ButtonNumber", $IsButton[$iLines - 1], 0)
- _ExitVar("Inputs", $iInps, 0)
- For $i = 0 To $iInps - 1
- _ExitVar("InputData" & $i + 1, $inpsData[$i], 0)
- Next
- Exit
- EndIf
- If $cMouse[1] = $pY + _Box_ParseLine($aSplit[$iLines], "Y") Then
- Switch $cMouse[0]
- Case $pX + _Box_ParseLine($aSplit[$iLines], "X") - 1 To $pX + _Box_ParseLine($aSplit[$iLines], "X") - 2 + StringLen(_Box_ParseLine($aSplit[$iLines], "Text"))
- ContinueLoop
- Case Else
- ExitLoop
- EndSwitch
- Else
- ExitLoop
- EndIf
- EndIf
- WEnd
- _Fill($pX + _Box_ParseLine($aSplit[$iLines], "X") - 1, $pY + _Box_ParseLine($aSplit[$iLines], "Y"), StringLen(_Box_ParseLine($aSplit[$iLines], "Text")), 1, "C", "F", _Box_ParseLine($aSplit[$iLines], "Text"))
- EndSwitch
- ElseIf $IsInput[$iLines - 1] <> 0 And $cMouse[1] = $pY + _Box_ParseLine($aSplit[$iLines], "Y") Then
- Switch $cMouse[0]
- Case $pX + _Box_ParseLine($aSplit[$iLines], "X") - 1 To $pX + _Box_ParseLine($aSplit[$iLines], "X") - 2 + _Box_ParseLine($aSplit[$iLines], "Text")
- If $cMouse[2] = 1 Then
- $aInput[0] = $pX + _Box_ParseLine($aSplit[$iLines], "X") - 1
- $aInput[1] = $pY + _Box_ParseLine($aSplit[$iLines], "Y")
- $aInput[2] = _Box_ParseLine($aSplit[$iLines], "Text")
- $aInput[3] = $IsInput[$iLines - 1]
- _Console_SetCursorVisible(-1, True)
- _Move_($aInput[0] + StringLen($inpsData[$aInput[3] - 1]), $aInput[1])
- EndIf
- EndSwitch
- EndIf
- Next
- ElseIf DllStructGetData($tRecord, "EventType") = $KEY_EVENT Then
- If $aInput[0] <> "." Then
- _Move_($aInput[0] + StringLen($inpsData[$aInput[3] - 1]), $aInput[1])
- $tKeyRecord = DllStructCreate($tagINPUT_RECORD_KEY, DllStructGetPtr($tRecord))
- $cChar = DllStructGetData($tKeyRecord, "UnicodeChar")
- $cCode = DllStructGetData($tKeyRecord, "wVirtualKeyCode")
- $bPressed = DllStructGetData($tKeyRecord, "bKeyDown")
- If $bPressed Then
- If $cCode = 8 Then
- _Fill($aInput[0], $aInput[1], StringLen($inpsData[$aInput[3] - 1]), 1, "8", "F", " ")
- $inpsData[$aInput[3] - 1] = StringTrimRight($inpsData[$aInput[3] - 1], 1)
- _Move_($aInput[0] + StringLen($inpsData[$aInput[3] - 1]), $aInput[1])
- ElseIf $cCode = 9 Then
- If $aInput[3] = $iInps Then
- For $iLines = 1 To $aSplit[0]
- If $IsInput[$iLines - 1] = 1 Then
- $aInput[0] = $pX + _Box_ParseLine($aSplit[$iLines], "X") - 1
- $aInput[1] = $pY + _Box_ParseLine($aSplit[$iLines], "Y")
- $aInput[2] = _Box_ParseLine($aSplit[$iLines], "Text")
- $aInput[3] = $IsInput[$iLines - 1]
- _Console_SetCursorVisible(-1, True)
- _Move_($aInput[0] + StringLen($inpsData[$aInput[3] - 1]), $aInput[1])
- EndIf
- Next
- Else
- For $iLines = 1 To $aSplit[0]
- If $IsInput[$iLines - 1] = $aInput[3] + 1 Then
- $aInput[0] = $pX + _Box_ParseLine($aSplit[$iLines], "X") - 1
- $aInput[1] = $pY + _Box_ParseLine($aSplit[$iLines], "Y")
- $aInput[2] = _Box_ParseLine($aSplit[$iLines], "Text")
- $aInput[3] = $IsInput[$iLines - 1]
- _Console_SetCursorVisible(-1, True)
- _Move_($aInput[0] + StringLen($inpsData[$aInput[3] - 1]), $aInput[1])
- ExitLoop
- EndIf
- Next
- EndIf
- ElseIf StringInStr("ą %^&|`~1!2@3#4$5678*9(0)-_=+\qwertyuiop[]asdfghjkl;zxcvbnm,./QWERTYUIOP{}ASDFGHJKL:ZXCVBNMs?'" & '"', $cChar, 1) Then
- If StringLen($inpsData[$aInput[3] - 1]) < $aInput[2] Then $inpsData[$aInput[3] - 1] &= $cChar
- EndIf
- _Fill($aInput[0], $aInput[1], StringLen($inpsData[$aInput[3] - 1]), 1, "8", "F", $inpsData[$aInput[3] - 1])
- EndIf
- EndIf
- EndIf
- WEnd
- EndIf
- _Console_SetCursorVisible(-1, True)
- EndFunc ;==>_Box
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement