çà pourrait être intéressant d'avoir dans jaPBe un onglet 'modèles' comme dans l'IDE purebasic. Mais ce serait encore mieux si les 2 utilisaient la même base (le même fichier). à méditer

Code : Tout sélectionner
; Lit le fichier 'templates' (modèles) de PureBasic 4.0
Structure PB_TEMPLATE
name.s
code.s
comment.s
EndStructure
Procedure.l ReadPureBasicTemplates(gadget.l)
Protected file.l, depth.l, result.l, line.s, value.s, *item.PB_TEMPLATE
If IsGadget(gadget)
file = ReadFile(#PB_Any, #PB_Compiler_Home + "Templates.prefs")
If file
While Eof(file) = #False
line = ReadString(file)
value = Trim(StringField(line, 2, ":"))
Select Trim(StringField(line, 1, ":"))
Case "TEMPLATES"
If value = "1.0"
result = #True
Else
Break
EndIf
Case "Directory"
AddGadgetItem(gadget, -1, value, 0, depth)
depth + 1
Case "Expanded"
SetGadgetItemState(gadget, CountGadgetItems(gadget)-1, #PB_Tree_Expanded)
Case "Template"
*item = AllocateMemory(SizeOf(PB_TEMPLATE))
If *item
*item\name = value
AddGadgetItem(gadget, -1, *item\name, 0, depth)
SetGadgetItemData(gadget, CountGadgetItems(gadget)-1, *item)
EndIf
Case "Comment"
*item\comment = ReplaceString(value, "\n", #CRLF$)
Case "Code"
*item\code = ReplaceString(value, "\n", #CRLF$)
Case "CloseDirectory"
depth - 1
EndSelect
Wend
CloseFile(file)
EndIf
EndIf
ProcedureReturn result
EndProcedure
Procedure.l Main()
If OpenWindow(0, 0, 0, 320, 400, "PureBasic Templates", #PB_Window_ScreenCentered|#PB_Window_SystemMenu)
If CreateGadgetList(WindowID(0))
TreeGadget(0, 5, 5, 310, 390, #PB_Tree_AlwaysShowSelection)
EndIf
ReadPureBasicTemplates(0)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
Case #PB_Event_Gadget
If EventType() = #PB_EventType_Change
*item.PB_TEMPLATE = GetGadgetItemData(0, GetGadgetState(0))
If *item
Debug *item\name
Debug *item\comment
Debug *item\code
EndIf
EndIf
EndSelect
ForEver
EndIf
EndProcedure
Main()