Moi je l'utilise pour rechercher une procedure dans tous mes codes PureBasic
Code : Tout sélectionner
Enumeration
#Fenetre
#Repertoire
#Fichier
#Editor
#String
#Button1
#Button2
#List
#FichierLecture
#Combo
#Entrer
#Check
#Directory
#Extention
#Bar
EndEnumeration
Global Nom$,Repertoire$,Racine$,Extention$
Global Dossier$,AncienElement
Dossier$ = GetHomeDirectory()
Procedure Recherche(Dossier$)
If ExamineDirectory(#Repertoire,Dossier$,"*."+Extention$)
While NextDirectoryEntry(#Repertoire)
If DirectoryEntryType(#Repertoire) = #PB_DirectoryEntry_File
If ReadFile(#Fichier, Dossier$+DirectoryEntryName(#Repertoire))
file = file +1
Ligne = -1
While Eof(#Fichier)=0
Ligne = Ligne + 1
If FindString(ReadString(#Fichier),Nom$,0,#PB_String_NoCase)
NomListe$ = RemoveString(Dossier$+DirectoryEntryName(#Repertoire),Racine$,0,1,1)
If NomListe$ = MemeNomListe$
AddGadgetItem(#List,-1,NomListe$,0,1)
Else
AddGadgetItem(#List,-1,NomListe$,0,0)
EndIf
MemeNomListe$ = NomListe$
SetGadgetItemData(#List,CountGadgetItems(#List)-1,Ligne)
EndIf
Wend
CloseFile(#Fichier)
EndIf
EndIf
Wend
FinishDirectory(#Repertoire)
EndIf
EndProcedure
Procedure.s ParseDirectory(folder.s, id.l = 0)
If Right(folder, 1) <> "\"
folder + "\"
EndIf
If ExamineDirectory(id, folder, "*.*")
While NextDirectoryEntry(id)
If DirectoryEntryName(id) <> "." And DirectoryEntryName(id) <> ".."
If DirectoryEntryType(id) = #PB_DirectoryEntry_Directory
AddGadgetItem(#Editor,-1,Chr(10)+folder + DirectoryEntryName(id))
;Debug folder + DirectoryEntryName(id)
ParseDirectory(folder + DirectoryEntryName(id), id + 1)
EndIf
EndIf
Wend
FinishDirectory(id)
EndIf
EndProcedure
Procedure InitLogiciel()
OpenPreferences("Init.log")
PreferenceGroup("Fenetre Logiciel")
Etat = ReadPreferenceLong ("Etat_Fenetre_Logiciel",#PB_Window_Normal)
If Etat = #PB_Window_Normal
SetWindowState(#Fenetre,#PB_Window_Normal)
ResizeWindow(#Fenetre,ReadPreferenceLong ("Fenetre_LogicielX", 0),ReadPreferenceLong ("Fenetre_LogicielY", 0),ReadPreferenceLong ("Fenetre_Logiciel_Largeur", 600), ReadPreferenceLong ("Fenetre_Logiciel_Hauteur", 400))
Else
SetWindowState(#Fenetre,Etat)
EndIf
PreferenceGroup("Extention")
For Elt = 0 To 10
AddGadgetItem(#Extention,-1,ReadPreferenceString("Extention"+Str(Elt),"*"))
Next Elt
SetGadgetState(#Extention,ReadPreferenceLong("Element",0))
PreferenceGroup("Dossier")
Dossier$ = ReadPreferenceString("Dossier",GetHomeDirectory())
SetGadgetText(#Combo,Dossier$)
SetGadgetState(#Check,ReadPreferenceLong("Sous_dossier",#PB_Checkbox_Unchecked))
ClosePreferences()
EndProcedure
Procedure SauveInitLogiciel()
CreatePreferences("Init.log",#PB_Preference_GroupSeparator)
PreferenceGroup("Fenetre Logiciel")
WritePreferenceLong ("Etat_Fenetre_Logiciel", GetWindowState(#Fenetre))
If GetWindowState(#Fenetre) = #PB_Window_Normal
WritePreferenceLong ("Fenetre_LogicielX", WindowX(#Fenetre ))
WritePreferenceLong ("Fenetre_LogicielY", WindowY(#Fenetre ))
WritePreferenceLong ("Fenetre_Logiciel_Largeur", WindowWidth(#Fenetre))
WritePreferenceLong ("Fenetre_Logiciel_Hauteur", WindowHeight(#Fenetre))
EndIf
PreferenceGroup("Extention")
For Elt = 0 To 5
WritePreferenceString("Extention"+Str(Elt), GetGadgetItemText(#Extention,Elt))
Next Elt
WritePreferenceLong ("Element",AncienElement)
PreferenceGroup("Dossier")
WritePreferenceString("Dossier",Dossier$)
WritePreferenceLong("Sous_dossier",GetGadgetState(#Check))
ClosePreferences()
EndProcedure
If OpenWindow(#Fenetre,0,0,600,400,"Logiciel de recherche",#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_SizeGadget|#PB_Window_ScreenCentered|#PB_Window_Invisible)
WindowBounds(#Fenetre,600,400,#PB_Ignore,#PB_Ignore )
SmartWindowRefresh(#Fenetre, 1)
AddKeyboardShortcut(#Fenetre, #PB_Shortcut_Return,#Entrer)
ProgressBarGadget(#Bar,430,3,170,20,0,2)
ExplorerComboGadget(#Combo,0,0,250,20,Dossier$, #PB_Explorer_Editable)
ButtonGadget(#Button1,250,0,30,20,"...")
GadgetToolTip(#Button1,"Répertoire a choisir pour la recherche")
TextGadget(#PB_Any,0,47,80,20,"Mot à chercher:")
StringGadget(#String,80,47,120,20,"")
GadgetToolTip(#String,"Mot qui va etre rechercher dans tous les fichiers")
TextGadget(#PB_Any,0,25,80,20,"Extension fichier")
ComboBoxGadget(#Extention,80,25,60,20,#PB_ComboBox_Editable)
GadgetToolTip(#Extention,"Extention des fichiers qui vont etre ouvert pour la recherche")
ButtonGadget(#Button2,202,47,60,20,"Recherche",#PB_Button_Default)
TreeGadget(#List,0,70,265,330)
SetGadgetColor(#list,#PB_Gadget_BackColor,$FFEAA5)
GadgetToolTip(#List,"Liste de tous les fichiers trouver")
ListIconGadget(#Editor,265,30,340,370,"Ligne",50,#PB_ListIcon_FullRowSelect )
AddGadgetColumn(#Editor,1,"Texte",10000)
GadgetToolTip(#Editor,"Visualisation du fichier sélectionner")
CheckBoxGadget(#Check,290,0,140,20,"Inclure les sous-dossiers")
InitLogiciel()
HideWindow(#Fenetre,#False)
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
Select EventGadget()
Case #Button1
NouveauDossier$ = PathRequester("Rechercher dans le répertoire :",Dossier$)
If NouveauDossier$
Dossier$ = NouveauDossier$
SetGadgetText(#Combo,Dossier$)
EndIf
Case #Combo
Dossier$ = GetGadgetText(#Combo)
Case #Extention
ElementExtention = GetGadgetState(#Extention)
If ElementExtention <> -1
AncienElement = ElementExtention
EndIf
Select EventType()
Case #PB_EventType_LostFocus
If ElementExtention = -1
Debug AncienElement
SetGadgetItemText(#Extention,AncienElement,GetGadgetText(#Extention))
EndIf
EndSelect
Case #Button2
ClearGadgetItems(#List)
ClearGadgetItems(#Editor)
SetGadgetState(#Bar,0)
Nom$ = GetGadgetText(#String)
Racine$ = Dossier$
Extention$ = GetGadgetText(#Extention)
If GetGadgetState(#Check) = #PB_Checkbox_Checked
Recherche(Dossier$)
ParseDirectory(Dossier$)
NbrDossier = CountGadgetItems(#Editor)
SetGadgetAttribute(#Bar,#PB_ProgressBar_Maximum,NbrDossier)
For ligne = 0 To NbrDossier
Recherche(GetGadgetItemText(#Editor,ligne,1)+"\")
SetGadgetState(#Bar,ligne)
Next ligne
Else
Recherche(Dossier$)
EndIf
Case #List
ClearGadgetItems(#Editor)
Texte$=""
If ReadFile(#FichierLecture,Racine$ + GetGadgetText(#List))
While Eof(#FichierLecture)=0
NumeroLigne + 1
AddGadgetItem(#Editor,-1,LSet(Str(NumeroLigne),6) +Chr(10)+ReplaceString(ReadString(#FichierLecture),Chr(9),Chr(32)))
Wend
CloseFile(#FichierLecture)
Element = GetGadgetItemData(#List,GetGadgetState(#List))
SetGadgetItemColor(#Editor, Element, #PB_Gadget_BackColor ,$BFFFFF)
SetGadgetState(#Editor,Element);,#PB_Tree_Selected)
EndIf
NumeroLigne = 0
EndSelect
Case #PB_Event_SizeWindow
HauteurFenetre = WindowHeight(#Fenetre)
LargeurFenetre = WindowWidth(#Fenetre )
ResizeGadget(#Editor,#PB_Ignore,#PB_Ignore,LargeurFenetre-260,HauteurFenetre-30)
SetGadgetItemAttribute(#Editor,0,#PB_ListIcon_ColumnWidth,LargeurFenetre+10000,1)
ResizeGadget(#List,#PB_Ignore,#PB_Ignore,#PB_Ignore,HauteurFenetre-50)
ResizeGadget(#Bar,#PB_Ignore,#PB_Ignore,LargeurFenetre-430,#PB_Ignore)
Case #PB_Event_Menu
If EventMenu()=#Entrer
ClearGadgetItems(#List)
ClearGadgetItems(#Editor)
SetGadgetState(#Bar,0)
Nom$ = GetGadgetText(#String)
Racine$ = Dossier$
Extention$ = GetGadgetText(#Extention)
If GetGadgetState(#Check) = #PB_Checkbox_Checked
Recherche(Dossier$)
ParseDirectory(Dossier$)
NbrDossier = CountGadgetItems(#Editor)
SetGadgetAttribute(#Bar,#PB_ProgressBar_Maximum,NbrDossier)
For ligne = 0 To NbrDossier
Recherche(GetGadgetItemText(#Editor,ligne,1)+"\")
SetGadgetState(#Bar,ligne)
Next ligne
Else
Recherche(Dossier$)
EndIf
EndIf
EndSelect
Until Event = #PB_Event_CloseWindow
SauveInitLogiciel()
EndIf
End