Mein YT-Downloader, Adresse wird nicht angezeigt
Verfasst: 18.05.2019 19:53
Hallo,
hab jetzt mein Programm weitgehend umgebaut und alles in die Timerschleife eingebunden.
Das funktioniert auch soweit, nur die Adressen der Downloads sollen in dem StringGadget angezeit werden, das tun's aber nicht.
Vielleicht hab ich in einer Schleife noch einen Fehler, den ich net finde...
Ich häng mal den Code ran:
Vielleicht hat jemand einen Tip...
Dank im Voraus
Kurt
hab jetzt mein Programm weitgehend umgebaut und alles in die Timerschleife eingebunden.
Das funktioniert auch soweit, nur die Adressen der Downloads sollen in dem StringGadget angezeit werden, das tun's aber nicht.
Vielleicht hab ich in einer Schleife noch einen Fehler, den ich net finde...
Ich häng mal den Code ran:
Code: Alles auswählen
EnableExplicit
Enumeration
#MainScreen
#DL01_1 = 1
#DL01_2 = 2
#DL01_3 = 3
#DL01_4 = 4
#DL01_5 = 5
#DL01_6 = 6
#DL01_7 = 7
#DL01_8 = 8
#DL01_9 = 9
#BtnAdd
#BtnDownload
#BtnDel
#BtnClear
#BtnExit
#LabAdr
#BtnYesNo
#BtnAbbruch
#MeinTimer
EndEnumeration
Procedure Open_MainScreen()
OpenWindow(#MainScreen, 1157, 162, 600, 440, "Youtube Downloader")
CheckBoxGadget(#DL01_1, 0, 0, 500, 25, "")
CheckBoxGadget(#DL01_2, 0, 25, 500, 25, "")
CheckBoxGadget(#DL01_3, 0, 50, 500, 25, "")
CheckBoxGadget(#DL01_4, 0, 75, 500, 25, "")
CheckBoxGadget(#DL01_5, 0, 100, 500, 25, "")
CheckBoxGadget(#DL01_6, 0, 125, 500, 25, "")
CheckBoxGadget(#DL01_7, 0, 150, 500, 25, "")
CheckBoxGadget(#DL01_8, 0, 175, 500, 25, "")
CheckBoxGadget(#DL01_9, 0, 200, 500, 25, "")
ButtonGadget(#BtnAdd, 0, 270, 100, 25, "Hinzufügen")
ButtonGadget(#BtnDownload, 100, 270, 100, 25, "Download")
ButtonGadget(#BtnDel, 200, 270, 100, 25, "Löschen")
ButtonGadget(#BtnClear, 300, 270, 100, 25, "Lösche Alles")
ButtonGadget(#BtnExit, 500, 270, 100, 25, "Ende")
StringGadget(#LabAdr, 0, 233, 600, 25, "")
CheckBoxGadget(#BtnYesNo,370,233,50,25, "Ich bin sicher")
HideGadget(#BtnYesNo,1)
CheckBoxGadget(#BtnAbbruch,490,233,50,25, "Abbrechen")
HideGadget(#BtnAbbruch,1)
AddWindowTimer(#MainScreen, #MeinTimer, 1000) ;1000ms= 1sec
EndProcedure
SetClipboardText("")
Open_MainScreen()
Define.l Event, EventWindow, EventGadget, EventType, EventMenu
Global DelFlag, i, Adress$, ShellPrg, KlickAdd, KlickDel, KlickKill, KlickDownload, KlickLabAdr
Declare AddAdresse()
Declare Download()
Declare Delete()
Declare ClearAll()
Declare TestDl()
Declare Programmende()
; Event Schleife
Repeat
; Event = WaitWindowEvent()
; Select Event
Select WaitWindowEvent(10)
Case #PB_Event_Timer
If EventTimer()=#MeinTimer
If Not KlickLabAdr
Adress$ = GetClipboardText()
SetGadgetText (#LabAdr, Adress$)
EndIf
If KlickAdd
AddAdresse()
EndIf
If KlickDel
TestDl()
Select DelFlag
Case 0
SetGadgetText (#LabAdr, "Kein Download selektiert oder vorhanden!")
KlickDel=#False
Case 1
SetGadgetText (#LabAdr, "Markierung entfernen oder das Löschen hier bestätigen:")
Delete()
EndSelect
EndIf
If KlickKill
HideGadget(#BtnYesNo,0)
HideGadget(#BtnAbbruch,0)
SetGadgetText (#LabAdr, "Alle Downloads löschen:")
Select GetGadgetState(#BtnAbbruch)
Case 1
KlickKill=#False
HideGadget(#BtnYesNo,1)
HideGadget(#BtnAbbruch,1)
SetGadgetState(#BtnAbbruch,0)
EndSelect
ClearAll()
EndIf
If KlickDownload
TestDL()
Select DelFlag
Case 0
SetGadgetText (#LabAdr, "Kein Download selektiert oder vorhanden!")
KlickDownload=#False
Case 1
Download()
EndSelect
EndIf
EndIf
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Case #PB_Event_Menu
EventMenu = EventMenu()
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Case #PB_Event_Gadget
EventGadget = EventGadget()
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
If EventGadget = #BtnAdd
KlickAdd=#True
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ElseIf EventGadget = #BtnDownload
KlickDownload=#True
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ElseIf EventGadget = #BtnDel
KlickDel=#True
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ElseIf EventGadget = #BtnClear
KlickKill=#True
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ElseIf EventGadget = #BtnExit
CloseWindow(#MainScreen)
End
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ElseIf EventGadget = #LabAdr
KlickLabAdr=#True
EndIf
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Case #PB_Event_CloseWindow
EventWindow = EventWindow()
If EventWindow = #MainScreen
CloseWindow(#MainScreen)
End
EndIf
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
EndSelect
ForEver
Procedure TestDl()
HideGadget(#BtnYesNo,1)
DelFlag=#False
For i=1 To 9
If (GetGadgetState (i)) = 1 ; wenn Download selektiert
DelFlag=#True ; setze Flag
Break ; das reicht 1x
EndIf
Next
EndProcedure
Procedure AddAdresse()
HideGadget(#BtnYesNo,1)
Adress$ = GetGadgetText (#LabAdr) ; Adresse aus dem Textlabel
If Adress$ < > "" ; wenn nichts eingegeben wurde...
For i=1 To 9 ; es gibt 9 Downloads
If (GetGadgetText (i)) = "" ; Wenn ein Platz frei ist
SetGadgetText ((i), Adress$) ; Adresse in die Tabelle schreiben
SetGadgetText (#LabAdr, "") ; das Textlabel wieder leeren
Break ; Abbruch bei Fundstelle vor Schleifenende
EndIf
Next
EndIf ; ...gibts auch nix zu tun
KlickAdd=#False
KlickLabAdr=#False
SetClipboardText("") ; Text in Zwischenablage löschen
EndProcedure
Procedure Delete()
HideGadget(#BtnYesNo,0) ; Button sichtbar machen
If (GetGadgetState(#BtnYesNo)) = 0
ProcedureReturn
Else
For i=1 To 9
If (GetGadgetState (i)) = 1 ; wenn der Satus 1
SetGadgetText ((i), "") ; Text löschen
SetGadgetState ((i),0) ; und Status zurück setzen
EndIf
Next
SetGadgetState(#BtnYesNo,0) ; Flag für Auswertung löschen
HideGadget(#BtnYesNo,1) ; Button verstecken
EndIf
DelFlag=#False
KlickDel=#False
EndProcedure
Procedure ClearAll()
If (GetGadgetState(#BtnYesNo)) = 0
ProcedureReturn
Else
For i=1 To 9
SetGadgetText ((i), "") ; Textfeld und
SetGadgetState ((i),0) ; Status löschen
Next
SetGadgetText (#LabAdr, "") ; Label löschen
SetGadgetState (#BtnYesNo,0) ; Flag für Auswertung löschen
HideGadget(#BtnYesNo,1) ; Button1 verstecken
HideGadget(#BtnAbbruch,1) ; Button2 verstecken
EndIf
KlickKill=#False
EndProcedure
Procedure Download()
For i= 1 To 9
Adress$ = GetGadgetText (i)
If Adress$ <> ""
SetGadgetText(#LabAdr, "Lade " + Adress$) ; Das funktioniert nicht
ShellPrg= RunProgram("youtube-dl", Chr(32) + Adress$, "", #PB_Program_Open|#PB_Program_Write|#PB_Program_Read)
Repeat
Debug ReadProgramString(ShellPrg)
Until Not ProgramRunning(ShellPrg)
Else
EndIf
Next
For i=1 To 9
SetGadgetText ((i), "") ; Textfeld und
SetGadgetState ((i),0) ; Status löschen
Next
SetGadgetText (#LabAdr, "") ; Label löschen
SetGadgetState (#BtnYesNo,0) ; Flag für Auswertung löschen
HideGadget(#BtnYesNo,1) ; Button verstecken
DelFlag=#False
KlickDownload=#False
EndProcedure
Dank im Voraus
Kurt