ça marchait si bien hier (après l'aide précieuse de falsam sur l'affichage des icônes devant
les noms de fichiers) mais hop: encore un bug !
Bon. La connexion ftp marche bien, les icônes sont affichés devant les noms de fichiers,
je sélectionne un fichier (un seul pour tester) à gauche pour le transférer vers le chemin
ftp, je clique sur le bouton TRANSFERER, le transfert se fait normalement sans problème
le statut m'affiche: transfert terminé, le fichier xxx a été transféré avec succès. Jusqu'ici
je me plains pas. Tout va bien.
Mais une fois le transfert terminé, la liste des fichiers distants se vide (c'est prévu dans le
code, ClearItemList avant d'afficher le nouveau contenu: normal) mais elle reste vide, rien
n'est affiché, pourtant le programme doit ré-afficher le contenu du chemin distant juste
après le transfert.
Ouf! voilà, c'est ça mon problème.... j'ai vu et revu le code d'affichage (c'est la même
procédure d'affichage elle s'exécute pourtant au début après connexion...?)
Merci encore de votre éclaircissement
Voici le code:
Code : Tout sélectionner
Enumeration
#Mainform
#SeparLigne1
#Source
#Destination
#Connection
#FrameFtpInfo
#FTP_Serveur_Txt
#FTP_Serveur
#exemple1
#FTP_User_Txt
#FTP_User
#exemple2
#FTP_Mp_Txt
#FTP_Mp
#FTP_RepLocal_Txt
#FTP_RepLocal
#FTP_RepDistant_Txt
#FTP_RepDistant
#exemple3
#exemple4
#CheckMemoriser
#FrameFtpCon
#Connexion
#FTP_Parcourir
#HOME_Explorer_Rep
#HOME_Explorer
#FTP_Explorer_Rep
#FTP_Explorer
#Transferer
#StatutList
#FrameObs
#Ftp
EndEnumeration
UseJPEGImageDecoder()
UsePNGImageDecoder()
trans=CatchImage(0, ?trans)
parcourir=CatchImage(1, ?parcourir)
connecter=CatchImage(2, ?connecter)
DataSection
trans:
IncludeBinary "images\trans.jpg"
parcourir:
IncludeBinary "images\open.jpg"
connecter:
IncludeBinary "images\connecter.jpg"
EndDataSection
Global WindowStyle.i=#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_ScreenCentered|#PB_Window_SizeGadget
Global ErrorFound,Result,LocalPath$,FtpPath$,WChemin$,wFileSelected$
Global NbreFT,NbreEchec,Item,FullPath_Local$,FullPath_Ftp$,FolderIcon
Global WFtp$,WuserFtp$,WMpFtp$
Procedure GetAssociatedFileIcon(IconPath.s, Value.l)
Protected FileInfo.SHFILEINFO
SHGetFileInfo_(IconPath, 0, @FileInfo, SizeOf(SHFILEINFO), #SHGFI_ICON | Value)
ProcedureReturn FileInfo\hIcon
EndProcedure
FolderIcon = GetAssociatedFileIcon(GetHomeDirectory(), #SHGFI_SMALLICON)
Procedure OpenWindows()
ExamineDesktops()
Wlargeur=DesktopWidth(0)
Whauteur=DesktopHeight(0)
If OpenWindow(#Mainform, 0,0, Wlargeur, Whauteur, "FTP_test", WindowStyle)
If CreateGadgetList(WindowID(#Mainform))
WLar=(Wlargeur-100)/2:WHaut=(Whauteur/2) : wrow=260 : wcol=70+wlar
Frame3DGadget(#FrameFtpInfo,10,10,460,170,"Paramètres de connexion...")
TextGadget(#FTP_Serveur_Txt, 20, 30, 100, 20,"Serveur FTP :")
ComboBoxGadget(#FTP_Serveur, 120, 30, 200, 100,#PB_ComboBox_Editable)
TextGadget(#Exemple1, 330, 30, 110, 20,"(ex.: ftp.purebasic.com)")
TextGadget(#FTP_User_Txt, 20, 55, 100, 20,"Nom utilisateur :")
ComboBoxGadget(#FTP_User, 120, 55, 200, 100,#PB_ComboBox_Editable)
TextGadget(#Exemple2, 330, 55, 110, 20,"(ex.: fred)")
TextGadget(#FTP_Mp_Txt, 20, 80, 100, 20,"Mot de passe :")
StringGadget(#FTP_Mp, 120, 80, 200, 20,"",#PB_String_Password)
TextGadget(#FTP_RepLocal_Txt, 20, 105, 100, 20,"Répertoire local")
ButtonImageGadget(#FTP_Parcourir, 96, 102, 25, 22, ImageID(1))
StringGadget(#FTP_RepLocal, 122, 105, 198, 20,"")
TextGadget(#Exemple3, 330, 105, 110, 20,"(ex.: c:\mes fichiers\")
TextGadget(#FTP_RepDistant_Txt, 20, 130, 100, 20,"Répertoire distant")
StringGadget(#FTP_RepDistant, 120, 130, 200, 20,"")
TextGadget(#Exemple4, 330, 130, 110, 20,"(ex.: /public_html")
CheckBoxGadget(#CheckMemoriser,120,150,250,20,"Mémoriser les paramètres de connexion")
ButtonImageGadget(#Connection, 9+wlar, 55, 61, 45, ImageID(2))
ButtonImageGadget(#Transferer, 15+wlar, wrow+90, 49, 30, ImageID(0))
Frame3DGadget(#FrameFtpCon,wcol,10,460,170,"Statut...")
ListViewGadget(#StatutList, wcol+10, 30, 440,135)
Frame3DGadget(#SeparLigne1,10,wrow-70,wlargeur-42,6,"",#PB_Frame3D_Single)
TextGadget(#HOME_Explorer_Rep, 10, wrow-15, wlar, 20,"", #PB_Text_Border)
ExplorerListGadget(#HOME_Explorer, 10, wrow+10, Wlar, whaut, "", #PB_Explorer_MultiSelect)
TextGadget(#FTP_Explorer_Rep, wcol, wrow-15, wlar, 20,"", #PB_Text_Border)
ListIconGadget(#Ftp_Explorer, wcol, wrow+10, wlar, whaut,Space(20)+"Nom",160,#PB_ListIcon_GridLines )
AddGadgetColumn(#Ftp_Explorer,1, "Taille", 50)
AddGadgetColumn(#Ftp_Explorer,2, " Type", 80)
AddGadgetColumn(#Ftp_Explorer,3, "Date modification", 100)
EndIf
EndIf
EndProcedure
Procedure SetGadgetColors()
SetGadgetColor(#StatutList,#PB_Gadget_BackColor,RGB(98, 98, 98))
SetGadgetColor(#StatutList,#PB_Gadget_FrontColor,RGB(230, 230, 230))
SetGadgetColor(#exemple1, #PB_Gadget_FrontColor,RGB(140, 140, 140))
SetGadgetColor(#exemple2, #PB_Gadget_FrontColor,RGB(140, 140, 140))
SetGadgetColor(#exemple3, #PB_Gadget_FrontColor,RGB(140, 140, 140))
SetGadgetColor(#exemple4, #PB_Gadget_FrontColor,RGB(140, 140, 140))
;-----------ToolTip()
GadgetToolTip(#Transferer, "Démarrer le transfert...")
GadgetToolTip(#FTP_Parcourir, "Parcourir...")
GadgetToolTip(#Connection, "Se connecter...")
EndProcedure
Procedure SetDefaulValues()
;WFtp$="127.0.0.1"
;WuserFtp$="user"
;WMpFtp$="user"
;LocalPath$="D:\"
;FtpPath$="\data\"
;------------------
WFtp$="ftp.purebasic.com"
WuserFtp$="fred"
WMpFtp$="forum"
LocalPath$="c:\"
FtpPath$="/public_html/"
SetGadgetText(#FTP_Serveur,WFtp$)
SetGadgetText(#FTP_User,WuserFtp$)
SetGadgetText(#FTP_Mp,WMpFtp$)
SetGadgetText(#FTP_RepLocal,LocalPath$)
SetGadgetText(#FTP_RepDistant,FtpPath$)
SetGadgetText(#HOME_Explorer_Rep,LocalPath$)
SetGadgetText(#FTP_Explorer_Rep,FtpPath$)
;-------------------
;DisableGadget(#Transferer,1)
;-------------------
wDate$ = FormatDate("%dd/%mm/%yyyy", Date())
;-------------------
EndProcedure
Procedure GetFtpInfos()
WFtp$=GetGadgetText(#FTP_Serveur)
WuserFtp$=GetGadgetText(#FTP_User)
WMpFtp$=GetGadgetText(#FTP_Mp)
LocalPath$=GetGadgetText(#FTP_RepLocal)
FtpPath$=GetGadgetText(#FTP_RepDistant)
SetGadgetText(#HOME_Explorer_Rep,LocalPath$)
SetGadgetText(#FTP_Explorer_Rep,FtpPath$)
EndProcedure
Procedure Afficher_Fichiers_Ftp()
ClearGadgetItemList(#FTP_Explorer)
If SetFTPDirectory(#Ftp, FtpPath$)
If ExamineFTPDirectory(#Ftp)
While NextFTPDirectoryEntry(#Ftp)
Wtype=FTPDirectoryEntryType(#Ftp)
Wdate=FTPDirectoryEntryDate(#Ftp)
wDate$ = FormatDate("%dd/%mm/%yyyy", wDate)
If wtype =#PB_FTP_File
Fichier$ = FTPDirectoryEntryName(#Ftp)
Icon = GetAssociatedFileIcon(Fichier$, #SHGFI_SMALLICON | #SHGFI_USEFILEATTRIBUTES)
AddGadgetItem(#FTP_Explorer,-1,Fichier$+Chr(10)+""+Chr(10)+"fichier"+Chr(10)+wdate$, Icon)
EndIf
If wtype =#PB_FTP_Directory
AddGadgetItem(#FTP_Explorer,-1,FTPDirectoryEntryName(#Ftp)+Chr(10)+""+Chr(10)+"dossier"+Chr(10)+wdate$, FolderIcon)
EndIf
Wend
EndIf
EndIf
EndProcedure
Procedure Demarrer_Transfert_FTP()
For item=0 To CountGadgetItems(#HOME_Explorer)
If GetGadgetItemState(#HOME_Explorer, item) & #PB_Explorer_Selected
wFileSelected$=GetGadgetItemText(#HOME_Explorer, item)
FullPath_Local$=LocalPath$+wFileSelected$
FullPath_Ftp$=FtpPath$+wFileSelected$
If SendFTPFile(#Ftp, FullPath_Local$,FullPath_ftp$,1)
AddGadgetItem (#StatutList,-1,Space(10) + wFileSelected$ + " a été transféré avec succès")
NbreFt=NbreFt+1
Else
AddGadgetItem (#StatutList,-1,Space(10)+wFileSelected$ + " n'a pas pu être transféré")
NbreEchec=NbreEchec+1
EndIf
EndIf
Next item
EndProcedure
OpenWindows()
SetGadgetColors()
SetDefaulValues()
GetFtpInfos()
InitNetwork()
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_CloseWindow
End
EndIf
If EventID = #PB_Event_Gadget
Select EventGadget()
Case #Connection
ClearGadgetItemList(#FTP_Explorer)
GetFtpInfos()
If wFtp$=""
MessageRequester("Erreur","Adresse FTP incorrecte ! ")
Goto Fin_Connection
EndIf
If wUserFtp$=""
MessageRequester("Erreur","Nom utilisateur incorrect ! ")
Goto Fin_Connection
EndIf
If wMpFtp$=""
MessageRequester("Erreur","Mot de passe incorrect ! ")
Goto Fin_Connection
EndIf
If LocalPath$=""
MessageRequester("Erreur","Saisissez le répertoire initial local ! ")
Goto Fin_Connection
EndIf
If FtpPath$=""
MessageRequester("Erreur","Indiquez le répertoire initial distant ! ")
Goto Fin_Connection
EndIf
;Tentative de connection au serveur ftp...
;Cette adresse ftp marche : 127.0.0.1
If OpenFTP(#ftp, wFtp$, WuserFtp$, wMpFtp$)
MessageRequester("Etat de la connection", "Serveur ftp connecté avec succès")
Else
MessageRequester("Connection error", "Impossible de se connecter au serveur !")
Goto Fin_Connection
EndIf
SetGadgetText(#FTP_Explorer_Rep,FtpPath$)
Afficher_Fichiers_Ftp()
Fin_Connection :
Case #HOME_Explorer
If EventType()=#PB_EventType_Change
wchemin$=GetGadgetText(#HOME_Explorer)
SetGadgetText(#HOME_Explorer_Rep,wchemin$)
LocalPath$=wchemin$
EndIf
Case #FTP_Explorer
If EventType()=#PB_EventType_Change
wchemin$=GetGadgetText(#FTP_Explorer)
SetGadgetText(#FTP_Explorer_Rep,wchemin$)
FtpPath$=wchemin$
EndIf
Case #FTP_Parcourir
WChemin$=PathRequester("Sélectionnez un dossier:", LocalPath$)
If wchemin$
SetGadgetText(#HOME_Explorer_Rep,wChemin$)
SetGadgetText(#FTP_RepLocal,wChemin$)
ResizeGadget(#HOME_Explorer, #PB_Ignore, #PB_Ignore,#PB_Ignore, #PB_Ignore)
LocalPath$=wchemin$
EndIf
Case #Transferer
ErrorFound=0
NbreFt=0
NbreEchec=0
ClearGadgetItemList(#StatutList)
FtpPath$=GetGadgetText(#FTP_RepDistant)
;------------ Transfert de fichiers (chemin local vers chemin ftp ----------------
Demarrer_Transfert_FTP()
;Résultat du transfert...
If NbreEchec=0 And NbreFt=0
MessageRequester("Erreur","Aucun fichier n'a été sélectionné pour le tansfert !")
Else
;Affichage des fichiers transférés dans la liste de destination (ftp) = réaffichage du chemin ftp
Afficher_Fichiers_Ftp()
;Affichage du statut...
AddGadgetItem (#StatutList,-1,"___________________________________________________________")
AddGadgetItem (#StatutList,-1,Space(10)+" Transfert terminé !")
AddGadgetItem (#StatutList,-1,Space(10)+" Nbre de fichiers transférés : " + Str(NbreFt))
AddGadgetItem (#StatutList,-1,Space(10)+" Nbre de fichiers non transférés : " + Str(NbreEchec))
EndIf
Fin_Transfert :
EndSelect
EndIf
ForEver