Code : Tout sélectionner
#include <GUIConstants.au3>
#include <File.au3>
#include <Array.au3>
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.au3>
Opt("GUIOnEventMode", 1)
Opt("ExpandVarStrings", 1)
Global $IniFile = @ScriptDir & "\Ini\Villes.ini", $aArray, $MainGUI, $Combo, $ChecksCAD, $ChecksMS, $ChecksAutres, $Button1, $Button2, $Button3, $aArrayLogicielsCAD, $aArrayLogicielsMS, $aArrayLogicielsAutres
Global $DummyCheckCAD, $DummyCheckMS, $DummyCheckAutres
_Gui()
While GUIGetMsg() <> -3
WEnd
Func _Gui()
$aArrayLogicielsCAD = IniReadSection(@ScriptDir & "\Ini\logiciels.ini", "Logiciels")
$DummyCheckCAD = $aArrayLogicielsCAD[0][0]
Dim $ChecksCAD[$aArrayLogicielsCAD[0][0] + 1]
$aArrayLogicielsMS = IniReadSection(@ScriptDir & "\Ini\logiciels.ini", "Office")
$DummyCheckMS = $aArrayLogicielsMS[0][0]
Dim $ChecksMS[$aArrayLogicielsMS[0][0] + 1]
$aArrayLogicielsAutres = IniReadSection(@ScriptDir & "\Ini\logiciels.ini", "Autres")
$DummyCheckAutres = $aArrayLogicielsAutres[0][0]
Dim $ChecksAutres[$aArrayLogicielsAutres[0][0] + 1]
$Height = ($aArrayLogicielsCAD[0][0] * 20) + 50
If $Height > @DesktopHeight Then
MsgBox(0x0,"Erreur", "Il y a trop pour votre écran", 3)
$Height = @DesktopHeight - 50
EndIf
$MainGUI = GUICreate("Menu d'installation de logiciels", 910, 340, 200, 200)
$Label1 = GUICtrlCreateLabel ("Sélectionner les logiciels à installer", 350, 1, 300, 17)
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
Local Const $sFont = "Comic Sans Ms"
GUICtrlSetFont($Label1, 10, 400, 4, $sFont)
GUICtrlCreateGroup ("Produits Autodesk", 20, 48, 350, 250)
GUICtrlCreateGroup ("Produits Microsoft", 390, 48, 150, 250)
GUICtrlCreateGroup ("Autres Produits", 555, 48, 310, 250)
$alignH = 70
$alignV = 30
For $i = 1 To $aArrayLogicielsCAD[0][0]
$ChecksCAD[$i] = GUICtrlCreateCheckbox($aArrayLogicielsCAD[$i][0], $alignV, $alignH, 125, 15)
GUICtrlSetState(-1, $GUI_DISABLE)
$alignH = $alignH + 20
If $alignH = 290 then
$alignV = 200
$alignH = 70
EndIf
Next
$alignH = 70
$alignV = 400
For $i = 1 To $aArrayLogicielsMS[0][0]
$ChecksMS[$i] = GUICtrlCreateCheckbox($aArrayLogicielsMS[$i][0], $alignV, $alignH, 125, 15)
GUICtrlSetState(-1, $GUI_DISABLE)
$alignH = $alignH + 20
Next
$alignH = 70
$alignV = 565
For $i = 1 To $aArrayLogicielsAutres[0][0]
$ChecksAutres[$i] = GUICtrlCreateCheckbox($aArrayLogicielsAutres[$i][0], $alignV, $alignH, 125, 15)
GUICtrlSetState(-1, $GUI_DISABLE)
$alignH = $alignH + 20
If $alignH = 290 then
$alignV =725
$alignH = 70
EndIf
Next
$Label2 = GUICtrlCreateLabel ("Place d'affaire:", 20, 25, 100, 17)
$CmbTitle="Choisissez une ville..."
$Combo = GUICtrlCreateCombo($CmbTitle, 140, 30, 220, 25, BitOR($CBS_DROPDOWNLIST, $WS_VSCROLL))
GUISetBkColor (0xf0f8ff)
GUICtrlSetOnEvent(-1, "_Autorisation")
$Button1 = GUICtrlCreateButton ("Démarrer", 20, 305, 129, 25, 0)
GUICtrlSetOnEvent(-1, "_Check")
GUICtrlSetState(-1, $GUI_FOCUS)
$Button2 = GUICtrlCreateButton ("Sélectionner tous", 180, 305, 129, 25, 0)
GUICtrlSetOnEvent(-1, "_SelectAll")
$Button3 = GUICtrlCreateButton ("Déselectionner tous", 330, 305, 129, 25, 0)
GUICtrlSetOnEvent(-1, "_UnSelectAll")
$aArrayCombo = IniReadSectionNames($IniFile)
If Not @error Then
For $i = 1 To $aArrayCombo[0]
GUICtrlSetData($Combo, $aArrayCombo[$i])
Next
EndIf
_ArrayDelete($ChecksCAD, 0)
_ArrayDelete($ChecksMS, 0)
_ArrayDelete($ChecksAutres, 0)
_ArrayConcatenate($ChecksCAD, $ChecksMS)
_ArrayConcatenate($ChecksCAD,$ChecksAutres)
_ArrayDelete($aArrayLogicielsCAD, 0)
_ArrayDelete($aArrayLogicielsMS, 0)
_ArrayDelete($aArrayLogicielsAutres, 0)
_ArrayConcatenate($aArrayLogicielsCAD, $aArrayLogicielsMS)
_ArrayConcatenate($aArrayLogicielsCAD, $aArrayLogicielsAutres)
GUISetState(@SW_SHOW, $MainGUI)
EndFunc
Func _Autorisation()
Global $Location = GUICtrlRead($Combo)
Local $aAutorisation = IniReadSection($IniFile, $Location)
;_ArrayDisplay($aAutorisation)
If Not IsArray($aAutorisation) Then
For $i = 1 To $aArrayLogicielsCAD[0][0]
GUICtrlSetState($ChecksCAD[$i], 4)
GUICtrlSetState($ChecksCAD[$i], 128)
Next
Return
EndIf
If Not IsArray($aAutorisation) Then
For $i = 1 To $aArrayLogicielsMS[0][0]
GUICtrlSetState($ChecksMS[$i], 4)
GUICtrlSetState($ChecksMS[$i], 128)
Next
Return
EndIf
If Not IsArray($aAutorisation) Then
For $i = 1 To $aArrayLogicielsAutres[0][0]
GUICtrlSetState($ChecksAutres[$i], 4)
GUICtrlSetState($ChecksAutres[$i], 128)
Next
Return
EndIf
If Not @error Then
For $i = 1 To $aAutorisation[0][0]
If $aAutorisation[$i][1] = 1 Then
GUICtrlSetState($ChecksCAD[$i-1], 64)
GUICtrlSetState($ChecksCAD[$i-1], $GUI_UNCHECKED)
Else
GUICtrlSetState($ChecksCAD[$i-1], $GUI_DISABLE)
GUICtrlSetState($ChecksCAD[$i-1], 128)
EndIf
Next
EndIf
EndFunc
Func _Check()
;_ArrayDisplay($ChecksCAD)
;_ArrayDisplay($aArrayLogicielsCAD)
For $i = 0 To UBound($aArrayLogicielsCAD) - 1
If _IsChecked($ChecksCAD[$i]) Then
ConsoleWrite("Fin des installations:" & @CRLF & "-" & $aArrayLogicielsCAD[$i][0] & @CRLF & $aArrayLogicielsCAD[$i][1])
EndIf
Next
EndFunc
Func _IsChecked($control)
Return BitAnd(GUICtrlRead($control),$GUI_CHECKED) = $GUI_CHECKED
EndFunc
Func _Exit()
Exit
EndFunc
Func _SelectAll()
For $i = 1 To $ChecksCAD
GUICtrlSetState($ChecksCAD[$i], $GUI_CHECKED)
Next
EndFunc
Func _UnSelectAll()
For $i = 1 To $ChecksCAD
GUICtrlSetState($ChecksCAD[$i], $GUI_UNCHECKED)
Next
EndFunc