ich arbeite fast ausschliesslich mit Linux und hab viele kleine Progrämmchen in XBasic geschrieben.
Leider funktioniert der Compiler nicht auf einer 64 Bit Plattform und mit einem Wrapper zu arbeiten ist net das wahre.
Gambas ist zwar recht und schön, nur muss hier die Umgebung installiert sein und Standalone Programme sind auch nicht möglich.
Mein erstes PB Projekt hab ich nahezu 1:1 von XBasic übernommen, es ist eine Oberfläche für youtube-dl
Vielleicht kann jemand einen Blick drüber werfen, denn das Programm verhält sich an mehreren Stellen nicht wie es sollte.
SetGadgetText(#LabAdr) sollte an mehreren Stellen unterschiedliche Texte ausgehen, das funktioniert nicht innerhalb der Schleife, warum k.A.
Ausserdem wollte ich den Rückgabestring (Titel des Videos, Interpret) von youtube-dl auslesen und in dem Label anzeigen lassen. Im Debug Fenster wird der Titel angezeigt, nur wie krieg ich's ausgelesen?
Danke schon mal im Vorab -- Kurt
Hier mal der komplette Code:
Code: Alles auswählen
; GUI DESIGNER V 0.3 Alpha
; Windows
Enumeration
#Form100
EndEnumeration
; Menu
Enumeration
#Menu_200
EndEnumeration
; MenuItem
Enumeration
EndEnumeration
; Gadget
Enumeration
#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
EndEnumeration
Procedure Open_Form100()
OpenWindow(#Form100, 1157, 162, 600, 440, "Youtube Downloader", $2)
; Menüliste
If CreateImageMenu(#Menu_200, WindowID(#Form100))
EndIf
; Gadgetliste
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")
TextGadget(#LabAdr, 0, 233, 600, 25, "")
StringGadget(#LabAdr, 0, 233, 600, 25, "")
CheckBoxGadget(#BtnYesNo,470,233,50,25, "Ich bin sicher")
HideGadget(#BtnYesNo,1)
EndProcedure
Open_Form100()
Define.l Event, EventWindow, EventGadget, EventType, EventMenu
Dim DlList.s(10)
; Event Schleife
Repeat
Event = WaitWindowEvent()
Select Event
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Case #PB_Event_Menu
EventMenu = EventMenu()
; Menü
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Case #PB_Event_Gadget
EventGadget = EventGadget()
; Gadget
If EventGadget = #BtnAdd
Gosub AddAdresse
ElseIf EventGadget = #BtnDownload
Gosub Download
ElseIf EventGadget = #BtnDel
DelFlag = 1
Gosub Delete
ElseIf EventGadget = #BtnClear
Gosub ClearAll
ElseIf EventGadget = #BtnExit
Gosub Programmende
ElseIf EventGadget = #LabAdr
EndIf
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
; ToolBar
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Case #PB_Event_CloseWindow
EventWindow = EventWindow()
; Window
If EventWindow = #Form100
CloseWindow(#Form100)
End
; Break
EndIf
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
EndSelect
ForEver
Programmende:
CloseWindow(#Form100)
End
Return
AddAdresse:
HideGadget(#BtnYesNo,1)
Adress$ = GetGadgetText (#LabAdr) ; Adresse aus dem Textlabel
If Adress$ = ""
Return ; Es wurde nichts verändert
EndIf
For i=1 To 9
If (GetGadgetText (i)) = "" ; Wenn der Platz noch frei ist
SetGadgetText ((i), Adress$) ; Adresse in die Tabelle schreiben
SetGadgetText (#LabAdr, "")
Return
EndIf
Next
Return
Download:
HideGadget(#BtnYesNo,1)
Marker = 0
For i=1 To 9
If (GetGadgetState (i)) = 1 ; wenn selektiert
Marker=1 ; setze Flag
EndIf
Next
If Marker = 0
SetGadgetText (#LabAdr, "Kein Download selektiert oder vorhanden!")
Return ; Abbruch wenn nichts markiert
EndIf
For i=1 To 9
Adress$ = GetGadgetText (i)
SetGadgetText(#LabAdr, "Lade " + Adress$)
;MessageRequester ("info", name + parameter)
mypgm= RunProgram("/usr/local/bin/youtube-dl", Chr(32) + Chr(34) + Adress$ + Chr(34), ".", #PB_Program_Open|#PB_Program_Read)
;RunProgram("/usr/local/bin/youtube-dl", Chr(32) + Chr(34) + Adress$ + Chr(34), ".", #PB_Program_Open|#PB_Program_Read)
Repeat
Debug ReadProgramString(mypgm)
SetGadgetText(#LabAdr, "Lade " + Adress$)
Until Not ProgramRunning(mypgm)
SetGadgetText(#LabAdr, "fertig")
Next
For i=1 To 9
SetGadgetText ((i), "") ; Textfeld und
SetGadgetState ((i),0) ; Status löschen
Next
SetGadgetText (#LabAdr, "") ; Label mit Standardtext füllen
SetGadgetState (#BtnYesNo,0) ; Flag für Auswertung löschen
HideGadget(#BtnYesNo,1) ; Button verstecken
Return
Delete:
Marker = 0
If DelFlag = 1
HideGadget(#BtnYesNo,1)
EndIf
For i=1 To 9
If (GetGadgetState (i)) = 1 ; wenn selektiert
Marker=1 ; setze Flag
EndIf
Next
If Marker = 0
SetGadgetText (#LabAdr, "Kein Download selektiert oder vorhanden!")
Return ; Abbruch wenn nichts markiert
EndIf
HideGadget(#BtnYesNo,0) ; Button sichtbar machen
If (GetGadgetState(#BtnYesNo)) = 0
SetGadgetText (#LabAdr, "Löschen markierter Downloads hier bestätigen: ")
Return
EndIf
For i=1 To 9
If (GetGadgetState (i)) = 1 ; wenn der Satus 1
SetGadgetText ((i), "") ; Text löschen
SetGadgetState ((i),0) ; und Staus zurück setzen
EndIf
Next
SetGadgetText (#LabAdr, "Markierte Downloads gelöscht!")
SetGadgetState(#BtnYesNo,0) ; Flag für Auswertung löschen
HideGadget(#BtnYesNo,1) ; Button verstecken
Return
ClearAll:
HideGadget(#BtnYesNo,0)
If (GetGadgetState(#BtnYesNo)) = 0
SetGadgetText (#LabAdr, "Löschen aller Downloads hier bestätigen: ")
Return
EndIf
For i=1 To 9
SetGadgetText ((i), "") ; Textfeld und
SetGadgetState ((i),0) ; Status löschen
Next
SetGadgetText (#LabAdr, "") ; Label mit Standardtext füllen
SetGadgetState (#BtnYesNo,0) ; Flag für Auswertung löschen
HideGadget(#BtnYesNo,1) ; Button verstecken
Return
; IDE Options = PureBasic 5.70 LTS (Linux - x86)
; CursorPosition = 164
; FirstLine = 155
; Folding = -
; EnableXP