 ; -------------------------------------------------------
 ; Version : 0.0.0.1
 ; Author: Lahire BIETTE (Tuxmouraille) <tuxmouraille@gmail.com>
 ; License: GNU GPL
 ; Description: Main script of IconManker 
 ; Compiler: AutoHotKey (http://www.autohotkey.com).
 ; Require scripts: look at declared inclusions: #Include
 ; Plateforme: WinXP
 ; -------------------------------------------------------
 ; 2006-2007 - nomadsofts.tuxfamily.org - GNU GPL
 ; 'Tanukey' is free (like freedom) (then open-source) software licenced under the terms of the GPL: GNU Public License
 ; Website: http://nomadsofts.tuxfamily.org
 ; -------------------------------------------------------
 ; This program is free software; you can redistribute it and/or
 ; modify it under the terms of the GNU General Public License
 ; as published by the Free Software Foundation; either version 2
 ; of the License, or (at your option) any later version.

 ; This program is distributed in the hope that it will be useful,
 ; but WITHOUT ANY WARRANTY; without even the implied warranty of
 ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 ; GNU General Public License for more details.

 ; You should have received a copy of the GNU General Public License
 ; along with this program; if not, write to the Free Software
 ; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 ; -------------------------------------------------------

; #notrayicon
#singleinstance force
#Include %A_ScriptDir%

conffile=iconmaker.ini
converter=%A_ScriptDir%\ImageMagick\convert.exe
png2ico=%A_ScriptDir%\png2ico\png2ico.exe
tempdir=%A_ScriptDir%\temp
montage=%A_ScriptDir%\ImageMagick\montage.exe


Gui, Add, GroupBox, x6 y10 w270 h310 , Image source
Gui, Add, Picture, x16 y30 w250 h250 +Border +Center vshowimagesource, 
Gui, Add, Button, x76 y283 w120 h30 gTakePicture, Charger un image
Gui, Add, GroupBox, x376 y10 w460 h450 , Liste des icônes

Gui, Add, Picture, x482 y60 w48 h48 +Border v48_XP, 
Gui, Add, Picture, x482 y140 w48 h48 +Border v48_24B, 
Gui, Add, Picture, x482 y220 w48 h48 +Border v48_8B, 
Gui, Add, Picture, x482 y300 w48 h48 +Border v48_4B, 

Gui, Add, Picture, x572 y60 w32 h32 +Border v32_XP, 
Gui, Add, Picture, x572 y140 w32 h32 +Border v32_24B, 
Gui, Add, Picture, x572 y220 w32 h32 +Border v32_8B, 
Gui, Add, Picture, x572 y300 w32 h32 +Border v32_4B, 

Gui, Add, Picture, x672 y60 w24 h24 +Border v24_XP, 
Gui, Add, Picture, x672 y140 w24 h24 +Border v24_24B, 
Gui, Add, Picture, x672 y220 w24 h24 +Border v24_8B, 
Gui, Add, Picture, x672 y300 w24 h24 +Border v24_4B, 

Gui, Add, Picture, x752 y60 w16 h16 +Border v16_XP, 
Gui, Add, Picture, x752 y140 w16 h16 +Border v16_24B, 
Gui, Add, Picture, x752 y220 w16 h16 +Border v16_8B, 
Gui, Add, Picture, x752 y300 w16 h16 +Border v16_4B, 

Gui, Add, CheckBox, x536 y110 w15 h15 v48_1, 
Gui, Add, CheckBox, x536 y190 w15 h15 v48_2, 
Gui, Add, CheckBox, x536 y270 w15 h15 v48_3, 
Gui, Add, CheckBox, x536 y350 w15 h15 v48_4, 

Gui, Add, CheckBox, x626 y110 w15 h15 v32_1, 
Gui, Add, CheckBox, x626 y190 w15 h15 v32_2, 
Gui, Add, CheckBox, x626 y270 w15 h15 v32_3, 
Gui, Add, CheckBox, x626 y350 w15 h15 v32_4, 

Gui, Add, CheckBox, x716 y110 w15 h15 v24_1, 
Gui, Add, CheckBox, x716 y190 w15 h15 v24_2, 
Gui, Add, CheckBox, x716 y270 w15 h15 v24_3, 
Gui, Add, CheckBox, x716 y350 w15 h15 v24_4, 

Gui, Add, CheckBox, x806 y110 w15 h15 v16_1, 
Gui, Add, CheckBox, x806 y190 w15 h15 v16_2, 
Gui, Add, CheckBox, x806 y270 w15 h15 v16_3, 
Gui, Add, CheckBox, x806 y350 w15 h15 v16_4, 

Gui, Add, GroupBox, x476 y40 w80 h410 +Center, 48x48 px
Gui, Add, GroupBox, x566 y40 w80 h410 +Center, 32x32 px
Gui, Add, GroupBox, x656 y40 w80 h410 +Center, 24x24 px
Gui, Add, GroupBox, x746 y40 w80 h410 +Center, 16x16 px
Gui, Add, GroupBox, x386 y50 w80 h400 ,

Gui, Add, GroupBox, x386 y50 w440 h80 , 
Gui, Add, GroupBox, x386 y130 w440 h80 , 
Gui, Add, GroupBox, x386 y210 w440 h80 , 
Gui, Add, GroupBox, x386 y290 w440 h80 , 
Gui, Add, GroupBox, x386 y370 w440 h80 , 

Gui, Add, Text, x396 y80 w60 h20 , Style XP
Gui, Add, Text, x396 y160 w60 h40 , 24 bits
Gui, Add, Text, x396 y230 w60 h40 , 8 Bits
Gui, Add, Text, x396 y310 w60 h40 , 4 Bits
Gui, Add, Text, x396 y390 w60 h30 , Masques

Gui, Add, Button, x306 y110 w40 h40 gconvert vconvert +Disabled, OK >
Gui, Add, CheckBox, x286 y160 w80 h50 +Disabled, Conserver le ratio

Gui, Add, GroupBox, x226 y330 w140 h200 +Center , Exporter le fichier
Gui, Add, Button, x236 y490 w120 h30 +Disabled vsavicon gsavicon, Sauver l'image...
Gui, Add, Picture, x236 y350 w120 h130 vgeneretedicon +Border,

Gui, Add, Button, x386 y510 w130 h30 vconverticon gconverticon +Disabled, Créer l'icône...
Gui, Add, Button, x536 y510 w130 h30 +Disabled, Charger un icône...
Gui, Add, Button, x686 y510 w130 h30 gGuiClose , Quitter

Gui, Add, Text, x376 y460 w460 h50 , Texte décrivant l'utilisation des checkbox.

Gui, Add, Picture, x16 y470, %A_ScriptDir%\img\logo.png
Gui, Font, underline, 
Gui, Add, Text, x16 y520 w200 h20 cBlue gLaunchSite, http://tanukey.tuxfamily.org/IconMaker/
Gui, Font, norm,

Gui, Add, GroupBox, x6 y330 w210 h140 , Options
Gui, Add, DropDownList, x16 y400 w190 h20 gchangelanguage +Disabled, %language%

	{
	IniRead, checked, %A_ScriptDir%\%conffile%, Configuration, KeepTempFiles
	IfEqual,checked,true
		{
		checked=Checked
		}
	IfEqual,checked,false
		{
		checked=
		}
	; Else
		; {
		; MsgBox, 262160, Erreur, Paramètres incorrecte pour KeepTempFiles, dans %conffile%.`nLes paramètres correctes sont:`ntrue pour conserver les fichiers temporaires`nfalse pour les effacer une fois l'icône crée.
		; ExitApp
		; }
	}

Gui, Add, CheckBox, x16 y350 w190 h20 vkeeptempfiles %checked%, Conserver les fichiers temporaires
Gui, Add, Text, x16 y380 w190 h20 +Disabled, Sélectionner la langue
Gui, Add, Button, x26 y435 w150 h20 gvidetempdir vvidetempdir , Vider le dossier temporaire.

; Generated using SmartGUI Creator 4.0
Gui, Show, x212 y145 h550 w850, IconMaker|A GenIconXp Fork

Return

videtempdir:
	FileRemoveDir, %tempdir%,1
	FileCreateDir, %tempdir%
return

changelanguage:
return

LaunchSite:
Run http://tanukey.tuxfamily.org/IconMaker/
return

TakePicture:
	FileSelectFile, imagesource, 3, , Sélectionner un paquet, Pictures (*.bmp;*.png;*.gif;*.jpg;*.jpeg)
	IfEqual,ErrorLevel,1
		{
		return
		}
	Else
		{
		IfNotEqual,imagesource,,
			{
			GuiControl,, showimagesource, %imagesource%
			GuiControl, Enable, convert
			}
		}

return

convert:
	GuiControl, Enable, converticon
	GuiControl,, 48_XP, %imagesource%
	GuiControl,, 32_XP, %imagesource%
	GuiControl,, 24_XP, %imagesource%
	GuiControl,, 16_XP, %imagesource%
	
	GuiControl,, 48_24B, %imagesource%
	GuiControl,, 32_24B, %imagesource%
	GuiControl,, 24_24B, %imagesource%
	GuiControl,, 16_24B, %imagesource%
	
	GuiControl,, 48_8B, %imagesource%
	GuiControl,, 32_8B, %imagesource%
	GuiControl,, 24_8B, %imagesource%
	GuiControl,, 16_8B, %imagesource%
	
	GuiControl,, 48_4B, %imagesource%
	GuiControl,, 32_4B, %imagesource%
	GuiControl,, 24_4B, %imagesource%
	GuiControl,, 16_4B, %imagesource%
return


converticon:
	GuiControl, Disabled, videtempdir

	IfNotExist, %tempdir%
		{
		FileCreateDir, %tempdir%
		}

	Progress, 0 ,, Création de l'icône`, veuillez patienter s'il vous plait., IconMaker
	
	; avec png2ico
	SplitPath, imagesource,,,, name_no_ext,
	ext=png
	; avec montage
	; SplitPath, imagesource,,,, name_no_ext,
	; ext=ico
	
	tempdir2=%tempdir%\%name_no_ext%
	FileCreateDir, %tempdir2%

	filetoconvert=


	; le bloc des images XP
	GuiControlGet, 161,, 16_1
	Progress, 5 ,, Création de l'icône`, veuillez patienter s'il vous plait., IconMaker
		If 161 = 1
		{
		RunWait, "%converter%" "%imagesource%" -resize 16x16 "%tempdir2%\%name_no_ext%_16px_XP.%ext%",, Hide
		filetoconvert=%filetoconvert% "%tempdir2%\%name_no_ext%_16px_XP.%ext%"
		}
	
	GuiControlGet, 241,, 24_1
	Progress, 10 ,, Création de l'icône`, veuillez patienter s'il vous plait., IconMaker
		If 241 = 1
		{
		RunWait, "%converter%" "%imagesource%" -resize 24x24 "%tempdir2%\%name_no_ext%_24px_XP.%ext%",, Hide
		filetoconvert=%filetoconvert% "%tempdir2%\%name_no_ext%_24px_XP.%ext%"
		}

	GuiControlGet, 321,, 32_1
	Progress, 15 ,, Création de l'icône`, veuillez patienter s'il vous plait., IconMaker
		If 321 = 1
		{
		RunWait, "%converter%" "%imagesource%" -resize 32x32 "%tempdir2%\%name_no_ext%_32px_XP.%ext%",, Hide
		filetoconvert=%filetoconvert% "%tempdir2%\%name_no_ext%_32px_XP.%ext%"
		}
	
	GuiControlGet, 481,, 48_1
	Progress, 20 ,, Création de l'icône`, veuillez patienter s'il vous plait., IconMaker
		If 481 = 1
		{
		RunWait, "%converter%" "%imagesource%" -resize 48x48 "%tempdir2%\%name_no_ext%_48px_XP.%ext%",, Hide
		filetoconvert=%filetoconvert% "%tempdir2%\%name_no_ext%_48px_XP.%ext%"
		}
	
	;le bloc des images 24B
	GuiControlGet, 162,, 16_2
	Progress, 25 ,, Création de l'icône`, veuillez patienter s'il vous plait., IconMaker
		If 162 = 1
		{
		RunWait, "%converter%" "%imagesource%" -resize 16x16 -colors 24 "%tempdir2%\%name_no_ext%_16px_24B.%ext%",, Hide
		filetoconvert=%filetoconvert% "%tempdir2%\%name_no_ext%_16px_24B.%ext%"
		}
	
	GuiControlGet, 242,, 24_2
	Progress, 30 ,, Création de l'icône`, veuillez patienter s'il vous plait., IconMaker
		If 242 = 1
		{
		RunWait, "%converter%" "%imagesource%" -resize 24x24 -colors 24 "%tempdir2%\%name_no_ext%_24px_24B.%ext%",, Hide
		filetoconvert=%filetoconvert% "%tempdir2%\%name_no_ext%_24px_24B.%ext%"
		}
	
	GuiControlGet, 322,, 32_2
	Progress, 35 ,, Création de l'icône`, veuillez patienter s'il vous plait., IconMaker
		If 322 = 1
		{
		RunWait, "%converter%" "%imagesource%" -resize 32x32 -colors 24 "%tempdir2%\%name_no_ext%_32px_24B.%ext%",, Hide
		filetoconvert=%filetoconvert% "%tempdir2%\%name_no_ext%_32px_24B.%ext%"
		}
	
	GuiControlGet, 482,, 48_2
	Progress, 40 ,, Création de l'icône`, veuillez patienter s'il vous plait., IconMaker
		If 482 = 1
		{
		RunWait, "%converter%" "%imagesource%" -resize 48x48 -colors 24 "%tempdir2%\%name_no_ext%_48px_24B.%ext%",, Hide
		filetoconvert=%filetoconvert% "%tempdir2%\%name_no_ext%_48px_24B.%ext%"
		}
	
	; le bloc des images 8B
	GuiControlGet, 163,, 16_3
	Progress, 45 ,, Création de l'icône`, veuillez patienter s'il vous plait., IconMaker
		If 163 = 1
		{
		RunWait, "%converter%" "%imagesource%" -resize 16x16 -colors 8 "%tempdir2%\%name_no_ext%_16px_8B.%ext%",, Hide
		filetoconvert=%filetoconvert% "%tempdir2%\%name_no_ext%_16px_8B.%ext%"
		}
	
	GuiControlGet, 243,, 24_3
	Progress, 50 ,, Création de l'icône`, veuillez patienter s'il vous plait., IconMaker
		If 243 = 1
		{
		RunWait, "%converter%" "%imagesource%" -resize 24x24 -colors 8 "%tempdir2%\%name_no_ext%_24px_8B.%ext%",, Hide
		filetoconvert=%filetoconvert% "%tempdir2%\%name_no_ext%_24px_8B.%ext%"
		}
	
	GuiControlGet, 323,, 32_3
	Progress, 55 ,, Création de l'icône`, veuillez patienter s'il vous plait., IconMaker
		If 323 = 1
		{
		RunWait, "%converter%" "%imagesource%" -resize 32x32 -colors 8 "%tempdir2%\%name_no_ext%_32px_8B.%ext%",, Hide
		filetoconvert=%filetoconvert% "%tempdir2%\%name_no_ext%_32px_8B.%ext%"
		}
	
	GuiControlGet, 483,, 48_3
	Progress, 60 ,, Création de l'icône`, veuillez patienter s'il vous plait., IconMaker
		If 483 = 1
		{
		RunWait, "%converter%" "%imagesource%" -resize 48x48 -colors 8 "%tempdir2%\%name_no_ext%_48px_8B.%ext%",, Hide
		filetoconvert=%filetoconvert% "%tempdir2%\%name_no_ext%_48px_8B.%ext%"
		}
	
	;le bloc des images 4B	
	GuiControlGet, 164,, 16_4
	Progress, 65 ,, Création de l'icône`, veuillez patienter s'il vous plait., IconMaker
		If 164 = 1
		{
		RunWait, "%converter%" "%imagesource%" -resize 16x16 -colors 8 "%tempdir2%\%name_no_ext%_16px_4B.%ext%",, Hide
		filetoconvert=%filetoconvert% "%tempdir2%\%name_no_ext%_16px_4B.%ext%"
		}
	
	GuiControlGet, 244,, 24_4
	Progress, 70 ,, Création de l'icône`, veuillez patienter s'il vous plait., IconMaker
		If 244 = 1
		{
		RunWait, "%converter%" "%imagesource%" -resize 24x24 -colors 4 "%tempdir2%\%name_no_ext%_24px_4B.%ext%",, Hide
		filetoconvert=%filetoconvert% "%tempdir2%\%name_no_ext%_24px_4B.%ext%"
		}
	
	GuiControlGet, 324,, 32_4
	Progress, 75 ,, Création de l'icône`, veuillez patienter s'il vous plait., IconMaker
		If 324 = 1
		{
		RunWait, "%converter%" "%imagesource%" -resize 32x32 -colors 4 "%tempdir2%\%name_no_ext%_32px_4B.%ext%",, Hide
		filetoconvert=%filetoconvert% "%tempdir2%\%name_no_ext%_32px_4B.%ext%"
		}
	
	GuiControlGet, 484,, 48_4
	Progress, 80 ,, Création de l'icône`, veuillez patienter s'il vous plait., IconMaker
		If 484 = 1
		{
		RunWait, "%converter%" "%imagesource%" -resize 48x48 -colors 4 "%tempdir2%\%name_no_ext%_48px_4B.%ext%",, Hide
		filetoconvert=%filetoconvert% "%tempdir2%\%name_no_ext%_48px_4B.%ext%"
		}

	If filetoconvert=
		{
		Progress, Off
		MsgBox,262192,, Aucune case n'a été sélectionnée.`nVeuillez en sélectionner au moins une.
		return
		}

	; maitenant on fait l'icône
	; avec png2ico
	RunWait, %png2ico% "%tempdir2%\%name_no_ext%.ico" %filetoconvert%,, Hide
	; avec montage
	; RunWait, "%converter%" %filetoconvert% -adjoin "%tempdir2%\%name_no_ext%.ico",, Hide

		Progress, 100 ,, Création de l'icône`, veuillez patienter s'il vous plait., IconMaker
		Sleep, 1000
		Progress, Off
	
	GuiControl,, generetedicon, %tempdir2%\%name_no_ext%.ico
	GuiControl, Enable, savicon

return

savicon:
	FileSelectFile,filetosave,S,%name_no_ext%,IconMaker, Fichier icône (*.ico)
	IfEqual,ErrorLevel,1
		{
		return
		}
	Else
		{
		IfNotEqual,filetosave,,
			{
			FileCopy,%tempdir2%\%name_no_ext%.ico, %filetosave%.ico ,0
			GuiControlGet, kptpfls,,keeptempfiles
			IfNotEqual, kptpfls, 1
				{
				FileRemoveDir, %tempdir2%,1
				}
			}
		}
return

GuiClose:
	GuiControlGet, kptpfls,,keeptempfiles
	IfEqual, kptpfls, 1
		{
		IniWrite,true,%A_ScriptDir%\%conffile%,Configuration,KeepTempFiles
		}
	IfEqual, kptpfls, 0
		{
		IniWrite,false,%A_ScriptDir%\%conffile%,Configuration,KeepTempFiles
		}
	
ExitApp
