
Comme je suis un peu bordélique dans mes codes, je met souvent des noms de fichier qui ne veulent rien dire, du genre Test1, Test2, Test3.
Le problème, c'est qu'au bout d'un moment, je ne sais plus à quoi correspond tel ou tel code, et je dois les ouvrir un par un pour voir ce qu'il y a dedans, et c'est pas trop pratique.
Alors, j'ai fait un petit prog pour visualiser les codes sans passer par l'éditeur, un peu dans le genre du Code Template de JaPBe. Il permet également de coller le code directement dans JaPBe ou de faire une copie dans le Presse-papiers pour coller dans l'éditeur de Pure.
Il retiens également le dernier dossier exploré, la position et la taille de la fenêtre.
Code : Tout sélectionner
;- Constantes fenêtres
Enumeration
#Win_0
EndEnumeration
;- Constantes Gadgets
Enumeration
#List_Files
#Edit_Code
#Explorer
#Btn_Insert
#PureBasic
#Split_1
#Split_2
EndEnumeration
;{- Constantes diverses
#WMCD_OpenFile = 1
#WMCD_InsertText = 2
#wmCD_ReplaceCompleteText = 3
#wmcd_ReplaceCurrentLine = 4
#wmcd_NewText = 5
;}
;{- Variables
Global Chemin$, Img, WinStyle, PosX, PosY, SizeH, SizeV,Spl1_Pos,Spl2_Pos,UsedEditor, TypeEditor, Bulles
WinStyle = #PB_Window_MaximizeGadget | #PB_Window_MinimizeGadget | #PB_Window_SystemMenu | #PB_Window_SizeGadget
;}
;{- Déclarations des procédures
Declare.s GetPath(Type)
Declare SendDatasToEditor(MainWin, Datas$, Mode.l)
Declare CallBack(hWin,Msge,wParam,lParam)
Declare LoadTemplate(Fichier.s)
Declare ScanFolder(Folder.s)
Declare SavePreferences()
Declare LoadPreferences()
Declare Open_Win_0()
;}
;- Procedures
Procedure Open_Win_0()
If OpenWindow(#Win_0, PosX, PosY, SizeH, SizeV, WinStyle, "Routines")
hwnd = WindowID(#Win_0)
If CreateGadgetList(WindowID())
ListIconGadget(#List_Files, 5, 170, 230, 250, "Fichiers", 220, #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)
EditorGadget(#Edit_Code, 240, 5, 320, 390)
ExplorerTreeGadget(#Explorer, 5, 5, 230, 160, "", #PB_Explorer_NoDriveRequester | #PB_Explorer_NoFiles | #PB_Explorer_NoMyDocuments | #PB_Explorer_AlwaysShowSelection)
ButtonGadget(#Btn_Insert, WindowWidth()-105, WindowHeight()-25, 100, 20, "Insérer")
CheckBoxGadget(#PureBasic, 5, WindowHeight()-25,100,20,"PureBasic")
SplitterGadget(#Split_2,5,5,(WindowWidth()-10)/2,WindowHeight(),#Explorer,#List_Files)
SplitterGadget(#Split_1,5,5,WindowWidth()-10,WindowHeight()-35,#Split_2,#Edit_Code,#PB_Splitter_Vertical)
EndIf
EndIf
SetGadgetAttribute(#Split_1,#PB_Splitter_FirstMinimumSize,150)
SetGadgetAttribute(#Split_1,#PB_Splitter_SecondMinimumSize,150)
SetGadgetAttribute(#Split_2,#PB_Splitter_FirstMinimumSize,40)
SetGadgetAttribute(#Split_2,#PB_Splitter_SecondMinimumSize,60)
SetGadgetState(#Split_1,Spl1_Pos)
SetGadgetState(#Split_2,Spl2_Pos)
SetGadgetState(#PureBasic,1)
ProcedureReturn hwnd
EndProcedure
Procedure LoadPreferences()
OpenPreferences("Templates.cfg")
PreferenceGroup("General")
Chemin$ = ReadPreferenceString("Chemin","C:\")
PreferenceGroup("Metrics")
PosX = ReadPreferenceLong("PosX",100)
PosY = ReadPreferenceLong("PosY",100)
SizeH = ReadPreferenceLong("SizeH",600)
SizeV = ReadPreferenceLong("SizeV",400)
Spl1_Pos = ReadPreferenceLong("Spl1_Pos",300)
Spl2_Pos = ReadPreferenceLong("Spl2_Pos",200)
PreferenceGroup("Usage")
UsedEditor = ReadPreferenceLong("Editor",1)
ClosePreferences()
EndProcedure
Procedure SavePreferences()
CreatePreferences("Templates.cfg")
PreferenceGroup("General")
WritePreferenceString("Chemin",Chemin$)
PreferenceGroup("Metrics")
WritePreferenceLong("PosX",PosX)
WritePreferenceLong("PosY",PosY)
WritePreferenceLong("SizeH",SizeH)
WritePreferenceLong("SizeV",SizeV)
WritePreferenceLong("Spl1_Pos",Spl1_Pos)
WritePreferenceLong("Spl2_Pos",Spl2_Pos)
PreferenceGroup("Usage")
WritePreferenceLong("Editor",UsedEditor)
ClosePreferences()
EndProcedure
Procedure ScanFolder(Folder.s)
ClearGadgetItemList(#List_Files)
If ExamineDirectory(0, Folder, "*.*")
Repeat
Type = NextDirectoryEntry()
If Type = 1
Name$ = DirectoryEntryName()
If LCase(GetExtensionPart(Name$)) = "pb"
AddGadgetItem(#List_Files,k,Name$,Img)
If k&1 = 0
SetItemColor(#List_Files,k,0,RGB($0,$0,$0),RGB($5F,$AF,$AF))
Else
SetItemColor(#List_Files,k,0,RGB($FF,$FF,$FF),RGB($0,$58,$B0))
EndIf
k+1
EndIf
EndIf
Until Type = 0
EndIf
EndProcedure
Procedure LoadTemplate(Fichier.s)
If FileSize(Fichier) = 0 : ProcedureReturn : EndIf
ClearGadgetItemList(#Edit_Code)
If ReadFile(0,Fichier)
While Eof(0) = 0
AddGadgetItem(#Edit_Code,-1,ReadString())
Wend
CloseFile(0)
EndIf
EndProcedure
Procedure CallBack(hWin,Msge,wParam,lParam)
Resultat = #PB_ProcessPureBasicEvents
Select Msge
Case #WM_SIZE
ResizeGadget(#Btn_Insert, WindowWidth()-105, WindowHeight()-25, -1, -1)
ResizeGadget(#Split_2, -1, -1, (WindowWidth()-10)/2, WindowHeight())
ResizeGadget(#Split_1, -1, -1, WindowWidth()-10, WindowHeight()-35)
ResizeGadget(#PureBasic, 5, WindowHeight()-25, 100, 20)
EndSelect
ProcedureReturn Resultat
EndProcedure
Procedure SendDatasToEditor(MainWin, Datas$, Mode.l)
RunOneWin = FindWindow_(@"WindowClass_0",@"jaPBe-RunOneWindow")
If RunOneWin
If Datas$
cd.COPYDATASTRUCT
cd\dwData = Mode
cd\cbData = Len(Datas$)+1
cd\lpData = @Datas$
ProcedureReturn SendMessage_(RunOneWin, #WM_COPYDATA, MainWin, cd)
EndIf
Else
MessageRequester("JaPBe non trouvé", "Il semblerait que JaPBe ne soit pas ouvert" + Chr(10) + "" + Chr(10) + "Peut-être faudrait-il y penser!!!!", #MB_OK)
EndIf
EndProcedure
Procedure.s GetPath(Type)
#GetPath_PureBasic=-7
location$ = Space (#MAX_PATH+1)
If Type=#GetPath_PureBasic
BufferSize=#MAX_PATH
If GetVersion_() & $FF0000
If RegOpenKeyEx_(#HKEY_CLASSES_ROOT, "Applications\PureBasic.exe\shell\open\command", 0, #KEY_ALL_ACCESS , @key) = #ERROR_SUCCESS
If RegQueryValueEx_(key, "", 0, @Type, @location$, @BufferSize) = #ERROR_SUCCESS
location$ = GetPathPart(Mid(location$, 2, Len(location$)-7))
EndIf
EndIf
Else
If RegOpenKeyEx_(#HKEY_LOCAL_MACHINE, "Software\Classes\PureBasic.exe\shell\open\command", 0, #KEY_ALL_ACCESS , @key) = #ERROR_SUCCESS
If RegQueryValueEx_(key, "", 0, @Type, @location$, @BufferSize) = #ERROR_SUCCESS
location$ = GetPathPart(Mid(location$, 2, Len(location$)-7))
EndIf
EndIf
EndIf
EndIf
If location$ And Right(location$,1)<>"\" : location$+"\" : EndIf
ProcedureReturn location$
EndProcedure
;- Initialisation
LoadPreferences()
Pb_Path$ = GetPath(#GetPath_PureBasic)+ "PureBasic.exe"
Img = ExtractIcon_(GetModuleHandle_(#Null), Pb_Path$, 0)
hMain = Open_Win_0()
SetWindowCallback(@CallBack())
SetGadgetState(#PureBasic,UsedEditor)
SetGadgetText(#Explorer,Chemin$)
ScanFolder(Chemin$)
TypeEditor = FindWindow_("WindowClass_7","jaPBe")
;- Boucle
Repeat
Select WaitWindowEvent()
Case #PB_EventGadget
Select EventGadgetID()
Case #List_Files
If EventType() = #PB_EventType_LeftClick
LoadTemplate(Chemin$+GetGadgetItemText(#List_Files,GetGadgetState(#List_Files),0))
EndIf
Case #Explorer
If EventType() = #PB_EventType_LeftClick
Chemin$ = GetGadgetText(#Explorer)
ScanFolder(Chemin$)
EndIf
Case #Btn_Insert
If GetGadgetText(#Edit_Code) <> ""
If UsedEditor = 0
If TypeEditor <> 0
SendDatasToEditor(hMain,GetGadgetText(#Edit_Code), #wmcd_NewText)
Else
ClearClipboard()
SetClipboardText(GetGadgetText(#Edit_Code))
MessageRequester("jaPBe non trouvé", "JaPBe n'a pas été détecté, les données ont été placées dans le presse-papier", #MB_OK|#MB_ICONINFORMATION)
EndIf
Else
ClearClipboard()
SetClipboardText(GetGadgetText(#Edit_Code))
EndIf
EndIf
Case #PureBasic
UsedEditor = GetGadgetState(#PureBasic)
EndSelect
Case #PB_EventCloseWindow
GetClientRect_(WindowID(#Win_0),@lpRect.RECT)
PosX = lpRect\left : PosY = lpRect\top
SizeH =lpRect\right - lpRect\left : SizeV = lpRect\bottom - lpRect\top
Spl1_Pos = GetGadgetState(#Split_1) : Spl2_Pos = GetGadgetState(#Split_2)
UsedEditor = GetGadgetState(#PureBasic)
SavePreferences()
Quit = #True
EndSelect
Until Quit
End