/*
 * * * Compile_AHK SETTINGS BEGIN * * *

[AHK2EXE]
Exe_File=%In_Dir%\..\..\App\FramaKiosk\Launch.exe
Execution_Level=2
[VERSION]
Set_Version_Info=1
Company_Name=Framakey.org
File_Description=Permet d'associer les fichiers lch au FramaKiosk
File_Version=0.9.9.7
Inc_File_Version=1
Internal_Name=FramaWizard
Legal_Copyright=2005-2011 Framakey.org
Original_Filename=Launch.ahk
Product_Version=0.3.0.24
Inc_Product_Version=1
Language_ID=56
[ICONS]
Icon_1=%In_Dir%\Launch.ico
Icon_2=0
Icon_3=0
Icon_4=0
Icon_5=0
Icon_6=0
Icon_7=0

* * * Compile_AHK SETTINGS END * * *
*/

; ================================================================================
; 								Framakey Launcher
; ================================================================================
;
;	Par fat115
;	License : GNU/GPL v2
;	Ce script permet de créer le lanceur d'applications
;	pour le FramaKiosk.
; 	License : GPL
; 	Compiler: AutoHotkey_L Unicode (http://www.autohotkey.com/).
; 	$id=Launch.ahk $date=2011-10-31
;
; --------------------------------------------------------------------------------
;						Copyright (C) 2005-2011 Framakey

;						Website: http://www.framakey.org

;This software is OSI Certified Open Source Software.
;OSI Certified is a certification mark of the Open Source Initiative.

;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.
; --------------------------------------------------------------------------------

; ----------------------------------------------------
; Définition des directives
#SingleInstance ignore
#NoTrayIcon
#NoEnv
#Include ini.ahk

; Nom du fichier lch appelé avec le chemin complet
f_LauncherName = %1%

; on récupère les lettres de la clé et du fichier lch
SplitPath, f_LauncherName, , , , , p_LauncherDrive
SplitPath, A_ScriptDir, , , , , p_KeyDrive

; On lit les items du fichier lch
ini_load(s_IniFile, f_LauncherName, "UTF-8")
s_ExecFile := ini_getValue(s_IniFile, "Launch", "ExecuteFile", 1)
s_ExecDir := ini_getValue(s_IniFile, "Launch", "ExecuteDirectory", 1)
s_ExecParam := ini_getValue(s_IniFile, "Launch", "ExecuteParameters", 1)

; On récupère le dossier de base (contenant Framakey.exe ou start.exe (FK1.x)) avec un loop
p_TestPath := A_ScriptFullPath
EnvGet, p_FramakeyPath, FramaRoot
If !p_FramakeyPath
	Loop
		{
		SplitPath, p_TestPath, , p_FramakeyPath
		If (FileExist(p_FramakeyPath . "\start.exe") || FileExist(p_FramakeyPath . "\FramaStarter.exe") || FileExist(p_FramakeyPath . "\Framakey.exe") || (FileExist(p_FramakeyPath . "\Framakey2") && !InStr(FileExist(p_FramakeyPath . "\Framakey2"), "D")))
			Break
		IfInString, p_FramakeyPath, \
			p_TestPath := p_FramakeyPath
		Else
			{
			MsgBox, 16, Erreur !, Impossible de déterminer la racine de la Framakey !`nL'application va quitter., 5
			ExitApp
			}
		}

; on recherche http: dans les paramètres
i_ParamIsUrl := InStr(s_ExecParam, "http://")
; si le lch n'est pas sur la clé, on affiche un avertissement et on quitte
If ((p_KeyDrive != p_LauncherDrive) && (i_ParamIsUrl != 1))
	{
	MsgBox, 16, Erreur !, Tentative de lancement à partir d'un fichier distant !`nL'application va quitter., 5
	ExitApp
	}

; On remplace FramaRoot par le chemin
StringReplace, s_ExecFile, s_ExecFile, FramaRoot, %p_FramakeyPath%, All
StringReplace, s_ExecDir, s_ExecDir, FramaRoot, %p_FramakeyPath%, All
StringReplace, s_ExecParam, s_ExecParam, FramaRoot, %p_FramakeyPath%, All

; traitement d'actions particulières
If (s_ExecFile = "shutdown")
	{
	If (s_ExecParam = "")
		s_ExecParam := 9
	Shutdown, %s_ExecParam%
	ExitApp
	}
If (s_ExecFile = "desktop")
	{
	WinMinimizeAll
	ExitApp
	}

; Teste l'existence du fichier seulement si le chemin est présent
If (!(FileExist(s_ExecFile)) && (InStr(s_ExecFile, "\")))
	{
	If s_ExecParam
		{
		MsgBox, 36, Erreur !, %s_ExecFile% est introuvable. Voulez-vous essayer d'ouvrir le lien avec les applications de l'ordinateur ?
		IfMsgBox, YES
			Run, open %s_ExecParam%
		ExitApp
		}
	MsgBox, 16, Erreur !, %s_ExecFile% est introuvable. Vous pouvez l'ajouter avec SynApps., 5
	ExitApp
	}
	
Run, %s_ExecFile% %s_ExecParam%, %s_ExecDir%, UseErrorLevel
If ErrorLevel
	MsgBox, 16, Erreur !, Une erreur est apparue lors du lancement de l'application., 5
