#cs ----------------------------------------------------------------------------

 AutoIt Version: 3.2.12.0
 Author:         Thomas Schwerdt

 Script Function:
	Template AutoIt script.

#ce ----------------------------------------------------------------------------

; Script Start - Add your code below here

#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Array.au3>

;Vorgaben
$aDefault = _ArrayCreate(08,00,05,17,18) 
$aVorgaben = _ArrayCreate("17 Arbeitsplatz","00 Desktop","05 Eigene Dateien","13 Eigene Musik","14 Eigene Videos","06 Favoriten","18 Netzwerkumgebung","02 Programme","08 zuletzt verwendete Dateien")

;load Places
Dim $aLoadPlaces_Combo[1]
Dim $aLoadPlaces_Input[1]

For $i = 0 To 4
	For $i2 = 0 To 8
		$Place = String(RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\comdlg32\PlacesBar","Place" & $i))
		If $Place = "" Then
			_ArrayInsert( $aLoadPlaces_Combo, $i,"Standard")
			_ArrayInsert( $aLoadPlaces_Input, $i,"")
		Else
			If Not StringInStr($aVorgaben[$i2], $Place & StringTrimLeft($aVorgaben[$i2],2)) = 0 Then
				If StringCompare($aDefault[$i], $Place) = 0 Then
					_ArrayInsert( $aLoadPlaces_Combo, $i,"Standard")
				Else
					_ArrayInsert( $aLoadPlaces_Combo, $i,StringTrimLeft($aVorgaben[$i2],3))
				EndIf
			Else
				If Not StringInStr($Place, ":\") = 0 Then
					_ArrayInsert( $aLoadPlaces_Combo, $i,"Anderer Ordner ...")
					_ArrayInsert( $aLoadPlaces_Input, $i,$Place)
				Else
					_ArrayInsert( $aLoadPlaces_Input, $i,"")
				EndIf
			EndIf
		EndIf
	Next
Next

#Region ### START Koda GUI section ### 
GUICreate("PlacesBar Tuner", 572, 202, 193, 115)
$Label1 = GUICtrlCreateLabel("Position 1:", 9, 14, 53, 17)
$Label2 = GUICtrlCreateLabel("Position 2:", 9, 44, 53, 17)
$Label3 = GUICtrlCreateLabel("Position 3:", 9, 74, 53, 17)
$Label4 = GUICtrlCreateLabel("Position 4:", 9, 104, 53, 17)
$Label5 = GUICtrlCreateLabel("Position 5:", 9, 134, 53, 17)

$Browse1 = GUICtrlCreateButton("Durchsuchen", 473, 10, 89, 21, 0)
$Browse2 = GUICtrlCreateButton("Durchsuchen", 473, 40, 89, 21, 0)
$Browse3 = GUICtrlCreateButton("Durchsuchen", 473, 70, 89, 21, 0)
$Browse4 = GUICtrlCreateButton("Durchsuchen", 473, 100, 89, 21, 0)
$Browse5 = GUICtrlCreateButton("Durchsuchen", 473, 130, 89, 21, 0)
	
	If $aLoadPlaces_Input[0] = "" Then GUICtrlSetState($Browse1, $GUI_DISABLE) 
	If $aLoadPlaces_Input[1] = "" Then GUICtrlSetState($Browse2, $GUI_DISABLE) 
	If $aLoadPlaces_Input[2] = "" Then GUICtrlSetState($Browse3, $GUI_DISABLE) 
	If $aLoadPlaces_Input[3] = "" Then GUICtrlSetState($Browse4, $GUI_DISABLE) 
	If $aLoadPlaces_Input[4] = "" Then GUICtrlSetState($Browse5, $GUI_DISABLE) 
	
$Apply = GUICtrlCreateButton("Übernehmen", 472, 166, 89, 21, 0)
	GUICtrlSetState($Apply, $GUI_FOCUS)
$Reset = GUICtrlCreateButton("Zurücksetzen", 373, 167, 89, 21, 0)

$Input1 = GUICtrlCreateInput($aLoadPlaces_Input[0], 285, 10, 177, 21, $ES_READONLY)
$Input2 = GUICtrlCreateInput($aLoadPlaces_Input[1], 285, 40, 177, 21, $ES_READONLY)
$Input3 = GUICtrlCreateInput($aLoadPlaces_Input[2], 285, 70, 177, 21, $ES_READONLY)
$Input4 = GUICtrlCreateInput($aLoadPlaces_Input[3], 285, 100, 177, 21, $ES_READONLY)
$Input5 = GUICtrlCreateInput($aLoadPlaces_Input[4], 285, 130, 177, 21, $ES_READONLY)

$Combo1 = GUICtrlCreateCombo("Standard", 80, 10, 177, 25, $CBS_DROPDOWNLIST)
	GUICtrlSetData($Combo1, "Arbeitsplatz|Desktop|Eigene Dateien|Eigene Musik|Eigene Videos|Favoriten|Netzwerkumgebung|Programme|zuletzt verwendete Dateien|Anderer Ordner ...",$aLoadPlaces_Combo[0])
$Combo2 = GUICtrlCreateCombo("Standard", 80, 40, 177, 25, $CBS_DROPDOWNLIST)
	GUICtrlSetData($Combo2, "Arbeitsplatz|Desktop|Eigene Dateien|Eigene Musik|Eigene Videos|Favoriten|Netzwerkumgebung|Programme|zuletzt verwendete Dateien|Anderer Ordner ...",$aLoadPlaces_Combo[1])
$Combo3 = GUICtrlCreateCombo("Standard", 80, 70, 177, 25, $CBS_DROPDOWNLIST)
	GUICtrlSetData($Combo3, "Arbeitsplatz|Desktop|Eigene Dateien|Eigene Musik|Eigene Videos|Favoriten|Netzwerkumgebung|Programme|zuletzt verwendete Dateien|Anderer Ordner ...",$aLoadPlaces_Combo[2])
$Combo4 = GUICtrlCreateCombo("Standard", 80, 100, 177, 25, $CBS_DROPDOWNLIST)
	GUICtrlSetData($Combo4, "Arbeitsplatz|Desktop|Eigene Dateien|Eigene Musik|Eigene Videos|Favoriten|Netzwerkumgebung|Programme|zuletzt verwendete Dateien|Anderer Ordner ...",$aLoadPlaces_Combo[3])
$Combo5 = GUICtrlCreateCombo("Standard", 80, 130, 177, 25, $CBS_DROPDOWNLIST)
	GUICtrlSetData($Combo5, "Arbeitsplatz|Desktop|Eigene Dateien|Eigene Musik|Eigene Videos|Favoriten|Netzwerkumgebung|Programme|zuletzt verwendete Dateien|Anderer Ordner ...",$aLoadPlaces_Combo[4])

GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

;Browse function
Func _fBrowse($fBrowse,$fInput,$fCombo)
	$fBrowse_dialog = FileSelectFolder ("","")
		If Not @error Then 
			GUICtrlSetData($fInput,$fBrowse_dialog) 
		Else
			GUICtrlSetState($fBrowse, $GUI_DISABLE)
			GUICtrlSetState($Apply, $GUI_FOCUS)
			GUICtrlSetData($fCombo, "Standard")
		EndIf
EndFunc

;Combo function
Func _fCombo($fBrowse,$fInput,$fCombo)
	If GUICtrlRead($fCombo) = String( "Anderer Ordner ...") Then
		GUICtrlSetState($fBrowse, $GUI_ENABLE)
		GUICtrlSetState($fBrowse, $GUI_FOCUS)
		Send("{ENTER}")
	Else
		GUICtrlSetState($fBrowse, $GUI_DISABLE)
		GUICtrlSetState($fCombo, $GUI_FOCUS)
		GUICtrlSetData($fInput, "")
	EndIf
EndFunc

;Reset function
Func _fReset($fPlace, $fBrowse,$fInput,$fCombo)
	;default places
	RegWrite ( "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\comdlg32\PlacesBar","Place" & $fPlace-1,"REG_DWORD",$aDefault[$fPlace-1])
	
	;reset Ctrls
	GUICtrlSetState($fBrowse, $GUI_DISABLE)
	GUICtrlSetData($fInput,"")
	GUICtrlSetBkColor($fInput, 0xd3d0c8)
	GUICtrlSetData($fCombo,"Standard")
EndFunc

While 1
$nMsg = GUIGetMsg()
Switch $nMsg
	;Costum on/OFF
	Case $Combo1
		_fCombo($Browse1,$Input1,$Combo1)
	Case $Combo2
		_fCombo($Browse2,$Input2,$Combo2)
	Case $Combo3
		_fCombo($Browse3,$Input3,$Combo3)
	Case $Combo4
		_fCombo($Browse4,$Input4,$Combo4)
	Case $Combo5
		_fCombo($Browse5,$Input5,$Combo5)
		
	;Browse-Buttons
	Case $Browse1
		_fBrowse($Browse1,$Input1,$Combo1)
	Case $Browse2
		_fBrowse($Browse2,$Input2,$Combo2)
	Case $Browse3
		_fBrowse($Browse3,$Input3,$Combo3)
	Case $Browse4
		_fBrowse($Browse4,$Input4,$Combo4)
	Case $Browse5
		_fBrowse($Browse5,$Input5,$Combo5)
		
	;Edit Registry
	Case $Apply
		$aCombo = _ArrayCreate(GUICtrlRead($Combo1),GUICtrlRead($Combo2),GUICtrlRead($Combo3),GUICtrlRead($Combo4),GUICtrlRead($Combo5))
		$aInput = _ArrayCreate(GUICtrlRead($Input1),GUICtrlRead($Input2),GUICtrlRead($Input3),GUICtrlRead($Input4),GUICtrlRead($Input5))
		
		For $i = 0 To 4
			If StringCompare($aCombo[$i],"Anderer Ordner ...") = 0 Then
				RegWrite ( "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\comdlg32\PlacesBar","Place" & $i,"REG_SZ",$aInput[$i])		
			Else
				If StringCompare($aCombo[$i],String("Standard")) = 0 Then
					RegWrite ( "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\comdlg32\PlacesBar","Place" & $i,"REG_DWORD",$aDefault[$i])
				Else
					For $i2 = 0 To 8
						if Not StringInStr($aVorgaben[$i2],$aCombo[$i]) = 0 Then
							RegWrite ( "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\comdlg32\PlacesBar","Place" & $i,"REG_DWORD",StringLeft($aVorgaben[$i2],2))	
						EndIf
					Next
				EndIf
			EndIf
		Next	
		
		$MsgLabel = GUICtrlCreateLabel("            Änderungen gespeichert", 186, 80, 200, 42,$SS_CENTERIMAGE ,$SS_BLACKFRAME) 
		Sleep(2000)
		GUICtrlDelete($MsgLabel)
	Case $Reset
		$Sure =MsgBox(4,"", "Die Placesbar wirklich zurücksetzen?")
		If $Sure = 6 Then
			_fReset(1,$Browse1,$Input1,$Combo1)
			_fReset(2,$Browse2,$Input2,$Combo2)
			_fReset(3,$Browse3,$Input3,$Combo3)
			_fReset(4,$Browse4,$Input4,$Combo4)
			_fReset(5,$Browse5,$Input5,$Combo5)
			
			$MsgLabel = GUICtrlCreateLabel("            Änderungen gespeichert", 186, 80, 200, 42,$SS_CENTERIMAGE ,$SS_BLACKFRAME) 
			Sleep(2000)
			GUICtrlDelete($MsgLabel)
		EndIf

	Case $GUI_EVENT_CLOSE
		Exit

EndSwitch
WEnd
