J'aimerais générer des pages html dynamiquement dans mon programme en utilisant des modèles prédéfinis. Ca marche bien au début, mais impossible d'ouvrir un lien après...
Voila un code qui reproduit mon problème (je ne met pas le code de mon programme car il y a plusieurs dizaine de fichier + les images etc...)
Mettez tout d'abords l'exe temporaire dans le dossier source (Menu Compiler -> Compiler Options -> onglet Compile/Run -> cochez Create temporary executable in the source directory)
Lancez le code une première fois, il va générer les fichiers nécessaire aux IncludeBinary, puis sautez une lignes après le premier commentaire et relancez le :
Code : Tout sélectionner
; Compilez une première fois puis sautez une ligne après ce comment <-
CompilerIf #PB_Compiler_Line = 2
#FirstRun = 1
; Création des fichiers nécessaires
Declare InitPages()
InitPages()
CompilerElse
#FirstRun = 0
Declare.b NavigationCallback(Gadget, Url$)
; Inclusion des fichiers
*NavCallback = @NavigationCallback()
DataSection
WebHome:
IncludeBinary "home.html"
WebTest:
IncludeBinary "test.html"
WebEnd:
EndDataSection
CompilerEndIf
Global BaseHRef.s = "file:///" + ReplaceString(ReplaceString(GetPathPart(ProgramFilename()), "\", "/"), " ", "%20")
CompilerIf #FirstRun = 0
Procedure.b NavigationCallback(Gadget, Url$)
Protected InternalLink.s = StringField(Url$, 2, "%")
Debug "URL = " + Url$
Debug "InternalLink = " + InternalLink
SetWindowTitle(0, "WebGadget : " + GetGadgetItemText(0, #PB_Web_PageTitle))
Select LCase(InternalLink)
Case "home"
HomePage.s = PeekS(?WebHome, ?WebTest - ?WebHome)
HomePage = ReplaceString(HomePage, "%BASEHREF%", BaseHRef)
Debug "============ HOMEPAGE ============"
Debug HomePage
Debug "=================================="
SetGadgetItemText(0, #PB_Web_HtmlCode, HomePage)
ProcedureReturn #False
Case "test"
TestPage.s = PeekS(?WebTest, ?WebEnd - ?WebTest)
TestPage = ReplaceString(TestPage, "%BASEHREF%", BaseHRef)
Debug "============ TESTPAGE ============"
Debug TestPage
Debug "=================================="
SetGadgetItemText(0, #PB_Web_HtmlCode, TestPage)
ProcedureReturn #False
EndSelect
ProcedureReturn #True
EndProcedure
CompilerEndIf
If OpenWindow(0, 0, 0, 800, 600, "WebGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
WebGadget(0, 0, 0, 800, 600, BaseHRef + "index.html")
SetGadgetAttribute(0, #PB_Web_NavigationCallback, *NavCallback)
Repeat : Until WaitWindowEvent(2) = #PB_Event_CloseWindow
EndIf
Procedure InitPages()
UsePNGImageEncoder()
CreateFile(0, "index.html")
WriteStringN(0, "<html>")
WriteStringN(0, " <head>")
WriteStringN(0, " <meta http-equiv=" + Chr(34) + "refresh" + Chr(34) + " content=" + Chr(34) + "0;url=%HOME%" + Chr(34) + ">")
WriteStringN(0, " <title>Index</title>")
WriteStringN(0, " </head>")
WriteStringN(0, " <body>")
WriteStringN(0, " </body>")
WriteStringN(0, "</html>")
CloseFile(0)
CreateFile(0, "home.html")
WriteStringN(0, "<html>")
WriteStringN(0, " <head>")
WriteStringN(0, " <base href=" + Chr(34) + "%BASEHREF%" + Chr(34) + " />")
WriteStringN(0, " <title>Home</title>")
WriteStringN(0, " </head>")
WriteStringN(0, " <body>")
WriteStringN(0, " <h1>Page Home</h1>")
WriteStringN(0, " <img src=" + Chr(34) + "img_home.png" + Chr(34) + " />")
WriteStringN(0, " <p><a href=" + Chr(34) + "%HOME%" + Chr(34) + ">Home</a></p>")
WriteStringN(0, " <p><a href=" + Chr(34) + "%TEST%" + Chr(34) + ">Test</a></p>")
WriteStringN(0, " </body>")
WriteStringN(0, "</html>")
CloseFile(0)
CreateImage(0, 120, 32)
StartDrawing(ImageOutput(0))
Box(0, 0, 120, 32, #Black)
Box(2, 2, 116, 28, #Red)
DrawText(10, 10, "HOME", #Black, #Red)
StopDrawing()
SaveImage(0, "img_home.png", #PB_ImagePlugin_PNG)
FreeImage(0)
CreateFile(0, "test.html")
WriteStringN(0, "<html>")
WriteStringN(0, " <head>")
WriteStringN(0, " <base href=" + Chr(34) + "%BASEHREF%" + Chr(34) + " />")
WriteStringN(0, " <title>Test</title>")
WriteStringN(0, " </head>")
WriteStringN(0, " <body>")
WriteStringN(0, " <h1>Page Test</h1>")
WriteStringN(0, " <img src=" + Chr(34) + "img_test.png" + Chr(34) + " />")
WriteStringN(0, " <p><a href=" + Chr(34) + "%HOME%" + Chr(34) + ">Home</a></p>")
WriteStringN(0, " <p><a href=" + Chr(34) + "%TEST%" + Chr(34) + ">Test</a></p>")
WriteStringN(0, " </body>")
WriteStringN(0, "</html>")
CloseFile(0)
CreateImage(0, 120, 32)
StartDrawing(ImageOutput(0))
Box(0, 0, 120, 32, #Black)
Box(2, 2, 116, 28, #Blue)
DrawText(10, 10, "TEST", #Black, #Blue)
StopDrawing()
SaveImage(0, "img_test.png", #PB_ImagePlugin_PNG)
FreeImage(0)
MessageRequester("Info", "Fichiers crées, recompilez en sautant une ligne après le premier comment.", 0)
End
EndProcedure

PS : ça faisait quelques années que je n'avais pas demandé d'aide tient
