Le but du truc, est donc d'avoir, dans un combo situé dans la barre d'outils de l'éditeur, le dossier CodeArchiv, pour pouvoir acceder plus rapidement au fichiers.
Il faut donc avoir CodeArchiv !
Bon, pour le moment, c'est pas encore tellement exploitable, dans la mesure ou il manque pas mal de trucs.
- Il n'y a pas d'icônes dans le combo
- Il faut mettre le chemin du dossier CodeArchiv "à la main" dans le code
- On ne détecte toujours pas l'éditeur utilisé, je verrais ça plus tard. I faut donc mettre 1 pour l'utiliser avec jaPBe, et 2 pour l'utiliser avec PureBasic.
- Il n'y a pas de boite qui affiche les fichiers contenus dans le dossier choisi, j'ai donc mis un OpenFileRequester().
- Il n'y a pas de création automatique d'un nouvel onglet dans l'éditeur. Il faut donc ouvrir le fichier avec le bouton droit en utilisant "Ouvrir avec"
etc...etc...
Bref, il manque encore plein de trucs.
Chez moi, ça na pas encore réussi à faire planter quoi que ce soit.
Il suffit de la lancer depuis l'éditeur, pas besoin de créer un executable.
Si quelqu'un veut le tester, pour me dire ce qu'il pense de l'idée.
Code : Tout sélectionner
;- Constantes
Enumeration
#NewWindow
EndEnumeration
Enumeration
#NewCombo = 100
#Btn_Quit
EndEnumeration
#JaPBe = 1
#PureBasic = 2
#CB_GETCOMBOBOXINFO = $00164
;- Repertoire ou se trouve le dossier CodeArchiv
Repertoire$ = "D:\PureBasic390\CodeArchiv\"
;- Structures
Structure REPERTOIRE
Rep.s
Nom.s
Fic.s
EndStructure
NewList Repertoire.REPERTOIRE()
;- Procedures
Procedure.l ListFiles( dir.s )
dir = Trim(dir)
If Right(dir,1)="\":dir = Left(dir,Len(dir)-1):EndIf
Static num.l
id.l = ExamineDirectory( #PB_Any, dir, "*.*" )
Repeat
type.l = NextDirectoryEntry()
name.s = DirectoryEntryName()
AddElement(Repertoire())
full.s = dir + "\" + name
Select type
Case 1 : num + 1:
If GetExtensionPart(full) = "pb"
Repertoire()\Fic = GetFilePart(full) ; Nom du fichier
EndIf
Case 2
If name <> ".." And name <> "."
Repertoire()\Nom = name ; Nom du dossier pour l'affichage
Repertoire()\Rep = full+"\" ; Chemin du dossier pour l'acces aux fichiers
ListFiles( full ) : UseDirectory( id )
EndIf
EndSelect
Until type = 0
EndProcedure
;- Variables
Style = #DDL_ARCHIVE|#DDL_DIRECTORY|#DDL_EXCLUSIVE|#DDL_HIDDEN|#DDL_READONLY|#DDL_READWRITE|#DDL_SYSTEM
;- Variables globales
Global hWnd
;- Choix de l'éditeur : 1 pour jaPBe, ou 2 pour PureBasic
Editeur = 1 ; Choisir 1 ou 2 selon l'éditeur avec lequel on lance le programme
;- Détection de la barre d'outils de l'éditeur
Buffer.s = Space(255)
Select Editeur
Case #JaPBe ; Editeur jaPBe : 1
hMain = FindWindow_("WindowClass_7","jaPBe")
hToolBar = FindWindowEx_(hMain,#Null,"ToolbarWindow32","")
Case #PureBasic ; Editeur PureBasic : 2
hMain = FindWindow_("WindowClass_0",#Null)
GetWindowText_(hMain,@Buffer,255)
If Left(Buffer,9) = "PureBasic"
hToolBar = FindWindowEx_(hMain,#Null,"ToolbarWindow32","")
EndIf
EndSelect
;- On crée une fenêtre PopUp qui vient se superposer à la barre d'outils
;- et on met un ComboBox à l'intérieur
hWnd = OpenWindow(#NewWindow,600,0,240,20,#WS_POPUP ,"")
If CreateGadgetList(hWnd)
hCombo = ComboBoxGadget(#NewCombo,0,0,220,200)
hBntQuit = ButtonGadget(#Btn_Quit,220,0,20,20,"X")
EndIf
;- On déclare la nouvelle fenêtre comme "Fille" de la barre d'outils
SetParent_(hWnd,hToolBar)
ListFiles(Repertoire$)
ForEach Repertoire()
Nom.s =Repertoire()\Nom
If Nom <> ""
AddGadgetItem(#NewCombo,-1,Nom)
EndIf
Next
SetGadgetState(#NewCombo,0)
;- Boucle des évènements
Repeat
Select WindowEvent()
Case #PB_EventGadget
Select EventGadgetID()
Case #NewCombo
If EventType() = #PB_EventType_RightClick
N$= GetGadgetItemText(#NewCombo,GetGadgetState(#NewCombo),0)
ForEach Repertoire()
If Repertoire()\Nom = N$
chemin$ = Repertoire()\Rep
OpenFileRequester("",chemin$,"*.pb",0)
EndIf
Next
EndIf
Case #Btn_Quit : quit = #True
EndSelect
; ;- Pour le moment, comme on a pas de bouton pour quitter, on cliques
; ;- dans le combo, et on quitte avec "Escape"
; Case #WM_KEYDOWN
; Select EventwParam()
; Case $1B : quit = #True
; EndSelect
EndSelect
Until quit
End
Chris
