1
1
Fork 0
mirror of https://github.com/QB64Official/qb64.git synced 2024-07-05 00:40:26 +00:00

Some work related to transitioning wiki.

This commit is contained in:
Cory Smith 2022-08-26 22:37:38 -05:00
parent 2754c97ef4
commit 27fc93dd8e
2 changed files with 138 additions and 84 deletions

View file

@ -2275,7 +2275,9 @@ FUNCTION ide2 (ignore)
' removing the "View on Wiki" - @dualbrain ' removing the "View on Wiki" - @dualbrain
IF 1=0 AND (mY = idewy AND (mX >= idewx - 17 AND mX <= idewx - 4)) THEN 'view on wiki IF 1=0 AND (mY = idewy AND (mX >= idewx - 17 AND mX <= idewx - 4)) THEN 'view on wiki
launchWiki: launchWiki:
url$ = StrReplace$(wikiBaseAddress$ + "/" + Back$(Help_Back_Pos), " ", "%20") url$ = wikiBaseAddress$ + "/" + Back$(Help_Back_Pos)
url$ = StrReplace$(url$, " ", "%20"): url$ = StrReplace$(url$, "&", "%26")
url$ = StrReplace$(url$, "+", "%2B")
IF INSTR(_OS$, "WIN") = 0 THEN IF INSTR(_OS$, "WIN") = 0 THEN
url$ = StrReplace$(url$, "$", "\$") url$ = StrReplace$(url$, "$", "\$")
url$ = StrReplace$(url$, "&", "\&") url$ = StrReplace$(url$, "&", "\&")
@ -2312,7 +2314,7 @@ FUNCTION ide2 (ignore)
Help_sy = Help_Back(Help_Back_Pos).sy Help_sy = Help_Back(Help_Back_Pos).sy
Help_cx = Help_Back(Help_Back_Pos).cx Help_cx = Help_Back(Help_Back_Pos).cx
Help_cy = Help_Back(Help_Back_Pos).cy Help_cy = Help_Back(Help_Back_Pos).cy
a$ = Wiki(Back$(Help_Back_Pos)) a$ = Wiki$(Back$(Help_Back_Pos))
WikiParse a$ WikiParse a$
GOTO newpageparsed GOTO newpageparsed
END IF END IF
@ -2570,7 +2572,7 @@ FUNCTION ide2 (ignore)
Help_sy = Help_Back(Help_Back_Pos).sy Help_sy = Help_Back(Help_Back_Pos).sy
Help_cx = Help_Back(Help_Back_Pos).cx Help_cx = Help_Back(Help_Back_Pos).cx
Help_cy = Help_Back(Help_Back_Pos).cy Help_cy = Help_Back(Help_Back_Pos).cy
a$ = Wiki(Back$(Help_Back_Pos)) a$ = Wiki$(Back$(Help_Back_Pos))
WikiParse a$ WikiParse a$
GOTO newpageparsed GOTO newpageparsed
END IF END IF
@ -2593,54 +2595,75 @@ FUNCTION ide2 (ignore)
NEXT NEXT
l2 = INSTR(l1, Help_Link$, Help_Link_Sep$) - 1 l2 = INSTR(l1, Help_Link$, Help_Link_Sep$) - 1
l$ = MID$(Help_Link$, l1, l2 - l1 + 1) l$ = MID$(Help_Link$, l1, l2 - l1 + 1)
'assume PAGE
l$ = RIGHT$(l$, LEN(l$) - 5)
IF mCLICK OR K$ = CHR$(13) THEN IF mCLICK OR K$ = CHR$(13) THEN
mCLICK = 0 mCLICK = 0
IF Back$(Help_Back_Pos) <> l$ THEN IF LEFT$(l$, 5) = "EXTL:" THEN
Help_Select = 0: Help_MSelect = 0 IF (K$ = CHR$(13)) OR (mY = Help_cy - Help_sy + Help_wy1 AND mX = Help_cx - Help_sx + Help_wx1) THEN
'COLOR 7, 0 l$ = RIGHT$(l$, LEN(l$) - 5)
l$ = StrReplace$(l$, " ", "%20")
Help_Back(Help_Back_Pos).sx = Help_sx 'update position l$ = StrReplace$(l$, "&", "%26")
Help_Back(Help_Back_Pos).sy = Help_sy IF INSTR(_OS$, "WIN") = 0 THEN
Help_Back(Help_Back_Pos).cx = Help_cx l$ = StrReplace$(l$, "$", "\$")
Help_Back(Help_Back_Pos).cy = Help_cy l$ = StrReplace$(l$, "&", "\&")
l$ = StrReplace$(l$, "(", "\(")
top = UBOUND(back$) l$ = StrReplace$(l$, ")", "\)")
END IF
IF Help_Back_Pos < top THEN IF INSTR(_OS$, "WIN") THEN
IF Back$(Help_Back_Pos + 1) = l$ THEN SHELL _HIDE _DONTWAIT "start " + l$
GOTO usenextentry ELSEIF INSTR(_OS$, "MAC") THEN
SHELL _HIDE _DONTWAIT "open " + l$
ELSE
SHELL _HIDE _DONTWAIT "xdg-open " + l$
END IF END IF
END IF END IF
GOTO specialchar
ELSEIF LEFT$(l$, 5) = "PAGE:" THEN
l$ = RIGHT$(l$, LEN(l$) - 5)
IF Back$(Help_Back_Pos) <> l$ THEN
Help_Select = 0: Help_MSelect = 0
'COLOR 7, 0
top = top + 1 Help_Back(Help_Back_Pos).sx = Help_sx 'update position
REDIM _PRESERVE Back(top) AS STRING Help_Back(Help_Back_Pos).sy = Help_sy
REDIM _PRESERVE Help_Back(top) AS Help_Back_Type Help_Back(Help_Back_Pos).cx = Help_cx
REDIM _PRESERVE Back_Name(top) AS STRING Help_Back(Help_Back_Pos).cy = Help_cy
'Shuffle array upwards after current pos
FOR x = top - 1 TO Help_Back_Pos + 1 STEP -1 top = UBOUND(back$)
Back_Name$(x + 1) = Back_Name$(x)
Back$(x + 1) = Back$(x) IF Help_Back_Pos < top THEN
Help_Back(x + 1).sx = Help_Back(x).sx IF Back$(Help_Back_Pos + 1) = l$ THEN
Help_Back(x + 1).sy = Help_Back(x).sy GOTO usenextentry
Help_Back(x + 1).cx = Help_Back(x).cx END IF
Help_Back(x + 1).cy = Help_Back(x).cy END IF
NEXT
usenextentry: top = top + 1
Help_Back_Pos = Help_Back_Pos + 1 REDIM _PRESERVE Back(top) AS STRING
Back$(Help_Back_Pos) = l$ REDIM _PRESERVE Help_Back(top) AS Help_Back_Type
Back_Name$(Help_Back_Pos) = Back2BackName$(l$) REDIM _PRESERVE Back_Name(top) AS STRING
Help_Back(Help_Back_Pos).sx = 1 'Shuffle array upwards after current pos
Help_Back(Help_Back_Pos).sy = 1 FOR x = top - 1 TO Help_Back_Pos + 1 STEP -1
Help_Back(Help_Back_Pos).cx = 1 Back_Name$(x + 1) = Back_Name$(x)
Help_Back(Help_Back_Pos).cy = 1 Back$(x + 1) = Back$(x)
Help_sx = 1: Help_sy = 1: Help_cx = 1: Help_cy = 1 Help_Back(x + 1).sx = Help_Back(x).sx
a$ = Wiki(l$) Help_Back(x + 1).sy = Help_Back(x).sy
WikiParse a$ Help_Back(x + 1).cx = Help_Back(x).cx
GOTO newpageparsed Help_Back(x + 1).cy = Help_Back(x).cy
NEXT
usenextentry:
Help_Back_Pos = Help_Back_Pos + 1
Back$(Help_Back_Pos) = l$
Back_Name$(Help_Back_Pos) = Back2BackName$(l$)
Help_Back(Help_Back_Pos).sx = 1
Help_Back(Help_Back_Pos).sy = 1
Help_Back(Help_Back_Pos).cx = 1
Help_Back(Help_Back_Pos).cy = 1
Help_sx = 1: Help_sy = 1: Help_cx = 1: Help_cy = 1
a$ = Wiki$(l$)
WikiParse a$
GOTO newpageparsed
END IF
END IF END IF
END IF END IF
@ -2743,7 +2766,7 @@ FUNCTION ide2 (ignore)
Help_Back(Help_Back_Pos).cy = 1 Help_Back(Help_Back_Pos).cy = 1
Help_sx = 1: Help_sy = 1: Help_cx = 1: Help_cy = 1 Help_sx = 1: Help_sy = 1: Help_cx = 1: Help_cy = 1
a$ = Wiki(lnk$) a$ = Wiki$(lnk$)
IF idehelp = 0 THEN IF idehelp = 0 THEN
IF idesubwindow THEN PCOPY 3, 0: SCREEN , , 3, 0: GOTO ideloop IF idesubwindow THEN PCOPY 3, 0: SCREEN , , 3, 0: GOTO ideloop
@ -2807,10 +2830,13 @@ FUNCTION ide2 (ignore)
LOOP LOOP
IF UCASE$(n$) = a2$ THEN IF UCASE$(n$) = a2$ THEN
a$ = "'''" + backupn$ + "''' is a symbol that is used in your program as follows:" a$ = "{{DISPLAYTITLE:agp@" + backupn$ + "}}" + CHR$(10)
a$ = a$ + "This is a subroutine or function that is used in your program as follows:" + CHR$(10)
a$ = a$ + CHR$(10) + CHR$(10) + "{{PageSyntax}}" + CHR$(10) a$ = a$ + CHR$(10) + CHR$(10) + "{{PageSyntax}}" + CHR$(10)
a$ = a$ + ": " + sf$ + "'''" + backupn$ + "''' " + args$ a$ = a$ + ": [[" + LEFT$(sf$, LEN(sf$) - 1) + "]] '''" + backupn$ + "''' " + args$ + CHR$(10)
a$ = a$ + CHR$(10) + "{{PageNavigation}}" a$ = a$ + CHR$(10) + CHR$(10) + "{{PageSeeAlso}}" + CHR$(10)
a$ = a$ + "* [[Sub (explanatory)]]" + CHR$(10)
a$ = a$ + "* [[Function (explanatory)]]" + CHR$(10)
IdeContextHelpSF = -1 IdeContextHelpSF = -1
@ -5282,12 +5308,12 @@ FUNCTION ide2 (ignore)
END IF END IF
IF menu$(m, s) = "Keyword #Index" THEN IF menu$(m, s) = "Keyword #Index" THEN
PCOPY 3, 0: SCREEN , , 3, 0 PCOPY 3, 0: SCREEN , , 3, 0
lnk$ = "Keyword Reference (Alphabetical)" lnk$ = "Keyword Reference - Alphabetical"
GOTO OpenHelpLnk GOTO OpenHelpLnk
END IF END IF
IF menu$(m, s) = "#Keywords by Usage" THEN IF menu$(m, s) = "#Keywords by Usage" THEN
PCOPY 3, 0: SCREEN , , 3, 0 PCOPY 3, 0: SCREEN , , 3, 0
lnk$ = "Keyword Reference (Usage)" lnk$ = "Keyword Reference - By usage"
GOTO OpenHelpLnk GOTO OpenHelpLnk
END IF END IF
@ -5319,8 +5345,8 @@ FUNCTION ide2 (ignore)
IF idehelp THEN IF idehelp THEN
Help_IgnoreCache = 1 Help_IgnoreCache = 1
a$ = Wiki$(Back$(Help_Back_Pos)) a$ = Wiki$(Back$(Help_Back_Pos))
WikiParse a$ 'reparse updated page incl. plugin templates
Help_IgnoreCache = 0 Help_IgnoreCache = 0
WikiParse a$
END IF END IF
GOTO ideloop GOTO ideloop
END IF END IF
@ -5397,10 +5423,18 @@ FUNCTION ide2 (ignore)
' removing the "View on Wiki" - @dualbrain ' removing the "View on Wiki" - @dualbrain
IF 1=0 AND menu$(m, s) = "Update All #Pages..." THEN IF 1=0 AND menu$(m, s) = "Update All #Pages..." THEN
PCOPY 2, 0 PCOPY 2, 0
q$ = ideyesnobox("Update Help", "This can take up to 10 minutes.\nRedownload all cached help content from the wiki?") q$ = ideyesnobox("Update Help", "This can take up to 20 minutes.\nRedownload all cached help content from the wiki?")
PCOPY 2, 0 PCOPY 2, 0
IF q$ = "Y" THEN ideupdatehelpbox IF q$ = "Y" THEN
PCOPY 3, 0: SCREEN , , 3, 0 Help_Recaching = 1: Help_IgnoreCache = 1
uerr = ideupdatehelpbox
Help_Recaching = 0: Help_IgnoreCache = 0
PCOPY 3, 0: SCREEN , , 3, 0
IF uerr THEN
lnk$ = "Update All"
GOTO OpenHelpLnk
END IF
END IF
GOTO ideloop GOTO ideloop
END IF END IF
@ -6502,8 +6536,8 @@ HelpAreaShowBackLinks:
LOCATE idewy, (idewx - (LEN(Document_Title$) + 8)) \ 2 : PRINT " HELP: " + Document_Title$ + " " LOCATE idewy, (idewx - (LEN(Document_Title$) + 8)) \ 2 : PRINT " HELP: " + Document_Title$ + " "
END IF END IF
IF 1=0 THEN ' removing the "View on Wiki" - @dualbrain IF 1=0 THEN ' removing the "View on Wiki" - @dualbrain
'COLOR 7, 0: _PRINTSTRING (idewx - 18, idewy), CHR$(180) COLOR 7, 0: _PRINTSTRING (idewx - 18, idewy), CHR$(180)
'COLOR 15, 3: _PRINTSTRING (idewx - 17, idewy), " View on Wiki " COLOR 15, 3: _PRINTSTRING (idewx - 17, idewy), " View on Wiki "
END IF END IF
RETURN RETURN
@ -14645,6 +14679,7 @@ FUNCTION idezfilelist$ (path$, method, mask$) 'method0=*.bas, method1=*.*, metho
DO UNTIL EOF(150) DO UNTIL EOF(150)
LINE INPUT #150, a$ LINE INPUT #150, a$
IF LEN(a$) THEN 'skip blank entries IF LEN(a$) THEN 'skip blank entries
IF path$ = "internal/help" THEN a$ = LEFT$(a$, (LEN(a$) - 5) \ 2) + ".txt" 'remove spelling label
IF filelist$ = "" THEN filelist$ = a$ ELSE filelist$ = filelist$ + sep + a$ IF filelist$ = "" THEN filelist$ = a$ ELSE filelist$ = filelist$ + sep + a$
END IF END IF
LOOP LOOP
@ -14684,6 +14719,7 @@ FUNCTION idezfilelist$ (path$, method, mask$) 'method0=*.bas, method1=*.*, metho
EXIT FOR EXIT FOR
END IF END IF
NEXT NEXT
IF path$ = "internal/help" THEN a$ = LEFT$(a$, (LEN(a$) - 5) \ 2) + ".txt" 'remove spelling label
IF filelist$ = "" THEN filelist$ = a$ ELSE filelist$ = filelist$ + sep + a$ IF filelist$ = "" THEN filelist$ = a$ ELSE filelist$ = filelist$ + sep + a$
LOOP LOOP
CLOSE #150 CLOSE #150
@ -17583,7 +17619,7 @@ SUB Help_ShowText
IF setup = 0 AND UBOUND(back$) = 1 THEN IF setup = 0 AND UBOUND(back$) = 1 THEN
setup = 1 setup = 1
IF IdeContextHelpSF = 0 THEN IF IdeContextHelpSF = 0 THEN
a$ = Wiki(Back$(1)) a$ = Wiki$(Back$(1))
WikiParse a$ WikiParse a$
END IF END IF
END IF END IF
@ -18655,7 +18691,15 @@ SUB IdeAddSearched (s2$)
CLOSE #fh CLOSE #fh
END SUB END SUB
SUB ideupdatehelpbox FUNCTION ideupdatehelpbox
ideupdatehelpbox = 0 'all good, getting 1 on error
IF Help_Recaching = 2 THEN
DIM FullMessage$(1 TO 2)
UpdateStep = 1
Help_ww = 78
GOTO startMainLoop
END IF
'-------- generic dialog box header -------- '-------- generic dialog box header --------
PCOPY 0, 2 PCOPY 0, 2
PCOPY 0, 1 PCOPY 0, 1
@ -18697,8 +18741,9 @@ SUB ideupdatehelpbox
FOR i = 1 TO 100: o(i).par = p: NEXT 'set parent info of objects FOR i = 1 TO 100: o(i).par = p: NEXT 'set parent info of objects
'-------- end of generic init -------- '-------- end of generic init --------
startMainLoop:
DO 'main loop DO 'main loop
IF Help_Recaching = 2 GOTO updateRoutine
'-------- generic display dialog box & objects -------- '-------- generic display dialog box & objects --------
idedrawpar p idedrawpar p
@ -18807,11 +18852,15 @@ SUB ideupdatehelpbox
SELECT CASE UpdateStep SELECT CASE UpdateStep
CASE 1 CASE 1
'Create a list of all files to be recached 'Create a list of all files to be recached
f$ = CHR$(0) + idezfilelist$("internal/help", 1, "") + CHR$(0) IF Help_Recaching < 2 THEN
IF LEN(f$) = 2 THEN f$ = CHR$(0) f$ = CHR$(0) + idezfilelist$("internal/help", 2, "*.txt") + CHR$(0)
IF LEN(f$) = 2 THEN f$ = CHR$(0)
ELSE
f$ = CHR$(0) 'no dir scan for 'qb64 -u' (build time update)
END IF
'Prepend core pages to list 'Prepend core pages to list
f$ = CHR$(0) + "Keyword-Reference---(Usage).txt" + f$ f$ = CHR$(0) + "Keyword_Reference_-_By_usage.txt" + f$
f$ = CHR$(0) + "QB64_Help_Menu.txt" + f$ f$ = CHR$(0) + "QB64_Help_Menu.txt" + f$
f$ = CHR$(0) + "QB64_FAQ.txt" + f$ f$ = CHR$(0) + "QB64_FAQ.txt" + f$
UpdateStep = UpdateStep + 1 UpdateStep = UpdateStep + 1
@ -18820,10 +18869,9 @@ SUB ideupdatehelpbox
CASE 3 CASE 3
'Download and PARSE alphabetical index to build required F1 help links 'Download and PARSE alphabetical index to build required F1 help links
FullMessage$(1) = "Regenerating keyword list..." FullMessage$(1) = "Regenerating keyword list..."
Help_Recaching = 1: Help_IgnoreCache = 1 a$ = Wiki$("Keyword Reference - Alphabetical")
a$ = Wiki$("Keyword Reference (Alphabetical)") IF INSTR(a$, "{{PageInternalError}}") > 0 THEN ideupdatehelpbox = 1: EXIT DO
Help_Recaching = 0: Help_IgnoreCache = 0 WikiParse a$ 'update links.bin and check for plugin templates
WikiParse a$
UpdateStep = UpdateStep + 1 UpdateStep = UpdateStep + 1
CASE 4 CASE 4
'Add all linked pages to download list (if not already in list) 'Add all linked pages to download list (if not already in list)
@ -18832,21 +18880,25 @@ SUB ideupdatehelpbox
DO UNTIL EOF(fh) DO UNTIL EOF(fh)
LINE INPUT #fh, l$ LINE INPUT #fh, l$
IF LEN(l$) THEN IF LEN(l$) THEN
c = INSTR(l$, ","): PageName2$ = RIGHT$(l$, LEN(l$) - c) c = INSTR(l$, ","): l$ = RIGHT$(l$, LEN(l$) - c)
DO WHILE INSTR(PageName2$, " ") IF Help_Recaching < 2 OR LEFT$(l$, 3) <> "_gl" THEN 'ignore _GL pages for 'qb64 -u' (build time update)
ASC(PageName2$, INSTR(PageName2$, " ")) = 95 'Escape all invalid and other critical chars in filenames
LOOP PageName2$ = ""
DO WHILE INSTR(PageName2$, "&") FOR i = 1 TO LEN(l$)
i = INSTR(PageName2$, "&") c = ASC(l$, i)
PageName2$ = LEFT$(PageName2$, i - 1) + "%26" + RIGHT$(PageName2$, LEN(PageName2$) - i) SELECT CASE c
LOOP CASE 32 ' '(space)
DO WHILE INSTR(PageName2$, "/") PageName2$ = PageName2$ + "_"
i = INSTR(PageName2$, "/") CASE 34, 36, 38, 42, 43, 47, 58, 60, 62, 63, 92, 124 '("$&*+/:<>?\|)
PageName2$ = LEFT$(PageName2$, i - 1) + "%2F" + RIGHT$(PageName2$, LEN(PageName2$) - i) PageName2$ = PageName2$ + "%" + HEX$(c)
LOOP CASE ELSE
PageName2$ = PageName2$ + ".txt" PageName2$ = PageName2$ + CHR$(c)
IF INSTR(f$, CHR$(0) + PageName2$ + CHR$(0)) = 0 THEN END SELECT
f$ = f$ + PageName2$ + CHR$(0) NEXT
PageName2$ = PageName2$ + ".txt"
IF INSTR(f$, CHR$(0) + PageName2$ + CHR$(0)) = 0 THEN
f$ = f$ + PageName2$ + CHR$(0)
END IF
END IF END IF
END IF END IF
LOOP LOOP
@ -18877,13 +18929,15 @@ SUB ideupdatehelpbox
f2$ = LEFT$(f2$, LEN(f2$) - 4) f2$ = LEFT$(f2$, LEN(f2$) - 4)
n = n + 1 n = n + 1
FullMessage$(2) = "Page title: " + f2$ FullMessage$(2) = "Page title: " + f2$
Help_IgnoreCache = 1: Help_Recaching = 1: ignore$ = Wiki(f2$): Help_Recaching = 0: Help_IgnoreCache = 0 ignore$ = Wiki$(f2$)
WikiParse ignore$ 'just check for plugin templates
END IF END IF
ELSE ELSE
UpdateStep = UpdateStep + 1 UpdateStep = UpdateStep + 1
END IF END IF
CASE 6 CASE 6
stoprecache: stoprecache:
IF Help_Recaching = 2 THEN EXIT DO
FullMessage$(1) = "All pages updated." FullMessage$(1) = "All pages updated."
FullMessage$(2) = "" FullMessage$(2) = ""
idetxt(o(ButtonID).txt) = "#Close" idetxt(o(ButtonID).txt) = "#Close"
@ -18894,7 +18948,7 @@ SUB ideupdatehelpbox
mousedown = 0 mousedown = 0
mouseup = 0 mouseup = 0
LOOP LOOP
END SUB END FUNCTION
FUNCTION ideASCIIbox$(relaunch) FUNCTION ideASCIIbox$(relaunch)

View file

@ -12,6 +12,7 @@ DIM SHARED Help_ww, Help_wh 'width & height of text region
DIM SHARED help_h, help_w 'width & height DIM SHARED help_h, help_w 'width & height
DIM SHARED Help_Txt$ '[chr][col][link-byte1][link-byte2] DIM SHARED Help_Txt$ '[chr][col][link-byte1][link-byte2]
DIM SHARED Help_Txt_Len DIM SHARED Help_Txt_Len
DIM SHARED Help_Pos, Help_Wrap_Pos
DIM SHARED Help_Line$ 'index of first txt element of a line DIM SHARED Help_Line$ 'index of first txt element of a line
DIM SHARED Help_Link$ 'the link info [sep][type:]...[sep] DIM SHARED Help_Link$ 'the link info [sep][type:]...[sep]
DIM SHARED Help_Link_Sep$: Help_Link_Sep$ = CHR$(13) DIM SHARED Help_Link_Sep$: Help_Link_Sep$ = CHR$(13)
@ -20,7 +21,6 @@ DIM SHARED Help_NewLineIndent
DIM SHARED Help_Underline DIM SHARED Help_Underline
'Link Types: 'Link Types:
' PAGE:wikipagename ' PAGE:wikipagename
DIM SHARED Help_Pos, Help_Wrap_Pos
DIM SHARED Help_BG_Col DIM SHARED Help_BG_Col
DIM SHARED Help_Col_Normal: Help_Col_Normal = 7 DIM SHARED Help_Col_Normal: Help_Col_Normal = 7
DIM SHARED Help_Col_Link: Help_Col_Link = 9 DIM SHARED Help_Col_Link: Help_Col_Link = 9