So ich versuche mal wieder was mit AutoIt so geht, bzw, ich mir zutraue
Ich dachte ein Channeleditor wäre mal eine interessante Herausforderung:
Nun hänge ich aber schon ziemlich am Anfang
Ich möchte aus einer vorhandenen channels.conf den Inhalt in einer Gui ausgeben, womit ich die Zeilen sortieren & editieren lassen kann.
Mit sortieren meine ich die Position ändern, nach Radio/Video-Pids vielleicht später.
Abschliessend muss der Inhalt des Arrays wieder in eine datei zurückgeschrieben werden.
Trenner in der Orginal Datei ":" im File_array "|" // Ein Haken bereits war schon vorhande Pipes in der org. Conf
Genug gschwafelt, hier der erste Versuch:
[autoit]#include <File.au3>
#include <Array.au3>
#include <GUIConstants.au3>
dim $var
_FileReadToArray(@ScriptDir & "\channels.conf",$var)
GUICreate("Channels.conf - Editor",750,650, 100,200,-1,$WS_EX_ACCEPTFILES)
;~ GUISetBkColor (0x00E0FFFF) ; will change background color
$listview = GuiCtrlCreateListView ("ID|Name|Frequenz|Parameter|Quelle|SRate|VPID|APID|TPID|CA|SID|NID|TID|RID|",10,10,630,500);,$LVS_SORTDESCENDING)
for $i = 1 to $var[0]
If StringLeft($var[$i],1)=":" Then
GUICtrlSetData(GuiCtrlCreateListViewItem($i & "|" & $var[$i],$listview),$i)
Else
GUICtrlSetData(GuiCtrlCreateListViewItem($i & "|" & StringReplace(StringReplace($var[$i], "|","`"), ":","|"),$listview),$i)
EndIf
Next
$row_up = GuiCtrlCreateButton ("Up",675,170,40,40)
$row_down = GuiCtrlCreateButton ("Down",675,210,40,40)
$row_update = GuiCtrlCreateButton ("Update Row",570,530,70,20)
$input1=GuiCtrlCreateInput("",10,530, 550)
GuiCtrlSetState(-1,$GUI_DROPACCEPTED) ; to allow drag and dropping
GuiSetState()
Do
$msg = GuiGetMsg ()
Select
Case $msg = $row_update
GUICtrlSetData(GUICtrlRead($Input1),$listview) ;macht nicht was es soll // am Besten die Zeile mit der ID ändern / ok die weiß er noch nicht
;~ GUICtrlSetData(GuiCtrlCreateListViewItem(GUICtrlRead($input1),$listview),1) ; fügt am Ende einen neuen Eintrag hinzu /fast richtig / ID passt nicht
;~ MsgBox(0,"listview item",GUICtrlRead(GUICtrlRead($listview)),5) ; zeigt selektierte Zeile in MessageBox an
Case $msg = $listview
MsgBox(0,"listview", "clicked="& GuiCtrlGetState($listview),2)
EndSelect
Until $msg = $GUI_EVENT_CLOSE