Page 7 sur 19

Re: [AIDE PUREBASIC] Mises à jour.

Publié : mar. 08/juil./2014 20:15
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

Re: [AIDE PUREBASIC] Mises à jour.

Publié : mar. 08/juil./2014 23:41
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 :))

Re: [AIDE PUREBASIC] Mises à jour.

Publié : ven. 11/juil./2014 17:55
par Mesa
:D

J'ai souffert.

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

M.

Re: [AIDE PUREBASIC] Mises à jour.

Publié : mar. 15/juil./2014 16:06
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" ....

Re: [AIDE PUREBASIC] Mises à jour.

Publié : sam. 09/août/2014 10:57
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 ?

Re: [AIDE PUREBASIC] Mises à jour.

Publié : sam. 09/août/2014 11:14
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 ?

Re: [AIDE PUREBASIC] Mises à jour.

Publié : sam. 09/août/2014 11:57
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

Re: [AIDE PUREBASIC] Mises à jour.

Publié : mar. 12/août/2014 7:43
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

Re: [AIDE PUREBASIC] Mises à jour.

Publié : mer. 20/août/2014 17:57
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 ?

Re: [AIDE PUREBASIC] Mises à jour.

Publié : mer. 20/août/2014 19:05
par Fred
Tu devrais y avoir acces, tu utilises quoi comme url pour te connecter ?

Re: [AIDE PUREBASIC] Mises à jour.

Publié : sam. 11/oct./2014 11:13
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 


Re: [AIDE PUREBASIC] Mises à jour.

Publié : jeu. 16/oct./2014 9:56
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.

Re: [AIDE PUREBASIC] Mises à jour.

Publié : jeu. 16/oct./2014 10:56
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

Re: [AIDE PUREBASIC] Mises à jour.

Publié : ven. 17/oct./2014 10:18
par Mesa
En effet, je vais peut-être le mettre dans source advanced.

M.

Re: [AIDE PUREBASIC] Mises à jour.

Publié : mer. 08/avr./2015 10:37
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.