Advertisement
Guest User

Untitled

a guest
Jun 15th, 2015
265
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
AutoIt 7.74 KB | None | 0 0
  1. Func _Box($pX, $pY, $rX, $rY, $szTitle, $szLines)
  2.     _Console_SetCursorVisible(-1, False)
  3.     Local $aSplit = StringSplit($szLines, ";")
  4.     Local $IsButton[$aSplit[0]], $IsInput[$aSplit[0]], $iButtons = 0, $iInps = 0, $iMax = 0, $cMouse, $isLighted[$aSplit[0]], $aInput[4] = [".", ".", ".", "."]
  5.     _Fill($pX, $pY, $rX, 1, "9", "F", " ")
  6.     _Fill($pX + _Box_Center($rX, $szTitle), $pY, StringLen(StringLeft($szTitle, $rX)), 1, "9", "F", $szTitle)
  7.     _Fill($pX, $pY + 1, $rX, $rY, "F", "F", " ")
  8.     _Fill($pX + 1, $pY + $rY + 1, $rX, 1, "0", "7", "▀")
  9.     _Fill($pX + $rX, $pY + 1, 1, $rY, "0", "7", "█")
  10.     _Fill($pX + $rX, $pY, 1, 1, "0", "7", "▄")
  11.     For $iLines = 1 To $aSplit[0]
  12.         If StringLeft($aSplit[$iLines], 2) = "##" Then
  13.             If _Box_ParseLine($aSplit[$iLines], "X") + StringLen(_Box_ParseLine($aSplit[$iLines], "Text")) - 1 <= $rX And _Box_ParseLine($aSplit[$iLines], "Y") - 1 < $rY Then
  14.                 $iButtons += 1
  15.                 $IsButton[$iLines - 1] = $iButtons
  16.                 _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"))
  17.             EndIf
  18.         ElseIf StringLeft($aSplit[$iLines], 2) = "!!" Then
  19.             If _Box_ParseLine($aSplit[$iLines], "X") + StringLen(_Box_ParseLine($aSplit[$iLines], "Text")) - 1 <= $rX And _Box_ParseLine($aSplit[$iLines], "Y") - 1 < $rY Then
  20.                 $IsButton[$iLines - 1] = 0
  21.                 _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"))
  22.             EndIf
  23.         ElseIf StringLeft($aSplit[$iLines], 2) = "$$" Then
  24.             If _Box_ParseLine($aSplit[$iLines], "X") + _Box_ParseLine($aSplit[$iLines], "Text") - 1 <= $rX And _Box_ParseLine($aSplit[$iLines], "Y") - 1 < $rY Then
  25.                 $iInps += 1
  26.                 $IsInput[$iLines - 1] = $iInps
  27.                 _Fill($pX + _Box_ParseLine($aSplit[$iLines], "X") - 1, $pY + _Box_ParseLine($aSplit[$iLines], "Y"), _Box_ParseLine($aSplit[$iLines], "Text"), 1, "8", "F", " ")
  28.             EndIf
  29.         EndIf
  30.     Next
  31.     If $iButtons <> 0 Then
  32.         Local $inpsData[$iInps], $cCode, $tKeyRecord, $cChar, $bPressed
  33.         While 1
  34.             _Console_ReadConsoleInput($hStdIn, $tRecord, 1, $iRecordsRead)
  35.             If DllStructGetData($tRecord, "EventType") = $MOUSE_EVENT Then
  36.                 Local $tMouseRecord = DllStructCreate($tagINPUT_RECORD_MOUSE, DllStructGetPtr($tRecord))
  37.                 Local $iMouseEvent = DllStructGetData($tMouseRecord, "dwEventFlags")
  38.                 Local $cMouse[3] = [DllStructGetData($tMouseRecord, "X") + 1, DllStructGetData($tMouseRecord, "Y") + 1, DllStructGetData($tMouseRecord, "dwButtonState")]
  39.                 For $iLines = 1 To $aSplit[0]
  40.                     If $IsButton[$iLines - 1] <> 0 And $cMouse[1] = $pY + _Box_ParseLine($aSplit[$iLines], "Y") Then
  41.                         Switch $cMouse[0]
  42.                             Case $pX + _Box_ParseLine($aSplit[$iLines], "X") - 1 To $pX + _Box_ParseLine($aSplit[$iLines], "X") - 2 + StringLen(_Box_ParseLine($aSplit[$iLines], "Text"))
  43.                                 _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"))
  44.                                 While 1
  45.                                     _Console_ReadConsoleInput($hStdIn, $tRecord, 1, $iRecordsRead)
  46.                                     If DllStructGetData($tRecord, "EventType") = $MOUSE_EVENT Then
  47.                                         Local $tMouseRecord = DllStructCreate($tagINPUT_RECORD_MOUSE, DllStructGetPtr($tRecord))
  48.                                         Local $iMouseEvent = DllStructGetData($tMouseRecord, "dwEventFlags")
  49.                                         Local $cMouse[3] = [DllStructGetData($tMouseRecord, "X") + 1, DllStructGetData($tMouseRecord, "Y") + 1, DllStructGetData($tMouseRecord, "dwButtonState")]
  50.                                         If $cMouse[2] = 1 Then
  51.                                             _Console_SetCursorVisible(-1, False)
  52.                                             _ExitVar("ButtonText", _Box_ParseLine($aSplit[$iLines], "Text"), 1)
  53.                                             _ExitVar("ButtonNumber", $IsButton[$iLines - 1], 0)
  54.                                             _ExitVar("Inputs", $iInps, 0)
  55.                                             For $i = 0 To $iInps - 1
  56.                                                 _ExitVar("InputData" & $i + 1, $inpsData[$i], 0)
  57.                                             Next
  58.                                             Exit
  59.                                         EndIf
  60.                                         If $cMouse[1] = $pY + _Box_ParseLine($aSplit[$iLines], "Y") Then
  61.                                             Switch $cMouse[0]
  62.                                                 Case $pX + _Box_ParseLine($aSplit[$iLines], "X") - 1 To $pX + _Box_ParseLine($aSplit[$iLines], "X") - 2 + StringLen(_Box_ParseLine($aSplit[$iLines], "Text"))
  63.                                                     ContinueLoop
  64.                                                 Case Else
  65.                                                     ExitLoop
  66.                                             EndSwitch
  67.                                         Else
  68.                                             ExitLoop
  69.                                         EndIf
  70.                                     EndIf
  71.                                 WEnd
  72.                                 _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"))
  73.                         EndSwitch
  74.                     ElseIf $IsInput[$iLines - 1] <> 0 And $cMouse[1] = $pY + _Box_ParseLine($aSplit[$iLines], "Y") Then
  75.                         Switch $cMouse[0]
  76.                             Case $pX + _Box_ParseLine($aSplit[$iLines], "X") - 1 To $pX + _Box_ParseLine($aSplit[$iLines], "X") - 2 + _Box_ParseLine($aSplit[$iLines], "Text")
  77.                                 If $cMouse[2] = 1 Then
  78.                                     $aInput[0] = $pX + _Box_ParseLine($aSplit[$iLines], "X") - 1
  79.                                     $aInput[1] = $pY + _Box_ParseLine($aSplit[$iLines], "Y")
  80.                                     $aInput[2] = _Box_ParseLine($aSplit[$iLines], "Text")
  81.                                     $aInput[3] = $IsInput[$iLines - 1]
  82.                                     _Console_SetCursorVisible(-1, True)
  83.                                     _Move_($aInput[0] + StringLen($inpsData[$aInput[3] - 1]), $aInput[1])
  84.                                 EndIf
  85.                         EndSwitch
  86.                     EndIf
  87.                 Next
  88.             ElseIf DllStructGetData($tRecord, "EventType") = $KEY_EVENT Then
  89.                 If $aInput[0] <> "." Then
  90.                     _Move_($aInput[0] + StringLen($inpsData[$aInput[3] - 1]), $aInput[1])
  91.                     $tKeyRecord = DllStructCreate($tagINPUT_RECORD_KEY, DllStructGetPtr($tRecord))
  92.                     $cChar = DllStructGetData($tKeyRecord, "UnicodeChar")
  93.                     $cCode = DllStructGetData($tKeyRecord, "wVirtualKeyCode")
  94.                     $bPressed = DllStructGetData($tKeyRecord, "bKeyDown")
  95.                     If $bPressed Then
  96.                         If $cCode = 8 Then
  97.                             _Fill($aInput[0], $aInput[1], StringLen($inpsData[$aInput[3] - 1]), 1, "8", "F", " ")
  98.                             $inpsData[$aInput[3] - 1] = StringTrimRight($inpsData[$aInput[3] - 1], 1)
  99.                             _Move_($aInput[0] + StringLen($inpsData[$aInput[3] - 1]), $aInput[1])
  100.                         ElseIf $cCode = 9 Then
  101.                             If $aInput[3] = $iInps Then
  102.                                 For $iLines = 1 To $aSplit[0]
  103.                                     If $IsInput[$iLines - 1] = 1 Then
  104.                                         $aInput[0] = $pX + _Box_ParseLine($aSplit[$iLines], "X") - 1
  105.                                         $aInput[1] = $pY + _Box_ParseLine($aSplit[$iLines], "Y")
  106.                                         $aInput[2] = _Box_ParseLine($aSplit[$iLines], "Text")
  107.                                         $aInput[3] = $IsInput[$iLines - 1]
  108.                                         _Console_SetCursorVisible(-1, True)
  109.                                         _Move_($aInput[0] + StringLen($inpsData[$aInput[3] - 1]), $aInput[1])
  110.                                     EndIf
  111.                                 Next
  112.                             Else
  113.                                 For $iLines = 1 To $aSplit[0]
  114.                                     If $IsInput[$iLines - 1] = $aInput[3] + 1 Then
  115.                                         $aInput[0] = $pX + _Box_ParseLine($aSplit[$iLines], "X") - 1
  116.                                         $aInput[1] = $pY + _Box_ParseLine($aSplit[$iLines], "Y")
  117.                                         $aInput[2] = _Box_ParseLine($aSplit[$iLines], "Text")
  118.                                         $aInput[3] = $IsInput[$iLines - 1]
  119.                                         _Console_SetCursorVisible(-1, True)
  120.                                         _Move_($aInput[0] + StringLen($inpsData[$aInput[3] - 1]), $aInput[1])
  121.                                         ExitLoop
  122.                                     EndIf
  123.                                 Next
  124.                             EndIf
  125.                         ElseIf StringInStr("ą %^&|`~1!2@3#4$5678*9(0)-_=+\qwertyuiop[]asdfghjkl;zxcvbnm,./QWERTYUIOP{}ASDFGHJKL:ZXCVBNMs?'" & '"', $cChar, 1) Then
  126.                             If StringLen($inpsData[$aInput[3] - 1]) < $aInput[2] Then $inpsData[$aInput[3] - 1] &= $cChar
  127.                         EndIf
  128.                         _Fill($aInput[0], $aInput[1], StringLen($inpsData[$aInput[3] - 1]), 1, "8", "F", $inpsData[$aInput[3] - 1])
  129.                     EndIf
  130.                 EndIf
  131.             EndIf
  132.         WEnd
  133.     EndIf
  134.     _Console_SetCursorVisible(-1, True)
  135. EndFunc   ;==>_Box
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement