1
1
Fork 0
mirror of https://github.com/QB64Official/qb64.git synced 2024-07-02 22:21:21 +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
IF 1=0 AND (mY = idewy AND (mX >= idewx - 17 AND mX <= idewx - 4)) THEN 'view on wiki
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
url$ = StrReplace$(url$, "$", "\$")
url$ = StrReplace$(url$, "&", "\&")
@ -2312,7 +2314,7 @@ FUNCTION ide2 (ignore)
Help_sy = Help_Back(Help_Back_Pos).sy
Help_cx = Help_Back(Help_Back_Pos).cx
Help_cy = Help_Back(Help_Back_Pos).cy
a$ = Wiki(Back$(Help_Back_Pos))
a$ = Wiki$(Back$(Help_Back_Pos))
WikiParse a$
GOTO newpageparsed
END IF
@ -2570,7 +2572,7 @@ FUNCTION ide2 (ignore)
Help_sy = Help_Back(Help_Back_Pos).sy
Help_cx = Help_Back(Help_Back_Pos).cx
Help_cy = Help_Back(Help_Back_Pos).cy
a$ = Wiki(Back$(Help_Back_Pos))
a$ = Wiki$(Back$(Help_Back_Pos))
WikiParse a$
GOTO newpageparsed
END IF
@ -2593,54 +2595,75 @@ FUNCTION ide2 (ignore)
NEXT
l2 = INSTR(l1, Help_Link$, Help_Link_Sep$) - 1
l$ = MID$(Help_Link$, l1, l2 - l1 + 1)
'assume PAGE
l$ = RIGHT$(l$, LEN(l$) - 5)
IF mCLICK OR K$ = CHR$(13) THEN
mCLICK = 0
IF Back$(Help_Back_Pos) <> l$ THEN
Help_Select = 0: Help_MSelect = 0
'COLOR 7, 0
Help_Back(Help_Back_Pos).sx = Help_sx 'update position
Help_Back(Help_Back_Pos).sy = Help_sy
Help_Back(Help_Back_Pos).cx = Help_cx
Help_Back(Help_Back_Pos).cy = Help_cy
top = UBOUND(back$)
IF Help_Back_Pos < top THEN
IF Back$(Help_Back_Pos + 1) = l$ THEN
GOTO usenextentry
IF LEFT$(l$, 5) = "EXTL:" THEN
IF (K$ = CHR$(13)) OR (mY = Help_cy - Help_sy + Help_wy1 AND mX = Help_cx - Help_sx + Help_wx1) THEN
l$ = RIGHT$(l$, LEN(l$) - 5)
l$ = StrReplace$(l$, " ", "%20")
l$ = StrReplace$(l$, "&", "%26")
IF INSTR(_OS$, "WIN") = 0 THEN
l$ = StrReplace$(l$, "$", "\$")
l$ = StrReplace$(l$, "&", "\&")
l$ = StrReplace$(l$, "(", "\(")
l$ = StrReplace$(l$, ")", "\)")
END IF
IF INSTR(_OS$, "WIN") THEN
SHELL _HIDE _DONTWAIT "start " + l$
ELSEIF INSTR(_OS$, "MAC") THEN
SHELL _HIDE _DONTWAIT "open " + l$
ELSE
SHELL _HIDE _DONTWAIT "xdg-open " + l$
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
REDIM _PRESERVE Back(top) AS STRING
REDIM _PRESERVE Help_Back(top) AS Help_Back_Type
REDIM _PRESERVE Back_Name(top) AS STRING
'Shuffle array upwards after current pos
FOR x = top - 1 TO Help_Back_Pos + 1 STEP -1
Back_Name$(x + 1) = Back_Name$(x)
Back$(x + 1) = Back$(x)
Help_Back(x + 1).sx = Help_Back(x).sx
Help_Back(x + 1).sy = Help_Back(x).sy
Help_Back(x + 1).cx = Help_Back(x).cx
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
Help_Back(Help_Back_Pos).sx = Help_sx 'update position
Help_Back(Help_Back_Pos).sy = Help_sy
Help_Back(Help_Back_Pos).cx = Help_cx
Help_Back(Help_Back_Pos).cy = Help_cy
top = UBOUND(back$)
IF Help_Back_Pos < top THEN
IF Back$(Help_Back_Pos + 1) = l$ THEN
GOTO usenextentry
END IF
END IF
top = top + 1
REDIM _PRESERVE Back(top) AS STRING
REDIM _PRESERVE Help_Back(top) AS Help_Back_Type
REDIM _PRESERVE Back_Name(top) AS STRING
'Shuffle array upwards after current pos
FOR x = top - 1 TO Help_Back_Pos + 1 STEP -1
Back_Name$(x + 1) = Back_Name$(x)
Back$(x + 1) = Back$(x)
Help_Back(x + 1).sx = Help_Back(x).sx
Help_Back(x + 1).sy = Help_Back(x).sy
Help_Back(x + 1).cx = Help_Back(x).cx
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
@ -2743,7 +2766,7 @@ FUNCTION ide2 (ignore)
Help_Back(Help_Back_Pos).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 idesubwindow THEN PCOPY 3, 0: SCREEN , , 3, 0: GOTO ideloop
@ -2807,10 +2830,13 @@ FUNCTION ide2 (ignore)
LOOP
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$ + ": " + sf$ + "'''" + backupn$ + "''' " + args$
a$ = a$ + CHR$(10) + "{{PageNavigation}}"
a$ = a$ + ": [[" + LEFT$(sf$, LEN(sf$) - 1) + "]] '''" + backupn$ + "''' " + args$ + CHR$(10)
a$ = a$ + CHR$(10) + CHR$(10) + "{{PageSeeAlso}}" + CHR$(10)
a$ = a$ + "* [[Sub (explanatory)]]" + CHR$(10)
a$ = a$ + "* [[Function (explanatory)]]" + CHR$(10)
IdeContextHelpSF = -1
@ -5282,12 +5308,12 @@ FUNCTION ide2 (ignore)
END IF
IF menu$(m, s) = "Keyword #Index" THEN
PCOPY 3, 0: SCREEN , , 3, 0
lnk$ = "Keyword Reference (Alphabetical)"
lnk$ = "Keyword Reference - Alphabetical"
GOTO OpenHelpLnk
END IF
IF menu$(m, s) = "#Keywords by Usage" THEN
PCOPY 3, 0: SCREEN , , 3, 0
lnk$ = "Keyword Reference (Usage)"
lnk$ = "Keyword Reference - By usage"
GOTO OpenHelpLnk
END IF
@ -5319,8 +5345,8 @@ FUNCTION ide2 (ignore)
IF idehelp THEN
Help_IgnoreCache = 1
a$ = Wiki$(Back$(Help_Back_Pos))
WikiParse a$ 'reparse updated page incl. plugin templates
Help_IgnoreCache = 0
WikiParse a$
END IF
GOTO ideloop
END IF
@ -5397,10 +5423,18 @@ FUNCTION ide2 (ignore)
' removing the "View on Wiki" - @dualbrain
IF 1=0 AND menu$(m, s) = "Update All #Pages..." THEN
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
IF q$ = "Y" THEN ideupdatehelpbox
PCOPY 3, 0: SCREEN , , 3, 0
IF q$ = "Y" THEN
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
END IF
@ -6502,8 +6536,8 @@ HelpAreaShowBackLinks:
LOCATE idewy, (idewx - (LEN(Document_Title$) + 8)) \ 2 : PRINT " HELP: " + Document_Title$ + " "
END IF
IF 1=0 THEN ' removing the "View on Wiki" - @dualbrain
'COLOR 7, 0: _PRINTSTRING (idewx - 18, idewy), CHR$(180)
'COLOR 15, 3: _PRINTSTRING (idewx - 17, idewy), " View on Wiki "
COLOR 7, 0: _PRINTSTRING (idewx - 18, idewy), CHR$(180)
COLOR 15, 3: _PRINTSTRING (idewx - 17, idewy), " View on Wiki "
END IF
RETURN
@ -14645,6 +14679,7 @@ FUNCTION idezfilelist$ (path$, method, mask$) 'method0=*.bas, method1=*.*, metho
DO UNTIL EOF(150)
LINE INPUT #150, a$
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$
END IF
LOOP
@ -14684,6 +14719,7 @@ FUNCTION idezfilelist$ (path$, method, mask$) 'method0=*.bas, method1=*.*, metho
EXIT FOR
END IF
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$
LOOP
CLOSE #150
@ -17583,7 +17619,7 @@ SUB Help_ShowText
IF setup = 0 AND UBOUND(back$) = 1 THEN
setup = 1
IF IdeContextHelpSF = 0 THEN
a$ = Wiki(Back$(1))
a$ = Wiki$(Back$(1))
WikiParse a$
END IF
END IF
@ -18655,7 +18691,15 @@ SUB IdeAddSearched (s2$)
CLOSE #fh
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 --------
PCOPY 0, 2
PCOPY 0, 1
@ -18697,8 +18741,9 @@ SUB ideupdatehelpbox
FOR i = 1 TO 100: o(i).par = p: NEXT 'set parent info of objects
'-------- end of generic init --------
startMainLoop:
DO 'main loop
IF Help_Recaching = 2 GOTO updateRoutine
'-------- generic display dialog box & objects --------
idedrawpar p
@ -18807,11 +18852,15 @@ SUB ideupdatehelpbox
SELECT CASE UpdateStep
CASE 1
'Create a list of all files to be recached
f$ = CHR$(0) + idezfilelist$("internal/help", 1, "") + CHR$(0)
IF LEN(f$) = 2 THEN f$ = CHR$(0)
IF Help_Recaching < 2 THEN
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
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_FAQ.txt" + f$
UpdateStep = UpdateStep + 1
@ -18820,10 +18869,9 @@ SUB ideupdatehelpbox
CASE 3
'Download and PARSE alphabetical index to build required F1 help links
FullMessage$(1) = "Regenerating keyword list..."
Help_Recaching = 1: Help_IgnoreCache = 1
a$ = Wiki$("Keyword Reference (Alphabetical)")
Help_Recaching = 0: Help_IgnoreCache = 0
WikiParse a$
a$ = Wiki$("Keyword Reference - Alphabetical")
IF INSTR(a$, "{{PageInternalError}}") > 0 THEN ideupdatehelpbox = 1: EXIT DO
WikiParse a$ 'update links.bin and check for plugin templates
UpdateStep = UpdateStep + 1
CASE 4
'Add all linked pages to download list (if not already in list)
@ -18832,21 +18880,25 @@ SUB ideupdatehelpbox
DO UNTIL EOF(fh)
LINE INPUT #fh, l$
IF LEN(l$) THEN
c = INSTR(l$, ","): PageName2$ = RIGHT$(l$, LEN(l$) - c)
DO WHILE INSTR(PageName2$, " ")
ASC(PageName2$, INSTR(PageName2$, " ")) = 95
LOOP
DO WHILE INSTR(PageName2$, "&")
i = INSTR(PageName2$, "&")
PageName2$ = LEFT$(PageName2$, i - 1) + "%26" + RIGHT$(PageName2$, LEN(PageName2$) - i)
LOOP
DO WHILE INSTR(PageName2$, "/")
i = INSTR(PageName2$, "/")
PageName2$ = LEFT$(PageName2$, i - 1) + "%2F" + RIGHT$(PageName2$, LEN(PageName2$) - i)
LOOP
PageName2$ = PageName2$ + ".txt"
IF INSTR(f$, CHR$(0) + PageName2$ + CHR$(0)) = 0 THEN
f$ = f$ + PageName2$ + CHR$(0)
c = INSTR(l$, ","): l$ = RIGHT$(l$, LEN(l$) - c)
IF Help_Recaching < 2 OR LEFT$(l$, 3) <> "_gl" THEN 'ignore _GL pages for 'qb64 -u' (build time update)
'Escape all invalid and other critical chars in filenames
PageName2$ = ""
FOR i = 1 TO LEN(l$)
c = ASC(l$, i)
SELECT CASE c
CASE 32 ' '(space)
PageName2$ = PageName2$ + "_"
CASE 34, 36, 38, 42, 43, 47, 58, 60, 62, 63, 92, 124 '("$&*+/:<>?\|)
PageName2$ = PageName2$ + "%" + HEX$(c)
CASE ELSE
PageName2$ = PageName2$ + CHR$(c)
END SELECT
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
LOOP
@ -18877,13 +18929,15 @@ SUB ideupdatehelpbox
f2$ = LEFT$(f2$, LEN(f2$) - 4)
n = n + 1
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
ELSE
UpdateStep = UpdateStep + 1
END IF
CASE 6
stoprecache:
IF Help_Recaching = 2 THEN EXIT DO
FullMessage$(1) = "All pages updated."
FullMessage$(2) = ""
idetxt(o(ButtonID).txt) = "#Close"
@ -18894,7 +18948,7 @@ SUB ideupdatehelpbox
mousedown = 0
mouseup = 0
LOOP
END SUB
END FUNCTION
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_Txt$ '[chr][col][link-byte1][link-byte2]
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_Link$ 'the link info [sep][type:]...[sep]
DIM SHARED Help_Link_Sep$: Help_Link_Sep$ = CHR$(13)
@ -20,7 +21,6 @@ DIM SHARED Help_NewLineIndent
DIM SHARED Help_Underline
'Link Types:
' PAGE:wikipagename
DIM SHARED Help_Pos, Help_Wrap_Pos
DIM SHARED Help_BG_Col
DIM SHARED Help_Col_Normal: Help_Col_Normal = 7
DIM SHARED Help_Col_Link: Help_Col_Link = 9