Page 1 sur 2

Cherche les bons gadgets

Publié : sam. 27/mai/2017 13:34
par SPH
Salut,

je dois carrosser mon "html maker". Mais je n'ai jamais fait de gadgets (je suis 100% debutant). De plus, je ne suis pas designer. Donc, j'ai copié le design d'un logiciel.
Voici ce que je voudrais :

Image

Ici, il y a 1 image et 3 gadgets mais je n'ai pas trouvé leur equivalent en PB.

Pourriez vous eclairer ma lanterne ? :oops:

THX
Image

Re: Cherche les bons gadgets

Publié : sam. 27/mai/2017 13:38
par Ar-S
De ce que tu montres je vois :
Imagegadget + buttongadget + ExplorerComboGadget + ExplorerListGadget/ExplorerTreeGadget + ListViewGadget

Re: Cherche les bons gadgets

Publié : sam. 27/mai/2017 13:40
par SPH
Merci, je regarde... 8)

Re: Cherche les bons gadgets

Publié : sam. 27/mai/2017 14:33
par Ar-S
buttongadget => ButtonImageGadget

Re: Cherche les bons gadgets

Publié : sam. 27/mai/2017 15:03
par SPH
Bon, j'ai choisi une image gadget et 2 gadgets pour lister des fichiers :
- ExplorerTreeGadget
- ListViewGadget

Je pense qu'avec ces deux gadgets, on peux parcourir les repertoires et afficher des fichiers.

Voila ou j'en suis :

Code : Tout sélectionner

If OpenWindow(0, 0, 0, 749, 470, "ImageGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  
  If LoadImage(0, "c:\SPH\PB\titre.bmp")    ; changez le 2ème paramètre en indiquant le chemin/fichier contenant votre image
      ImageGadget(0,  10, 10, 728, 53, ImageID(0))                      ; imagegadget standard
  EndIf
    
  ExplorerTreeGadget(1, 10, 73, 360, 300, "*.pb;*.pbi")
 
  
  ListViewGadget(2,376,73,360,300)
    For a=1 To 12
      AddGadgetItem (2,-1,"Elément "+Str(a)+" de la boîte à liste")   ; défini le contenu de la boîte de liste
    Next
    SetGadgetState(2,9)    ; sélectionne le dixième élément (la numérotation commmence à 0)
    
    
    Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
    
EndIf

End
Je n'ai pas compris ce qu'etait les "*.pb;*.pbi" de ExplorerTreeGadget(1, 10, 73, 360, 300, "*.pb;*.pbi")

Enfin, je n'arrive pas a afficher les fichiers images dans le listviewgadget !

Merci pour vos reponses :?

Re: Cherche les bons gadgets

Publié : sam. 27/mai/2017 16:24
par Ar-S
Je te conseils déjà d'utiliser les énumérations pour clarifier tes fenêtre gadget et images.
Ce sera beaucoup plus claire.

Ensuite ton explorerTri va te servir à te placer dans le dossier voulu.
Mais il faut que tu lui indiques ^^

Code : Tout sélectionner

Enumeration FENGAD
  #FEN
  #IM_GAD
  #EXPLOR_GAD
  #LIST_GAD
EndEnumeration

Enumeration MESIMAGES
  #titre
EndEnumeration


If OpenWindow(#FEN, 0, 0, 749, 470, "ImageGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
 
  If LoadImage(#titre, "c:\SPH\PB\titre.bmp")    ; changez le 2ème paramètre en indiquant le chemin/fichier contenant votre image
      ImageGadget(#IM_GAD,  10, 10, 728, 53, ImageID(#titre))                      ; imagegadget standard
  EndIf
   
  ExplorerTreeGadget(#EXPLOR_GAD, 10, 73, 360, 300, "*.pb;*.pbi")

 
  ListViewGadget(#LIST_GAD,376,73,360,300)
    For a=1 To 12
      AddGadgetItem (#LIST_GAD,-1,"Elément "+Str(a)+" de la boîte à liste")   ; défini le contenu de la boîte de liste
    Next
    SetGadgetState(#LIST_GAD,9)    ; sélectionne le dixième élément (la numérotation commmence à 0)
   
   
    Repeat 
      
      Select EventGadget()
        Case #EXPLOR_GAD
          If EventType() = #PB_EventType_LeftClick       ; Si clic gauche
            Dossier$ = GetGadgetText(#EXPLOR_GAD)    ; Le chemin va se placer dans la variable Dossier$
            Debug "Dossier selectionner : " + Dossier$
          EndIf
          
          
      EndSelect
      
      
    Until WaitWindowEvent() = #PB_Event_CloseWindow
   
EndIf

End

Une fois que le chemin est bien reconnu, il faut lister les fichiers.
Ce qui donne :

Code : Tout sélectionner

Enumeration FENGAD
  #FEN
  #IM_GAD
  #EXPLOR_GAD
  #LIST_GAD
EndEnumeration

Enumeration MESIMAGES
  #titre
EndEnumeration


If OpenWindow(#FEN, 0, 0, 749, 470, "ImageGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
 
  If LoadImage(#titre, "c:\SPH\PB\titre.bmp")    ; changez le 2ème paramètre en indiquant le chemin/fichier contenant votre image
      ImageGadget(#IM_GAD,  10, 10, 728, 53, ImageID(#titre))                      ; imagegadget standard
  EndIf
   
  ExplorerTreeGadget(#EXPLOR_GAD, 10, 73, 360, 300, "*.pb;*.pbi")

 
  ListViewGadget(#LIST_GAD,376,73,360,300)
;     For a=1 To 12
;       AddGadgetItem (#LIST_GAD,-1,"Elément "+Str(a)+" de la boîte à liste")   ; défini le contenu de la boîte de liste
;     Next
;     SetGadgetState(#LIST_GAD,9)    ; sélectionne le dixième élément (la numérotation commmence à 0)
   
   
    Repeat 
      
      Select EventGadget()
        Case #EXPLOR_GAD
          If EventType() = #PB_EventType_LeftClick       ; Si clic gauche
            Dossier$ = GetGadgetText(#EXPLOR_GAD)    ; Le chemin va se placer dans la variable Dossier$
            Debug "Dossier selectionner : " + Dossier$
            
            
            ; On efface la liste
            ClearGadgetItems(#LIST_GAD)
            
            ;---- Lecture du dossier ----
            If ExamineDirectory(0, Dossier$, "*.JPG*")  ; Si les fichiers sont des jpg
              While NextDirectoryEntry(0)
                If DirectoryEntryType(0) = #PB_DirectoryEntry_File
                  ; Affichage des fichiers
                  ; Le nom de chaque fichier sera capté par DirectoryEntryName(0)
                  ; On les ajoute un par un dans la listview
                  AddGadgetItem (#LIST_GAD,-1, DirectoryEntryName(0) )
                EndIf
               Wend
              FinishDirectory(0)
            EndIf
            
            
          EndIf
          
          
      EndSelect
      
      
    Until WaitWindowEvent() = #PB_Event_CloseWindow
   
EndIf

End

Re: Cherche les bons gadgets

Publié : sam. 27/mai/2017 16:49
par Tonio
Bonjour Sph

Si ça peux t'aider voici un titre que j'ai crée :
https://img15.hostingpics.net/pics/394301Titre.png

Re: Cherche les bons gadgets

Publié : sam. 27/mai/2017 17:25
par Marc56
@SPH: Tu n'a pas besoin de lister les fichiers d'un répertoire, un gadget le fait pour toi: ExplorerListGadget() :P

Code : Tout sélectionner

OpenWindow(0, 0, 0, 749, 470, "ImageGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)

If LoadImage(0, "c:\SPH\PB\titre.bmp")    ; changez le 2ème paramètre en indiquant le chemin/fichier contenant votre image
     ImageGadget(0,  10, 10, 728, 53, ImageID(0))                      ; imagegadget standard
EndIf

CompilerIf #PB_Compiler_Version = 560
     ; Si PB 5.60 on a directement accès au répertoire image
     Repertoire$ = GetUserDirectory(#PB_Directory_Pictures)
CompilerEndIf

ExplorerTreeGadget(1, 10, 73, 360, 300, Repertoire$, #PB_Explorer_NoFiles)
ExplorerListGadget(2, 376,73,360,300, "*.jpg", #PB_Explorer_NoFolders|#PB_Explorer_NoParentFolder)

Procedure Afficher_fichiers()
     SetGadgetText(2, "")                    ; Vider la liste des fichiers
     Repertoire$ = GetGadgetText(1)          ; Voir quel est le répertoire sélectionné 
     SetGadgetText(2, Repertoire$)           ; Remplir la liste avec le répertoire
EndProcedure

; Si clic gauche sur l'arbre ou déplacement avec les flèches, alors afficher les fichiers dans la fenêtre liste fichiers
BindGadgetEvent(1, @Afficher_fichiers(), #PB_EventType_Change) ; #PB_EventType_LeftClick) 

Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow

End 
(ici je n'affiche que les *.jpg)

:idea: Avec #PB_EventType_Change au lieu de #PB_EventType_LeftClick, le déplacement dans l'arbre peut se faire à la souris ou au clavier.

La suite que tu peux faire:
  • Une troisième fenêtre qui est une liste qui se remplie de chaque fichier sélectionné par l'utilisateur
  • Une zone de prévisualisation qui affiche l'image cliquée (redimensionnée)
  • Le drag and drop (c'est plus facile qu'on ne pense grâce à PB)
:wink:

Re: Cherche les bons gadgets

Publié : sam. 27/mai/2017 19:44
par SPH
Merci les mecs :)

ps : ExplorerTreeGadget(#EXPLOR_GAD, 10, 73, 360, 300, "*.pb;*.pbi")
Que veux dire le "*.pb;*.pbi" ??

Re: Cherche les bons gadgets

Publié : sam. 27/mai/2017 21:47
par Ar-S
.pb c'est l'extension des fichiers de code en pure basic. Comme le .txt c'est pour du texte et le .jpg c'est pour les images jpeg.
Le .pbi n'est pas obligatoire, si tu as lu ce qui est ecrit quand tu sauves, c'est un fichier à inclure. (Pure Basic Insert je dirai).
En gros tu peux scinder ton code en morceau quand il est volumineux. Mettre tes datasections dans un fichier séparé par exemple.
Ensuite tu inclus ce fichier via includefile dans ton code principale.
Que tu mettes .pb ou .pbi pour les fichiers annexes, ça n'a aucune importance.
Après 12 ans SPH se met aux gadgets :) Il n'est jamais trop tard pour bien faire ;)

Re: Cherche les bons gadgets

Publié : dim. 28/mai/2017 9:06
par Marc56
SPH a écrit : ps : ExplorerTreeGadget(#EXPLOR_GAD, 10, 73, 360, 300, "*.pb;*.pbi")
Que veux dire le "*.pb;*.pbi" ??
Dans ce contexte, c'est le filtre du type de fichier(s) que va afficher le gadget.

Pour ne pas rendre le TreeGadget illisible, (s'il comporte trop de fichiers), on préfère souvent lui dire de ne PAS afficher les fichiers, mais juste les répertoires. Comme ceci

Code : Tout sélectionner

ExplorerTreeGadget(1, 10, 73, 360, 300, "", #PB_Explorer_NoFiles)
Et on met à côté un deuxième gadget "liste de fichiers" pour lequel on dit de ne PAS afficher les dossiers, ni le répertoire parent [..] (pour empêcher l'utilisateur de cliquer sur .. et donc de remonter dans l’arborescence et désynchroniser l'arbre)
C'est ici qu'on met le filtre de fichier(s).
Ce filtre peut-être multiple, à condition de séparer par un point-virgule. (ex: "*.jpg;*.jpeg;*.png;*.bmp")

Code : Tout sélectionner

ExplorerListGadget(2, 376,73,360,300, "*.jpg", #PB_Explorer_NoFolders|#PB_Explorer_NoParentFolder)
Mais on peut aussi resynchroniser l'arbre avec un On_Change sur la liste de fichier.

:wink:

Re: Cherche les bons gadgets

Publié : dim. 28/mai/2017 21:08
par venom
C'est drole, je n'avais jamaus remarquer qu'avec ExplorerTreeGadget les dossier caché s'affiche. Dommage qu'il n'y ai pas l'option.

Code : Tout sélectionner

#PB_Explorer_hide
:D






@++

Re: Cherche les bons gadgets

Publié : lun. 29/mai/2017 9:18
par SPH
Un bug : ExplorerListGadget ne liste pas tout de suite les fichiers de l'arbre de ExplorerTreeGadget. On et obligé de recliquer sur l'emplacement des fichiers pour les voir apparaitre... 8O
(ou alors, il y a une option pour ca)

Code : Tout sélectionner

OpenWindow(0, 0, 0, 749, 470, "ImageGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)

If LoadImage(0, "c:\SPH\PB\titre.bmp")    ; changez le 2ème paramètre en indiquant le chemin/fichier contenant votre image
     ImageGadget(0,  10, 10, 728, 53, ImageID(0))                      ; imagegadget standard
EndIf

CompilerIf #PB_Compiler_Version = 560
     ; Si PB 5.60 on a directement accès au répertoire image
     Repertoire$ = GetUserDirectory(#PB_Directory_Pictures)
     ;Repertoire$ = "c:\SPH\photos2017test\"
CompilerEndIf

ExplorerTreeGadget(1, 10, 73, 360, 300, Repertoire$, #PB_Explorer_NoFiles)
ExplorerListGadget(2, 376,73,360,300, "*.jpg;*.jpeg;*.bmp;*.gif;*.png", #PB_Explorer_NoFolders|#PB_Explorer_NoParentFolder)

Procedure Afficher_fichiers()
     SetGadgetText(2, "")                    ; Vider la liste des fichiers
     Repertoire$ = GetGadgetText(1)          ; Voir quel est le répertoire sélectionné 
     SetGadgetText(2, Repertoire$)           ; Remplir la liste avec le répertoire
EndProcedure

; Si clic gauche sur l'arbre ou déplacement avec les flèches, alors afficher les fichiers dans la fenêtre liste fichiers
BindGadgetEvent(1, @Afficher_fichiers(), #PB_EventType_Change) ; #PB_EventType_LeftClick) 

Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow

End


Re: Cherche les bons gadgets

Publié : lun. 29/mai/2017 9:44
par Marc56
Si tu as beaucoup (trop) de fichiers dans un même répertoire (et une machine lente), le gadget met un certain temps à constituer la liste.
(Cela se voit car l’ascenseur se déplace quand même)

Dans ce cas, une solution simple est de ne mettre à jour la liste que si l'utilisateur fait un double clic

Code : Tout sélectionner

BindGadgetEvent(1, @Afficher_fichiers(), #PB_EventType_LeftDoubleClick)

Re: Cherche les bons gadgets

Publié : lun. 29/mai/2017 9:57
par SPH
Marc56 a écrit :Si tu as beaucoup (trop) de fichiers dans un même répertoire (et une machine lente), le gadget met un certain temps à constituer la liste.
Je n'ai que 10 photos (petites en plus) :!: :|