[AIDE PUREBASIC] Mises à jour.

Informations pour bien débuter en PureBasic
comtois
Messages : 5172
Inscription : mer. 21/janv./2004 17:48
Contact :

Re: [AIDE PUREBASIC] Mises à jour.

Message par comtois »

Merci Mesa pour la traduction de la 5.30, je vois que tu as souffert avec la bibliothèque JSON, je compatis :P
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Fred
Site Admin
Messages : 2652
Inscription : mer. 21/janv./2004 11:03

Re: [AIDE PUREBASIC] Mises à jour.

Message par Fred »

J'avoue, j'ai bien "rigolé" quand j'ai vu passé le commit (je compatis aussi, je sais ce que c'est de le faire :))
Mesa
Messages : 1097
Inscription : mer. 14/sept./2011 16:59

Re: [AIDE PUREBASIC] Mises à jour.

Message par Mesa »

:D

J'ai souffert.

Tiens, le svn est down ce soir alors je committerai demain matin.

M.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: [AIDE PUREBASIC] Mises à jour.

Message par Backup »

Petite suggestion

le Dossier "Sort"
pourrai peut etre disparaitre et dispacher les :
RandomizeArray
RandomizeList
SortArray
SortList
SortStructuredArray
SortStructuredList

dans leur rubrique respectives ...
car j'ai mis 2 heures a retrouver comment trier une liste parceque je cherchais dans le Dossier LinkedList
la fonction SortList , et SortStructuredList qui ne s'y trouvais pas .. (on se demande pourquoi d'ailleurs .....

pareil les fonctions :

SortStructuredArray et SortArray devrai etre dans le dossier "Array" ....
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: [AIDE PUREBASIC] Mises à jour.

Message par Backup »

?? qu'en est t'il de ma suggestion ?


tu crois que ça prendrai beaucoup de temp de refaire les Exemples en utilisant des enumérations ??

car #Win ou #Canvas ,est plus parlant que "0" non ?
Avatar de l’utilisateur
majikeyric
Messages : 602
Inscription : dim. 08/déc./2013 23:19
Contact :

Re: [AIDE PUREBASIC] Mises à jour.

Message par majikeyric »

Dobro a écrit :Petite suggestion

le Dossier "Sort"
pourrai peut etre disparaitre et dispacher les :
RandomizeArray
RandomizeList
SortArray
SortList
SortStructuredArray
SortStructuredList

dans leur rubrique respectives ...
Sort et LinkedList sont 2 librairies différentes, d'où cette organisation non ?
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: [AIDE PUREBASIC] Mises à jour.

Message par Backup »

j'avais bien compris , cependant, cette lib interviens sur Les lists, et sur les tableaux

alors autant les regrouper ....

(il y aurai d'autres choses a regrouper d'ailleurs )

lorsque j'ai chercher comment trier mes lists, je suis allez dans la rubrique List chainée .. ça parait évident
et puis ... rien !

j'ai pas eu le reflexe de chercher une rubrique Sort (surtout qu'il s'agit d'un terme anglais )
c'est pas evident de lier "Tri" avec "Sort" lorsqu'on est en France ....

mais puisque ça concerne les lists ET les tableaux , autant dispacher dans les rubriques respectives
RandomizeArray
SortArray
SortStructuredArray
RandomizeList
SortList
SortStructuredList
Avatar de l’utilisateur
kernadec
Messages : 1594
Inscription : ven. 25/avr./2008 11:14

Re: [AIDE PUREBASIC] Mises à jour.

Message par kernadec »

Bonjour Mesa
Pour la doc PB5.30LTS
j'ai remarquer qu'il faudrait ajouter OpenGLGadget() dans la liste "remarques"
pour les commandes suivantes: EventType(), GetGadgetAttribute(), SetGadgetAttribute(), GadgetToolTip()
(mais peut être que c'est déjà ajouté) :D

Cette fonction est disponible avec les gadgets suivants
.....
OpenGLGadget()

Cordialement
comtois
Messages : 5172
Inscription : mer. 21/janv./2004 17:48
Contact :

Re: [AIDE PUREBASIC] Mises à jour.

Message par comtois »

ça fait un petit moment que je n'ai plus accès au svn de la doc, c'est normal ? ou j'ai un truc qui merde chez moi ?
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Fred
Site Admin
Messages : 2652
Inscription : mer. 21/janv./2004 11:03

Re: [AIDE PUREBASIC] Mises à jour.

Message par Fred »

Tu devrais y avoir acces, tu utilises quoi comme url pour te connecter ?
Mesa
Messages : 1097
Inscription : mer. 14/sept./2011 16:59

Re: [AIDE PUREBASIC] Mises à jour.

Message par Mesa »

Pouvez-vous me dire si ce code fonctionne bien ?

Le trouvez-vous trop compliqué en tant qu'exemple à mettre dans la doc pour la la bibliothèque AudioCD ?

Merci.

Mesa.

Code : Tout sélectionner

;
; ------------------------------------------------------------
;
;   PureBasic - Audio CD example file
;
;    (c) Fantaisie Software
;
; ------------------------------------------------------------
;
;-
;- ------- Initialization -------
;- .: Constants & Variables :.
Enumeration FormWindow
  #Window0
EndEnumeration

Enumeration FormGadget
  #ButtonPlay
  #ButtonPause
  #ButtonStop
  #TextAudioCDDrive
  #ComboBoxDeviceCD
  #ListViewTracks
  #TextStatus
  #ButtonEject
  #ButtonPreviousTrack
  #ButtonNextTrack
  #TextTime
  #TextCDLength
  #TextNbTracks
EndEnumeration


NbCDDrives = InitAudioCD()  ; How many CD Drives ?

If NbCDDrives = 0           ; If no CD Drive found then ends everything
  MessageRequester("Error", "No CD Audio drives found...", 0)
  End
EndIf

;- .: Procedures :.
Procedure.s GetHourFormat(LengthInSeconds) ; Format seconds into minutes and seconds
  Minutes = LengthInSeconds/60
  Seconds = LengthInSeconds-Minutes*60
  If Seconds < 10 
    ProcedureReturn Str(Minutes)+"m:0"+Str(Seconds)+"s"
  Else 
    ProcedureReturn Str(Minutes)+"m:"+Str(Seconds)+"s" 
  EndIf  
EndProcedure

Procedure RefreshCD() ; If a (new) CD is inside
  ClearGadgetItems(#ListViewTracks)
  
  NbAudioTracks = AudioCDTracks()
  For k=1 To NbAudioTracks
    If k<10
      AddGadgetItem(#ListViewTracks, -1, "Track 0"+Str(k)+" :"+GetHourFormat(AudioCDTrackLength(k)))
    Else
      AddGadgetItem(#ListViewTracks, -1, "Track "+Str(k)+" :"+GetHourFormat(AudioCDTrackLength(k)))
    EndIf
  Next
  
  DisableGadget(#ButtonPause, 1)
  DisableGadget(#ButtonStop, 1)
  SetGadgetState(#ListViewTracks, 0)
  SetGadgetText(#TextCDLength, "Total: " + GetHourFormat(AudioCDLength()))
  SetGadgetText(#TextNbTracks, "Total Tracks: "+Str(AudioCDTracks()))
EndProcedure

;- 
;- ---------- Main Code ---------
;- Open a window
If OpenWindow(#Window0, 0, 0, 400, 470, "PureBasic - AudioCD Example", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  
  ButtonGadget(#ButtonPlay, 30, 20, 100, 25, "Play")
  ButtonGadget(#ButtonPause, 15, 20, 100, 25, "Pause")
  ButtonGadget(#ButtonStop, 270, 20, 100, 25, "Stop")
  TextGadget(#TextAudioCDDrive, 180, 60, 80, 25, "Device:", #PB_Text_Right)
  ComboBoxGadget(#ComboBoxDeviceCD, 270, 60, 100, 25)
  ButtonGadget(#ButtonEject, 30, 60, 100, 25, "Eject CD", #PB_Button_Toggle)
  ButtonGadget(#ButtonPreviousTrack, 30, 100, 170, 25, "Previous Track")
  ButtonGadget(#ButtonNextTrack, 210, 100, 160, 25, "Next Track")
  ListViewGadget(#ListViewTracks, 30, 130, 340, 270)
  TextGadget(#TextStatus, 30, 410, 240, 25, "Status: Stopped")
  TextGadget(#TextTime, 280, 410, 90, 25, "00:00", #PB_Text_Right)
  TextGadget(#TextCDLength, 30, 440, 190, 25, "")
  TextGadget(#TextNbTracks, 240, 440, 130, 25, "", #PB_Text_Right)
  
  
  For k=0 To NbCDDrives -1  ; Fullfill the ComboBox with CD devices' name
    UseAudioCD(k)
    AddGadgetItem(#ComboBoxDeviceCD, -1, Left(AudioCDName(),2))
  Next
  SetGadgetState(#ComboBoxDeviceCD, 0)
  UseAudioCD(0)
  
  
  RefreshCD() ; Fullfill the ListView with CD's tracks
  
  ;- Loop: 
  Repeat    
    Repeat
      ;- ->Management of the gadgets
      Event = WindowEvent()  ; This time we use the WindowEvent(), non-blocking command to allow time refreshing
      
      If Event = #PB_Event_Gadget
        Select EventGadget() 
            
          Case #ButtonPlay              ; Play
            If Pause=#True
              ResumeAudioCD()
              Pause=#False 
            Else
              CurrentTrack = GetGadgetState(#ListViewTracks)+1
              PlayAudioCD(CurrentTrack, AudioCDTracks())
            EndIf
            
          Case #ButtonPause             ; Pause
            Pause=#True            
            PauseAudioCD()
            
          Case #ButtonStop              ; Stop
            Pause=#False 
            StopAudioCD()
            
          Case #ButtonEject             ; Eject/Close
            ClearGadgetItems(#ListViewTracks)
            If GetGadgetState(#ButtonEject) = 1
              SetGadgetText(#ButtonEject, "Close")
              EjectAudioCD(1)
            Else
              SetGadgetText(#ButtonEject, "Eject CD")
              EjectAudioCD(0)
              RefreshCD()
            EndIf
            
          Case #ComboBoxDeviceCD        ; Choose your CD Device
            UseAudioCD(GetGadgetState(#ComboBoxDeviceCD))
            RefreshCD()
            
          Case #ButtonPreviousTrack     ; Play Previous Track
            CurrentTrack = CurrentTrack - 1
            If CurrentTrack < 1
              CurrentTrack=AudioCDTracks()              
            EndIf
            SetGadgetState(#ListViewTracks, CurrentTrack-1)
            PlayAudioCD(CurrentTrack, AudioCDTracks())
            
          Case #ButtonNextTrack         ; Play Next Track
            CurrentTrack = CurrentTrack + 1
            If CurrentTrack > AudioCDTracks()
              CurrentTrack=1              
            EndIf
            SetGadgetState(#ListViewTracks, CurrentTrack-1)
            PlayAudioCD(CurrentTrack, AudioCDTracks())
            
          Case #ListViewTracks           ; Click on Track = Play the Track
            If Pause=#True
              Pause=#False 
            EndIf
            CurrentTrack = GetGadgetState(#ListViewTracks)+1
            PlayAudioCD(CurrentTrack, AudioCDTracks())           
            
        EndSelect
        
      Else
        If Event = #PB_Event_CloseWindow ; Close the Window
          Quit = 1 
        EndIf   
      EndIf
    Until Event = 0
    
    Delay(20) ; Wait 20 ms, which is a long period for the processor, to don't steal the whole CPU power
              ; for our little application :)
    
    ;- ->Display informations
    CurrentTrack = AudioCDStatus()
    
    If CurrentTrack > 0 ; A track is playing...
      If AudioCDTrackSeconds() = 0  ; Update the ListView if a new track is played
        SetGadgetState(#ListViewTracks, CurrentTrack-1) 
      EndIf     
      SetGadgetText(#TextStatus, "Playing Track " + Str(CurrentTrack) + " (Length: " + GetHourFormat(AudioCDTrackLength(CurrentTrack)) + ")")
      SetGadgetText(#TextTime, "Time: " + GetHourFormat(AudioCDTrackSeconds()))
      DisableGadget(#ButtonPlay, 1)
      DisableGadget(#ButtonPause, 0)
      DisableGadget(#ButtonStop, 0)
      DisableGadget(#ListViewTracks, 0)
      
    ElseIf CurrentTrack = 0         ; The CD Drive is paused or stopped ?
      If Pause=#True                ; Pause
        SetGadgetText(#TextStatus, "Status: Pause.")
        DisableGadget(#ButtonPlay, 0)
        DisableGadget(#ButtonPause, 1)
        DisableGadget(#ButtonStop, 0)
        DisableGadget(#ListViewTracks, 0)
      Else                          ; Stopped
        SetGadgetText(#TextStatus, "Status: Stopped with a CD inside.")
        SetGadgetText(#TextTime, "")
        DisableGadget(#ButtonPlay, 0)
        DisableGadget(#ButtonPause, 1)
        DisableGadget(#ButtonStop, 1)
        DisableGadget(#ListViewTracks, 0)
        If GetGadgetState(#ButtonEject) = 1
          SetGadgetText(#ButtonEject, "Close")
          SetGadgetText(#ButtonEject, "Eject CD")
          SetGadgetState(#ButtonEject, 0)
          RefreshCD()
        EndIf
      EndIf
      
    ElseIf CurrentTrack = -1        ; CD Drive not ready
      DisableGadget(#ListViewTracks, 1)
      SetGadgetText(#TextStatus, "Status: No CD or Open.")
      SetGadgetText(#TextTime, "")
      DisableGadget(#ButtonPlay, 1)
      DisableGadget(#ButtonPause, 1)
      DisableGadget(#ButtonStop, 1)
      DisableGadget(#ListViewTracks, 1)
      
    Else
      DisableGadget(#ListViewTracks, 0)
      
    EndIf
    
  Until Quit = 1
  
EndIf
;- End Loop:
;-
;- ------------- End ------------
;- Free CD Drives
For k=0 To NbCDDrives-1 ; Stop all the CD drives, if some are playing together
  UseAudioCD(k)
  StopAudioCD()
Next

End 

comtois
Messages : 5172
Inscription : mer. 21/janv./2004 17:48
Contact :

Re: [AIDE PUREBASIC] Mises à jour.

Message par comtois »

je ne suis pas le mieux placé pour le dire (vu que j'ai fait quelques exemples 3D un peu longuets), mais je pense que les exemples de la doc doivent être le plus court possible, dans le but d'illustrer une commande. idéalement un exemple par commande.

Sinon il y a le répertoire 'source advanced' pour des codes plus conséquents.

Je n'ai pas PureBasic sous la main, je testerai ce soir ton code.
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Avatar de l’utilisateur
Ar-S
Messages : 9476
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: [AIDE PUREBASIC] Mises à jour.

Message par Ar-S »

Salut Mesa.
Je trouve que le code actuel est plus parlant. Il fait tout de même 100 lignes de moins.
Ton code est (une aplli terminée) un peu long je trouve. Par contre le mettre dans la section advanced comme l'a suggéré comtois serait pas mal. Vu que c'est une version plus avancée du code actuel.


J'ai celui là en 5.30

Code : Tout sélectionner

NbCDDrives = InitAudioCD()

If NbCDDrives = 0
  MessageRequester("Error", "No CD Audio drives found...", 0)
  End
EndIf

Global Null$

Procedure.s GetHourFormat(LengthInSeconds)
  Minutes = LengthInSeconds/60
  Seconds = LengthInSeconds-Minutes*60
  If Seconds < 10 : Null$ = "0" : Else : Null$ = "" : EndIf

  ProcedureReturn Str(Minutes)+":"+Null$+Str(Seconds)
EndProcedure

; Initialize constants for easier code reading
;
#GADGET_Play   = 0
#GADGET_Stop   = 1
#GADGET_Eject  = 2
#GADGET_Close  = 3
#GADGET_Select = 4
#GADGET_Status = 5
#GADGET_Time   = 6
#GADGET_AudioCDDrive = 7
#GADGET_SelectDrive  = 8

If OpenWindow(0, 100, 200, 265, 125, "PureBasic - AudioCD Example", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)

  ButtonGadget  (#GADGET_Play   ,  10, 10, 60 , 24, "Play")
  ButtonGadget  (#GADGET_Stop   ,  70, 10, 60 , 24, "Stop")
  ButtonGadget  (#GADGET_Eject  , 130, 10, 60 , 24, "Eject")
  ButtonGadget  (#GADGET_Close  , 190, 10, 60 , 24, "Close")
  ComboBoxGadget(#GADGET_Select ,  10, 43, 240, 21)
  TextGadget    (#GADGET_Status ,  10, 70, 180, 16, "Status: stopped")
  TextGadget    (#GADGET_Time   , 200, 70, 240, 16, "")

  TextGadget    (#GADGET_AudioCDDrive,  10, 94, 140,  24, "Select the CD-Audio drive :")
  ComboBoxGadget(#GADGET_SelectDrive , 150, 90,  40, 21)

  For k=1 To NbCDDrives
    UseAudioCD(k-1)
    AddGadgetItem(#GADGET_SelectDrive, -1, Left(AudioCDName(),2))
  Next
  SetGadgetState(#GADGET_SelectDrive, 0)
  UseAudioCD(0)

  If NbCDDrives = 1
    DisableGadget(#GADGET_SelectDrive, 1)
  EndIf

  Gosub RefreshCD

  Repeat
    Repeat
      Event = WindowEvent()  ; This time we use the WindowEvent(), non-blocking command to allow time refreshing

      If Event = #PB_Event_Gadget
        Select EventGadget() 

          Case #GADGET_Play
            CurrentTrack = GetGadgetState(4)+1
            PlayAudioCD(CurrentTrack, CurrentTrack)
            
          Case #GADGET_Stop
            StopAudioCD()

          Case #GADGET_Eject
            EjectAudioCD(1)

          Case #GADGET_Close
            EjectAudioCD(0)

          Case #GADGET_SelectDrive
            UseAudioCD(GetGadgetState(#GADGET_SelectDrive))
            Gosub RefreshCD

        EndSelect

      Else
        If Event = #PB_Event_CloseWindow : Quit = 1 : EndIf   
      EndIf
    Until Event = 0

    Delay(20) ; Wait 20 ms, which is a long period for the processor, to don't steal the whole CPU power
              ; for our little application :)

    CurrentTrack = AudioCDStatus()
    If CurrentTrack > 0
      SetGadgetText(#GADGET_Status, "Playing Track "+Str(CurrentTrack)+" (Length: "+GetHourFormat(AudioCDTrackLength(CurrentTrack))+")")
      SetGadgetText(#GADGET_Time, "Time: "+GetHourFormat(AudioCDTrackSeconds()))
      DisableGadget(#GADGET_Play, 1)
      DisableGadget(#GADGET_Stop, 0)
      DisableGadget(#GADGET_Select, 0)
    Else
      SetGadgetText(#GADGET_Status, "Status: Stopped")
      SetGadgetText(#GADGET_Time, "")
      DisableGadget(#GADGET_Play, 0)
      DisableGadget(#GADGET_Stop, 1)

      If CurrentTrack = -1 ; CD Drive not ready
        DisableGadget(#GADGET_Select, 1)
      Else
        DisableGadget(#GADGET_Select, 0)
      EndIf
    EndIf

  Until Quit = 1

EndIf

For k=0 To NbCDDrives-1    ; Stop all the CD drives, if some are playing together
  UseAudioCD(k)
  StopAudioCD()
Next

End 

;-----------------------------------------------------------------
;  SubRoutines
;

RefreshCD:
  ClearGadgetItems(#GADGET_Select)

  NbAudioTracks = AudioCDTracks()
  For k=1 To NbAudioTracks
    AddGadgetItem(#GADGET_Select, -1, "Track "+Str(k))
  Next
  SetGadgetState(#GADGET_Select, 0)
Return
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Mesa
Messages : 1097
Inscription : mer. 14/sept./2011 16:59

Re: [AIDE PUREBASIC] Mises à jour.

Message par Mesa »

En effet, je vais peut-être le mettre dans source advanced.

M.
Mesa
Messages : 1097
Inscription : mer. 14/sept./2011 16:59

Re: [AIDE PUREBASIC] Mises à jour.

Message par Mesa »

@Backup
- Pour la bibliothèque "sort", c'est Fred qui s'occupe de ce genre de changement. C'est à voir en effet.
J'ai ajouté quelques liens supplémentaires dans la bibliothèque "link"
- Pour les énumérations, c'était la "philosophie" du début que de simplifier les exemples à l'extrême. Peut-être dans l'avenir. A voir aussi.

@kernadec
Pour OpenGL gadget, c'est ok maintnant.

Pour télécharger la dernière version de l'aide voir le premier post de ce thread ou là http://frazier.wood.free.fr/chm/PureBasic531.rar

M.
Répondre