; <COMPILER: v1.0.21.0>











Release = 2.5

#persistent
SetControlDelay, 0
SetFormat, float, 1.1
CoordMode, ToolTip, Screen
#UseHook On

FileInstall, Grid.gif, %temp%\Grid.gif
FileInstall, splash.gif, %temp%\splash.gif
FileDelete, %temp%\Generated.ini

SplashImage, %temp%\splash.gif, B1

Menu, Tray, NoStandard

Menu, Tray, Add, `:`: SmartGUI Creator by Rajat `:`:, About
Menu, Tray, Default, `:`: SmartGUI Creator by Rajat `:`:
Menu, Tray, Add
Menu, Tray, Add, Edit GUI Script, EditGUI
Menu, Tray, Add, Set GUI Count, SetGUICount
Menu, Tray, Add, Move Group, MoveGroup
Menu, Tray, Add
Menu, Tray, Add, Add Button, AddControl
Menu, Tray, Add, Add Checkbox, AddControl
Menu, Tray, Add, Add ComboBox, AddControl
Menu, Tray, Add, Add DropDownList, AddControl
Menu, Tray, Add, Add Edit, AddControl
Menu, Tray, Add, Add GroupBox, AddControl
Menu, Tray, Add, Add ListBox, AddControl
Menu, Tray, Add, Add Pic, AddControl
Menu, Tray, Add, Add Radio, AddControl
Menu, Tray, Add, Add Text, AddControl
Menu, Tray, Add, Change Font, ChangeFont
Menu, Tray, Add
Menu, Tray, Add, Show Grid, Grid
Menu, Tray, Check, Show Grid
Menu, Tray, Add, Show Help, Help
Menu, Tray, Add, Show GUI Statistics, Stats
Menu, Tray, Check, Show GUI Statistics
Menu, Tray, Add, Ask Control Label, CtrlText
Menu, Tray, Add, MicroEditing, MicroEditing
Menu, Tray, Add
Menu, Tray, Add, Test GUI, TestGUI
Menu, Tray, Add, Save GUI, SaveGUI
Menu, Tray, Add, Exit, GuiClose






GuiW = 475
GuiH = 375


G = 1
L = 0
M = 0

MainWnd = SmartGUI Creator
GeneratedWnd = Generated using SmartGUI %Release%


Gui, 1:+Resize

Gui, 1:Show, w%GuiW% h%GuiH% x170 y110, %MainWnd%



WinGetPos,,, WinW, WinH, %MainWnd%
WinDiffW = %WinW%
WinDiffW -= %GuiW%
WinDiffW /= 2
WinDiffH = %WinH%
WinDiffH -= %GuiH%



GridY = %WinDiffH%
GridY -= %WinDiffW%

Gui, 1:add, pic, x-%WinDiffW% y-%GridY%, %temp%\grid.gif
StaticCount = 1


IniRead, SaveDir, %a_scriptdir%\SmartGUI.ini, Folders, SaveDir
IniRead, LoadDir, %a_scriptdir%\SmartGUI.ini, Folders, LoadDir

IfEqual, SaveDir, ERROR, SetEnv, SaveDir,
IfEqual, LoadDir, ERROR, SetEnv, LoadDir,


IniRead, HKModify, %a_scriptdir%\SmartGUI.ini, Hotkeys, Modify, Alt
IniRead, HKDuplicate, %a_scriptdir%\SmartGUI.ini, Hotkeys, Duplicate, ^C
IniRead, HKDelete, %a_scriptdir%\SmartGUI.ini, Hotkeys, Delete, BackSpace
IniRead, HKUndo, %a_scriptdir%\SmartGUI.ini, Hotkeys, Undo, ^Z



IniWrite, %HKModify%, %a_scriptdir%\SmartGUI.ini, Hotkeys, HKModify
IniWrite, %HKDuplicate%, %a_scriptdir%\SmartGUI.ini, Hotkeys, HKDuplicate
IniWrite, %HKDelete%, %a_scriptdir%\SmartGUI.ini, Hotkeys, HKDelete
IniWrite, %HKUndo%, %a_scriptdir%\SmartGUI.ini, Hotkeys, HKUndo


Hotkey, %HKModify%, Modify
Hotkey, %HKDuplicate%, Duplicate
Hotkey, %HKDelete%, Delete
Hotkey, %HKUndo%, Undo



HK = %HKModify%
Gosub, FormatHK
HKModify1 = %HK%

HK = %HKDuplicate%
Gosub, FormatHK
HKDuplicate1 = %HK%

HK = %HKDelete%
Gosub, FormatHK
HKDelete1 = %HK%

HK = %HKUndo%
Gosub, FormatHK
HKUndo1 = %HK%


Help = %Help%Create Control`t`tTray Menu`n
Help = %Help%Modify Control`t`tPress %HKModify1% with mouse on target control`n
Help = %Help%Duplicate Control`tPress %HKDuplicate1% with mouse on target 
control`n
Help = %Help%Remove Control`t`tPress %HKDelete1% with mouse on target control`n
Help = %Help%Undo Last Removal`tPress %HKUndo1%



IniRead, ShowHelp, %a_scriptdir%\SmartGUI.ini, Settings, ShowHelp, Yes
IniWrite, %ShowHelp%, %a_scriptdir%\SmartGUI.ini, Settings, ShowHelp

IfEqual, ShowHelp, Yes
{
	Menu, Tray, Check, Show help
	ToolTip, %Help%, 1, 1, 2
	WinSet, AlwaysOnTop, Off, %Help%
}

SetTimer, WinSpy, 500

WinActivate, %MainWnd%

sleep, 800
SplashImage, Off


IfExist, %1%
{
	GUIScript = %1%
	Goto, EditGUI
}

Return



Grid:
	IfEqual, G, 1
	{
		Menu, Tray, ToggleCheck, Show Grid
		Control, hide,, Static1, %MainWnd%
		G = 0
	}
	Else
	{
		Menu, Tray, ToggleCheck, Show Grid
		Control, show,, Static1, %MainWnd%
		G = 1
	}
Return




CtrlText:
	IfEqual, L, 1
	{
		Menu, Tray, ToggleCheck, Ask Control Label
		L = 0
	}
	Else
	{
		Menu, Tray, ToggleCheck, Ask Control Label
		L = 1
	}
Return



MicroEditing:
	IfEqual, M, 1
	{
		Menu, Tray, ToggleCheck, MicroEditing
		M = 0
	}
	Else
	{
		Menu, Tray, ToggleCheck, MicroEditing
		M = 1
	}
Return



Stats:
	IfWinExist, GUI Statistics
	{
		Menu, Tray, ToggleCheck, Show GUI Statistics
		WinClose, GUI Statistics
		WinActivate, GUI Statistics
		SetTimer, WinSpy, Off
	}

	Else
	{
		Menu, Tray, ToggleCheck, Show GUI Statistics
		FirstTimeS = Yes
		SetTimer, WinSpy, 500
	}
Return




Help:
	IfEqual, ShowHelp, Yes
	{
		ToolTip,,,,2
		Menu, Tray, ToggleCheck, Show Help
		ShowHelp = No
		IniWrite, %ShowHelp%, %a_scriptdir%\SmartGUI.ini, Settings, ShowHelp
	}

	Else
	{
		ToolTip, %Help%, 1, 1, 2
		WinSet, AlwaysOnTop, Off, %Help%
		IniWrite, %ShowHelp%, %a_scriptdir%\SmartGUI.ini, Settings, ShowHelp
		Menu, Tray, ToggleCheck, Show Help
		ShowHelp = Yes
		IniWrite, %ShowHelp%, %a_scriptdir%\SmartGUI.ini, Settings, ShowHelp
	}
Return



AddControl:
	StringTrimLeft, Ctrl2Add, A_ThisMenuItem, 4
	Goto, CreateCtrl
Return



ChangeFont:
	IfNotEqual, FirstTimeF, No
	{
		Gui, 4:+owner1 +ToolWindow
		Gui, 4:Add, Text, x7 y6 w110 h20, Enter valid font name
		Gui, 4:Add, Text, x7 y36 w110 h20, Font size
		Gui, 4:Add, Text, x7 y66 w110 h20, Font Color
		Gui, 4:Add, Edit, x127 y6 w110 h20 vFName, Verdana
		Gui, 4:Add, Edit, x127 y36 w110 h20 vFSize, 8
		Gui, 4:Add, Edit, x127 y66 w110 h20 vFColor, Default
		Gui, 4:Add, Checkbox, x17 y98 w110 h20 vFBold, Bold
		Gui, 4:Add, Checkbox, x137 y98 w110 h20 vFItalic, Italic
		Gui, 4:Add, Checkbox, x17 y128 w110 h20 vFUnderline, Underline
		Gui, 4:Add, Checkbox, x137 y128 w110 h20 vFStrike, Strikeout
		Gui, 4:Add, Button, x16 y167 w60 h20, OK
		Gui, 4:Add, Button, x156 y167 w60 h20, Cancel
		Gui, 4:Add, Button, x86 y167 w60 h20, Default
		FirstTimeF = No
	}

	Gui, 4:Show, x548 y124 h200 w245, Enter Font Settings
Return


4ButtonCancel:
	GUI, 4:Cancel
Return


4ButtonDefault:
	ControlSetText, Edit1,, Enter Font Settings, Enter valid
	ControlSetText, Edit2,, Enter Font Settings, Enter valid
	ControlSetText, Edit3,, Enter Font Settings, Enter valid

	Control, Uncheck,, Button1, Enter Font Settings, Enter valid
	Control, Uncheck,, Button2, Enter Font Settings, Enter valid
	Control, Uncheck,, Button3, Enter Font Settings, Enter valid
	Control, Uncheck,, Button4, Enter Font Settings, Enter valid
Return



4ButtonOK:
	FSet =
	GUI, 4:Submit

	IfNotEqual, FSize,, SetEnv, FSet, %FSet% S%FSize%
	IfNotEqual, FColor,, SetEnv, FSet, %FSet% C%FColor%

	IfEqual, FBold, 1, SetEnv, FSet, %FSet% Bold
	IfEqual, FItalic, 1, SetEnv, FSet, %FSet% Italic
	IfEqual, FUnderline, 1, SetEnv, FSet, %FSet% Underline
	IfEqual, FStrike, 1, SetEnv, FSet, %FSet% Strike

	Gui, 1:Font, %FSet%, %FName%

	FontCount ++
	IniWrite, Gui`, Font`, %FSet%`, %FName%, %temp%\Generated.ini, Generated, 
Font%FontCount%
Return




CreateCtrl:

	IfNotEqual, JustCopy, Y
	{
		cW = 100
		cH = 30
	}

	WinActivate, %MainWnd%



	IfEqual, Ctrl2Add, Pic
	{
		FileSelectFile, PicFile,, %a_scriptdir%
		IfNotExist, %PicFile%, Return


		Gui, 1:Add, %Ctrl2Add%, x0 y0, %PicFile%
	}


	Else
	{
		CtrlText = %Ctrl2Add%
		IfEqual, L, 1, InputBox, CtrlText, Label, Enter Control Label,, 250, 125,,,,,
%Ctrl2Add%
		IfEqual, ErrorLevel, 1, Return
		Gui, 1:Add, %Ctrl2Add%, x0 y0 w%cW% h%cH%, %CtrlText%
	}

	Sleep, 300





	CtrlName = %Ctrl2Add%
	IfEqual, Ctrl2Add, ListBox, SetEnv, CtrlName, ListBox
	IfEqual, Ctrl2Add, ComboBox, SetEnv, CtrlName, ComboBox
	IfEqual, Ctrl2Add, DropDownList, SetEnv, CtrlName, ComboBox
	IfEqual, Ctrl2Add, CheckBox, SetEnv, CtrlName, Button
	IfEqual, Ctrl2Add, GroupBox, SetEnv, CtrlName, Button
	IfEqual, Ctrl2Add, Pic, SetEnv, CtrlName, Static
	IfEqual, Ctrl2Add, Radio, SetEnv, CtrlName, Button
	IfEqual, Ctrl2Add, Text, SetEnv, CtrlName, Static
	%CtrlName%Count ++


	IfEqual, Ctrl2Add, ComboBox
		EditCount ++


	StringTrimLeft, CtrlCount, %CtrlName%Count, 0

	Control, Hide,, %CtrlName%%CtrlCount%, %MainWnd%
	Control, Show,, %CtrlName%%CtrlCount%, %MainWnd%
	Goto, Alter
Return



Modify:
	IfWinNotActive, %MainWnd%,,Return
	MouseGetPos,,,, CtrlNameCount


	IfEqual, CtrlNameCount, Static1, Return


	ControlGetPos, cX, cY,,, %CtrlNameCount%, %MainWnd%
	MouseMove, %cX%, %cY%


	Loop
	{
		StringRight, check, CtrlNameCount, %a_index%
		if check is integer
		{
			CtrlCount = %check%
			StringTrimRight, CtrlName, CtrlNameCount, %a_index%
		}
		Else Break
	}


	IniRead, CtrlData, %temp%\Generated.ini, Generated, %CtrlNameCount%


	StringGetPos, lpos, CtrlData, Gui`, Add`,
	lpos += 10
	StringTrimLeft, Ctrl2Add, CtrlData, %lpos%
	StringGetPos, cpos, Ctrl2Add, `,
	StringLeft, Ctrl2Add, Ctrl2Add, %cpos%

	Goto, Alter
return


Duplicate:
	IfWinNotActive, %MainWnd%,,Return


	MouseGetPos,,,, CtrlNameCount


	IfEqual, CtrlNameCount, Static1, Return

	ControlGetPos, cX, cY, cW, cH, %CtrlNameCount%, %MainWnd%


	Loop
	{
		StringRight, check, CtrlNameCount, %a_index%
		if check is integer
		{
			CtrlCount = %check%
			StringTrimRight, CtrlName, CtrlNameCount, %a_index%
		}
		Else Break
	}


	IniRead, CtrlData, %temp%\Generated.ini, Generated, %CtrlNameCount%
	StringGetPos, lpos, CtrlData, Gui`, Add`,
	lpos += 10
	StringTrimLeft, Ctrl2Add, CtrlData, %lpos%
	StringGetPos, cpos, Ctrl2Add, `,
	StringLeft, Ctrl2Add, Ctrl2Add, %cpos%

	JustCopy = Y

	Goto, CreateCtrl
return



Delete:
	IfWinNotActive, %MainWnd%,,Return
	MouseGetPos,,,, CtrlNameCount


	IfEqual, CtrlNameCount, Static1, Return


	ControlGetPos, cX, cY,,, %CtrlNameCount%, %MainWnd%
	IniRead, LastDelIni, %temp%\Generated.ini, Generated, %CtrlNameCount%
	IniDelete, %temp%\Generated.ini, Generated, %CtrlNameCount%
	Control, hide,, %CtrlNameCount%, %MainWnd%
	LastDel = %CtrlNameCount%
Return


Undo:
	IfWinNotActive, %MainWnd%,,Return
	Control, Show,, %LastDel%, %MainWnd%
	IniWrite, %LastDelIni%, %temp%\Generated.ini, Generated, %LastDel%
Return



Alter:
	Loop
	{
		GetKeyState, LB, LButton
		IfEqual, LB, U
		{
			MouseGetPos, mX, mY


			IfEqual, M, 0
			{
				StringRight, dmX, mX, 1
				StringRight, dmY, mY, 1
				mX -= %dmX%
				mY -= %dmY%
			}


			ControlGetPos, tempX, tempY,,, %CtrlName%%CtrlCount%, %MainWnd%
			IfEqual, tempX, %mX%
				IfEqual, tempY, %mY%
					Continue


			ControlMove, %CtrlName%%CtrlCount%, %mX%, %mY%,,, %MainWnd%

			Control, Hide,, %CtrlName%%CtrlCount%, %MainWnd%
			Control, Show,, %CtrlName%%CtrlCount%, %MainWnd%

			Sleep, 50
		}
		IfEqual, LB, D, Break
	}

	Control, Hide,, %CtrlName%%CtrlCount%, %MainWnd%
	Control, Show,, %CtrlName%%CtrlCount%, %MainWnd%

	ControlGetPos, cX, cY, cW, cH, %CtrlName%%CtrlCount%, %MainWnd%


	cX += %cW%
	cY += %cH%
	IfNotEqual, JustCopy, Y
		MouseMove, %cX%, %cY%



	KeyWait, LButton


	IfNotEqual, JustCopy, Y
	Loop
	{
		GetKeyState, LB, LButton
		IfEqual, LB, U
		{
			MouseGetPos, mX2, mY2

			IfEqual, M, 0
			{
				StringRight, dmX, mX2, 1
				StringRight, dmY, mY2, 1
				mX2 -= %dmX%
				mY2 -= %dmY%
			}

			cW = %mX2%
			cH = %mY2%
			cW -= %mX%
			cH -= %mY%


			ControlGetPos,,, tempW, tempH, %CtrlName%%CtrlCount%, %MainWnd%
			IfEqual, cW, %tempW%
				IfEqual, cH, %tempH%
					Continue



			ControlMove, %CtrlName%%CtrlCount%,,, %cW%, %cH%, %MainWnd%

			Control, Hide,, %CtrlName%%CtrlCount%, %MainWnd%
			Control, Show,, %CtrlName%%CtrlCount%, %MainWnd%

			Sleep, 50
		}
		IfEqual, LB, D, Break
	}

	Control, Hide,, %CtrlName%%CtrlCount%, %MainWnd%
	Control, Show,, %CtrlName%%CtrlCount%, %MainWnd%

	JustCopy = N


	mX -= %WinDiffW%
	mY -= %WinDiffH%
	mY += %WinDiffW%


	ControlGetText, CtrlText,%CtrlName%%CtrlCount%, %MainWnd%

	IniWrite, Gui`, Add`, %Ctrl2Add%`, x%mX% y%mY% w%cW% h%cH%`, %CtrlText%, 
%temp%\Generated.ini, Generated, %CtrlName%%CtrlCount%
Return



GuiClose:
	FileSelectFile, SaveAsFile, S16, %SaveDir%, Save generated GUI script as:, 
AutoHotkey Script (*.ahk)

	IfNotEqual, SaveAsFile,
	{
		StringGetPos, Spos, SaveAsFile, \, R
		StringLeft, SaveDir, SaveAsFile, %Spos%
		IniWrite, %SaveDir%, %a_scriptdir%\SmartGUI.ini, Folders, SaveDir

		StringRight, Ext, SaveAsFile, 4
		IfNotEqual, Ext, .ahk, SetEnv, SaveAsFile, %SaveAsFile%.ahk
		Gosub, GenerateGUI
		Run, %SaveAsFile%
	}

	FileDelete, %temp%\Grid.gif
	FileDelete, %temp%\Splash.gif
	FileDelete, %temp%\Generated.ini
	FileDelete, %temp%\Generated.ahk
	ExitApp
Return



SaveGUI:
	FileSelectFile, SaveAsFile, S16, %SaveDir%, Save generated GUI script as:, 
AutoHotkey Script (*.ahk)

	IfNotEqual, SaveAsFile,
	{
		StringGetPos, Spos, SaveAsFile, \, R
		StringLeft, SaveDir, SaveAsFile, %Spos%
		IniWrite, %SaveDir%, %a_scriptdir%\SmartGUI.ini, Folders, SaveDir

		StringRight, Ext, SaveAsFile, 4
		IfNotEqual, Ext, .ahk, SetEnv, SaveAsFile, %SaveAsFile%.ahk
		Gosub, GenerateGUI
		Run, %SaveAsFile%
	}
	SaveAsFile =
Return



TestGUI:
	SaveAsFile = %temp%\Generated.ahk
	Gosub, GenerateGUI
	Run, %SaveAsFile%
	SaveAsFile =
Return



GenerateGUI:
	FileDelete, %SaveAsFile%

	FileAppend, `; Generated by SmartGUI Creater`n`n, %SaveAsFile%

	Loop, Read, %temp%\Generated.ini, %SaveAsFile%
	{

		IfNotInString, A_LoopReadLine, =, Continue


		StringGetPos, eqpos, A_LoopReadLine, =
		eqpos ++
		StringTrimLeft, Buffer, A_LoopReadLine, %eqpos%


		IfInString, Buffer, Gui`, Add`, `,, Continue
		FileAppend, %Buffer%`n
	}


	WinGetPos, wX, wY, wW, wH, %MainWnd%
	wH -= %WinDiffH%
	wW -= %WinDiffW%
	wW -= %WinDiffW%


	FileAppend, Gui`, Show`, x%wX% y%wY% h%wH% w%wW%`, %GeneratedWnd%`n, 
%SaveAsFile%
	FileAppend, Return`n`n, %SaveAsFile%
	FileAppend, GuiClose`:`nExitApp, %SaveAsFile%
Return


About:
	IfNotEqual, FirstTimeA, No
	{
		Gui, 2:+owner1
		Gui, 2:Font, S10 CA03410, verdana
		Gui, 2:Add, Text, x90 y166 w180 h20, Release %Release%
		Gui, 2:Add, Text, x57 y196 w150 h20, www.autohotkey.com
		Gui, 2:Add, Button, x87 y226 w90 h30, OK
		Gui, 2:Add, Pic, x17 y16 w230 h130, %temp%\splash.gif
		Gui, 2:Add, GroupBox, x18 y9 w230 h140,

		FirstTimeA = No
	}

	Gui, 2:Show, x274 y129 h272 w266, About..


	relcount = 0
	Loop
	{
		relcount += 0.1
		ControlSetText, Static1, Release %relcount%, About..
		IfEqual, relcount, %release%, break
		sleep, 75
	}
Return


2ButtonOK:
	Gui, 2:Cancel
Return


TrayMenu:
	IfWinNotActive, %MainWnd%,,Return
	KeyWait, Lbutton
	Menu, Tray, Show
Return



FormatHK:
	StringReplace,HK,HK,~,
	StringReplace,HK,HK,#,Win-
	StringReplace,HK,HK,!,Alt-
	StringReplace,HK,HK,^,Ctrl-
	StringReplace,HK,HK,+,Shift-
	StringReplace,HK,HK,RButton,Right mouse button
	StringReplace,HK,HK,LButton,Left mouse button
	StringReplace,HK,HK,MButton,Middle mouse button
Return



EditGUI:
	IfNotExist, %GUIScript%, FileSelectFile, GUIScript, 1, %LoadDir%, Select GUI 
script to edit, AutoHotkey GUI script (*.ahk)
	IfNotExist, %GUIScript%, Return
	Menu, Tray, Disable, Edit GUI script

	StringGetPos, Spos, GUIScript, \, R
	StringLeft, LoadDir, GUIScript, %Spos%
	IniWrite, %LoadDir%, %a_scriptdir%\SmartGUI.ini, Folders, LoadDir

	Loop, Read, %GUIScript%
	{
		StringGetPos, cpos, A_LoopReadLine, `,, L2
		StringLeft, check, A_LoopReadLine, %cpos%


		IfInString, check, GUI
			IfInString, check, Add
			{
				StringGetPos, apos, check, Add
				apos += 3
				StringTrimLeft, data, A_LoopReadLine, %apos%


				StringSplit, param, data, `,
				IfLess, param0, 4, SetEnv, param4,
				IfLess, param0, 3, SetEnv, param3,
				IfLess, param0, 2, Continue
				IfInString, param2, `:, Continue


				StringReplace, param2, param2, %a_space%,, All
				StringLeft, FirstChar, param3, 1
				IfEqual, FirstChar, %a_space%, StringReplace, param3, param3, %a_space%,
				StringLeft, FirstChar, param4, 1
				IfEqual, FirstChar, %a_space%, StringReplace, param4, param4, %a_space%,



				StringSplit, option, param3, %a_space%
				Loop, %option0%
				{
					StringTrimLeft, ThisOption, option%a_index%, 0
					StringLeft, OptionTest, ThisOption, 1
					IfEqual, OptionTest, g, StringReplace, param3, param3, %ThisOption%
				}


				Gui, 1:Add, %param2%, %param3%, %param4%


				Ctrl2Add = %param2%
				CtrlName = %param2%
				IfEqual, Ctrl2Add, ListBox, SetEnv, CtrlName, ListBox
				IfEqual, Ctrl2Add, ComboBox, SetEnv, CtrlName, ComboBox
				IfEqual, Ctrl2Add, DropDownList, SetEnv, CtrlName, ComboBox
				IfEqual, Ctrl2Add, CheckBox, SetEnv, CtrlName, Button
				IfEqual, Ctrl2Add, GroupBox, SetEnv, CtrlName, Button
				IfEqual, Ctrl2Add, Pic, SetEnv, CtrlName, Static
				IfEqual, Ctrl2Add, Radio, SetEnv, CtrlName, Button
				IfEqual, Ctrl2Add, Text, SetEnv, CtrlName, Static
				%CtrlName%Count ++
				StringTrimLeft, CtrlCount, %CtrlName%Count, 0
				IniWrite, Gui`, Add`, %param2%`, %param3%`, %param4%, %temp%\Generated.ini, 
Generated, %CtrlName%%CtrlCount%
			}



		IfInString, check, GUI
			IfInString, check, Font
			{
				StringGetPos, fpos, check, Font
				fpos += 4
				StringTrimLeft, data, A_LoopReadLine, %fpos%

				StringSplit, param, data, `,
				IfLess, param0, 2, SetEnv, param2,
				IfInString, param2, `:, Continue

				IfNotEqual, param2,, Gui, 1:Font, %param2%, %param3%
				FontCount ++
				IniWrite, Gui`, Font`, %param2%`, %param3%, %temp%\Generated.ini, Generated,
 Font%FontCount%
			}



		IfInString, check, GUI
			IfInString, check, Show
			{
				StringGetPos, spos, check, Show
				spos += 4
				StringTrimLeft, data, A_LoopReadLine, %spos%

				StringSplit, param, data, `,
				IfLess, param0, 2, SetEnv, param2,
				IfInString, param2, `:, Continue

				IfNotEqual, param2,, Gui, 1:Show, %param2%
				Break
			}


	}
Return


GUIEscape:
Return


WinSpy:
	IfNotEqual, FirstTimeS, No
	{
		Gui, 5:+owner1
		Gui, 5:Font, CMaroon,
		Gui, 5:Add, Text, x7 y3 w50 h20, Control
		Gui, 5:Add, Text, x7 y63 w50 h20, Window
		Gui, 5:Font
		Gui, 5:Add, Text, x7 y23 w90 h40,
		Gui, 5:Add, Text, x7 y83 w90 h40,
		Gui, 5:Add, Button, x77 y3 w20 h20, M
		Gui, 5:Show, x0 h129 w106, GUI Statistics

		FirstTimeS = No
	}

	IfWinNotExist, GUI Statistics,, Menu, Tray, UnCheck, Show GUI Statistics

	IfWinNotActive, %MainWnd%,,Return

	MouseGetPos,,,, MCtrl

	IfNotEqual, MCtrl, Static1
		ControlGetPos, ScX, ScY, ScW, ScH, %MCtrl%, %MainWnd%
	WinGetActiveStats, SwT, SwW, SwH, SwX, SwY

	WinInfo = X:%SwX%`tY:%SwY%`t`nW:%SwW%`tH:%SwH%`t
	CtrlInfo = X:%ScX%`tY:%ScY%`t`nW:%ScW%`tH:%ScH%`t

	ControlSetText, Static3, %CtrlInfo%, GUI Statistics
	ControlSetText, Static4, %WinInfo%, GUI Statistics
Return


5ButtonM:
	Menu, Tray, Show
Return



MoveGroup:
	keywait, lbutton, d
	IfWinNotActive, %MainWnd%,,Return
	MouseGetPos, sX, sY
	CoordMode, ToolTip, Relative
	ToolTip, .., %sX%, %sY%
	WinSet, Trans, 100, ..
	WinActivate, ..
	Loop
	{
		GetKeyState, RB, Lbutton
		IfEqual, RB, D
		{
			MouseGetPos, eX, eY
			WinMove, ..,,,, %eX%, %eY%
			Sleep, 50
		}
		IfEqual, RB, U, Break
	}
	ToolTip


	sX -= %WinDiffW%
	sY += %WinDiffW%
	sY -= %WinDiffH%

	eX += %sX%
	eY += %sY%

	Controls2Modify =


	Loop, Read, %temp%\Generated.ini
	{
		IfNotInString, A_LoopReadLine, =,Continue

		StringGetPos, EqPos, A_LoopReadLine, =
		StringLeft, CtrlNameCount, A_LoopReadLine, %EqPos%
		StringTrimLeft, Value, A_LoopReadLine, %EqPos%



		StringGetPos, apos, Value, Add
		apos += 3


		StringTrimLeft, data, Value, %apos%




		StringSplit, param, data, `,
		StringSplit, option, param3, %a_space%

		CtrlX =
		CtrlY =
		CtrlW =
		CtrlH =


		Loop, %option0%
		{
			StringTrimLeft, ThisOption, option%a_index%, 0
			StringLeft, OptionTest, ThisOption, 1
			IfEqual, OptionTest, x, StringTrimLeft, CtrlX, ThisOption, 1
			IfEqual, OptionTest, y, StringTrimLeft, CtrlY, ThisOption, 1
			IfEqual, OptionTest, w, StringTrimLeft, CtrlW, ThisOption, 1
			IfEqual, OptionTest, h, StringTrimLeft, CtrlH, ThisOption, 1
		}



		CtrlW += %CtrlX%
		CtrlH += %CtrlY%

		IfGreaterOrEqual, CtrlX, %sX%
		IfGreaterOrEqual, CtrlY, %sY%
		IfLessOrEqual, CtrlW, %eX%
		IfLessOrEqual, CtrlH, %eY%


		Controls2Modify = %Controls2Modify%|%CtrlNameCount%
	}


	StringTrimLeft, Controls2Modify, Controls2Modify, 1

	IfEqual, Controls2Modify,, Return


	IfNotEqual, FirstTimeM, No
	{
		Gui, 3:+owner1
		Gui, 3:Add, Button, x12 y13 w20 h20 g3UL,
		Gui, 3:Add, Button, x42 y13 w20 h20 g3U ,
		Gui, 3:Add, Button, x72 y13 w20 h20 g3UR,
		Gui, 3:Add, Button, x12 y38 w20 h20 g3L ,
		Gui, 3:Add, Button, x12 y63 w20 h20 g3DL,
		Gui, 3:Add, Button, x42 y63 w20 h20 g3D,
		Gui, 3:Add, Button, x72 y63 w20 h20 g3DR,
		Gui, 3:Add, Button, x72 y38 w20 h20 g3R,
		Gui, 3:Add, Edit, x37 y38 w30 h20 vToMove, 10
		Gui, 3:Add, GroupBox, x4 y-1 w98 h93,

		FirstTimeM = No
	}

	Gui, 3:Show, x686 y2 h96 w107, Move
Return




3UL:
	Gui, 3:Submit, NoHide
	AddX = 0
	AddY = 0
	AddX -= %ToMove%
	AddY -= %ToMove%
	Goto, 3Move


3U:
	Gui, 3:Submit, NoHide
	AddX = 0
	AddY = 0
	AddY -= %ToMove%
	Goto, 3Move


3UR:
	Gui, 3:Submit, NoHide
	AddX = 0
	AddY = 0
	AddX += %ToMove%
	AddY -= %ToMove%
	Goto, 3Move


3L:
	Gui, 3:Submit, NoHide
	AddX = 0
	AddY = 0
	AddX -= %ToMove%
	Goto, 3Move


3DL:
	Gui, 3:Submit, NoHide
	AddX = 0
	AddY = 0
	AddX -= %ToMove%
	AddY += %ToMove%
	Goto, 3Move


3D:
	Gui, 3:Submit, NoHide
	AddX = 0
	AddY = 0
	AddY += %ToMove%
	Goto, 3Move


3DR:
	Gui, 3:Submit, NoHide
	AddX = 0
	AddY = 0
	AddX += %ToMove%
	AddY += %ToMove%
	Goto, 3Move


3R:
	Gui, 3:Submit, NoHide
	AddX = 0
	AddY = 0
	AddX += %ToMove%
	Goto, 3Move


3Move:
	IfEqual, AddX, 0, IfEqual, AddY, 0, Return



	Loop, Parse, Controls2Modify, |
	{


		IfEqual, %A_LoopField%, Static1, Continue

		IniRead, Ctrl2Add, %temp%\Generated.ini, Generated, %A_LoopField%



		StringGetPos, apos, Ctrl2Add, Add
		apos += 3
		StringTrimLeft, Ctrl2Add, Ctrl2Add, %apos%

		StringSplit, Name, Ctrl2Add, `,
		StringReplace, Ctrl2Add, Name2, %a_space%




		ControlGetPos, TempX, TempY, TempW, TempH, %A_LoopField%, %MainWnd%
		TempX += %AddX%
		TempY += %AddY%
		ControlMove, %A_LoopField%, %TempX%, %TempY%,,, %MainWnd%
		Control, Hide,, %A_LoopField%, %MainWnd%
		Control, Show,, %A_LoopField%, %MainWnd%


		TempX -= %WinDiffW%
		TempY -= %WinDiffH%
		TempY += %WinDiffW%


		ControlGetText, CtrlText, %A_LoopField%, %MainWnd%
		IniWrite, Gui`, Add`, %Ctrl2Add%`, x%TempX% y%TempY% w%TempW% h%TempH%`, 
%CtrlText%, %temp%\Generated.ini, Generated, %A_LoopField%
	}
Return


3ButtonClose:
	Gui, 3:Cancel
Return



SetGUIcount:
	AutoTrim, off
	FileSelectFile, GUIScript, 1, %LoadDir%, Select GUI script to modify, 
AutoHotkey GUI script (*.ahk)
	IfNotExist, %GUIScript%, Return


	InputBox, GUICount, Count, Enter Count to Add (Upto 10),, 250, 125,,,,, 2
	IfEqual, ErrorLevel, 1, Return

	FileCopy, %GUIScript%, %GUIScript%.Txt, 1
	FileDelete, %GUIScript%


	Loop, Read, %GUIScript%.Txt, %GUIScript%
	{
		ToAppend = %A_LoopReadLine%

		StringSplit, param, ToAppend, `,
		StringReplace, guitest, param1, %a_space%,, All
		StringReplace, guitest, guitest, %a_tab%,, All

		IfEqual, guitest, Gui
		{

			IfEqual, GUICount,
			{
				StringGetPos, cpos, param2, `:
				cpos ++
				StringTrimLeft, TempVar, param2, %cpos%
				StringReplace, TempVar, TempVar, %a_space%,, All
				StringReplace, ToAppend, ToAppend, %param2%, %A_Space%%TempVar%, All
			}



			Else
			{

				IfInString, param2, `:
				{
					StringGetPos, cpos, param2, `:
					cpos ++
					StringTrimLeft, TempVar, param2, %cpos%
					StringReplace, ToAppend, ToAppend, %param2%, 
%A_Space%%GUICount%`:%TempVar%, All
				}


				Else
				{
					StringReplace, TempVar, param2, %a_space%,, All
					StringReplace, ToAppend, ToAppend, %TempVar%, %GUICount%`:%TempVar%, All
				}
			}

		}

		FileAppend, %ToAppend%`n
	}
	AutoTrim, on
Return