Web-Browser + MP3-Browser

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Blackskyliner
Beiträge: 532
Registriert: 28.07.2005 00:54
Wohnort: /home/Blackskyliner/

Web-Browser + MP3-Browser

Beitrag von Blackskyliner »

Hallo ich bin neu in der PureBasic programmiererei so seit ca. 2-3Tage
Nun hab ich mir das Projekt vorgenommen einen Web-Browser mit einem MP3-Player mit Playlist zu machen.
Das Layout war ja einfach (VPB)
Aber nun haperts ein bisschen und zwar hier erstmal der Source und dann meine Fragen.

Code: Alles auswählen

Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
  #String_URL
  #Button_GoTo
  #Webfenster
  #MP3_Verzeichnisse
  #MP3_Dateien
  #Button_Play
  #Button_Stop
  #MP3_Playlist
EndEnumeration


If OpenWindow(#Window_0, 146, 15, 934, 583,  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered | #PB_Window_WindowCentered ,"WebBrowser")
  AdvancedGadgetEvents(True) 
  If CreateGadgetList(WindowID())
      StringGadget(#String_URL, 0, 0, 745, 20, "")
      ButtonGadget(#Button_GoTo, 745, 0, 60, 20, "Gehe zu")
      WebGadget(#Webfenster, 0, 20, 935, 400, "about:blank")
      ExplorerTreeGadget(#MP3_Verzeichnisse, 0, 420, 200, 165, "")
      ExplorerListGadget(#MP3_Dateien, 200, 420, 530, 165, "*.mp3",#PB_Explorer_NoFolders|#PB_Explorer_NoParentFolder)
      ButtonGadget(#Button_Play, 805, 0, 65, 20, "MP3 - Play")
      ButtonGadget(#Button_Stop, 870, 0, 65, 20, "MP3 - Stop")
      ListViewGadget(#MP3_Playlist, 730, 420, 205, 165)
  EndIf
  ;InitMovie()
  ;If GetGadgetText(#MP3_Dateien) <> ""
  ; If LoadMovie(0, GetGadgetText(#MP3_Dateien))
  ;      PlayMovie(0,WindowID())
  ;  EndIf
  ;EndIf
  ;If Stop = 1
  ;  StopMovie()
  ;  Stop = 0
  ;  Play = 0
  ;EndIf
  Repeat
    EventID = WaitWindowEvent()
  
      If EventID = #PB_Event_CloseWindow 
        Quit = 1
      EndIf
      
      ; Tasten Abfragen ;
      If EventID = #WM_KEYDOWN
        If EventwParam() = #VK_RETURN
          If GetGadgetText(#String_URL) <> "http://*"
          SetGadgetText(#Webfenster,"http://"+GetGadgetText(#String_URL))
          Else
          SetGadgetText(#Webfenster,GetGadgetText(#String_URL))
          EndIf
        EndIf
      EndIf
      ; --- ;
      
      
        
      If EventID = #PB_Event_Gadget
        
        ; MP3-Start setzen ;
        If EventGadgetID()=#Button_Play
          Play = 1
        EndIf
        ; --- ;
                
        ; MP3-Stop setzen ;
        If EventGadgetID()=#Button_Stop
          Stop = 1
        EndIf
        ; --- ;
           
        ; Web-Browsing ;
        If EventGadgetID()=#Button_GoTo
          If GetGadgetText(#String_URL) <> "http://*"
          SetGadgetText(#Webfenster,"http://"+GetGadgetText(#String_URL))
          Else
          SetGadgetText(#Webfenster,GetGadgetText(#String_URL))
          EndIf
        EndIf
        ; --- ;
                        
        ; MP3-Liste Wechseln ;
        If EventGadgetID()=#MP3_Verzeichnisse
         SetGadgetText(#MP3_Dateien, GetGadgetText(#MP3_Verzeichnisse))
        EndIf
        ; --- ;
        
        If EventGadgetID()=#MP3_Dateien
        If EventType() = #PB_EventType_LeftDoubleClick
         ListID.l = CountGadgetItems(#MP3_Playlist)
            
         If ListID <> 0
         AddGadgetItem(#MP3_Playlist,ListID-1,GetGadgetText(#MP3_Dateien))
         Else
         AddGadgetItem(#MP3_Playlist,0,GetGadgetText(#MP3_Dateien))
         EndIf
      EndIf
        EndIf
      EndIf
    Until Quit=1
      EndIf
End
So nun meine Fragen.

Wie kann ich die Zeile einer ExplorerList Counten weil ich des ja dann für die Liedernamen benötige.
Wie mache ich, dass der die URL Zeile immer Real-Time mit aktualisiert.
Und die Idee dann mit den MP3-Playen wäre, dass ich den Ausgewählten eintrag nehme, den abspiele und wenn der zu ende ist dann den nächsten.
Und wenn ich ans ende der Liste komme wieder von vorne.
Ich weiß ich glaub ich habe mir da zuviel vorgenommen, aber das will ich nun mal machen. Achja wennma glei dabei sind wie bekomme ich raus, dass das lied am ende ist? :D

Danke an alle die Helfen.
Benutzeravatar
zigapeda
Beiträge: 1753
Registriert: 06.03.2005 17:22
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag von zigapeda »

das mit dem mp3 würde ich ganz anderst machen. alle lieder die zur playlist hinzugefügt werden in eine Liste speichern und nur die dateinamen also ohne pfad in das listviewgadget einfügen.

URL bekommst du mit GetGadgetText() raus.

und zu dem wann das lied zu ende ist würde ich fragen wie willst du es abspielen?
kluger Mann + kluge Frau = Romanze | dummer Mann + dumme Frau = Schwangerschaft
kluger Mann + dumme Frau = Affäre | dummer Mann + kluge Frau = Shopping <)
Benutzeravatar
Blackskyliner
Beiträge: 532
Registriert: 28.07.2005 00:54
Wohnort: /home/Blackskyliner/

Beitrag von Blackskyliner »

Hi,
hab grade im Forum rumgestöbert und habe es nun endlich geschafft den Player zu bauen! *freu* Nu muss ihc dann nurnoch das so machen dass der das weiter macht, aber das wird einfach. ähm. Mit dem Browser meinte ich eigentlich wie die IF aussehen muss weil wenn ich nur GetGadgetText() mache dann kann ich da ja auch nix mehr reinschreiben.... vellei wenn ich sage IF #PB_EventType_FocusLost oder so...
hier mal der jetzige Source:

Code: Alles auswählen

Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
  #String_URL
  #Button_GoTo
  #Webfenster
  #MP3_Verzeichnisse
  #MP3_Dateien
  #Button_Play
  #Button_Stop
  #MP3_Playlist
EndEnumeration


If OpenWindow(#Window_0, 146, 15, 934, 583,  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered | #PB_Window_WindowCentered ,"WebBrowser")
  AdvancedGadgetEvents(True)
  If CreateGadgetList(WindowID())
      StringGadget(#String_URL, 0, 0, 745, 20, "")
      ButtonGadget(#Button_GoTo, 745, 0, 60, 20, "Gehe zu")
      WebGadget(#Webfenster, 0, 20, 935, 400, "about:blank")
      ExplorerTreeGadget(#MP3_Verzeichnisse, 0, 420, 200, 165, "")
      ExplorerListGadget(#MP3_Dateien, 200, 420, 530, 165, "*.mp3",#PB_Explorer_NoFolders|#PB_Explorer_NoParentFolder)
      ButtonGadget(#Button_Play, 805, 0, 65, 20, "MP3 - Play")
      ButtonGadget(#Button_Stop, 870, 0, 65, 20, "MP3 - Stop")
      ListViewGadget(#MP3_Playlist, 730, 420, 205, 165)
  EndIf

  Repeat
    EventID = WaitWindowEvent()

      If EventID = #PB_Event_CloseWindow
        Quit = 1
      EndIf

      ; Tasten Abfragen ;
      If EventID = #WM_KEYDOWN
        If EventwParam() = #VK_RETURN
          If GetGadgetText(#String_URL) <> "http://*"
          SetGadgetText(#Webfenster,"http://"+GetGadgetText(#String_URL))
          Else
          SetGadgetText(#Webfenster,GetGadgetText(#String_URL))
          EndIf
        EndIf
      EndIf
      ; --- ;
      
      ; MP3 - Play Aktion ;
      If Play = 1 And CurrentPlay = 0
        If InitMovie()
          If LoadMovie(0,GetGadgetItemText(#MP3_Playlist,GetGadgetState(#MP3_Playlist),0))
            PlayMovie(0,WindowID())
            CurrentPlay.l = 1
          EndIf
        EndIf
      EndIf
      ; --- ;
      
      ; MP3 - Stopp Aktion;
      If Stop = 1 And Play = 1 And CurrentPlay = 1 And Stop <> 0 And Play <> 0 And CurrentPlay <> 0
        StopMovie()
        Play = 0
        Stop = 0
        CurrentPlay = 0
      EndIf
      ; --- ;

      If EventID = #PB_Event_Gadget

        ; MP3-Start setzen ;
        If EventGadgetID()=#Button_Play
          Play.l = 1
        EndIf
        ; --- ;

        ; MP3-Stop setzen ;
        If EventGadgetID()=#Button_Stop
          Stop.l = 1
        EndIf
        ; --- ;

        ; Web-Browsing ;
        If EventGadgetID()=#Button_GoTo
          If GetGadgetText(#String_URL) <> "http://*"
          SetGadgetText(#Webfenster,"http://"+GetGadgetText(#String_URL))
          Else
          SetGadgetText(#Webfenster,GetGadgetText(#String_URL))
          EndIf
        EndIf
        ; --- ;

        ; MP3-Liste Wechseln ;
        If EventGadgetID()=#MP3_Verzeichnisse
         SetGadgetText(#MP3_Dateien, GetGadgetText(#MP3_Verzeichnisse))
        EndIf
        ; --- ;
        
        ; MP3-Playlist ;
        If EventGadgetID()=#MP3_Dateien
        If EventType() = #PB_EventType_LeftDoubleClick
         ListID.l = CountGadgetItems(#MP3_Playlist)
          If ListID <> 0
            AddGadgetItem(#MP3_Playlist,ListID,GetGadgetText(#MP3_Dateien)+GetGadgetItemText(#MP3_Dateien,GetGadgetState(#MP3_Dateien),0))
          Else
            AddGadgetItem(#MP3_Playlist,0,GetGadgetText(#MP3_Dateien)+GetGadgetItemText(#MP3_Dateien,GetGadgetState(#MP3_Dateien),0))
          EndIf
        ; --- ;

      EndIf
        EndIf
      EndIf
    Until Quit=1
EndIf
End
Benutzeravatar
Blackskyliner
Beiträge: 532
Registriert: 28.07.2005 00:54
Wohnort: /home/Blackskyliner/

Beitrag von Blackskyliner »

Irgendwie glaube ich, dass ich das auslesen, ob der das zuende gespielt hat, nur mit MCI lösen kann..... und das wo ich das doch nicht Bringe.. das sieht so Kompliziert aus....

EDIT:
Esseidenn mir kann jmd. sagen wie ich eine Variable im Sekundentakt um 1 verringere...
Benutzeravatar
Blackskyliner
Beiträge: 532
Registriert: 28.07.2005 00:54
Wohnort: /home/Blackskyliner/

Beitrag von Blackskyliner »

Hab doch nochwas gefunden. Audiozwerg nennt sich das.... naja mal sehn ob das so gut ist wies aussieht :D *spam?* O_o
Benutzeravatar
Ynnus
Beiträge: 855
Registriert: 29.08.2004 01:37
Kontaktdaten:

Beitrag von Ynnus »

Blackskyliner hat geschrieben:Esseidenn mir kann jmd. sagen wie ich eine Variable im Sekundentakt um 1 verringere...
Mit ElapsedMilliseconds() die Zeit abfragen und nach 1000 (1000ms also 1 sekunde) die Variable verringern, ganz einfach also. ;)
Benutzeravatar
Blackskyliner
Beiträge: 532
Registriert: 28.07.2005 00:54
Wohnort: /home/Blackskyliner/

Beitrag von Blackskyliner »

Danke Sunny hab das aber nun über diesen Audiozwerg geregelt, der funktioniert gut! :allright:
Nun geht der ganze MP3-Player und wenigstens mal einer ohne MCI :D
Ich glaub da mich ich noch was draus :roll:.

Nun zu meinem anderen Problem wie mache ich das nun mit diesem Browser, dass der das nun in der Leiste ändert, insofern man da nicht grad reingeklickt hat wie ich im Thread oben schonmal erwähnte ist das bestimmt mit #PB_EventType_LostFocus oder #PB_EventType_Focus zu bewerkstelligen, nur leider habe ich keine Ahnung wie die IF ELSE ENDIF Anweisung aussehen soll :cry:.
...... Intelligent genug für nen MP3-Player aber zu dumm für ne einfache IF THEN ELSE :D

Hab ja auch viel geschafft wenn man bedenkt, dass ich mich seit 3-4 Tagen damit beschäftige...... RESPEKT!

Jaja.... ich weiß..... Eigenlob stinkt aber ich werde ja sonst nie gelobt :D

Jaja.... zuviel Kaffee und zuwenig schlaf...

EDIT
Achja und noch ne Frage und zwar, wie kann ich die Inhalte des Fensters Dynamisieren, im Sinne von, dass ich das Fenster in der Größe ändere und sich der Inhalt der Größe her anpasst.... möglich oder nicht? Wenn ja wie.
Benutzeravatar
nicolaus
Moderator
Beiträge: 1175
Registriert: 11.09.2004 13:09
Kontaktdaten:

Beitrag von nicolaus »

Also das ändern der göße kannst du mit ResizesGadget() machen (schau am besten mal in die hilfe) oder du nimmst die Lib von Gnozal die da heist RureRESIZE und zu downloaden ist die HIER! Kann die lib nur empfehlen da du damit doch paar möglichkeiten mehr hast als die standartsache von PureBasic.
Benutzeravatar
Blackskyliner
Beiträge: 532
Registriert: 28.07.2005 00:54
Wohnort: /home/Blackskyliner/

Beitrag von Blackskyliner »

Nunja ok aber wie soll ich das letztendlich machen?
Der Anfang wäre ja, die Größe des Fensters abzufragen. Ok das ist leicht. Aber wie berechne ich dann die neue Größe..... mit welchen Formeln... Sorry wenn das vellei dumme Fragen sind aber ich bin 1. Anfänger :D und 2. Seit 30 Stunden mindestens wach :D
Benutzeravatar
Batze
Beiträge: 1492
Registriert: 03.06.2005 21:58
Wohnort: Berlin
Kontaktdaten:

Beitrag von Batze »

Wie du das rechnest hängt ganz davon ab welche Gadgets du vergrößern willst, und welche so bleiben sollen.
Es bringt ja nichts die Buttons höher zu machen. :allright:

Code: Alles auswählen

Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
  #String_URL
  #Button_GoTo
  #Webfenster
  #MP3_Verzeichnisse
  #MP3_Dateien
  #Button_Play
  #Button_Stop
  #MP3_Playlist
EndEnumeration


If OpenWindow(#Window_0, 146, 15, 934, 583,  #PB_Window_SizeGadget | #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered | #PB_Window_WindowCentered ,"WebBrowser")
  AdvancedGadgetEvents(True)
  If CreateGadgetList(WindowID())
    StringGadget(#String_URL, 0, 0, 745, 20, "")
    ButtonGadget(#Button_GoTo, 745, 0, 60, 20, "Gehe zu")
    WebGadget(#Webfenster, 0, 20, 935, 400, "about:blank")
    ExplorerTreeGadget(#MP3_Verzeichnisse, 0, 420, 200, 165, "")
    ExplorerListGadget(#MP3_Dateien, 200, 420, 530, 165, "*.mp3",#PB_Explorer_NoFolders|#PB_Explorer_NoParentFolder)
    ButtonGadget(#Button_Play, 805, 0, 65, 20, "MP3 - Play")
    ButtonGadget(#Button_Stop, 870, 0, 65, 20, "MP3 - Stop")
    ListViewGadget(#MP3_Playlist, 730, 420, 205, 165)
  EndIf
  
  w = WindowWidth ()
  h = WindowHeight()
  
  Repeat
    EventID = WaitWindowEvent()
    
    If EventID = #PB_Event_CloseWindow
      Quit = 1
    EndIf
    
    If EventID = #PB_Event_SizeWindow
      fx.f = WindowWidth()  / w
      fy.f = WindowHeight() / h
      For i=#String_URL To #MP3_Playlist
        ResizeGadget(i, GadgetX(i)*fx , GadgetY(i)*fy, GadgetWidth(i)*fx, GadgetHeight(i)*fy)
      Next
      w = WindowWidth ()
      h = WindowHeight()
   EndIf
    
  Until Quit=1
EndIf
End
So bringts doch wenig. :lol:
Hier sind meine Codes (aber die Seite geht gerade nicht):
http://www.basicpure.de.vu
Antworten