Précalculation du nombre de fichier charger

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Re: Précalculation du nombre de fichier charger

Message par dayvid »

Là comme ça c'est encore mieux:

Code : Tout sélectionner

Global NewList Fichier.s()
  
Procedure CountOpenFileReq()
  ClearList(Fichier())
  NomFichier$ = OpenFileRequester("Choisissez quelques fichiers","","",0, #PB_Requester_MultiSelection)
  While NomFichier$
    NomFichier$ = NextSelectedFileName()
    AddElement(Fichier())
    Fichier() = NomFichier$
  Wend
  ProcedureReturn ListSize(Fichier())
EndProcedure


Procedure a(a)
  ForEach Fichier()
    
    NumEnCours = ListIndex(Fichier())+1
    SetGadgetState(0, NumEnCours)
    SetGadgetText(1, "Fichier : "+ Str(NumEnCours))
  
  Next
EndProcedure

If OpenWindow(0, 0, 0, 320, 200, "TrackBarGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  MaxFichier = CountOpenFileReq()
  ProgressBarGadget(0, 10,  40, 250, 20, 0, MaxFichier)
  TextGadget(1,0,10,200,20," 0")
  ResetList(Fichier())
  
  CreateThread(@a(), 0)
  
  
  Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Re: Précalculation du nombre de fichier charger

Message par dayvid »

Voilà, j'ai réussi :D

Code : Tout sélectionner

; Crée par monsieur dieppedalle david le 7 mars 2012

UsePNGImageDecoder()
UseJPEG2000ImageDecoder()
UseJPEGImageDecoder()
UseTGAImageDecoder()
UseTIFFImageDecoder()

Global FichierImage$ = ""
Global SelectionFichier$ = ""

Global NewList CheminFichier.s()
Global NewList NomFichier.s()
Global NewList Fichier.s()
Global NewList ExtantionFichier.s()

Global NewList DataImage.s()
Global NewList ImageNoncharger.s()
Global NewList FichierIncorrecte.s()
Global NewList NumeroImage.l()

Enumeration
  #Image
  #FichierImage
  #Window_0
  #ListIcon_explorateur_fichier
  #ProgressBarProgression
  #MenuePopup
  #Button_supprimer
  #Button_ajouter
  #Button_valider
  #Button_quitter
EndEnumeration

Procedure.s ReplaceAccents(Chaine$)
  
  Chaine$=LCase(Chaine$) ; On passe tout en min histoire que ce soit propre et que le ReplaceString() dure 2 x moins longtemps
  CharToFind.s="àáâãäåßçèéêëìíîïñòóôõöÞùúûüýÿ"
  CharToReplace.s="aaaaaabceeeeiiiinooooopuuuuyy"
  
  For i = 1 To Len(CharToFind) 
    ReplaceString(Chaine$, Mid(CharToFind,i,1), Mid(CharToReplace,i,1),#PB_String_InPlace, 1)
  Next
  
  ; vérif pour les caractères spéciaux passant de 1 à 2 caractères
  Chaine$ = ReplaceString(Chaine$, "œ", "oe")
  Chaine$ = ReplaceString(Chaine$, "æ", "ae")
  
  ProcedureReturn Chaine$
EndProcedure

Procedure DisableAero(WindowsID.i, State.i)
  If OpenLibrary(0, "dwmapi.dll")
    
    If State
      State = 1
    Else
      State = 2
    EndIf
    
    CallFunction(0, "DwmSetWindowAttribute", WindowsID, 2, @State, SizeOf(Long))
    CloseLibrary(0)
  EndIf
EndProcedure

Procedure GetAssociatedFileIcon(IconPath.s, IconSize)
  Protected FileInfo.SHFILEINFO
  SHGetFileInfo_(IconPath, 0, @FileInfo, SizeOf(SHFILEINFO), #SHGFI_ICON | IconSize) 
  ProcedureReturn FileInfo\hIcon 
EndProcedure

Procedure SupprimerFichier()
  
  NombreFichiers = CountGadgetItems(#ListIcon_explorateur_fichier)
  
  For VerifficationSelection = NombreFichiers - 1 To 0 Step - 1
    SelectionFichiers = GetGadgetItemState(#ListIcon_explorateur_fichier, VerifficationSelection)
    
    If SelectionFichiers = #PB_ListIcon_Checked Or SelectionFichiers = #PB_ListIcon_Checked | #PB_ListIcon_Selected
      Checked = 1
      Break
    EndIf
    
    Checked = 0
    
  Next
  
  If Checked = 1
    Reponce = MessageRequester("Attention", "      Vous êtes sur de vouloir supprimer ces fichiers ?", 52)
    
    If Reponce = 6
      SelectionFichiers$ = ""
      
      For VerifficationSelection = NombreFichiers - 1 To 0 Step - 1
        SelectionFichiers = GetGadgetItemState(#ListIcon_explorateur_fichier, VerifficationSelection)
        If SelectionFichiers = #PB_ListIcon_Checked Or SelectionFichiers = #PB_ListIcon_Checked | #PB_ListIcon_Selected
          RemoveGadgetItem(#ListIcon_explorateur_fichier, VerifficationSelection)
          ;Debug VerifficationSelection
        EndIf
        
      Next
      
    EndIf
    
  EndIf
  
EndProcedure

; Procedure de chargement d'une image
Procedure.l ChargementImage()
  
  Position = 0
  
  ForEach NomFichier()
    
    SelectElement(CheminFichier(), Position)
    
    FichierImage$ = CheminFichier.s() + NomFichier()
    
    If FichierImage$
      
      If FindString(LCase(GetFilePart(FichierImage$)), ".bmp", 1) Or FindString(LCase(GetFilePart(FichierImage$)), ".png", 1) Or FindString(LCase(GetFilePart(FichierImage$)), ".jpg", 1)
        
        Image = LoadImage(#PB_Any, FichierImage$)
        
        If Image <> 0
          AddElement(NumeroImage())
          NumeroImage() = Image
        Else
          AddElement(ImageNoncharger())
          ImageNoncharger() = GetFilePart(FichierImage$)
          ; MessageRequester("Erreur de chargement !", "      Impossible de charger l'image suivente: " + Chr(34) + GetFilePart(FichierImage$) + Chr(34) + " !", 16)
          ;End
        EndIf
        
      Else
        AddElement(FichierIncorrecte())
        FichierIncorrecte() = GetFilePart(FichierImage$)
        ; MessageRequester("Fichier invalide !", "      Veuillez choisir un fichier d'image invalide !", 48)
        ;End
      EndIf
      
    EndIf
    
    Position + 1
    
  Next
  
  If ListSize(ImageNoncharger()) > 0
    ForEach ImageNoncharger()
      ImageNoncharger$ + ImageNoncharger() + Chr(13) + "      "
    Next
    MessageRequester("Information Importante", "      Certains fichiers n'ont pas pue êtres charger !:" + Chr(13) + Tabulation$ + Chr(13) + "      " + ImageNoncharger$, 64)
  EndIf
  
  If ListSize(FichierIncorrecte()) > 0
    ForEach FichierIncorrecte()
      FichierIncorrecte$ + FichierIncorrecte() + Chr(13) + "      "
    Next
    MessageRequester("Information Importante", "      Des fichiers ont été igniorer car se ne sons pas des images valide !:" + Chr(13) + Tabulation$ + Chr(13)  + "      " + FichierIncorrecte$, 64)
  EndIf
  
EndProcedure

Procedure.s TraitementNomImage(NomImage$)
  
  ;--------------------------------------------------------------------------------------------------------------------------------------------
  ; Recherche et suppression de l'extantion du nom du fichier de l'image
  ;--------------------------------------------------------------------------------------------------------------------------------------------
  
  For i = Len(NomImage$) To 1 Step -1
    Caractere$ = Mid(NomImage$, i, 1)
    
    If Caractere$ = "."
      NomImage$ = Mid(NomImage$, 1,  i-1)
      Break
    EndIf
    
  Next
  
  ; --------------------------------------------------------------------------------------------------------------------------------------------
  ; Convertion des caractères a accent
  ;--------------------------------------------------------------------------------------------------------------------------------------------
  
  NomImage$ = LCase(NomImage$) ; On passe tout en min histoire que ce soit propre et que le ReplaceString() dure 2 x moins longtemps
  CharToFind.s = ".àáâãäåßçèéêëìíîï ñòóôõöÞùúûüýÿ-"
  CharToReplace.s = "_aaaaaabceeeeiiii_nooooopuuuuyy_"
  
  For i  =  1 To Len(CharToFind) 
    ReplaceString(NomImage$, Mid(CharToFind, i, 1), Mid(CharToReplace, i, 1), #PB_String_InPlace, 1)
  Next
  
  ; Veriffication pour les caractères spéciaux passant de 1 à 2 caractères
  NomImage$ = ReplaceString(NomImage$, Chr(156), "oe") ; "œ", Currieusement ça ne marche pas si l'on met la chaine de caractère "œ" a la place de Chr(156) !
  NomImage$ = ReplaceString(NomImage$, "æ", "ae") ; Mais ici, aucun problème a signialer, à n'i rien comprendre !
  
  
  ProcedureReturn NomImage$
  
EndProcedure

Procedure.s ConvertDataImage()
  
  Position = 0
  
  ForEach NumeroImage()
    
    SelectElement(CheminFichier(), Position)
    SelectElement(NomFichier(), Position)
    
    FichierImage$ = CheminFichier.s() + NomFichier()
    
    SelectElement(NumeroImage(), Position)
    
    AddElement(DataImage())
    DataImage() + "DataSection" + Chr(13) + Chr(10) + TraitementNomImage(GetFilePart(FichierImage$)) + ":" + Chr(13) + Chr(10)
    
    LigneCouleurHexa = 0
    
    X = 0
    Y = 0
    
    LargeurImage = ImageWidth(NumeroImage())
    HauteurImage = ImageHeight(NumeroImage())
    
    StartDrawing(ImageOutput(NumeroImage()))
    DrawingMode(#PB_2DDrawing_AlphaBlend)
    
    Repeat
      
      Couleur = Point(X, Y)
      
      If LigneCouleurHexa = 0
        AddElement(DataImage())
        DataImage() = "Data.l "
        LigneCouleurHexa + 1
      ElseIf LigneCouleurHexa < 50
        DataImage()+ "$" + Hex(Couleur, #PB_Long) + ", "
        LigneCouleurHexa + 1
      Else
        DataImage() + "$" + Hex(Couleur, #PB_Long) + Chr(13) + Chr(10)
        LigneCouleurHexa = 0
      EndIf
      
      If X <> LargeurImage - 1
        X + 1
      Else
        X = 0
        Y + 1
      EndIf
      
    Until X = LargeurImage - 1 And Y = HauteurImage - 1
    
    DataImage() = Mid(DataImage(), 1, Len(DataImage()) - 2) + Chr(13) + Chr(10)
        
    AddElement(DataImage())
    DataImage() + "EndDataSection" + Chr(13) + Chr(10) + Chr(13) + Chr(10)
    
    StopDrawing()
    
    Position + 1
  Next
  
EndProcedure

Procedure GenerationData()
  
  Fichiers = 1
  
  Selection1Fichier$ = StringField(SelectionFichier$, Fichiers, "|")
  NombreFichier = 0
  
  Repeat
    
    NomFichier$ = GetFilePart(Selection1Fichier$)
    CheminFichier$ = GetPathPart(Selection1Fichier$)
    ExtensionFichier$ = GetExtensionPart(Selection1Fichier$)
    
    AddElement(CheminFichier())
    CheminFichier() = CheminFichier$
    
    AddElement(NomFichier())
    NomFichier() = NomFichier$
    
    AddElement(ExtantionFichier())
    ExtantionFichier() = ExtensionFichier$
    
    NombreFichier + 1
    
    Fichiers + 1
    
    Selection1Fichier$ = StringField(SelectionFichier$, Fichiers, "|")
    
  Until Selection1Fichier$ = ""
  
  Fichiers = 1
  
  Selection1Fichier$ = StringField(SelectionFichier$, Fichiers, "|")
  NombreFichier = 0
  
  ChargementImage()
  ConvertDataImage()
  
  If OpenFile(1, "ConvertDataImage.txt")
    FileSeek(1, 0) ; Place le pointeur au début du fichier pour tous supprimer
    TruncateFile(1) ; Supprimer tous ce qui se trouve après le pointeur d'écriture

    ForEach DataImage()
      FileSeek(1, Lof(1)) ; Place le pointeur à la fin du fichier en utilisant le résultat de Lof() 
      WriteString(1, DataImage()) ; Ecrie le contenue de DataImage()
    Next
    
    CloseFile(1)
    
    If ListSize(NumeroImage()) > 0
      MessageRequester("Oppération terminer avec succer !", "      Le code a été copier dans le fichier ConvertDataImage !", 64)
    EndIf
    
  Else
    Debug 0
  EndIf
  
EndProcedure

Procedure MaFenetre()
  If OpenWindow(#Window_0, 421, 212, 425, 275, "Convertisseur de fichier image vers fichier texte",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget)
    DisableAero(WindowID(#Window_0), 1)
    
    WindowBounds(#Window_0, 365, 250, #PB_Ignore, #PB_Ignore)
    
    ListIconGadget(#ListIcon_explorateur_fichier, 10, 10, 405, 205, "Fichiers", 9999, #PB_ListIcon_CheckBoxes | #PB_ListIcon_MultiSelect | #PB_ListIcon_GridLines)
    
    CreatePopupMenu(#MenuePopup)
    MenuItem(1, "Cocher la selection")
    MenuItem(2, "Décocher la selection")
    MenuBar()
    MenuItem(3, "Supprimer la selection")
    MenuBar()
    MenuItem(4, "Sélectionner Tous")
    MenuItem(5, "Désélectionner Tous")
    
    ButtonGadget(#Button_supprimer, 130, 235, 70, 25, "Supprimer")
    ButtonGadget(#Button_ajouter, 55, 235, 70, 25, "Ajouté")
    ButtonGadget(#Button_valider, 220, 235, 70, 25, "Valider")
    ButtonGadget(#Button_quitter, 295, 235, 70, 25, "Quitter")
    
    ProgressBarGadget(#ProgressBarProgression, 10, 217, 405, 10, 1, 100)
    
    PureRESIZE_SetGadgetResize(#ListIcon_explorateur_fichier, 1, 1, 1, 1)
    
    PureRESIZE_SetGadgetResize(#ProgressBarProgression, 1, 0, 1, 1)
    PureRESIZE_SetGadgetProportionalResize(#ProgressBarProgression, 0, 0, 1, 0)
    
    PureRESIZE_SetGadgetResize(#Button_supprimer, 1, 0, 1, 1)
    PureRESIZE_SetGadgetProportionalResize(#Button_supprimer, 1, 0, 0, 0)
    
    PureRESIZE_SetGadgetResize(#Button_ajouter, 1, 0, 1, 1)
    PureRESIZE_SetGadgetProportionalResize(#Button_ajouter, 1, 0, 0, 0)
    
    PureRESIZE_SetGadgetResize(#Button_valider, 1, 0, 1, 1)
    PureRESIZE_SetGadgetProportionalResize(#Button_valider, 1, 0, 0, 0)
    
    PureRESIZE_SetGadgetResize(#Button_quitter, 1, 0, 1, 1)
    PureRESIZE_SetGadgetProportionalResize(#Button_quitter, 1, 0, 0, 0)
    
  EndIf
  
  Repeat ; Start of the event loop
    
    Event = WaitWindowEvent() ; This line waits until an event is received from Windows
    WindowID = EventWindow() ; The Window where the event is generated, can be used in the gadget procedures
    GadgetID = EventGadget() ; Is it a gadget event?
    Menu = EventMenu()
    EventType = EventType() ; The event type
    
    If Event = #PB_Event_Gadget
      
      If GadgetID = #ListIcon_explorateur_fichier
        
        If EventType = #PB_EventType_LeftDoubleClick
          Selection = GetGadgetState(#ListIcon_explorateur_fichier)
          
          If Selection > -1
            EtasSelection = GetGadgetItemState(#ListIcon_explorateur_fichier, Selection)
            
            If EtasSelection = 1
              SetGadgetItemState(#ListIcon_explorateur_fichier, Selection, 3)
            ElseIf EtasSelection = 3
              SetGadgetItemState(#ListIcon_explorateur_fichier, Selection, 1)
            EndIf
            
          EndIf
          
        ElseIf EventType = #PB_EventType_RightClick
          DisplayPopupMenu(#MenuePopup,WindowID(#Window_0))  
        EndIf
        
      ElseIf GadgetID = #Button_supprimer
        SupprimerFichier()
        
      ElseIf GadgetID = #Button_ajouter
        RepertoireUtilisateur$ = GetHomeDirectory()
        RepertoireUtilisateur$ + "\Bureau\"
        FichierParDefaut$ = RepertoireUtilisateur$
        Filtre$ = "Tous les fichiers (*.*)|*.*"
        Filtre  = 0
        NombreFichier = 0
        
        SelectionFichier$ = OpenFileRequester("Choisissez un ou plusieurs fichier à charger", FichierParDefaut$, Filtre$, Filtre, #PB_Requester_MultiSelection)
        
        NombreFichier = 0
        
        While SelectionFichier$
          AddElement(Fichier())
          Fichier() = SelectionFichier$
          SelectionFichier$ = NextSelectedFileName()
          NombreFichier + 1
        Wend
        
        SetGadgetAttribute(#ProgressBarProgression, #PB_ProgressBar_Maximum, NombreFichier)
        
        ForEach Fichier()
          
          NomFichier$ = GetFilePart(Fichier())
          CheminFichier$ = GetPathPart(Fichier())
          
          NombreFichiersEditeur = CountGadgetItems(#ListIcon_explorateur_fichier)
          
          For VerifficationFichiers = 0 To NombreFichiersEditeur
            NomFichiers$ = GetGadgetItemText(#ListIcon_explorateur_fichier, VerifficationFichiers)
            
          If NomFichiers$ <> Fichier()
              Trouver = 0
              Continue
            Else
              Trouver = 1
              DejaTrouver = 1
              Break
            EndIf
            
          Next
          
          If Trouver = 0
            Progression + 1
            AddGadgetItem(#ListIcon_explorateur_fichier, -1, CheminFichier$ + NomFichier$, GetAssociatedFileIcon(Fichier(), #SHGFI_SMALLICON))
            SetGadgetState(#ProgressBarProgression, Progression)
          EndIf
          
        Next
        
        If DejaTrouver = 1
          MessageRequester("Information", "      Certains fichiers ont été igniorer parce-qu'ils sons déjà dans la liste !", 64)
        EndIf
        
        
      ElseIf GadgetID = #Button_valider
        NombreFichiersEditeur = CountGadgetItems(#ListIcon_explorateur_fichier)
        
        For VerifficationFichiers = 0 To NombreFichiersEditeur
          SelectionFichier$ + GetGadgetItemText(#ListIcon_explorateur_fichier, VerifficationFichiers) + "|"
        Next
        
        CloseWindow(#Window_0)
        Event = #PB_Event_CloseWindow
        GenerationData()
        
      ElseIf GadgetID = #Button_quitter
        End
        
      EndIf
      
    ElseIf Event = #PB_Event_Menu
      If Menu = 1 ; Cocher la selection
        
        NombreFichiers = CountGadgetItems(#ListIcon_explorateur_fichier)
        
        For DecocheCase = 1 To NombreFichiers
          EtasSelection = GetGadgetItemState(#ListIcon_explorateur_fichier, DecocheCase - 1)
          
          If EtasSelection = 1 
            SetGadgetItemState(#ListIcon_explorateur_fichier, DecocheCase - 1, 3)
          EndIf
          
        Next
        
      ElseIf Menu = 2 ; Décocher la selection
        
        NombreFichiers = CountGadgetItems(#ListIcon_explorateur_fichier)
        
        For DecocheCase = 1 To NombreFichiers
          EtasSelection = GetGadgetItemState(#ListIcon_explorateur_fichier, DecocheCase - 1)
          
          If EtasSelection = 3
            SetGadgetItemState(#ListIcon_explorateur_fichier, DecocheCase - 1, 1)
          EndIf
          
        Next
        
      ElseIf Menu = 3 ; Supprimer la selection
        SupprimerFichier()
        
      ElseIf Menu = 4 ; Sélectionner Tous
        
        NombreFichiers = CountGadgetItems(#ListIcon_explorateur_fichier)
        
        For SelectionCase = 0 To NombreFichiers
          EtasSelection = GetGadgetItemState(#ListIcon_explorateur_fichier, SelectionCase)
          
          If EtasSelection <> #PB_ListIcon_Selected
            SetGadgetItemState(#ListIcon_explorateur_fichier, SelectionCase, #PB_ListIcon_Selected)
          EndIf
          
        Next
        
      ElseIf Menu = 5 ; Désélectionner Tous
        
        NombreFichiers = CountGadgetItems(#ListIcon_explorateur_fichier)
        
        For SelectionCase = 0 To NombreFichiers
          EtasSelection = GetGadgetItemState(#ListIcon_explorateur_fichier, SelectionCase)
          
          If EtasSelection = #PB_ListIcon_Selected
            SetGadgetItemState(#ListIcon_explorateur_fichier, SelectionCase, 0)
          EndIf
          
        Next
        
      EndIf
      
    EndIf
    
  Until Event = #PB_Event_CloseWindow ; End of the event loop
EndProcedure

MaFenetre()
; GenerationData()
Faut que j'améliore encore un peut mais ça marche :)
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Précalculation du nombre de fichier charger

Message par Ar-S »

Code : Tout sélectionner

If FindString(LCase(GetFilePart(FichierImage$)), ".bmp", 1) Or FindString(LCase(GetFilePart(FichierImage$)), ".png", 1) Or FindString(LCase(GetFilePart(FichierImage$)), ".jpg", 1) 
Si tu laisses ça comme ça, tu peux virer
UseTGAImageDecoder()
UseTIFFImageDecoder()
~~~~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
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Re: Précalculation du nombre de fichier charger

Message par dayvid »

Arf oui lol :lol:

Non non je vais récupérer ça très vite monsieur le proviseur :mrgreen:
D'autres remarque :lol:
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Re: Précalculation du nombre de fichier charger

Message par dayvid »

Voici une MAJ:

Corrections mineurs et ajoue de l'extantion dans le nommage du label dans DataSection

Code : Tout sélectionner

; Crée par monsieur dieppedalle david le 7 mars 2012

UsePNGImageDecoder()
UseJPEG2000ImageDecoder()
UseJPEGImageDecoder()
UseTGAImageDecoder()
UseTIFFImageDecoder()

Global FichierImage$ = ""
Global SelectionFichier$ = ""

Global NewList CheminFichier.s()
Global NewList NomFichier.s()
Global NewList Fichier.s()
Global NewList ExtantionFichier.s()

Global NewList DataImage.s()
Global NewList ImageNoncharger.s()
Global NewList FichierIncorrecte.s()
Global NewList NumeroImage.l()

Enumeration
  #Image
  #FichierImage
  #Window_0
  #ListIcon_explorateur_fichier
  #ProgressBarProgression
  #MenuePopup
  #Button_supprimer
  #Button_ajouter
  #Button_valider
  #Button_quitter
EndEnumeration

Procedure.s ReplaceAccents(Chaine$)
  
  Chaine$=LCase(Chaine$) ; On passe tout en min histoire que ce soit propre et que le ReplaceString() dure 2 x moins longtemps
  CharToFind.s="àáâãäåßçèéêëìíîïñòóôõöÞùúûüýÿ"
  CharToReplace.s="aaaaaabceeeeiiiinooooopuuuuyy"
  
  For i = 1 To Len(CharToFind) 
    ReplaceString(Chaine$, Mid(CharToFind,i,1), Mid(CharToReplace,i,1),#PB_String_InPlace, 1)
  Next
  
  ; vérif pour les caractères spéciaux passant de 1 à 2 caractères
  Chaine$ = ReplaceString(Chaine$, "œ", "oe")
  Chaine$ = ReplaceString(Chaine$, "æ", "ae")
  
  ProcedureReturn Chaine$
EndProcedure

Procedure DisableAero(WindowsID.i, State.i)
  If OpenLibrary(0, "dwmapi.dll")
    
    If State
      State = 1
    Else
      State = 2
    EndIf
    
    CallFunction(0, "DwmSetWindowAttribute", WindowsID, 2, @State, SizeOf(Long))
    CloseLibrary(0)
  EndIf
EndProcedure

Procedure GetAssociatedFileIcon(IconPath.s, IconSize)
  Protected FileInfo.SHFILEINFO
  SHGetFileInfo_(IconPath, 0, @FileInfo, SizeOf(SHFILEINFO), #SHGFI_ICON | IconSize) 
  ProcedureReturn FileInfo\hIcon 
EndProcedure

Procedure SupprimerFichier()
  
  NombreFichiers = CountGadgetItems(#ListIcon_explorateur_fichier)
  
  For VerifficationSelection = NombreFichiers - 1 To 0 Step - 1
    SelectionFichiers = GetGadgetItemState(#ListIcon_explorateur_fichier, VerifficationSelection)
    
    If SelectionFichiers = #PB_ListIcon_Checked Or SelectionFichiers = #PB_ListIcon_Checked | #PB_ListIcon_Selected
      Checked = 1
      Break
    EndIf
    
    Checked = 0
    
  Next
  
  If Checked = 1
    Reponce = MessageRequester("Attention", "      Vous êtes sur de vouloir supprimer ces fichiers ?", 52)
    
    If Reponce = 6
      SelectionFichiers$ = ""
      
      For VerifficationSelection = NombreFichiers - 1 To 0 Step - 1
        SelectionFichiers = GetGadgetItemState(#ListIcon_explorateur_fichier, VerifficationSelection)
        If SelectionFichiers = #PB_ListIcon_Checked Or SelectionFichiers = #PB_ListIcon_Checked | #PB_ListIcon_Selected
          RemoveGadgetItem(#ListIcon_explorateur_fichier, VerifficationSelection)
          ;Debug VerifficationSelection
        EndIf
        
      Next
      
    EndIf
    
  EndIf
  
EndProcedure

; Procedure de chargement d'une image
Procedure.l ChargementImage()
  
  Position = 0
  
  ForEach NomFichier()
    
    SelectElement(CheminFichier(), Position)
    
    FichierImage$ = CheminFichier.s() + NomFichier()
    
    If FichierImage$
      
      If FindString(LCase(GetFilePart(FichierImage$)), ".bmp", 1) Or FindString(LCase(GetFilePart(FichierImage$)), ".png", 1) Or FindString(LCase(GetFilePart(FichierImage$)), ".jpg", 1) Or FindString(LCase(GetFilePart(FichierImage$)), ".tga", 1) Or FindString(LCase(GetFilePart(FichierImage$)), ".tif", 1)
        
        Image = LoadImage(#PB_Any, FichierImage$)
        
        If Image <> 0
          AddElement(NumeroImage())
          NumeroImage() = Image
        Else
          AddElement(ImageNoncharger())
          ImageNoncharger() = GetFilePart(FichierImage$)
          ; MessageRequester("Erreur de chargement !", "      Impossible de charger l'image suivente: " + Chr(34) + GetFilePart(FichierImage$) + Chr(34) + " !", 16)
          ;End
        EndIf
        
      Else
        AddElement(FichierIncorrecte())
        FichierIncorrecte() = GetFilePart(FichierImage$)
        ; MessageRequester("Fichier invalide !", "      Veuillez choisir un fichier d'image invalide !", 48)
        ;End
      EndIf
      
    EndIf
    
    Position + 1
    
  Next
  
  If ListSize(ImageNoncharger()) > 0
    ForEach ImageNoncharger()
      ImageNoncharger$ + ImageNoncharger() + Chr(13) + "      "
    Next
    MessageRequester("Information Importante", "      Certains fichiers n'ont pas pue êtres charger !:" + Chr(13) + Tabulation$ + Chr(13) + "      " + ImageNoncharger$, 64)
  EndIf
  
  If ListSize(FichierIncorrecte()) > 0
    ForEach FichierIncorrecte()
      FichierIncorrecte$ + FichierIncorrecte() + Chr(13) + "      "
    Next
    MessageRequester("Information Importante", "      Des fichiers ont été igniorer car se ne sont pas des images valide !:" + Chr(13) + Tabulation$ + Chr(13)  + "      " + FichierIncorrecte$, 64)
  EndIf
  
EndProcedure

Procedure.s TraitementNomImage(NomImage$)
  
  ;--------------------------------------------------------------------------------------------------------------------------------------------
  ; Recherche et suppression de l'extantion du nom du fichier de l'image
  ;--------------------------------------------------------------------------------------------------------------------------------------------
  
;   For i = Len(NomImage$) To 1 Step - 1
;     Caractere$ = Mid(NomImage$, i, 1)
;     
;     If Caractere$ = "."
;       NomImage$ = Mid(NomImage$, 1,  i - 1)
;       Break
;     EndIf
;     
;   Next
  
  ; --------------------------------------------------------------------------------------------------------------------------------------------
  ; Convertion des caractères a accent
  ;--------------------------------------------------------------------------------------------------------------------------------------------
  
  NomImage$ = LCase(NomImage$) ; On passe tout en min histoire que ce soit propre et que le ReplaceString() dure 2 x moins longtemps
  CharToFind.s = ".àáâãäåßçèéêëìíîï ñòóôõöÞùúûüýÿ-"
  CharToReplace.s = "_aaaaaabceeeeiiii_nooooopuuuuyy_"
  
  For i  =  1 To Len(CharToFind) 
    ReplaceString(NomImage$, Mid(CharToFind, i, 1), Mid(CharToReplace, i, 1), #PB_String_InPlace, 1)
  Next
  
  ; Veriffication pour les caractères spéciaux passant de 1 à 2 caractères
  NomImage$ = ReplaceString(NomImage$, Chr(156), "oe") ; "œ", Currieusement ça ne marche pas si l'on met la chaine de caractère "œ" a la place de Chr(156) !
  NomImage$ = ReplaceString(NomImage$, "æ", "ae") ; Mais ici, aucun problème a signialer, à n'i rien comprendre !
  
  
  ProcedureReturn NomImage$
  
EndProcedure

Procedure.s ConvertDataImage()
  
  Position = 0
  
  ForEach NumeroImage()
    
    SelectElement(CheminFichier(), Position)
    SelectElement(NomFichier(), Position)
    SelectElement(ExtantionFichier(), Position)
    
    FichierImage$ = CheminFichier.s() + NomFichier()
    
    SelectElement(NumeroImage(), Position)
    
    AddElement(DataImage())
    DataImage() + "DataSection" + Chr(13) + Chr(10) + TraitementNomImage(GetFilePart(FichierImage$)) + ":" + Chr(13) + Chr(10)
    
    LigneCouleurHexa = 0
    
    X = 0
    Y = 0
    
    LargeurImage = ImageWidth(NumeroImage())
    HauteurImage = ImageHeight(NumeroImage())
    
    StartDrawing(ImageOutput(NumeroImage()))
    DrawingMode(#PB_2DDrawing_AlphaBlend)
    
    Repeat
      
      Couleur = Point(X, Y)
      
      If LigneCouleurHexa = 0
        AddElement(DataImage())
        DataImage() = "Data.l "
        LigneCouleurHexa + 1
      ElseIf LigneCouleurHexa < 50
        DataImage()+ "$" + Hex(Couleur, #PB_Long) + ", "
        LigneCouleurHexa + 1
      Else
        DataImage() + "$" + Hex(Couleur, #PB_Long) + Chr(13) + Chr(10)
        LigneCouleurHexa = 0
      EndIf
      
      If X <> LargeurImage - 1
        X + 1
      Else
        X = 0
        Y + 1
      EndIf
      
    Until X = LargeurImage - 1 And Y = HauteurImage - 1
    
    DataImage() = Mid(DataImage(), 1, Len(DataImage()) - 2) + Chr(13) + Chr(10)
        
    AddElement(DataImage())
    DataImage() + "EndDataSection" + Chr(13) + Chr(10) + Chr(13) + Chr(10)
    
    StopDrawing()
    
    Position + 1
  Next
  
EndProcedure

Procedure GenerationData()
  
  Fichiers = 1
  
  Selection1Fichier$ = StringField(SelectionFichier$, Fichiers, "|")
  NombreFichier = 0
  
  Repeat
    
    NomFichier$ = GetFilePart(Selection1Fichier$)
    CheminFichier$ = GetPathPart(Selection1Fichier$)
    ExtensionFichier$ = GetExtensionPart(Selection1Fichier$)
    
    AddElement(CheminFichier())
    CheminFichier() = CheminFichier$
    
    AddElement(NomFichier())
    NomFichier() = NomFichier$
    
    AddElement(ExtantionFichier())
    ExtantionFichier() = ExtensionFichier$
    
    NombreFichier + 1
    
    Fichiers + 1
    
    Selection1Fichier$ = StringField(SelectionFichier$, Fichiers, "|")
    
  Until Selection1Fichier$ = ""
  
  Fichiers = 1
  
  Selection1Fichier$ = StringField(SelectionFichier$, Fichiers, "|")
  NombreFichier = 0
  
  ChargementImage()
  ConvertDataImage()
  
  If OpenFile(1, "ConvertDataImage.txt")
    FileSeek(1, 0) ; Place le pointeur au début du fichier pour tous supprimer
    TruncateFile(1) ; Supprimer tous ce qui se trouve après le pointeur d'écriture

    ForEach DataImage()
      FileSeek(1, Lof(1)) ; Place le pointeur à la fin du fichier en utilisant le résultat de Lof() 
      WriteString(1, DataImage()) ; Ecrie le contenue de DataImage()
    Next
    
    CloseFile(1)
    
    If ListSize(NumeroImage()) > 0
      MessageRequester("Oppération terminer avec succer !", "      Le code a été copier dans le fichier ConvertDataImage !", 64)
    EndIf
    
  Else
    Debug 0
  EndIf
  
EndProcedure

Procedure MaFenetre()
  If OpenWindow(#Window_0, 421, 212, 425, 275, "Convertisseur de fichier image vers fichier texte",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget)
    DisableAero(WindowID(#Window_0), 1)
    
    WindowBounds(#Window_0, 365, 250, #PB_Ignore, #PB_Ignore)
    
    ListIconGadget(#ListIcon_explorateur_fichier, 10, 10, 405, 205, "Fichiers", 9999, #PB_ListIcon_CheckBoxes | #PB_ListIcon_MultiSelect | #PB_ListIcon_GridLines)
    
    CreatePopupMenu(#MenuePopup)
    MenuItem(1, "Cocher la selection")
    MenuItem(2, "Décocher la selection")
    MenuBar()
    MenuItem(3, "Supprimer la selection")
    MenuBar()
    MenuItem(4, "Sélectionner Tous")
    MenuItem(5, "Désélectionner Tous")
    
    ButtonGadget(#Button_supprimer, 130, 235, 70, 25, "Supprimer")
    ButtonGadget(#Button_ajouter, 55, 235, 70, 25, "Ajouté")
    ButtonGadget(#Button_valider, 220, 235, 70, 25, "Valider")
    ButtonGadget(#Button_quitter, 295, 235, 70, 25, "Quitter")
    
    ProgressBarGadget(#ProgressBarProgression, 10, 217, 405, 10, 1, 100)
    
    PureRESIZE_SetGadgetResize(#ListIcon_explorateur_fichier, 1, 1, 1, 1)
    
    PureRESIZE_SetGadgetResize(#ProgressBarProgression, 1, 0, 1, 1)
    PureRESIZE_SetGadgetProportionalResize(#ProgressBarProgression, 0, 0, 1, 0)
    
    PureRESIZE_SetGadgetResize(#Button_supprimer, 1, 0, 1, 1)
    PureRESIZE_SetGadgetProportionalResize(#Button_supprimer, 1, 0, 0, 0)
    
    PureRESIZE_SetGadgetResize(#Button_ajouter, 1, 0, 1, 1)
    PureRESIZE_SetGadgetProportionalResize(#Button_ajouter, 1, 0, 0, 0)
    
    PureRESIZE_SetGadgetResize(#Button_valider, 1, 0, 1, 1)
    PureRESIZE_SetGadgetProportionalResize(#Button_valider, 1, 0, 0, 0)
    
    PureRESIZE_SetGadgetResize(#Button_quitter, 1, 0, 1, 1)
    PureRESIZE_SetGadgetProportionalResize(#Button_quitter, 1, 0, 0, 0)
    
  EndIf
  
  Repeat ; Start of the event loop
    
    Event = WaitWindowEvent() ; This line waits until an event is received from Windows
    WindowID = EventWindow() ; The Window where the event is generated, can be used in the gadget procedures
    GadgetID = EventGadget() ; Is it a gadget event?
    Menu = EventMenu()
    EventType = EventType() ; The event type
    
    If Event = #PB_Event_Gadget
      
      If GadgetID = #ListIcon_explorateur_fichier
        
        If EventType = #PB_EventType_LeftDoubleClick
          Selection = GetGadgetState(#ListIcon_explorateur_fichier)
          
          If Selection > -1
            EtasSelection = GetGadgetItemState(#ListIcon_explorateur_fichier, Selection)
            
            If EtasSelection = 1
              SetGadgetItemState(#ListIcon_explorateur_fichier, Selection, 3)
            ElseIf EtasSelection = 3
              SetGadgetItemState(#ListIcon_explorateur_fichier, Selection, 1)
            EndIf
            
          EndIf
          
        ElseIf EventType = #PB_EventType_RightClick
          DisplayPopupMenu(#MenuePopup,WindowID(#Window_0))  
        EndIf
        
      ElseIf GadgetID = #Button_supprimer
        SupprimerFichier()
        
      ElseIf GadgetID = #Button_ajouter
        RepertoireUtilisateur$ = GetHomeDirectory()
        RepertoireUtilisateur$ + "\Bureau\"
        FichierParDefaut$ = RepertoireUtilisateur$
        Filtre$ = "Tous les fichiers (*.*)|*.*"
        Filtre  = 0
        NombreFichier = 0
        
        SelectionFichier$ = OpenFileRequester("Choisissez un ou plusieurs fichier à charger", FichierParDefaut$, Filtre$, Filtre, #PB_Requester_MultiSelection)
        
        NombreFichier = 0
        
        While SelectionFichier$
          AddElement(Fichier())
          Fichier() = SelectionFichier$
          SelectionFichier$ = NextSelectedFileName()
          NombreFichier + 1
        Wend
        
        SetGadgetAttribute(#ProgressBarProgression, #PB_ProgressBar_Maximum, NombreFichier)
        
        ForEach Fichier()
          
          NomFichier$ = GetFilePart(Fichier())
          CheminFichier$ = GetPathPart(Fichier())
          
          NombreFichiersEditeur = CountGadgetItems(#ListIcon_explorateur_fichier)
          
          For VerifficationFichiers = 0 To NombreFichiersEditeur
            NomFichiers$ = GetGadgetItemText(#ListIcon_explorateur_fichier, VerifficationFichiers)
            
          If NomFichiers$ <> Fichier()
              Trouver = 0
              Continue
            Else
              Trouver = 1
              DejaTrouver = 1
              Break
            EndIf
            
          Next
          
          If Trouver = 0
            Progression + 1
            AddGadgetItem(#ListIcon_explorateur_fichier, -1, CheminFichier$ + NomFichier$, GetAssociatedFileIcon(Fichier(), #SHGFI_SMALLICON))
            SetGadgetState(#ProgressBarProgression, Progression)
          EndIf
          
        Next
        
        If DejaTrouver = 1
          MessageRequester("Information", "      Certains fichiers ont été igniorer parce-qu'ils sons déjà dans la liste !", 64)
        EndIf
        
        
      ElseIf GadgetID = #Button_valider
        NombreFichiersEditeur = CountGadgetItems(#ListIcon_explorateur_fichier)
        
        For VerifficationFichiers = 0 To NombreFichiersEditeur
          SelectionFichier$ + GetGadgetItemText(#ListIcon_explorateur_fichier, VerifficationFichiers) + "|"
        Next
        
        CloseWindow(#Window_0)
        Event = #PB_Event_CloseWindow
        GenerationData()
        
      ElseIf GadgetID = #Button_quitter
        End
        
      EndIf
      
    ElseIf Event = #PB_Event_Menu
      If Menu = 1 ; Cocher la selection
        
        NombreFichiers = CountGadgetItems(#ListIcon_explorateur_fichier)
        
        For DecocheCase = 1 To NombreFichiers
          EtasSelection = GetGadgetItemState(#ListIcon_explorateur_fichier, DecocheCase - 1)
          
          If EtasSelection = 1 
            SetGadgetItemState(#ListIcon_explorateur_fichier, DecocheCase - 1, 3)
          EndIf
          
        Next
        
      ElseIf Menu = 2 ; Décocher la selection
        
        NombreFichiers = CountGadgetItems(#ListIcon_explorateur_fichier)
        
        For DecocheCase = 1 To NombreFichiers
          EtasSelection = GetGadgetItemState(#ListIcon_explorateur_fichier, DecocheCase - 1)
          
          If EtasSelection = 3
            SetGadgetItemState(#ListIcon_explorateur_fichier, DecocheCase - 1, 1)
          EndIf
          
        Next
        
      ElseIf Menu = 3 ; Supprimer la selection
        SupprimerFichier()
        
      ElseIf Menu = 4 ; Sélectionner Tous
        
        NombreFichiers = CountGadgetItems(#ListIcon_explorateur_fichier)
        
        For SelectionCase = 0 To NombreFichiers
          EtasSelection = GetGadgetItemState(#ListIcon_explorateur_fichier, SelectionCase)
          
          If EtasSelection <> #PB_ListIcon_Selected
            SetGadgetItemState(#ListIcon_explorateur_fichier, SelectionCase, #PB_ListIcon_Selected)
          EndIf
          
        Next
        
      ElseIf Menu = 5 ; Désélectionner Tous
        
        NombreFichiers = CountGadgetItems(#ListIcon_explorateur_fichier)
        
        For SelectionCase = 0 To NombreFichiers
          EtasSelection = GetGadgetItemState(#ListIcon_explorateur_fichier, SelectionCase)
          
          If EtasSelection = #PB_ListIcon_Selected
            SetGadgetItemState(#ListIcon_explorateur_fichier, SelectionCase, 0)
          EndIf
          
        Next
        
      EndIf
      
    EndIf
    
  Until Event = #PB_Event_CloseWindow ; End of the event loop
EndProcedure

MaFenetre()
; GenerationData()
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Re: Précalculation du nombre de fichier charger

Message par dayvid »

Voici une MAJ:

Corrections mineurs et ajoue de l'extantion dans le nommage du label dans DataSection

Code : Tout sélectionner

; Crée par monsieur dieppedalle david le 7 mars 2012

UsePNGImageDecoder()
UseJPEG2000ImageDecoder()
UseJPEGImageDecoder()
UseTGAImageDecoder()
UseTIFFImageDecoder()

Global FichierImage$ = ""
Global SelectionFichier$ = ""

Global NewList CheminFichier.s()
Global NewList NomFichier.s()
Global NewList Fichier.s()
Global NewList ExtantionFichier.s()

Global NewList DataImage.s()
Global NewList ImageNoncharger.s()
Global NewList FichierIncorrecte.s()
Global NewList NumeroImage.l()

Enumeration
  #Image
  #FichierImage
  #Window_0
  #ListIcon_explorateur_fichier
  #ProgressBarProgression
  #MenuePopup
  #Button_supprimer
  #Button_ajouter
  #Button_valider
  #Button_quitter
EndEnumeration

Procedure.s ReplaceAccents(Chaine$)
  
  Chaine$=LCase(Chaine$) ; On passe tout en min histoire que ce soit propre et que le ReplaceString() dure 2 x moins longtemps
  CharToFind.s="àáâãäåßçèéêëìíîïñòóôõöÞùúûüýÿ"
  CharToReplace.s="aaaaaabceeeeiiiinooooopuuuuyy"
  
  For i = 1 To Len(CharToFind) 
    ReplaceString(Chaine$, Mid(CharToFind,i,1), Mid(CharToReplace,i,1),#PB_String_InPlace, 1)
  Next
  
  ; vérif pour les caractères spéciaux passant de 1 à 2 caractères
  Chaine$ = ReplaceString(Chaine$, "œ", "oe")
  Chaine$ = ReplaceString(Chaine$, "æ", "ae")
  
  ProcedureReturn Chaine$
EndProcedure

Procedure DisableAero(WindowsID.i, State.i)
  If OpenLibrary(0, "dwmapi.dll")
    
    If State
      State = 1
    Else
      State = 2
    EndIf
    
    CallFunction(0, "DwmSetWindowAttribute", WindowsID, 2, @State, SizeOf(Long))
    CloseLibrary(0)
  EndIf
EndProcedure

Procedure GetAssociatedFileIcon(IconPath.s, IconSize)
  Protected FileInfo.SHFILEINFO
  SHGetFileInfo_(IconPath, 0, @FileInfo, SizeOf(SHFILEINFO), #SHGFI_ICON | IconSize) 
  ProcedureReturn FileInfo\hIcon 
EndProcedure

Procedure SupprimerFichier()
  
  NombreFichiers = CountGadgetItems(#ListIcon_explorateur_fichier)
  
  For VerifficationSelection = NombreFichiers - 1 To 0 Step - 1
    SelectionFichiers = GetGadgetItemState(#ListIcon_explorateur_fichier, VerifficationSelection)
    
    If SelectionFichiers = #PB_ListIcon_Checked Or SelectionFichiers = #PB_ListIcon_Checked | #PB_ListIcon_Selected
      Checked = 1
      Break
    EndIf
    
    Checked = 0
    
  Next
  
  If Checked = 1
    Reponce = MessageRequester("Attention", "      Vous êtes sur de vouloir supprimer ces fichiers ?", 52)
    
    If Reponce = 6
      SelectionFichiers$ = ""
      
      For VerifficationSelection = NombreFichiers - 1 To 0 Step - 1
        SelectionFichiers = GetGadgetItemState(#ListIcon_explorateur_fichier, VerifficationSelection)
        If SelectionFichiers = #PB_ListIcon_Checked Or SelectionFichiers = #PB_ListIcon_Checked | #PB_ListIcon_Selected
          RemoveGadgetItem(#ListIcon_explorateur_fichier, VerifficationSelection)
          ;Debug VerifficationSelection
        EndIf
        
      Next
      
    EndIf
    
  EndIf
  
EndProcedure

; Procedure de chargement d'une image
Procedure.l ChargementImage()
  
  Position = 0
  
  ForEach NomFichier()
    
    SelectElement(CheminFichier(), Position)
    
    FichierImage$ = CheminFichier.s() + NomFichier()
    
    If FichierImage$
      
      If FindString(LCase(GetFilePart(FichierImage$)), ".bmp", 1) Or FindString(LCase(GetFilePart(FichierImage$)), ".png", 1) Or FindString(LCase(GetFilePart(FichierImage$)), ".jpg", 1) Or FindString(LCase(GetFilePart(FichierImage$)), ".tga", 1) Or FindString(LCase(GetFilePart(FichierImage$)), ".tif", 1)
        
        Image = LoadImage(#PB_Any, FichierImage$)
        
        If Image <> 0
          AddElement(NumeroImage())
          NumeroImage() = Image
        Else
          AddElement(ImageNoncharger())
          ImageNoncharger() = GetFilePart(FichierImage$)
          ; MessageRequester("Erreur de chargement !", "      Impossible de charger l'image suivente: " + Chr(34) + GetFilePart(FichierImage$) + Chr(34) + " !", 16)
          ;End
        EndIf
        
      Else
        AddElement(FichierIncorrecte())
        FichierIncorrecte() = GetFilePart(FichierImage$)
        ; MessageRequester("Fichier invalide !", "      Veuillez choisir un fichier d'image invalide !", 48)
        ;End
      EndIf
      
    EndIf
    
    Position + 1
    
  Next
  
  If ListSize(ImageNoncharger()) > 0
    ForEach ImageNoncharger()
      ImageNoncharger$ + ImageNoncharger() + Chr(13) + "      "
    Next
    MessageRequester("Information Importante", "      Certains fichiers n'ont pas pue êtres charger !:" + Chr(13) + Tabulation$ + Chr(13) + "      " + ImageNoncharger$, 64)
  EndIf
  
  If ListSize(FichierIncorrecte()) > 0
    ForEach FichierIncorrecte()
      FichierIncorrecte$ + FichierIncorrecte() + Chr(13) + "      "
    Next
    MessageRequester("Information Importante", "      Des fichiers ont été igniorer car se ne sont pas des images valide !:" + Chr(13) + Tabulation$ + Chr(13)  + "      " + FichierIncorrecte$, 64)
  EndIf
  
EndProcedure

Procedure.s TraitementNomImage(NomImage$)
  
  ;--------------------------------------------------------------------------------------------------------------------------------------------
  ; Recherche et suppression de l'extantion du nom du fichier de l'image
  ;--------------------------------------------------------------------------------------------------------------------------------------------
  
;   For i = Len(NomImage$) To 1 Step - 1
;     Caractere$ = Mid(NomImage$, i, 1)
;     
;     If Caractere$ = "."
;       NomImage$ = Mid(NomImage$, 1,  i - 1)
;       Break
;     EndIf
;     
;   Next
  
  ; --------------------------------------------------------------------------------------------------------------------------------------------
  ; Convertion des caractères a accent
  ;--------------------------------------------------------------------------------------------------------------------------------------------
  
  NomImage$ = LCase(NomImage$) ; On passe tout en min histoire que ce soit propre et que le ReplaceString() dure 2 x moins longtemps
  CharToFind.s = ".àáâãäåßçèéêëìíîï ñòóôõöÞùúûüýÿ-"
  CharToReplace.s = "_aaaaaabceeeeiiii_nooooopuuuuyy_"
  
  For i  =  1 To Len(CharToFind) 
    ReplaceString(NomImage$, Mid(CharToFind, i, 1), Mid(CharToReplace, i, 1), #PB_String_InPlace, 1)
  Next
  
  ; Veriffication pour les caractères spéciaux passant de 1 à 2 caractères
  NomImage$ = ReplaceString(NomImage$, Chr(156), "oe") ; "œ", Currieusement ça ne marche pas si l'on met la chaine de caractère "œ" a la place de Chr(156) !
  NomImage$ = ReplaceString(NomImage$, "æ", "ae") ; Mais ici, aucun problème a signialer, à n'i rien comprendre !
  
  
  ProcedureReturn NomImage$
  
EndProcedure

Procedure.s ConvertDataImage()
  
  Position = 0
  
  ForEach NumeroImage()
    
    SelectElement(CheminFichier(), Position)
    SelectElement(NomFichier(), Position)
    SelectElement(ExtantionFichier(), Position)
    
    FichierImage$ = CheminFichier.s() + NomFichier()
    
    SelectElement(NumeroImage(), Position)
    
    AddElement(DataImage())
    DataImage() + "DataSection" + Chr(13) + Chr(10) + TraitementNomImage(GetFilePart(FichierImage$)) + ":" + Chr(13) + Chr(10)
    
    LigneCouleurHexa = 0
    
    X = 0
    Y = 0
    
    LargeurImage = ImageWidth(NumeroImage())
    HauteurImage = ImageHeight(NumeroImage())
    
    StartDrawing(ImageOutput(NumeroImage()))
    DrawingMode(#PB_2DDrawing_AlphaBlend)
    
    Repeat
      
      Couleur = Point(X, Y)
      
      If LigneCouleurHexa = 0
        AddElement(DataImage())
        DataImage() = "Data.l "
        LigneCouleurHexa + 1
      ElseIf LigneCouleurHexa < 50
        DataImage()+ "$" + Hex(Couleur, #PB_Long) + ", "
        LigneCouleurHexa + 1
      Else
        DataImage() + "$" + Hex(Couleur, #PB_Long) + Chr(13) + Chr(10)
        LigneCouleurHexa = 0
      EndIf
      
      If X <> LargeurImage - 1
        X + 1
      Else
        X = 0
        Y + 1
      EndIf
      
    Until X = LargeurImage - 1 And Y = HauteurImage - 1
    
    DataImage() = Mid(DataImage(), 1, Len(DataImage()) - 2) + Chr(13) + Chr(10)
        
    AddElement(DataImage())
    DataImage() + "EndDataSection" + Chr(13) + Chr(10) + Chr(13) + Chr(10)
    
    StopDrawing()
    
    Position + 1
  Next
  
EndProcedure

Procedure GenerationData()
  
  Fichiers = 1
  
  Selection1Fichier$ = StringField(SelectionFichier$, Fichiers, "|")
  NombreFichier = 0
  
  Repeat
    
    NomFichier$ = GetFilePart(Selection1Fichier$)
    CheminFichier$ = GetPathPart(Selection1Fichier$)
    ExtensionFichier$ = GetExtensionPart(Selection1Fichier$)
    
    AddElement(CheminFichier())
    CheminFichier() = CheminFichier$
    
    AddElement(NomFichier())
    NomFichier() = NomFichier$
    
    AddElement(ExtantionFichier())
    ExtantionFichier() = ExtensionFichier$
    
    NombreFichier + 1
    
    Fichiers + 1
    
    Selection1Fichier$ = StringField(SelectionFichier$, Fichiers, "|")
    
  Until Selection1Fichier$ = ""
  
  Fichiers = 1
  
  Selection1Fichier$ = StringField(SelectionFichier$, Fichiers, "|")
  NombreFichier = 0
  
  ChargementImage()
  ConvertDataImage()
  
  If OpenFile(1, "ConvertDataImage.txt")
    FileSeek(1, 0) ; Place le pointeur au début du fichier pour tous supprimer
    TruncateFile(1) ; Supprimer tous ce qui se trouve après le pointeur d'écriture

    ForEach DataImage()
      FileSeek(1, Lof(1)) ; Place le pointeur à la fin du fichier en utilisant le résultat de Lof() 
      WriteString(1, DataImage()) ; Ecrie le contenue de DataImage()
    Next
    
    CloseFile(1)
    
    If ListSize(NumeroImage()) > 0
      MessageRequester("Oppération terminer avec succer !", "      Le code a été copier dans le fichier ConvertDataImage !", 64)
    EndIf
    
  Else
    Debug 0
  EndIf
  
EndProcedure

Procedure MaFenetre()
  If OpenWindow(#Window_0, 421, 212, 425, 275, "Convertisseur de fichier image vers fichier texte",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget)
    DisableAero(WindowID(#Window_0), 1)
    
    WindowBounds(#Window_0, 365, 250, #PB_Ignore, #PB_Ignore)
    
    ListIconGadget(#ListIcon_explorateur_fichier, 10, 10, 405, 205, "Fichiers", 9999, #PB_ListIcon_CheckBoxes | #PB_ListIcon_MultiSelect | #PB_ListIcon_GridLines)
    
    CreatePopupMenu(#MenuePopup)
    MenuItem(1, "Cocher la selection")
    MenuItem(2, "Décocher la selection")
    MenuBar()
    MenuItem(3, "Supprimer la selection")
    MenuBar()
    MenuItem(4, "Sélectionner Tous")
    MenuItem(5, "Désélectionner Tous")
    
    ButtonGadget(#Button_supprimer, 130, 235, 70, 25, "Supprimer")
    ButtonGadget(#Button_ajouter, 55, 235, 70, 25, "Ajouté")
    ButtonGadget(#Button_valider, 220, 235, 70, 25, "Valider")
    ButtonGadget(#Button_quitter, 295, 235, 70, 25, "Quitter")
    
    ProgressBarGadget(#ProgressBarProgression, 10, 217, 405, 10, 1, 100)
    
    PureRESIZE_SetGadgetResize(#ListIcon_explorateur_fichier, 1, 1, 1, 1)
    
    PureRESIZE_SetGadgetResize(#ProgressBarProgression, 1, 0, 1, 1)
    PureRESIZE_SetGadgetProportionalResize(#ProgressBarProgression, 0, 0, 1, 0)
    
    PureRESIZE_SetGadgetResize(#Button_supprimer, 1, 0, 1, 1)
    PureRESIZE_SetGadgetProportionalResize(#Button_supprimer, 1, 0, 0, 0)
    
    PureRESIZE_SetGadgetResize(#Button_ajouter, 1, 0, 1, 1)
    PureRESIZE_SetGadgetProportionalResize(#Button_ajouter, 1, 0, 0, 0)
    
    PureRESIZE_SetGadgetResize(#Button_valider, 1, 0, 1, 1)
    PureRESIZE_SetGadgetProportionalResize(#Button_valider, 1, 0, 0, 0)
    
    PureRESIZE_SetGadgetResize(#Button_quitter, 1, 0, 1, 1)
    PureRESIZE_SetGadgetProportionalResize(#Button_quitter, 1, 0, 0, 0)
    
  EndIf
  
  Repeat ; Start of the event loop
    
    Event = WaitWindowEvent() ; This line waits until an event is received from Windows
    WindowID = EventWindow() ; The Window where the event is generated, can be used in the gadget procedures
    GadgetID = EventGadget() ; Is it a gadget event?
    Menu = EventMenu()
    EventType = EventType() ; The event type
    
    If Event = #PB_Event_Gadget
      
      If GadgetID = #ListIcon_explorateur_fichier
        
        If EventType = #PB_EventType_LeftDoubleClick
          Selection = GetGadgetState(#ListIcon_explorateur_fichier)
          
          If Selection > -1
            EtasSelection = GetGadgetItemState(#ListIcon_explorateur_fichier, Selection)
            
            If EtasSelection = 1
              SetGadgetItemState(#ListIcon_explorateur_fichier, Selection, 3)
            ElseIf EtasSelection = 3
              SetGadgetItemState(#ListIcon_explorateur_fichier, Selection, 1)
            EndIf
            
          EndIf
          
        ElseIf EventType = #PB_EventType_RightClick
          DisplayPopupMenu(#MenuePopup,WindowID(#Window_0))  
        EndIf
        
      ElseIf GadgetID = #Button_supprimer
        SupprimerFichier()
        
      ElseIf GadgetID = #Button_ajouter
        RepertoireUtilisateur$ = GetHomeDirectory()
        RepertoireUtilisateur$ + "\Bureau\"
        FichierParDefaut$ = RepertoireUtilisateur$
        Filtre$ = "Tous les fichiers (*.*)|*.*"
        Filtre  = 0
        NombreFichier = 0
        
        SelectionFichier$ = OpenFileRequester("Choisissez un ou plusieurs fichier à charger", FichierParDefaut$, Filtre$, Filtre, #PB_Requester_MultiSelection)
        
        NombreFichier = 0
        
        While SelectionFichier$
          AddElement(Fichier())
          Fichier() = SelectionFichier$
          SelectionFichier$ = NextSelectedFileName()
          NombreFichier + 1
        Wend
        
        SetGadgetAttribute(#ProgressBarProgression, #PB_ProgressBar_Maximum, NombreFichier)
        
        ForEach Fichier()
          
          NomFichier$ = GetFilePart(Fichier())
          CheminFichier$ = GetPathPart(Fichier())
          
          NombreFichiersEditeur = CountGadgetItems(#ListIcon_explorateur_fichier)
          
          For VerifficationFichiers = 0 To NombreFichiersEditeur
            NomFichiers$ = GetGadgetItemText(#ListIcon_explorateur_fichier, VerifficationFichiers)
            
          If NomFichiers$ <> Fichier()
              Trouver = 0
              Continue
            Else
              Trouver = 1
              DejaTrouver = 1
              Break
            EndIf
            
          Next
          
          If Trouver = 0
            Progression + 1
            AddGadgetItem(#ListIcon_explorateur_fichier, -1, CheminFichier$ + NomFichier$, GetAssociatedFileIcon(Fichier(), #SHGFI_SMALLICON))
            SetGadgetState(#ProgressBarProgression, Progression)
          EndIf
          
        Next
        
        If DejaTrouver = 1
          MessageRequester("Information", "      Certains fichiers ont été igniorer parce-qu'ils sons déjà dans la liste !", 64)
        EndIf
        
        
      ElseIf GadgetID = #Button_valider
        NombreFichiersEditeur = CountGadgetItems(#ListIcon_explorateur_fichier)
        
        For VerifficationFichiers = 0 To NombreFichiersEditeur
          SelectionFichier$ + GetGadgetItemText(#ListIcon_explorateur_fichier, VerifficationFichiers) + "|"
        Next
        
        CloseWindow(#Window_0)
        Event = #PB_Event_CloseWindow
        GenerationData()
        
      ElseIf GadgetID = #Button_quitter
        End
        
      EndIf
      
    ElseIf Event = #PB_Event_Menu
      If Menu = 1 ; Cocher la selection
        
        NombreFichiers = CountGadgetItems(#ListIcon_explorateur_fichier)
        
        For DecocheCase = 1 To NombreFichiers
          EtasSelection = GetGadgetItemState(#ListIcon_explorateur_fichier, DecocheCase - 1)
          
          If EtasSelection = 1 
            SetGadgetItemState(#ListIcon_explorateur_fichier, DecocheCase - 1, 3)
          EndIf
          
        Next
        
      ElseIf Menu = 2 ; Décocher la selection
        
        NombreFichiers = CountGadgetItems(#ListIcon_explorateur_fichier)
        
        For DecocheCase = 1 To NombreFichiers
          EtasSelection = GetGadgetItemState(#ListIcon_explorateur_fichier, DecocheCase - 1)
          
          If EtasSelection = 3
            SetGadgetItemState(#ListIcon_explorateur_fichier, DecocheCase - 1, 1)
          EndIf
          
        Next
        
      ElseIf Menu = 3 ; Supprimer la selection
        SupprimerFichier()
        
      ElseIf Menu = 4 ; Sélectionner Tous
        
        NombreFichiers = CountGadgetItems(#ListIcon_explorateur_fichier)
        
        For SelectionCase = 0 To NombreFichiers
          EtasSelection = GetGadgetItemState(#ListIcon_explorateur_fichier, SelectionCase)
          
          If EtasSelection <> #PB_ListIcon_Selected
            SetGadgetItemState(#ListIcon_explorateur_fichier, SelectionCase, #PB_ListIcon_Selected)
          EndIf
          
        Next
        
      ElseIf Menu = 5 ; Désélectionner Tous
        
        NombreFichiers = CountGadgetItems(#ListIcon_explorateur_fichier)
        
        For SelectionCase = 0 To NombreFichiers
          EtasSelection = GetGadgetItemState(#ListIcon_explorateur_fichier, SelectionCase)
          
          If EtasSelection = #PB_ListIcon_Selected
            SetGadgetItemState(#ListIcon_explorateur_fichier, SelectionCase, 0)
          EndIf
          
        Next
        
      EndIf
      
    EndIf
    
  Until Event = #PB_Event_CloseWindow ; End of the event loop
EndProcedure

MaFenetre()
; GenerationData()
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: Précalculation du nombre de fichier charger

Message par nico »

Finalement, dans ton dernier code, tu as résolu ton problème de départ ou pas ?
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Re: Précalculation du nombre de fichier charger

Message par dayvid »

Oui grace à Ar'S

Tu nas pas vue que Ar'S ma donner une solution ?!
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: Précalculation du nombre de fichier charger

Message par nico »

Donc en gros, tu m'expliques que tu t'es entêter à me dire que calculer en même temps le nombre de fichiers ainsi que le nom des fichiers dans une même boucle avec NextSelectedFileName() te posait problème et que finalement non.

En gros, tu t'es créé un problème qui n'existait pas et tu t'étonnes que je n'arrivais pas à te comprendre. :lol:

Bref, j'ai essayé ton programme et y a des trucs qui me chagrinne:

Ton ProgressBarGadget ne sert à rien, on est d'accord que ton programme est destiné aux utilisateur de PureBasic pour poster des codes sources avec datas sur les forums, donc on va pas charger des dizaines de fichiers.

Tu génères les datas dans un fichier, le presse papier est mieux non? parce que sinon faut que j'ouvre ton fichier, tout sélectionner, pour ensuite le copier!

Quand tu cliques sur le bouton pour choisir des images, ce serait bien qu'il ouvre par défaut le dossier "images"
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Re: Précalculation du nombre de fichier charger

Message par dayvid »

Donc en gros, tu m'expliques que tu t'es entêter à me dire que calculer en même temps le nombre de fichiers ainsi que le nom des fichiers dans une même boucle avec NextSelectedFileName() te posait problème et que finalement non.
Ba ouais mdr faut le voir pour le croire :lol:
En gros, tu t'es créé un problème qui n'existait pas et tu t'étonnes que je n'arrivais pas à te comprendre.
Arf ba ouais, que veut tu que je te dise, elle est bien bonne c'elle la quand même non :lol:

Mais il y avait quand même vraiment un véritable problème mais je ne l'avais pas pris dans le bon sens
Je m'obstinais à voir quelque chose qui n'étais pas possible a réaliser et du coup j'ai pas réfléchie comment faire autrement :lol:
Pourquoi chercher à faire simple quand on peut faire compliquer hein :mrgreen:
Bref, j'ai essayé ton programme et y a des trucs qui me chagrinne:

Ton ProgressBarGadget ne sert à rien, on est d'accord que ton programme est destiné aux utilisateur de PureBasic pour poster des codes sources avec datas sur les forums, donc on va pas charger des dizaines de fichiers.
Ah, ta ta ta ta ta, je ne suis pas d'accord avec toi Nico, ça sert à quelque chose > A rien :mrgreen:
Si sa servais a voir la progression du chargement, mais je te l'accorde, c'est pas top :|

Je te r'asure, je suis en train de modifier ça pour faire mieux :wink:
Tu génères les datas dans un fichier, le presse papier est mieux non ?
parce que sinon faut que j'ouvre ton fichier, tout sélectionner, pour ensuite le copier !
Non mais c'est la poil qui se moque du chaudron là, qu'est ce qu’il faut pas entendre, jamais content hein :mrgreen:
Bon ok je te l'accorde mais c'est bien parce que je t'aime bien hein :mrgreen:

Si j'ai fait comme ça, c'est que ça ne rajoute pas une couche supplémentaire de traitement fastidieux > Parcourir la liste et stoker ça dans une variable !
Je crois que tu te rend peut être pas compte le temps que ça va prendre :wink:

Au pire ce que je peux faire pour optimiser ceci est de demander à l'utilisateur s'il veut copier le code du fichier dans le presse papier, ça me semble correcte comme alternative non ?
Quand tu cliques sur le bouton pour choisir des images, ce serait bien qu'il ouvre par défaut le dossier "images"
C'est un point de vue comme un autre car moi je ne mets JAMAIS mes images ICI
Bin v'oui hein car si le system plante et que faut tous réinstaller, tu es dans la mouise comme qui dirais
C'est comme mes documents, JAMAIS dans le dossier de mes documents de Windows !

Mais je peux a la rigueur modifier cela !
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Précalculation du nombre de fichier charger

Message par Ar-S »

Ce n'est pas de stocker ton listing data dans une variable qui prendra du temps, ni même un setclipboardtext(tavariable$).
Allons !

Pour le choix du repertoire de départ, je choisirai le répertoire de l'exe lors du 1er lancement puis le soft se souviendrait du dernier répertoire ou il y avait une image. Un petit fichier prefs et hop. c'est rien du tout à faire.
Dernière modification par Ar-S le jeu. 15/mars/2012 19:09, modifié 1 fois.
~~~~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
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Re: Précalculation du nombre de fichier charger

Message par dayvid »

Ce n'est pas de stocker ton listing data dans une variable qui prendra du temps, ni même un setclipboardtext(tavariable$).
Allons !
A ouais t'es bien sur de ça car tu m'as l'air bien sur de toi là :|

Si ce sont de petites images et qu'il y en a pas trop, ça irra !
Dans le cas contraire cella va beaucoup ralentir le programme crois en mon experience Ar'S :wink:

Tu veux parier la dessue :?:

Au pire, tu c'est ce que je vais faire ?, et bien je vais demander a l'utilisateur de choisir
Mais ce qui serais pas mal aussi c'est de crée une héstimation du temps que cella va prendre !
Pour le choix du repertoire de départ, je choisirai le répertoire de l'exe lors du 1er lancement puis le soft se souviendrai du dernier répertoire ou il y avait une image. Un petit fichier prefs et hop. c'est rien du tout à faire.
Pour l'autre demande, je fait ça :)

Merci pour vos idée, t'fason il est loin d'être finis ce programme, a suivre :arrow:
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Précalculation du nombre de fichier charger

Message par Ar-S »

crois en mon experience Ar'S
:mrgreen:

Plus sérieusement, que la création de ton listing data prenne du temps, c'est un peu normal, surtout pour une grosse image, mais si pendant la création les données sont aussi stockées dans une variable, je ne vois pas trop en quoi ton setgadgettext(mavariable$) va ralentir ton programme.

Pour l'idée de fichier pref, ce n'est pas une demande hein. C'est quelque chose que je fais pour tout mes programmes ou presque. (tout comme la position de la fenêtre en quittant etc..) Ce sont de petites choses qui rendent un logiciel plus agréable d'utilisation.
~~~~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
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Re: Précalculation du nombre de fichier charger

Message par dayvid »

mais si pendant la création les données sont aussi stockées dans une variable, je ne vois pas trop en quoi ton setgadgettext(mavariable$) va ralentir ton programme.
Heu... Moi parler la france, pas le momboula :mrgreen:
Non j'ai pas saisie ce que tu voulais me dire :wink:
Pour l'idée de fichier pref, ce n'est pas une demande hein. C'est quelque chose que je fais pour tout mes programmes ou presque. (tout comme la position de la fenêtre en quittant etc..) Ce sont de petites choses qui rendent un logiciel plus agréable d'utilisation.
Je suis d'accord mais pour le moment j'y suis pas, je vien de m'arracher les cheveux a crée une barre de progression:

Par exemple, charge 1000 petite image ou moins (Pas plus de 100 X 100, je conseil plus petit)
ensuite appuie sur le bouton "pause", fait "annuler", recommence à ajouter ces même images et...

Le programme retien ce que tu a charger et fait en sorte d'igniorer les images déjà charger
La barre de progression ainsi que les valeurs sont conservées et puis est recalculer la procedure de chargement !

Bref un véritable casse tête, j'ai passer un peut de temps là dessue mais j'ai fini par y arriver
Ya encore pas mal de choses a faire mais déjà c'est pas mal, jme suis surement compliquer la vie mais bon :lol:

Note: Si le programme semble ne pas réagir, c'est normale, ya pas mal de choses a faire
donc sa prend quelques secondes donc soit un peut patient, ne pousse pas mémé dans les Orties et casse pas tous pour changer tu sera mignion :lol: :mrgreen:

Je t'es dit, il y a encore du travail mais ça vient :)

Edit: Bon, j'ai une nouvel a vous annoncer:
J'ai plus de cheveux sur le cayou :lol: bin oui car a force de me les aracher j'en est plus :lol:

Bon je pond ça, ça marche bien si ce n'est mon problème du code d'érreur :!:
Et aussi impossible d'activer la gestion des treads, il me sort un code d'érreur :!:

Le problème vien pt'etre de là qui sais :idea:

Code : Tout sélectionner

; Crée par monsieur dieppedalle david le 7 mars 2012
; Mise a jour le 14 mars 2012

UsePNGImageDecoder()
UseJPEG2000ImageDecoder()
UseJPEGImageDecoder()
UseTGAImageDecoder()
UseTIFFImageDecoder()

Global FichierImage$ = ""
Global SelectionFichier$ = ""
Global Pause = 0
Global Annuler = 0

Global Progression = 0
Global SauvegardeProgression = 0
Global Pourcentage.d = 0
Global Pourcentage$ = ""
Global StatePause = 0

Global NewList CheminFichier.s()
Global NewList NomFichier.s()
Global NewList Fichier.s()
Global NewList ExtantionFichier.s()

Global NewList DataImage.s()
Global NewList ImageNoncharger.s()
Global NewList FichierIncorrecte.s()
Global NewList NumeroImage.l()

Enumeration
  #Image
  #FichierImage
  #Window_0
  #Window_1
  #Texte
  #Texte2
  #Texte3
  #Button_pause
  #Button_annuler
  #ListIcon_explorateur_fichier
  #ProgressBarProgression
  #MenuePopup
  #Button_supprimer
  #Button_ajouter
  #Button_valider
  #Button_quitter
EndEnumeration

Procedure DisableAero(WindowsID.i, State.i)
  If OpenLibrary(0, "dwmapi.dll")
    
    If State
      State = 1
    Else
      State = 2
    EndIf
    
    CallFunction(0, "DwmSetWindowAttribute", WindowsID, 2, @State, SizeOf(Long))
    CloseLibrary(0)
  EndIf
EndProcedure

Procedure GetAssociatedFileIcon(IconPath.s, IconSize)
  Protected FileInfo.SHFILEINFO
  SHGetFileInfo_(IconPath, 0, @FileInfo, SizeOf(SHFILEINFO), #SHGFI_ICON | IconSize) 
  ProcedureReturn FileInfo\hIcon 
EndProcedure

Procedure SupprimerFichier()
  
  NombreFichiers = CountGadgetItems(#ListIcon_explorateur_fichier)
  
  For VerifficationSelection = NombreFichiers - 1 To 0 Step - 1
    SelectionFichiers = GetGadgetItemState(#ListIcon_explorateur_fichier, VerifficationSelection)
    
    If SelectionFichiers = #PB_ListIcon_Checked Or SelectionFichiers = #PB_ListIcon_Checked | #PB_ListIcon_Selected
      Checked = 1
      Break
    EndIf
    
    Checked = 0
    
  Next
  
  If Checked = 1
    Reponce = MessageRequester("Attention", "      Vous êtes sur de vouloir supprimer ces fichiers ?", 52)
    
    If Reponce = 6
      SelectionFichiers$ = ""
      
      For VerifficationSelection = NombreFichiers - 1 To 0 Step - 1
        SelectionFichiers = GetGadgetItemState(#ListIcon_explorateur_fichier, VerifficationSelection)
        If SelectionFichiers = #PB_ListIcon_Checked Or SelectionFichiers = #PB_ListIcon_Checked | #PB_ListIcon_Selected
          RemoveGadgetItem(#ListIcon_explorateur_fichier, VerifficationSelection)
          ;Debug VerifficationSelection
        EndIf
        
      Next
      
    EndIf
    
  EndIf
  
EndProcedure

; Procedure de chargement d'une image
Procedure.l ChargementImage()
  
  Position = 0
  
  ForEach NomFichier()
    
    SelectElement(CheminFichier(), Position)
    
    FichierImage$ = CheminFichier.s() + NomFichier()
    
    If FichierImage$
      
      If FindString(LCase(GetFilePart(FichierImage$)), ".bmp", 1) Or FindString(LCase(GetFilePart(FichierImage$)), ".png", 1) Or FindString(LCase(GetFilePart(FichierImage$)), ".jpg", 1) Or FindString(LCase(GetFilePart(FichierImage$)), ".tga", 1) Or FindString(LCase(GetFilePart(FichierImage$)), ".tif", 1)
        
        Image = LoadImage(#PB_Any, FichierImage$)
        
        If Image <> 0
          AddElement(NumeroImage())
          NumeroImage() = Image
        Else
          AddElement(ImageNoncharger())
          ImageNoncharger() = GetFilePart(FichierImage$)
          ; MessageRequester("Erreur de chargement !", "      Impossible de charger l'image suivente: " + Chr(34) + GetFilePart(FichierImage$) + Chr(34) + " !", 16)
          ;End
        EndIf
        
      Else
        AddElement(FichierIncorrecte())
        FichierIncorrecte() = GetFilePart(FichierImage$)
        ; MessageRequester("Fichier invalide !", "      Veuillez choisir un fichier d'image invalide !", 48)
        ;End
      EndIf
      
    EndIf
    
    Position + 1
    
  Next
  
  If ListSize(ImageNoncharger()) > 0
    ForEach ImageNoncharger()
      ImageNoncharger$ + ImageNoncharger() + Chr(13) + "      "
    Next
    MessageRequester("Information Importante", "      Certains fichiers n'ont pas pue êtres charger !:" + Chr(13) + Tabulation$ + Chr(13) + "      " + ImageNoncharger$, 64)
  EndIf
  
  If ListSize(FichierIncorrecte()) > 0
    ForEach FichierIncorrecte()
      FichierIncorrecte$ + FichierIncorrecte() + Chr(13) + "      "
    Next
    MessageRequester("Information Importante", "      Des fichiers ont été igniorer car se ne sont pas des images valide !:" + Chr(13) + Tabulation$ + Chr(13)  + "      " + FichierIncorrecte$, 64)
  EndIf
  
EndProcedure

Procedure.s TraitementNomImage(NomImage$)
  
  ;--------------------------------------------------------------------------------------------------------------------------------------------
  ; Recherche et suppression de l'extantion du nom du fichier de l'image
  ;--------------------------------------------------------------------------------------------------------------------------------------------
  
;   For i = Len(NomImage$) To 1 Step - 1
;     Caractere$ = Mid(NomImage$, i, 1)
;     
;     If Caractere$ = "."
;       NomImage$ = Mid(NomImage$, 1,  i - 1)
;       Break
;     EndIf
;     
;   Next
  
  ; --------------------------------------------------------------------------------------------------------------------------------------------
  ; Convertion des caractères a accent
  ;--------------------------------------------------------------------------------------------------------------------------------------------
  
  NomImage$ = LCase(NomImage$) ; On passe tout en min histoire que ce soit propre et que le ReplaceString() dure 2 x moins longtemps
  CharToFind.s = ".àáâãäåßçèéêëìíîï ñòóôõöÞùúûüýÿ-"
  CharToReplace.s = "_aaaaaabceeeeiiii_nooooopuuuuyy_"
  
  For i  =  1 To Len(CharToFind) 
    ReplaceString(NomImage$, Mid(CharToFind, i, 1), Mid(CharToReplace, i, 1), #PB_String_InPlace, 1)
  Next
  
  ; Veriffication pour les caractères spéciaux passant de 1 à 2 caractères
  NomImage$ = ReplaceString(NomImage$, Chr(156), "oe") ; "œ", Currieusement ça ne marche pas si l'on met la chaine de caractère "œ" a la place de Chr(156) !
  NomImage$ = ReplaceString(NomImage$, "æ", "ae") ; Mais ici, aucun problème a signialer, à n'i rien comprendre !
  
  
  ProcedureReturn NomImage$
  
EndProcedure

Procedure.s ConvertDataImage()
  
  Position = 0
  
  HideGadget(#ListIcon_explorateur_fichier, 1)
  
  DisableGadget(#Button_supprimer, 1)
  DisableGadget(#Button_ajouter, 1)
  DisableGadget(#Button_valider, 1)
  DisableGadget(#Button_quitter, 1)
  
  HideGadget(#Texte3, 1)
  HideGadget(#Texte, 0)
  HideGadget(#Texte2, 0)
  
  HideGadget(#ProgressBarProgression, 0)
  HideGadget(#Button_pause, 1)
  HideGadget(#Button_annuler, 1)
  
  HideGadget(#Texte2, 0)
  
  
  SetGadgetText(#Texte, "Veuillez patientez Svp, Génération du code Data en court...")
  
  SetGadgetState(#ProgressBarProgression, 0)
  SetGadgetAttribute(#ProgressBarProgression, #PB_ProgressBar_Maximum, ListSize(NumeroImage()))
  
  Pourcentage.d = ListSize(NumeroImage()) / 100
  Progression = 0
  
  ForEach NumeroImage()
    
    SelectElement(CheminFichier(), Position)
    SelectElement(NomFichier(), Position)
    SelectElement(ExtantionFichier(), Position)
    
    FichierImage$ = CheminFichier.s() + NomFichier()
    
    SelectElement(NumeroImage(), Position)
    
    AddElement(DataImage())
    DataImage() + "DataSection" + Chr(13) + Chr(10) + TraitementNomImage(GetFilePart(FichierImage$)) + ":" + Chr(13) + Chr(10)
    
    LigneCouleurHexa = 0
    
    X = 0
    Y = 0
    
    LargeurImage = ImageWidth(NumeroImage())
    HauteurImage = ImageHeight(NumeroImage())
    
    StartDrawing(ImageOutput(NumeroImage()))
    DrawingMode(#PB_2DDrawing_AlphaBlend)
    
    Repeat
      
      Couleur = Point(X, Y)
      
      If LigneCouleurHexa = 0
        AddElement(DataImage())
        DataImage() = "Data.l "
        LigneCouleurHexa + 1
      ElseIf LigneCouleurHexa < 50
        DataImage()+ "$" + Hex(Couleur, #PB_Long) + ", "
        LigneCouleurHexa + 1
      Else
        DataImage() + "$" + Hex(Couleur, #PB_Long) + Chr(13) + Chr(10)
        LigneCouleurHexa = 0
      EndIf
      
      If X <> LargeurImage - 1
        X + 1
      Else
        X = 0
        Y + 1
      EndIf
      
    Until X = LargeurImage - 1 And Y = HauteurImage - 1
    
    DataImage() = Mid(DataImage(), 1, Len(DataImage()) - 2) + Chr(13) + Chr(10)
        
    AddElement(DataImage())
    DataImage() + "EndDataSection" + Chr(13) + Chr(10) + Chr(13) + Chr(10)
    
    StopDrawing()
    
    Position + 1
    
    Progression + 1
    AddGadgetItem(#ListIcon_explorateur_fichier, -1, Fichier(), GetAssociatedFileIcon(Fichier(), #SHGFI_SMALLICON))
    Pourcentage$ = StrD(Progression / Pourcentage.d, 2) + " %"
    SetGadgetText(#Texte2, "Fichier actuellement convertie: " + Str(Progression) + " / " + Str(ListSize(NumeroImage())) + " - " + Pourcentage$)
    SetGadgetState(#ProgressBarProgression, Progression)
    
  Next
  
EndProcedure

Procedure GenerationData(G)
  
  Fichiers = 1
  Selection1Fichier$ = StringField(SelectionFichier$, Fichiers, "|")
  NombreFichier = 0
  
  Repeat
    
    NomFichier$ = GetFilePart(Selection1Fichier$)
    CheminFichier$ = GetPathPart(Selection1Fichier$)
    ExtensionFichier$ = GetExtensionPart(Selection1Fichier$)
    
    AddElement(CheminFichier())
    CheminFichier() = CheminFichier$
    
    AddElement(NomFichier())
    NomFichier() = NomFichier$
    
    AddElement(ExtantionFichier())
    ExtantionFichier() = ExtensionFichier$
    
    NombreFichier + 1
    
    Fichiers + 1
    
    Selection1Fichier$ = StringField(SelectionFichier$, Fichiers, "|")
    
  Until Selection1Fichier$ = ""
  
  Fichiers = 1
  
  Selection1Fichier$ = StringField(SelectionFichier$, Fichiers, "|")
  NombreFichier = 0
  
  ChargementImage()
  ConvertDataImage()
  
  If OpenFile(1, "ConvertDataImage.txt")
    FileSeek(1, 0) ; Place le pointeur au début du fichier pour tous supprimer
    TruncateFile(1) ; Supprimer tous ce qui se trouve après le pointeur d'écriture

    ForEach DataImage()
      FileSeek(1, Lof(1)) ; Place le pointeur à la fin du fichier en utilisant le résultat de Lof() 
      WriteString(1, DataImage()) ; Ecrie le contenue de DataImage()
    Next
    
    CloseFile(1)
    
    If ListSize(NumeroImage()) > 0
      MessageRequester("Oppération terminer avec succer !", "      Le code a été copier dans le fichier ConvertDataImage !", 64)
    EndIf
    
  Else
    Debug 0
  EndIf
  
EndProcedure

Procedure Ajouter(A)
  RepertoireUtilisateur$ = GetHomeDirectory()
  RepertoireUtilisateur$ + "\Bureau\"
  FichierParDefaut$ = RepertoireUtilisateur$
  Filtre$ = "Tous les fichiers (*.*)|*.*"
  Filtre  = 0
  NombreFichier = 0
  SetGadgetText = 0
  Limite = 2
  
  ClearList(Fichier())
  
  NombreFichiersEditeur = CountGadgetItems(#ListIcon_explorateur_fichier)
  
  SelectionFichier$ = OpenFileRequester("Choisissez un ou plusieurs fichier à charger", FichierParDefaut$, Filtre$, Filtre, #PB_Requester_MultiSelection)
  
  HideGadget(#ListIcon_explorateur_fichier, 1)
  
  DisableGadget(#Button_supprimer, 1)
  DisableGadget(#Button_ajouter, 1)
  DisableGadget(#Button_valider, 1)
  DisableGadget(#Button_quitter, 1)
  
  HideGadget(#Texte, 0)
  HideGadget(#Texte3, 0)
  
  SetGadgetText(#Texte, "Recherche des fichiers déjà présent, Veuillez patienter:")
  SetGadgetText(#Texte3, "")
  
  While SelectionFichier$
    
    NombreFichier + 1
    
    NomFichier$ = GetFilePart(SelectionFichier$)
    CheminFichier$ = GetPathPart(SelectionFichier$)
    
    For VerifficationFichiers = 0 To NombreFichiersEditeur
      NomFichiers$ = GetGadgetItemText(#ListIcon_explorateur_fichier, VerifficationFichiers)
      
      If NomFichiers$ <> SelectionFichier$
        Trouver = 0
        Continue
      Else
        Trouver = 1
        FichierDejaTrouver + 1
        Break
      EndIf
      
    Next
    
    If Trouver = 0
      AddElement(Fichier())
      Fichier() = SelectionFichier$
    Else
      DejaTrouver = 1
    EndIf
    
    SelectionFichier$ = NextSelectedFileName()
    
    SetGadgetText + 1
    
    If Limite = SetGadgetText
      Limite + 2
      SetGadgetText$ + "."
      SetGadgetText(#Texte3, SetGadgetText$)
    ElseIf Limite > 172
      Limite = 2
      SetGadgetText = 0
      SetGadgetText$ = ""
    EndIf
    
  Wend
  
  Pourcentage.d = NombreFichier / 100
  
  DisableGadget(#Button_supprimer, 0)
  DisableGadget(#Button_ajouter, 0)
  DisableGadget(#Button_valider, 0)
  DisableGadget(#Button_quitter, 0)
  
  HideGadget(#Button_supprimer, 1)
  HideGadget(#Button_ajouter, 1)
  HideGadget(#Button_valider, 1)
  HideGadget(#Button_quitter, 1)
  
  HideGadget(#ProgressBarProgression, 0)
  HideGadget(#Button_pause, 0)
  HideGadget(#Button_annuler, 0)
  
  HideGadget(#Texte2, 0)
  HideGadget(#Texte3, 1)
  
  SetGadgetText(#Texte, "Veuillez patientez Svp, Chargement des fichiers en court...")
  
  SetGadgetState(#ProgressBarProgression, SauvegardeProgression)
  SetGadgetAttribute(#ProgressBarProgression, #PB_ProgressBar_Maximum, SauvegardeProgression + ListSize(Fichier()))
  
  ForEach Fichier()
    
    If Pause = 0
      
      If Annuler = 1
        Annuler = 0
        Goto HideGadget
      EndIf
      
        Progression + 1
        AddGadgetItem(#ListIcon_explorateur_fichier, -1, Fichier(), GetAssociatedFileIcon(Fichier(), #SHGFI_SMALLICON))
        Pourcentage$ = StrD(Progression / Pourcentage.d, 2) + " %"
        SetGadgetText(#Texte2, "Fichier actuellement charger: " + Str(Progression) + " / " + Str(SauvegardeProgression + ListSize(Fichier())) + " - " + Pourcentage$)
        SetGadgetState(#ProgressBarProgression, Progression)
    
  Else
    Repeat
      Delay(5)
    Until Pause = 0
  EndIf
  
  Next
  
  HideGadget:
  
  HideGadget(#Texte3, 1)
  HideGadget(#Texte, 1)
  HideGadget(#Texte2, 1)
  HideGadget(#ProgressBarProgression, 1)
  HideGadget(#ListIcon_explorateur_fichier, 0)
  
  HideGadget(#Button_pause, 1)
  HideGadget(#Button_annuler, 1)
  
  HideGadget(#Button_supprimer, 0)
  HideGadget(#Button_ajouter, 0)
  HideGadget(#Button_valider, 0)
  HideGadget(#Button_quitter, 0)
  
  If DejaTrouver = 1
    MessageRequester("Information", "      Certains fichiers ont été igniorer parce-qu'ils sons déjà dans la liste !", 64)
  EndIf
  
  Pause = 0
  Annuler = 0
  
  SetGadgetText(#Button_pause, "Pause")
  
EndProcedure

Procedure MaFenetre()
  If OpenWindow(#Window_0, 421, 212, 425, 275, "Convertisseur de fichier image vers fichier texte",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget)
    DisableAero(WindowID(#Window_0), 1)
    
    WindowBounds(#Window_0, 365, 250, #PB_Ignore, #PB_Ignore)
    
    ListIconGadget(#ListIcon_explorateur_fichier, 10, 10, 405, 205, "Fichiers", 9999, #PB_ListIcon_CheckBoxes | #PB_ListIcon_MultiSelect | #PB_ListIcon_GridLines)
    
    TextGadget(#Texte, 60, 75, 300, 15, "Veuillez patientez Svp, Chargement des fichiers en court...", #PB_Text_Center)
    ProgressBarGadget(#ProgressBarProgression, 60, 100, 300, 15, 1, 1)
    
    Pourcentage$ = StrD(Progression / Pourcentage.d)
    TextGadget(#Texte2, 60, 170, 300, 15, "Fichier actuellement charger: " + Str(NombreFichier) + " / " + Str(NombreFichierMax) + " - " + Pourcentage$, #PB_Text_Center)
    
    TextGadget(#Texte3, 80, 90, 260, 15, "")
    
    HideGadget(#Texte, 1)
    HideGadget(#Texte2, 1)
    HideGadget(#Texte3, 1)
    HideGadget(#ProgressBarProgression, 1)
    
    ButtonGadget(#Button_pause, 135, 235, 70, 25, "Pause")
    ButtonGadget(#Button_annuler, 215, 235, 70, 25, "Annuler")
    
    HideGadget(#Button_pause, 1)
    HideGadget(#Button_annuler, 1)
    
    HideGadget(#ListIcon_explorateur_fichier, 0)
    
    CreatePopupMenu(#MenuePopup)
    MenuItem(1, "Cocher la selection")
    MenuItem(2, "Décocher la selection")
    MenuBar()
    MenuItem(3, "Supprimer la selection")
    MenuBar()
    MenuItem(4, "Sélectionner Tous")
    MenuItem(5, "Désélectionner Tous")
    
    ButtonGadget(#Button_supprimer, 130, 235, 70, 25, "Supprimer")
    ButtonGadget(#Button_ajouter, 55, 235, 70, 25, "Ajouté")
    ButtonGadget(#Button_valider, 220, 235, 70, 25, "Valider")
    ButtonGadget(#Button_quitter, 295, 235, 70, 25, "Quitter")
    
    PureRESIZE_SetGadgetResize(#ListIcon_explorateur_fichier, 1, 1, 1, 1)
    
    PureRESIZE_SetGadgetResize(#Button_supprimer, 1, 0, 1, 1)
    PureRESIZE_SetGadgetProportionalResize(#Button_supprimer, 1, 0, 0, 0)
    
    PureRESIZE_SetGadgetResize(#Button_ajouter, 1, 0, 1, 1)
    PureRESIZE_SetGadgetProportionalResize(#Button_ajouter, 1, 0, 0, 0)
    
    PureRESIZE_SetGadgetResize(#Button_valider, 1, 0, 1, 1)
    PureRESIZE_SetGadgetProportionalResize(#Button_valider, 1, 0, 0, 0)
    
    PureRESIZE_SetGadgetResize(#Button_quitter, 1, 0, 1, 1)
    PureRESIZE_SetGadgetProportionalResize(#Button_quitter, 1, 0, 0, 0)
    
  EndIf
  
  Repeat ; Start of the event loop
    
    Event = WaitWindowEvent() ; This line waits until an event is received from Windows
    WindowID = EventWindow() ; The Window where the event is generated, can be used in the gadget procedures
    GadgetID = EventGadget() ; Is it a gadget event?
    Menu = EventMenu()
    EventType = EventType() ; The event type
    
    If Event = #PB_Event_Gadget
      
      If GadgetID = #ListIcon_explorateur_fichier
        
        If EventType = #PB_EventType_LeftDoubleClick
          Selection = GetGadgetState(#ListIcon_explorateur_fichier)
          
          If Selection > -1
            EtasSelection = GetGadgetItemState(#ListIcon_explorateur_fichier, Selection)
            
            If EtasSelection = 1
              SetGadgetItemState(#ListIcon_explorateur_fichier, Selection, 3)
            ElseIf EtasSelection = 3
              SetGadgetItemState(#ListIcon_explorateur_fichier, Selection, 1)
            EndIf
            
          EndIf
          
        ElseIf EventType = #PB_EventType_RightClick
          DisplayPopupMenu(#MenuePopup, WindowID(#Window_0))  
        EndIf
        
      ElseIf GadgetID = #Button_supprimer
        SupprimerFichier()
        
      ElseIf GadgetID = #Button_ajouter
        CreateThread(@Ajouter(), 0)
        
      ElseIf GadgetID = #Button_valider
        
        NombreFichiersEditeur = CountGadgetItems(#ListIcon_explorateur_fichier)
        
        For VerifficationFichiers = 0 To NombreFichiersEditeur
          SelectionFichier$ + GetGadgetItemText(#ListIcon_explorateur_fichier, VerifficationFichiers) + "|"
        Next
        
        CreateThread(@GenerationData(), 0)
        
      ElseIf GadgetID = #Button_quitter
        End
        
      ElseIf GadgetID = #Button_pause
        StatePause + 1
        
        If StatePause = 2
          StatePause = 0
          Pause = 0
          SetGadgetText(#Button_pause, "Pause")
        EndIf
        
        If StatePause = 1
          Pause = 1
          SetGadgetText(#Button_pause, "Reprendre")
        EndIf
        
      ElseIf GadgetID = #Button_annuler
        Pause = 0
        Annuler = 1
        StatePause - 1
        SauvegardeProgression = Progression
      EndIf
      
    ElseIf Event = #PB_Event_Menu
      If Menu = 1 ; Cocher la selection
        
        NombreFichiers = CountGadgetItems(#ListIcon_explorateur_fichier)
        
        For DecocheCase = 1 To NombreFichiers
          EtasSelection = GetGadgetItemState(#ListIcon_explorateur_fichier, DecocheCase - 1)
          
          If EtasSelection = 1 
            SetGadgetItemState(#ListIcon_explorateur_fichier, DecocheCase - 1, 3)
          EndIf
          
        Next
        
      ElseIf Menu = 2 ; Décocher la selection
        
        NombreFichiers = CountGadgetItems(#ListIcon_explorateur_fichier)
        
        For DecocheCase = 1 To NombreFichiers
          EtasSelection = GetGadgetItemState(#ListIcon_explorateur_fichier, DecocheCase - 1)
          
          If EtasSelection = 3
            SetGadgetItemState(#ListIcon_explorateur_fichier, DecocheCase - 1, 1)
          EndIf
          
        Next
        
      ElseIf Menu = 3 ; Supprimer la selection
        SupprimerFichier()
        
      ElseIf Menu = 4 ; Sélectionner Tous
        
        NombreFichiers = CountGadgetItems(#ListIcon_explorateur_fichier)
        
        For SelectionCase = 0 To NombreFichiers
          EtasSelection = GetGadgetItemState(#ListIcon_explorateur_fichier, SelectionCase)
          
          If EtasSelection <> #PB_ListIcon_Selected
            SetGadgetItemState(#ListIcon_explorateur_fichier, SelectionCase, #PB_ListIcon_Selected)
          EndIf
          
        Next
        
      ElseIf Menu = 5 ; Désélectionner Tous
        
        NombreFichiers = CountGadgetItems(#ListIcon_explorateur_fichier)
        
        For SelectionCase = 0 To NombreFichiers
          EtasSelection = GetGadgetItemState(#ListIcon_explorateur_fichier, SelectionCase)
          
          If EtasSelection = #PB_ListIcon_Selected
            SetGadgetItemState(#ListIcon_explorateur_fichier, SelectionCase, 0)
          EndIf
          
        Next
        
      EndIf
      
    EndIf
    
  Until Event = #PB_Event_CloseWindow ; End of the event loop
EndProcedure

MaFenetre()
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
Répondre