;====================================================
; Утилита для шифрования данных с графическим интерфейсом
;====================================================
; AutoIt version: 3.0.103
; Language:       English
; Author:         "Wolvereness"
;
; ----------------------------------------------------------------------------
; Script Start
; ----------------------------------------------------------------------------

#include <GUIConstantsEx.au3>
#include <String.au3>
; #include - включает файлы для шифрования/дешифрования и константы GUI

_Main()

Func _Main()
	Local $WinMain, $EditText, $InputLevel, $InputPass, $UpDownLevel
	Local $EncryptButton, $DecryptButton, $string
	#forceref $UpDownLevel

	; Создаёт окно
	$WinMain = GUICreate('Утилита для шифрования данных', 400, 400)

	; Создаёт основное окно редактирования
	$EditText = GUICtrlCreateEdit('', 5, 5, 380, 350)

	; Создаёт поле ввода пароля скрытый под звёздочками и по центру
	$InputPass = GUICtrlCreateInput('', 5, 360, 100, 20, 0x21)

	; Создаёт 2-ое поле ввода определяющее "Уровень" с возможностью изменения стрелками вверх/вниз
	$InputLevel = GUICtrlCreateInput(1, 110, 360, 50, 20, 0x2001)
	$UpDownLevel = GUICtrlSetLimit(GUICtrlCreateUpdown($InputLevel), 10, 1)

	; Кнопки шифрования и дешифрования
	$EncryptButton = GUICtrlCreateButton('Шифровать', 170, 360, 105, 35)
	$DecryptButton = GUICtrlCreateButton('Дешифровать', 285, 360, 105, 35)

	; Простые текстовые надписи, чтобы вы знали, что есть что
	GUICtrlCreateLabel('Пароль', 5, 385)
	GUICtrlCreateLabel('Уровень', 110, 385)

	; Показывает окно
	GUISetState()


	While 1
		Switch GUIGetMsg()
			Case $GUI_EVENT_CLOSE
				ExitLoop
			Case $EncryptButton
				; Когда вы нажимаете "Шифровать"

				; Ограничивает вас от возможности изменений в GUI после начала шифрования
				GUISetState(@SW_DISABLE, $WinMain)

				; Сохраняет данные окна редактирования в переменную для последующего использования
				$string = GUICtrlRead($EditText)

				; Дружественное сообщение с просьбой подождать
				GUICtrlSetData($EditText, 'Пожалуйста, подождите, пока текст шифруется / дешифруется.')

				; Вызывает шифрование. Вставляет шифрованные данные в окно редактирования
				GUICtrlSetData($EditText, _StringEncrypt(1, $string, GUICtrlRead($InputPass), GUICtrlRead($InputLevel)))

				; Разблокирует окно, делая доступным
				GUISetState(@SW_ENABLE, $WinMain)

			Case $DecryptButton
				; Когда вы нажимаете "Дешифровать"

				; Ограничивает вас от возможности изменений в GUI после начала шифрования
				GUISetState(@SW_DISABLE, $WinMain)

				; Сохраняет данные окна редактирования в переменную для последующего использования
				$string = GUICtrlRead($EditText)

				; Дружественное сообщение с просьбой подождать
				GUICtrlSetData($EditText, 'Пожалуйста, подождите, пока текст шифруется / дешифруется.')

				; Вызывает дешифрование. Вставляет дешифрованные данные в окно редактирования
				GUICtrlSetData($EditText, _StringEncrypt(0, $string, GUICtrlRead($InputPass), GUICtrlRead($InputLevel)))

				; Разблокирует окно, делая доступным
				GUISetState(@SW_ENABLE, $WinMain)

		EndSwitch
	WEnd
EndFunc   ;==>_Main
