Heu... Moi parler la france, pas le momboula
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
: 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
Et aussi impossible d'activer la gestion des treads, il me sort un code d'érreur
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()