PureBasic

Forums PureBasic
Nous sommes le Mer 19/Juin/2013 14:01

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 44 messages ]  Aller à la page Précédente  1, 2, 3
Auteur Message
 Sujet du message: Re: Précalculation du nombre de fichier charger
MessagePosté: Mer 14/Mar/2012 13:29 
Hors ligne

Inscription: Mer 11/Nov/2009 18:17
Messages: 1251
Localisation: Poitiers (Vienne)
Là comme ça c'est encore mieux:

Code:
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


Haut
 Profil  
 
 Sujet du message: Re: Précalculation du nombre de fichier charger
MessagePosté: Mer 14/Mar/2012 14:18 
Hors ligne

Inscription: Mer 11/Nov/2009 18:17
Messages: 1251
Localisation: Poitiers (Vienne)
Voilà, j'ai réussi :D

Code:
; 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


Haut
 Profil  
 
 Sujet du message: Re: Précalculation du nombre de fichier charger
MessagePosté: Mer 14/Mar/2012 14:23 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 5323
Code:
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()

_________________
.: Ar-S :. - Windows 8 x64 - Radeon HD 7870 - PB 5.11
LDV MULTIMEDIA : Assistance informatique Isère (38) Oyeu
PURE BASIC forum non officiel : Forum PB


Haut
 Profil  
 
 Sujet du message: Re: Précalculation du nombre de fichier charger
MessagePosté: Mer 14/Mar/2012 15:44 
Hors ligne

Inscription: Mer 11/Nov/2009 18:17
Messages: 1251
Localisation: Poitiers (Vienne)
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


Haut
 Profil  
 
 Sujet du message: Re: Précalculation du nombre de fichier charger
MessagePosté: Mer 14/Mar/2012 20:28 
Hors ligne

Inscription: Mer 11/Nov/2009 18:17
Messages: 1251
Localisation: Poitiers (Vienne)
Voici une MAJ:

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

Code:
; 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


Haut
 Profil  
 
 Sujet du message: Re: Précalculation du nombre de fichier charger
MessagePosté: Mer 14/Mar/2012 20:28 
Hors ligne

Inscription: Mer 11/Nov/2009 18:17
Messages: 1251
Localisation: Poitiers (Vienne)
Voici une MAJ:

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

Code:
; 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


Haut
 Profil  
 
 Sujet du message: Re: Précalculation du nombre de fichier charger
MessagePosté: Mer 14/Mar/2012 21:42 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 13/Fév/2004 0:57
Messages: 3073
Finalement, dans ton dernier code, tu as résolu ton problème de départ ou pas ?


Haut
 Profil  
 
 Sujet du message: Re: Précalculation du nombre de fichier charger
MessagePosté: Mer 14/Mar/2012 22:33 
Hors ligne

Inscription: Mer 11/Nov/2009 18:17
Messages: 1251
Localisation: Poitiers (Vienne)
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


Haut
 Profil  
 
 Sujet du message: Re: Précalculation du nombre de fichier charger
MessagePosté: Mer 14/Mar/2012 23:29 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 13/Fév/2004 0:57
Messages: 3073
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"


Haut
 Profil  
 
 Sujet du message: Re: Précalculation du nombre de fichier charger
MessagePosté: Jeu 15/Mar/2012 2:18 
Hors ligne

Inscription: Mer 11/Nov/2009 18:17
Messages: 1251
Localisation: Poitiers (Vienne)
Citation:
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:

Citation:
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:

Citation:
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:

Citation:
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 ?

Citation:
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


Haut
 Profil  
 
 Sujet du message: Re: Précalculation du nombre de fichier charger
MessagePosté: Jeu 15/Mar/2012 12:23 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 5323
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.

_________________
.: Ar-S :. - Windows 8 x64 - Radeon HD 7870 - PB 5.11
LDV MULTIMEDIA : Assistance informatique Isère (38) Oyeu
PURE BASIC forum non officiel : Forum PB


Dernière édition par Ar-S le Jeu 15/Mar/2012 19:09, édité 1 fois.

Haut
 Profil  
 
 Sujet du message: Re: Précalculation du nombre de fichier charger
MessagePosté: Jeu 15/Mar/2012 14:10 
Hors ligne

Inscription: Mer 11/Nov/2009 18:17
Messages: 1251
Localisation: Poitiers (Vienne)
Citation:
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 !

Citation:
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


Haut
 Profil  
 
 Sujet du message: Re: Précalculation du nombre de fichier charger
MessagePosté: Jeu 15/Mar/2012 19:17 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 5323
Citation:
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.

_________________
.: Ar-S :. - Windows 8 x64 - Radeon HD 7870 - PB 5.11
LDV MULTIMEDIA : Assistance informatique Isère (38) Oyeu
PURE BASIC forum non officiel : Forum PB


Haut
 Profil  
 
 Sujet du message: Re: Précalculation du nombre de fichier charger
MessagePosté: Jeu 15/Mar/2012 21:11 
Hors ligne

Inscription: Mer 11/Nov/2009 18:17
Messages: 1251
Localisation: Poitiers (Vienne)
Citation:
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:

Citation:
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:
; 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


Haut
 Profil  
 
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 44 messages ]  Aller à la page Précédente  1, 2, 3

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Google Adsense [Bot], Micoute et 2 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye