#include <GUIConstants.au3>
#Include <GuiComboBox.au3>
Opt("GUIOnEventMode", 1)
Global $ParentID = '', $ParentWidth = 0, $ParentHeight = 0, $Code = '', $Text = '', $Align = $SS_LEFT 
Global $SplashID = '', $SplashX = 0, $SplashY = 0, $SplashWidth = 0, $SplashHeigth = 0
Global $FontSize = 8.5, $FontWeight = 400, $FontAttrib = 'Standard', $Child = 0, $View
Global $FontName = 'Comic Sans MS', $FontColor = 0x000000, $BackColor = 0xD4D0C8, $GUIBCol = 0x0088FF
Global $GUIPos[4] = [447, 675, @DesktopWidth-460, 8]
Global $Text, $absTop = 10, $countGB = 0

$SplashGUI_Generator = GUICreate("Splash - GUI Generator", $GUIPos[0], $GUIPos[1], $GUIPos[2], $GUIPos[3])
GUISetOnEvent($GUI_EVENT_CLOSE, "SplashGUI_GeneratorClose")
GUISetBkColor($GUIBCol)
$grType = GUICtrlCreateGroup(" Splash GUI Typ ", 10, 10, 423, 45)
$rAlone = GUICtrlCreateRadio("Stand Alone", 22, 28, 85, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
GUICtrlSetOnEvent(-1, "rAloneClick")
$rChild = GUICtrlCreateRadio("Child", 125, 28, 50, 17)
GUICtrlSetOnEvent(-1, "rChildClick")
$InParentName = GUICtrlCreateInput("", 288, 26, 130, 21)
GUICtrlSetOnEvent(-1, "InParentNameChange")
$lbParentName = GUICtrlCreateLabel("ID / Title ParentGUI", 183, 29, 99, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$grPosSize = GUICtrlCreateGroup(" Position, Größe und Style ", 10, 56, 423, 150)
$grSelectKoordSchema = GUICtrlCreateGroup("", 20, 71, 261, 36)
$rKoordinaten = GUICtrlCreateRadio("Positionskoordinaten", 30, 83, 118, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
GUICtrlSetOnEvent(-1, "rKoordinatenClick")
$rSchema = GUICtrlCreateRadio("Position schematisch", 156, 83, 119, 17)
GUICtrlSetOnEvent(-1, "rSchemaClick")
GUICtrlCreateGroup("", -99, -99, 1, 1)
$lbX = GUICtrlCreateLabel("X", 33, 122, 11, 17)
$lbY = GUICtrlCreateLabel("Y", 33, 145, 11, 17)
$InX = GUICtrlCreateInput("", 50, 118, 50, 21, BitOR($ES_RIGHT,$ES_AUTOHSCROLL,$ES_NUMBER))
GUICtrlSetOnEvent(-1, "InXChange")
$InY = GUICtrlCreateInput("", 50, 142, 50, 21, BitOR($ES_RIGHT,$ES_AUTOHSCROLL,$ES_NUMBER))
GUICtrlSetOnEvent(-1, "InYChange")
$lbBreite = GUICtrlCreateLabel("Breite", 180, 122, 31, 17)
$lbHoehe = GUICtrlCreateLabel("Höhe", 180, 142, 30, 17)
$InWidth = GUICtrlCreateInput("", 217, 118, 50, 21, BitOR($ES_RIGHT,$ES_AUTOHSCROLL,$ES_NUMBER))
GUICtrlSetOnEvent(-1, "InWidthChange")
$InHeight = GUICtrlCreateInput("", 217, 142, 50, 21, BitOR($ES_RIGHT,$ES_AUTOHSCROLL,$ES_NUMBER))
GUICtrlSetOnEvent(-1, "InHeightChange")
$lbParentSize = GUICtrlCreateLabel("Parent-GUI:", 20, 174, 55, 17)
$lbPtBreite = GUICtrlCreateLabel("Breite", 80, 174, 31, 17)
$InPtBreite = GUICtrlCreateInput("", 115, 171, 50, 21, BitOR($ES_RIGHT,$ES_AUTOHSCROLL,$ES_NUMBER))
$lbPtHoehe = GUICtrlCreateLabel("Höhe", 180, 174, 30, 17)
$InPtHoehe = GUICtrlCreateInput("", 217, 171, 50, 21, BitOR($ES_RIGHT,$ES_AUTOHSCROLL,$ES_NUMBER))
$grSchema = GUICtrlCreateGroup(" Desktop / ParentGUI ", 289, 71, 130, 121)
$rTL = GUICtrlCreateRadio("", 301, 96, 17, 17)
$rTC = GUICtrlCreateRadio("", 345, 96, 16, 16)
$rTR = GUICtrlCreateRadio("", 389, 96, 17, 17)
$rCL = GUICtrlCreateRadio("", 301, 130, 17, 17)
$rC = GUICtrlCreateRadio("", 345, 130, 17, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$rCR = GUICtrlCreateRadio("", 389, 130, 17, 17)
$rBL = GUICtrlCreateRadio("", 301, 165, 17, 17)
$rBC = GUICtrlCreateRadio("", 345, 165, 17, 17)
$rBR = GUICtrlCreateRadio("", 389, 165, 17, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$grControl = GUICtrlCreateGroup(" ID und Text ", 10, 212, 423, 169)
$lbID = GUICtrlCreateLabel("ID", 265, 232, 15, 17)
$InSplashID = GUICtrlCreateInput("", 288, 229, 130, 21)
GUICtrlSetOnEvent(-1, "InSplashIDChange")
$EdSplashText = GUICtrlCreateEdit("", 22, 253, 396, 121, -1, $ES_MULTILINE)
$lbEditText = GUICtrlCreateLabel("Inhalt der Splash - GUI", 22, 232, 111, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$grColor = GUICtrlCreateGroup(" Farben und Font ", 10, 386, 423, 255)
$grRowSelect = GUICtrlCreateGroup(" Gültigkeit ", 22, 401, 200, 37)
$r4All = GUICtrlCreateRadio("Gesamter Text", 28, 416, 93, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
GUICtrlSetOnEvent(-1, "r4AllClick")
$rOneRow = GUICtrlCreateRadio("Zeile mit Cursor", 126, 416, 93, 17)
GUICtrlSetOnEvent(-1, "rOneRowClick")
GUICtrlCreateGroup("", -99, -99, 1, 1)
$grAlign = GUICtrlCreateGroup(" Ausrichtung ", 226, 401, 194, 37)
$rLeft = GUICtrlCreateRadio("Links", 236, 416, 45, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
GUICtrlSetOnEvent(-1, "rLeftClick")
$rCenter = GUICtrlCreateRadio("Mitte", 298, 416, 45, 17)
GUICtrlSetOnEvent(-1, "rCenterClick")
$rRight = GUICtrlCreateRadio("Rechts", 354, 416, 55, 17)
GUICtrlSetOnEvent(-1, "rRightClick")
GUICtrlCreateGroup("", -99, -99, 1, 1)
$lbFonttype = GUICtrlCreateLabel("Schriftart", 22, 449, 43, 17)
$cbFontType = GUICtrlCreateCombo("", 68, 446, 245, 25, BitOR( $CBS_SORT,$CBS_DROPDOWN, $CBS_AUTOHSCROLL, $WS_VSCROLL))
GUICtrlSetOnEvent(-1, "cbFontTypeChange")
$lbFontSize = GUICtrlCreateLabel("Größe", 325, 449, 31, 17)
$cbFontSize = GUICtrlCreateCombo("", 360, 446, 60, 25)
GUICtrlSetOnEvent(-1, "cbFontSizeChange")
$lbFontAttrib = GUICtrlCreateLabel("Attribut", 22, 477, 37, 17)
$cbFontAttrib = GUICtrlCreateCombo("", 68, 474, 145, 25)
GUICtrlSetOnEvent(-1, "cbFontAttribChange")
$lbFontWeight = GUICtrlCreateLabel("Breite", 22, 505, 29, 17)
$cbFontWeight = GUICtrlCreateCombo("", 68, 502, 145, 25)
GUICtrlSetOnEvent(-1, "cbFontWeightChange")
$lbMuster = GUICtrlCreateLabel("Muster", 222, 474, 197, 49, BitOR($SS_CENTER,$SS_CENTERIMAGE,$SS_SUNKEN))
GUICtrlSetBkColor(-1, $BackColor)
$rFontColor = GUICtrlCreateRadio("Schriftfarbe", 22, 531, 79, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
GUICtrlSetOnEvent(-1, "rFontColorClick")
$rBackColor = GUICtrlCreateRadio("Hintergrundfarbe", 100, 531, 105, 17)
GUICtrlSetOnEvent(-1, "rBackColorClick")
$rBColGUI = GUICtrlCreateRadio("GUI BackColor", 205, 531, 90, 17)
GUICtrlSetOnEvent(-1, "rBColGUIClick")
$btText = GUICtrlCreateButton("Text übernehmen", 304, 529, 115, 20, 0)
GUICtrlSetOnEvent(-1, "btTextClick")
$slRed = GUICtrlCreateSlider(174, 554, 250, 20, 0)
GUICtrlSetLimit(-1, 255, 0)
GUICtrlSetBkColor(-1, 0xFF0000)
GUICtrlSetOnEvent(-1, "slRedChange")
$slGreen = GUICtrlCreateSlider(174, 579, 250, 20, 0)
GUICtrlSetLimit(-1, 255, 0)
GUICtrlSetBkColor(-1, 0x00FF00)
GUICtrlSetOnEvent(-1, "slGreenChange")
$slBlue = GUICtrlCreateSlider(174, 604, 250, 20, 0)
GUICtrlSetLimit(-1, 255, 0)
GUICtrlSetBkColor(-1, 0x0000FF)
GUICtrlSetOnEvent(-1, "slBlueChange")
$InRed = GUICtrlCreateInput("", 132, 554, 40, 21, BitOR($ES_RIGHT,$ES_AUTOHSCROLL,$ES_NUMBER))
GUICtrlSetOnEvent(-1, "InRedChange")
$InGreen = GUICtrlCreateInput("", 132, 579, 40, 21, BitOR($ES_RIGHT,$ES_AUTOHSCROLL,$ES_NUMBER))
GUICtrlSetOnEvent(-1, "InGreenChange")
$InBlue = GUICtrlCreateInput("", 132, 604, 40, 21, BitOR($ES_RIGHT,$ES_AUTOHSCROLL,$ES_NUMBER))
GUICtrlSetOnEvent(-1, "InBlueChange")
$lbRed = GUICtrlCreateLabel("Rot", 100, 557, 21, 17)
$lbGreen = GUICtrlCreateLabel("Grün", 100, 582, 27, 17)
$lbBlue = GUICtrlCreateLabel("Blau", 100, 607, 25, 17)
$lbColorView = GUICtrlCreateLabel("", 22, 554, 60, 46, $SS_SUNKEN)
$InHex = GUICtrlCreateInput("", 22, 604, 60, 21, BitOR($ES_CENTER,$ES_AUTOHSCROLL))
GUICtrlSetOnEvent(-1, "InHexChange")
GUICtrlCreateGroup("", -99, -99, 1, 1)
$btPreview = GUICtrlCreateButton("Vorschau", 10, 648, 120, 21)
GUICtrlSetOnEvent(-1, "btPreviewClick")
$btDelete = GUICtrlCreateButton("Code löschen", 162, 648, 120, 21)
GUICtrlSetOnEvent(-1, "btDeleteClick")
$btEnd = GUICtrlCreateButton("Beenden", 315, 648, 120, 21)
GUICtrlSetOnEvent(-1, "SplashGUI_GeneratorClose")
; GUI Labelhöhe bestimmen
$guiLabel = GUICreate('', 200, 150, 40, 40)
$label = GUICtrlCreateLabel('', 0, 0, 200, 130, $SS_CENTERIMAGE)
GUICtrlSetData($label, 'qÄ')
GUICtrlSetColor($label, 0xFF0000)

_DisableParent()
_DisableParentSize()
_DisableSchema()
_Slider2Hex()
_SetComboFonts()
_SetComboSize()
_SetComboAttrib()
_SetComboWeight()
GUICtrlSetFont($lbMuster, -1, -1, -1, $FontName)

GUISetState(@SW_SHOW, $SplashGUI_Generator)

While 1
	Sleep(100)
WEnd


Func btTextClick()
	_CodeCreate()		
EndFunc
Func btPreviewClick()
	Local $arCode, $file = @HomeDrive & @HomePath & '\splashGUIpreview.au3'
	If FileExists(@HomeDrive & @HomePath & '\splashGUIpreview.exe') Then _
		FileDelete(@HomeDrive & @HomePath & '\splashGUIpreview.exe')
	If $Code = '' Then
		MsgBox(0, '', 'Vorschau nicht möglich.' & @LF & 'Es wurde noch kein Text erstellt.')
		Return
	EndIf
	$fh = FileOpen($file,2)
	FileWriteLine($fh, '#include <GUIConstants.au3>')
	FileWriteLine($fh, 'Opt("GUIOnEventMode", 1)')
	FileWriteLine($fh, '$View = GUICreate("Vorschau Inhalt", ' & $SplashWidth & ', ' & $SplashHeigth & ', -1, -1)')
	FileWriteLine($fh, 'GUISetOnEvent($GUI_EVENT_CLOSE, "CloseView")')
	FileWriteLine($fh, 'GUISetBkColor(' & $GUIBCol & ', $View)')
	$arCode = StringSplit($Code, @LF)
	For $i = 1 To UBound($arCode) -1
		If $arCode[$i] <> '' Then 
			FileWriteLine($fh, $arCode[$i])
		EndIf
	Next
	FileWriteLine($fh, 'GUISetState(@SW_SHOW, $View)')
	FileWriteLine($fh, 'While 1')
	FileWriteLine($fh, 'sleep(100)')
	FileWriteLine($fh, 'WEnd')
	FileWriteLine($fh, 'Func CloseView()')
	FileWriteLine($fh, 'Exit')
	FileWriteLine($fh, 'EndFunc')
	FileClose($fh)
	Local $aut2EXE = RegRead('HKEY_LOCAL_MACHINE\SOFTWARE\AutoIt v3\AutoIt', 'InstallDir') & '\Aut2Exe\Aut2Exe.exe'
	RunWait($aut2EXE & ' /in "' & @HomeDrive & @HomePath & '\splashGUIpreview.au3"' & ' /out "' & @HomeDrive & @HomePath & '\splashGUIpreview.exe"')
	ShellExecuteWait(@HomeDrive & @HomePath & '\splashGUIpreview.exe')
	FileDelete(@HomeDrive & @HomePath & '\splashGUIpreview.exe')
EndFunc
Func btDeleteClick()
	$Code = ''
	$absTop = 10
EndFunc
Func CloseView()
	GUIDelete($View)
EndFunc
Func cbFontAttribChange()
	_ReadFont()
	_SetFontMuster()
EndFunc
Func cbFontSizeChange()
	_ReadFont()
	_SetFontMuster()
EndFunc
Func cbFontTypeChange()
	_ReadFont()
	_SetFontMuster()
EndFunc
Func cbFontWeightChange()
	_ReadFont()
	_SetFontMuster()
EndFunc
Func InBlueChange()
	$tmp = GUICtrlRead($InBlue)
	If $tmp < 0 Or $tmp > 255 Then
		GUICtrlSetData($InBlue, GUICtrlRead($slBlue))
		_SetFailed()
		Return
	EndIf
	GUICtrlSetData($slBlue, $tmp)
	_Slider2Hex()
EndFunc
Func InGreenChange()
	$tmp = GUICtrlRead($InGreen)
	If $tmp < 0 Or $tmp > 255 Then
		GUICtrlSetData($InGreen, GUICtrlRead($slGreen))
		_SetFailed()
		Return
	EndIf
	GUICtrlSetData($slGreen, $tmp)
	_Slider2Hex()
EndFunc
Func InHexChange()
	$tmp = GUICtrlRead($InHex)
	If Not StringRegExp($tmp, '(0x[0-9A-Fa-f]{6}(?!.))') Then
		_Slider2Hex()
		_SetFailed()
		Return
	EndIf
	_Hex2Slider()
EndFunc
Func InRedChange()
	$tmp = GUICtrlRead($InRed)
	If $tmp < 0 Or $tmp > 255 Then
		GUICtrlSetData($InRed, GUICtrlRead($slRed))
		_SetFailed()
		Return
	EndIf
	GUICtrlSetData($slRed, $tmp)
	_Slider2Hex()
EndFunc
Func InHeightChange()
	$SplashHeigth = GUICtrlRead($InHeight)
EndFunc
Func InParentNameChange()
	$ParentID = GUICtrlRead($InParentName)
EndFunc
Func InSplashIDChange()
	$SplashID = GUICtrlRead($InSplashID)
EndFunc
Func InWidthChange()
	$SplashWidth = GUICtrlRead($InWidth)
EndFunc
Func InXChange()
	$SplashX = GUICtrlRead($InX)
EndFunc
Func InYChange()
	$SplashY = GUICtrlRead($InY)
EndFunc
Func r4AllClick()
	GUICtrlSetData($btText, "Text übernehmen")
EndFunc
Func rAloneClick()
	If GUICtrlRead($rChild) = $GUI_UNCHECKED Then 
		_DisableParent()
		_DisableParentSize()
	EndIf
EndFunc
Func rBackColorClick()
	GUICtrlSetBkColor($lbMuster, $BackColor)
	GUICtrlSetData($InHex, '0x' & Hex($BackColor, 6))
	_Hex2Slider()
EndFunc
Func rBColGUIClick()
	If $countGB = 0 Then
		$GUIBCol = 0xD4D0C8
		$countGB = 1
	EndIf
	GUISetBkColor($GUIBCol, $SplashGUI_Generator)
	GUICtrlSetData($InHex, '0x' & Hex($GUIBCol, 6))
	_Hex2Slider()
EndFunc
Func rLeftClick()
	If GUICtrlRead($rLeft) = $GUI_CHECKED Then $Align = $SS_LEFT
EndFunc
Func rCenterClick()
	If GUICtrlRead($rCenter) = $GUI_CHECKED Then $Align = $SS_CENTER
EndFunc
Func rRightClick()
	If GUICtrlRead($rRight) = $GUI_CHECKED Then $Align = $SS_RIGHT
EndFunc
Func rChildClick()
	If GUICtrlRead($rChild) = $GUI_CHECKED Then 
		_EnableParent()
		If GUICtrlRead($rSchema) = $GUI_CHECKED Then 
			_EnableParentSize()
		Else
			_DisableParentSize()
		EndIf
	EndIf
EndFunc
Func rFontColorClick()
	GUICtrlSetColor($lbMuster, $FontColor)
	GUICtrlSetData($InHex, '0x' & Hex($FontColor, 6))
	_Hex2Slider()
EndFunc
Func rKoordinatenClick()
	If GUICtrlRead($rSchema) = $GUI_UNCHECKED Then 
		_DisableSchema()
		_EnableXY()
		If GUICtrlRead($rChild) = $GUI_CHECKED Then _DisableParentSize()
	EndIf
EndFunc
Func rOneRowClick()
	GUICtrlSetData($btText, "Zeile übernehmen")
EndFunc
Func rSchemaClick()
	If GUICtrlRead($rSchema) = $GUI_CHECKED Then 
		_EnableSchema()
		_DisableXY()
		If GUICtrlRead($rChild) = $GUI_CHECKED Then _EnableParentSize()
	EndIf
EndFunc
Func slBlueChange()
	_Slider2Hex()
EndFunc
Func slGreenChange()
	_Slider2Hex()
EndFunc
Func slRedChange()
	_Slider2Hex()
EndFunc
Func SplashGUI_GeneratorClose()
	Local $Header = ''
	Local $style = 'BitOR($WS_POPUP, $WS_THICKFRAME))'
	If GUICtrlRead($rChild) = $GUI_CHECKED Then $style = 'BitOR($WS_CHILD, $WS_THICKFRAME), $WS_EX_MDICHILD' & $ParentID & ')' 
	$Header &= 	'#include <GUIConstants.au3>' & @LF 
	$Header &= 	$SplashID & ' = GUICreate("", ' & $SplashWidth & ', ' & $SplashHeigth & ', ' & _
				$SplashX & ', ' & $SplashY & ', ' & $style & @LF & _
				'GUISetBkColor(' & $GUIBCol & ', ' & $SplashID & ')' & @LF & @LF 
	$Code = $Header & $Code
	ClipPut($Code)
	Exit
EndFunc

Func _DisableSchema()
	GUICtrlSetState($grSchema, $GUI_DISABLE)
	GUICtrlSetState($rBL, $GUI_DISABLE)
	GUICtrlSetState($rBC, $GUI_DISABLE)
	GUICtrlSetState($rBR, $GUI_DISABLE)
	GUICtrlSetState($rCL, $GUI_DISABLE)
	GUICtrlSetState($rC, $GUI_DISABLE)
	GUICtrlSetState($rCR, $GUI_DISABLE)
	GUICtrlSetState($rTL, $GUI_DISABLE)
	GUICtrlSetState($rTC, $GUI_DISABLE)
	GUICtrlSetState($rTR, $GUI_DISABLE)
EndFunc

Func _EnableSchema()
	GUICtrlSetState($grSchema, $GUI_ENABLE)
	GUICtrlSetState($rBL, $GUI_ENABLE)
	GUICtrlSetState($rBC, $GUI_ENABLE)
	GUICtrlSetState($rBR, $GUI_ENABLE)
	GUICtrlSetState($rCL, $GUI_ENABLE)
	GUICtrlSetState($rC, $GUI_ENABLE)
	GUICtrlSetState($rCR, $GUI_ENABLE)
	GUICtrlSetState($rTL, $GUI_ENABLE)
	GUICtrlSetState($rTC, $GUI_ENABLE)
	GUICtrlSetState($rTR, $GUI_ENABLE)
EndFunc

Func _DisableXY()
	GUICtrlSetState($lbX, $GUI_DISABLE)
	GUICtrlSetState($lbY, $GUI_DISABLE)
	GUICtrlSetState($InX, $GUI_DISABLE)
	GUICtrlSetState($InY, $GUI_DISABLE)
EndFunc

Func _EnableXY()
	GUICtrlSetState($lbX, $GUI_ENABLE)
	GUICtrlSetState($lbY, $GUI_ENABLE)
	GUICtrlSetState($InX, $GUI_ENABLE)
	GUICtrlSetState($InY, $GUI_ENABLE)
EndFunc

Func _DisableParent()
	GUICtrlSetState($lbParentName, $GUI_DISABLE)
	GUICtrlSetState($InParentName, $GUI_DISABLE)
EndFunc

Func _EnableParent()
	GUICtrlSetState($lbParentName, $GUI_ENABLE)
	GUICtrlSetState($InParentName, $GUI_ENABLE)
EndFunc

Func _DisableParentSize()
	GUICtrlSetState($lbParentSize, $GUI_DISABLE)
	GUICtrlSetState($lbPtBreite, $GUI_DISABLE)
	GUICtrlSetState($InPtBreite, $GUI_DISABLE)
	GUICtrlSetState($lbPtHoehe, $GUI_DISABLE)
	GUICtrlSetState($InPtHoehe, $GUI_DISABLE)
EndFunc

Func _EnableParentSize()
	GUICtrlSetState($lbParentSize, $GUI_ENABLE)
	GUICtrlSetState($lbPtBreite, $GUI_ENABLE)
	GUICtrlSetState($InPtBreite, $GUI_ENABLE)
	GUICtrlSetState($lbPtHoehe, $GUI_ENABLE)
	GUICtrlSetState($InPtHoehe, $GUI_ENABLE)
EndFunc

Func _Slider2Hex()
	GUICtrlSetData($InBlue, GUICtrlRead($slBlue))
	GUICtrlSetData($InGreen, GUICtrlRead($slGreen))
	GUICtrlSetData($InRed, GUICtrlRead($slRed))
	$red = Hex(GUICtrlRead($slRed), 2)
	$green = Hex(GUICtrlRead($slGreen), 2)
	$blue = Hex(GUICtrlRead($slBlue), 2)
	$hexColor = '0x' & $red & $green & $blue
	GUICtrlSetData($InHex, $hexColor)
	GUICtrlSetBkColor($lbColorView, $hexColor)
	_setColors()
EndFunc

Func _Hex2Slider()
	$red = Dec(StringMid(GUICtrlRead($InHex), 3, 2))
	$green = Dec(StringMid(GUICtrlRead($InHex), 5, 2))
	$blue = Dec(StringRight(GUICtrlRead($InHex), 2))
	GUICtrlSetData($InRed, $red)
	GUICtrlSetData($InGreen, $green)
	GUICtrlSetData($InBlue, $blue)
	GUICtrlSetData($slRed, $red)
	GUICtrlSetData($slGreen, $green)
	GUICtrlSetData($slBlue, $blue)
	GUICtrlSetBkColor($lbColorView, GUICtrlRead($InHex))
	_setColors()
EndFunc

Func _setColors()
	If GUICtrlRead($rFontColor) = $GUI_CHECKED Then
		$FontColor = GUICtrlRead($InHex)
		GUICtrlSetColor($lbMuster, $FontColor)
	ElseIf GUICtrlRead($rBackColor) = $GUI_CHECKED Then
		$BackColor = GUICtrlRead($InHex)
		GUICtrlSetBkColor($lbMuster, $BackColor)
	ElseIf GUICtrlRead($rBColGUI) = $GUI_CHECKED Then
		$GUIBCol =  GUICtrlRead($InHex)
		GUISetBkColor($GUIBCol, $SplashGUI_Generator)
	EndIf
EndFunc

Func _GetFonts()
	Local $key = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts'
	Local $arFonts[1] = [0], $i = 1
	While 1
		$val = RegEnumVal($key, $i)
		If @error <> 0 Then ExitLoop
		ReDim $arFonts[UBound($arFonts)+1]
		$arFonts[UBound($arFonts)-1] = $val
		$arFonts[0] += 1
		$i += 1
	WEnd
	Return $arFonts
EndFunc

Func _SetComboFonts()
	$ar = _GetFonts()
	For $i = 1 To UBound($ar) -1
		_GUICtrlComboBox_AddString($cbFontType, $ar[$i])
	Next
	$index = _GUICtrlComboBox_FindString($cbFontType, 'Comic Sans MS (TrueType)')
	_GUICtrlComboBox_SetCurSel($cbFontType, $index)
EndFunc

Func _SetComboSize()
	For $i = 6 To 28 Step 0.5
		_GUICtrlComboBox_AddString($cbFontSize, $i)
	Next
	_GUICtrlComboBox_SetCurSel($cbFontSize, 5)
EndFunc

Func _SetComboAttrib()
	_GUICtrlComboBox_AddString($cbFontAttrib, 'Standard')
	_GUICtrlComboBox_AddString($cbFontAttrib, 'Kursiv')
	_GUICtrlComboBox_AddString($cbFontAttrib, 'Unterstrichen')
	_GUICtrlComboBox_AddString($cbFontAttrib, 'Durchgestrichen')
	_GUICtrlComboBox_AddString($cbFontAttrib, 'K + U')
	_GUICtrlComboBox_AddString($cbFontAttrib, 'K + D')
	_GUICtrlComboBox_AddString($cbFontAttrib, 'K + U + D')
	_GUICtrlComboBox_AddString($cbFontAttrib, 'U + D')
	_GUICtrlComboBox_SetCurSel($cbFontAttrib, 0)
EndFunc

Func _SetComboWeight()
	For $i = 400 To 800 Step 50
		_GUICtrlComboBox_AddString($cbFontWeight, $i)
	Next
	_GUICtrlComboBox_SetCurSel($cbFontWeight, 0)	
EndFunc

Func _SelectFontName($FONT)
	If $FONT = 'Wingdings 2 (TrueType)' Then Return 'Wingdings 2'
	If $FONT = 'Wingdings 3 (TrueType)' Then Return 'Wingdings 3'
	Return StringStripWS(StringRegExpReplace($FONT, '(\d*,|\d* \([a-zA-ZäöüÄÖÜ0-9 -]*\))', ''), 2)
EndFunc

Func _SetFontMuster()
	GUICtrlSetFont($lbMuster, $FontSize, $FontWeight, $FontAttrib, $FontName)
EndFunc

Func _SelectAttrib($ATTRIB)
	Switch $FontAttrib
		Case 'Standard'
			Return -1
		Case 'Kursiv'
			Return 2
		Case 'Unterstrichen'
			Return 4
		Case 'Durchgestrichen'
			Return 8
		Case 'K + U'
			Return 6
		Case 'K + D'
			Return 10
		Case 'K + U + D'
			Return 14
		Case 'U + D'
			Return 12
		Case Else
			Return -1
	EndSwitch
EndFunc

Func _SizeInputs()
	If GUICtrlRead($rChild) = $GUI_CHECKED Then
		$ParentID = GUICtrlRead($InParentName)
		If $ParentID = '' Then
			SetError(1)
			Return -1
		EndIf
		If StringLeft($ParentID, 1) <> '$' Then $ParentID = '$' & $ParentID
		$Child = 1
	EndIf
	$SplashID = GUICtrlRead($InSplashID)
	If $SplashID = '' Then
		SetError(2)
		Return -1
	EndIf
	If StringLeft($SplashID, 1) <> '$' Then $SplashID = '$' & $SplashID
	$SplashWidth = GUICtrlRead($InWidth)
	$SplashHeigth = GUICtrlRead($InHeight)
	If $SplashHeigth < 1 Or $SplashHeigth = '' Or _
		$SplashWidth < 1 Or $SplashWidth = '' Then
		SetError(3)
		Return -1
	EndIf
	If GUICtrlRead($rKoordinaten) = $GUI_CHECKED Then
		$SplashX = GUICtrlRead($InX)
		$SplashY = GUICtrlRead($InY)
		If $SplashX < 1 Or $SplashX = '' Or _
		   $SplashY < 1 Or $SplashY = '' Then
		   SetError(4)
		   Return -1
		EndIf
	ElseIf GUICtrlRead($rKoordinaten) = $GUI_UNCHECKED Then
		If $Child = 1 Then
			$ParentWidth = GUICtrlRead($InPtBreite)
			$ParentHeight = GUICtrlRead($InPtHoehe)
			If $ParentHeight < 1 Or $ParentHeight = '' Or _
				$ParentWidth < 1 Or $ParentWidth = ''  Then
				SetError(5)
				Return -1
			EndIf
		EndIf
		Select
			Case GUICtrlRead($rBL) = $GUI_CHECKED
				If $Child = 1 Then
					$SplashX = 0
					$SplashY = $ParentHeight - $SplashHeigth
				Else
					$SplashX = 0
					$SplashY = '@DesktopHeight - ' & $SplashHeigth
				EndIf
			Case GUICtrlRead($rBC) = $GUI_CHECKED
				If $Child = 1 Then
					$SplashX = ($ParentWidth - $SplashWidth)/2
					$SplashY = $ParentHeight - $SplashHeigth
				Else
					$SplashX = '(@DesktopWidth - ' & $SplashWidth & ')/2'
					$SplashY = '@DesktopHeight - ' & $SplashHeigth
				EndIf
			Case GUICtrlRead($rBR) = $GUI_CHECKED
				If $Child = 1 Then
					$SplashX = $ParentWidth - $SplashWidth
					$SplashY = $ParentHeight - $SplashHeigth
				Else
					$SplashX = '@DesktopWidth - ' & $SplashWidth
					$SplashY = '@DesktopHeight - ' & $SplashHeigth
				EndIf
			Case GUICtrlRead($rCL) = $GUI_CHECKED
				If $Child = 1 Then
					$SplashX = 0
					$SplashY = ($ParentHeight - $SplashHeigth)/2
				Else
					$SplashX = 0
					$SplashY = '(@DesktopHeight - ' & $SplashHeigth & ')/2'
				EndIf
			Case GUICtrlRead($rC) = $GUI_CHECKED
				If $Child = 1 Then
					$SplashX = ($ParentWidth - $SplashWidth)/2
					$SplashY = ($ParentHeight - $SplashHeigth)/2
				Else
					$SplashX = '(@DesktopWidth - ' & $SplashWidth & ')/2'
					$SplashY = '(@DesktopHeight - ' & $SplashHeigth & ')/2'
				EndIf
			Case GUICtrlRead($rCR) = $GUI_CHECKED
				If $Child = 1 Then
					$SplashX = $ParentWidth - $SplashWidth
					$SplashY = ($ParentHeight - $SplashHeigth)/2
				Else
					$SplashX = '@DesktopWidth - ' & $SplashWidth
					$SplashY = '(@DesktopHeight - ' & $SplashHeigth & ')/2'
				EndIf
			Case GUICtrlRead($rTL) = $GUI_CHECKED
				If $Child = 1 Then
					$SplashX = 0
					$SplashY = 0
				Else
					$SplashX = 0
					$SplashY = 0
				EndIf
			Case GUICtrlRead($rTC) = $GUI_CHECKED
				If $Child = 1 Then
					$SplashX = ($ParentWidth - $SplashWidth)/2
					$SplashY = 0
				Else
					$SplashX = '(@DesktopWidth - ' & $SplashWidth & ')/2'
					$SplashY = 0
				EndIf
			Case GUICtrlRead($rTR) = $GUI_CHECKED
				If $Child = 1 Then
					$SplashX = $ParentWidth - $SplashWidth
					$SplashY = 0
				Else
					$SplashX = '@DesktopWidth - ' & $SplashWidth
					$SplashY = 0
				EndIf
		EndSelect
	EndIf
EndFunc

Func _CodeCreate()
	Local $txt
	If _SizeInputs() = -1 Then
		Switch @error
			Case 1
				$txt = 'Name Parent-GUI'
			Case 2
				$txt = 'Name Splash-GUI'
			Case 3
				$txt = 'Breite/Höhe Splash-GUI'
			Case 4
				$txt = 'X / Y Splash-GUI'
			Case 5
				$txt = 'Breite/Höhe Parent-GUI'
		EndSwitch
		MsgBox(0, 'Error: ' & @error, 'Nicht alle notwendigen Daten vorhanden.' & @LF & _
									  'Fehlerquelle: ' & $txt)
		Return
	EndIf
	If GUICtrlRead($rOneRow) = $GUI_CHECKED Then
		$lineindex = ControlCommand($SplashGUI_Generator, '', $EdSplashText, "GetCurrentLine", "")
		$line = ControlCommand($SplashGUI_Generator, '', $EdSplashText, "GetLine", $lineindex)
		$Code &= _FormattedText($line) & @LF
	Else
		$count = ControlCommand($SplashGUI_Generator, '', $EdSplashText, "GetLineCount", "")
		For $i = 1 To $count
			$Code &= _FormattedText(ControlCommand($SplashGUI_Generator, '', $EdSplashText, "GetLine", $i)) & @LF
		Next
	EndIf
EndFunc

Func _FormattedText($STR)
	_ReadFont()
	$Text = ''
	Local $height = 1.5*_GetLabelHeight(), $width = GUICtrlRead($InWidth)-20
	Select
		Case StringLeft($FontColor, 2) <> '0x'
			$FontColor = '0x' & Hex($FontColor, 6)
			ContinueCase
		Case StringLeft($BackColor, 2) <> '0x'
			$BackColor = '0x' & Hex($BackColor, 6)
	EndSelect
	If $STR = '' Then
		$Text &= 'GUICtrlCreateLabel("", ' & 10 & ', ' & $absTop & ', ' & $width & ', ' & $height & ', ' & $Align & ')' & @LF 
	Else
		$Text &= 'GUICtrlCreateLabel("' & $STR & '", ' & 10 & ', ' & $absTop & ', ' & $width & ', ' & $height & ', ' & $Align & ')' & @LF 
	EndIf
	$Text &= 'GUICtrlSetColor(' & -1 & ', ' & $FontColor & ')' & @LF 
	$Text &= 'GUICtrlSetBkColor(' & -1 & ', ' & $BackColor & ')' & @LF 
	If $STR = '' Then
		$Text &= 'GUICtrlSetFont(' & -1 & ', ' & $FontSize & ')' & @LF
	Else
		$Text &= 'GUICtrlSetFont(' & -1 & ', ' & $FontSize & ', ' & $FontWeight & ', ' & $FontAttrib & ', "' & $FontName & '")' & @LF
	EndIf
	$absTop += 1.5*$height
	If $SplashHeigth <= $absTop Then
		$SplashHeigth += 1.5*$height
		GUICtrlSetData($InHeight, $SplashHeigth)
	EndIf
	Return $Text
EndFunc

Func _ReadFont()
	$FontAttrib = GUICtrlRead($cbFontAttrib)
	$FontAttrib = _SelectAttrib($FontAttrib)
	$FontName = _SelectFontName(GUICtrlRead($cbFontType))
	$FontSize = GUICtrlRead($cbFontSize)
	$FontWeight = GUICtrlRead($cbFontWeight)
EndFunc

Func _SetFailed()
	$lbFail = GUICtrlCreateLabel("Wert außerhalb des Bereiches!", 65, 300, 300, 30)
	GUICtrlSetFont(-1, 14, 600, 2, 'Comic Sans MS')
	GUICtrlSetColor(-1, 0xFF0024)
	GUICtrlSetBkColor(-1, 0xFFFFFF)
	Sleep(2000)
	GUICtrlDelete(-1)
EndFunc

Func _GetLabelHeight()
	Local $arSize[1]
	GUISetState(@SW_SHOW, $guiLabel)
	GUICtrlSetFont($label, $FontSize, $FontWeight, $FontAttrib, $FontName)
	For $i = 40 To 190
		$pos = PixelSearch(40, $i, 240, $i, 0xFF0000)
		If IsArray($pos) Then
			ReDim $arSize[UBound($arSize)+1]
			$arSize[UBound($arSize)-1] = $pos[1]
		EndIf
	Next
	GUISetState(@SW_HIDE, $guiLabel)
	If UBound($arSize) > 1 Then
		Return $arSize[UBound($arSize)-1] - $arSize[1] +1
	Else
		MsgBox(0, 'ACHTUNG!', 'Gewählter Schriftgrad für diesen Font nicht möglich!')
	EndIf
EndFunc