mirror of
https://github.com/QB64-Phoenix-Edition/QB64pe.git
synced 2024-09-16 15:34:03 +00:00
Local links support improved
- former versions did simply link to the top of the referenced page, ignoring the link anchor value (#) - now links can point to any page section heading and the section (if found) is placed in the visible area - to try use the links in the bottom nav section on the alphabetical index
This commit is contained in:
parent
e2674f0157
commit
af7dffb88c
3 changed files with 38 additions and 29 deletions
|
@ -2495,7 +2495,7 @@ FUNCTION ide2 (ignore)
|
||||||
LOOP
|
LOOP
|
||||||
|
|
||||||
IF Back_Name$(Help_Back_Pos) = "Alphabetical" OR Back_Name$(Help_Back_Pos) = "By Usage" THEN
|
IF Back_Name$(Help_Back_Pos) = "Alphabetical" OR Back_Name$(Help_Back_Pos) = "By Usage" THEN
|
||||||
IF lnkx1 <> 3 THEN
|
IF lnkx1 > 3 THEN
|
||||||
cx = px + 1
|
cx = px + 1
|
||||||
GOTO helpscanrow
|
GOTO helpscanrow
|
||||||
END IF
|
END IF
|
||||||
|
@ -2521,6 +2521,10 @@ FUNCTION ide2 (ignore)
|
||||||
END IF
|
END IF
|
||||||
END IF
|
END IF
|
||||||
foundsstr:
|
foundsstr:
|
||||||
|
IF Help_LinkL THEN
|
||||||
|
Help_Select = 0: Help_sy = cy - 3
|
||||||
|
Help_Search_Str = "": Help_LinkL = 0
|
||||||
|
END IF
|
||||||
strnotfound:
|
strnotfound:
|
||||||
|
|
||||||
IF KB = KEY_HOME AND KCONTROL THEN
|
IF KB = KEY_HOME AND KCONTROL THEN
|
||||||
|
@ -2611,7 +2615,7 @@ FUNCTION ide2 (ignore)
|
||||||
|
|
||||||
IF LEFT$(l$, 5) = "EXTL:" THEN
|
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
|
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$ = MID$(l$, 6)
|
||||||
l$ = StrReplace$(l$, " ", "%20")
|
l$ = StrReplace$(l$, " ", "%20")
|
||||||
l$ = StrReplace$(l$, "&", "%26")
|
l$ = StrReplace$(l$, "&", "%26")
|
||||||
IF INSTR(_OS$, "WIN") = 0 THEN
|
IF INSTR(_OS$, "WIN") = 0 THEN
|
||||||
|
@ -2630,10 +2634,14 @@ FUNCTION ide2 (ignore)
|
||||||
END IF
|
END IF
|
||||||
GOTO specialchar
|
GOTO specialchar
|
||||||
ELSEIF LEFT$(l$, 5) = "PAGE:" THEN
|
ELSEIF LEFT$(l$, 5) = "PAGE:" THEN
|
||||||
l$ = RIGHT$(l$, LEN(l$) - 5)
|
l$ = MID$(l$, 6)
|
||||||
|
l2 = INSTR(l$, "#") 'local link?
|
||||||
|
IF l2 > 0 THEN
|
||||||
|
Help_Search_Str = StrReplace$(MID$(l$, l2 + 1), "_", " ")
|
||||||
|
l$ = LEFT$(l$, l2 - 1): Help_LinkL = -1
|
||||||
|
END IF
|
||||||
IF Back$(Help_Back_Pos) <> l$ THEN
|
IF Back$(Help_Back_Pos) <> l$ THEN
|
||||||
Help_Select = 0: Help_MSelect = 0
|
Help_Select = 0: Help_MSelect = 0
|
||||||
'COLOR 7, 0
|
|
||||||
|
|
||||||
Help_Back(Help_Back_Pos).sx = Help_sx 'update position
|
Help_Back(Help_Back_Pos).sx = Help_sx 'update position
|
||||||
Help_Back(Help_Back_Pos).sy = Help_sy
|
Help_Back(Help_Back_Pos).sy = Help_sy
|
||||||
|
@ -2672,6 +2680,10 @@ FUNCTION ide2 (ignore)
|
||||||
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$(l$)
|
a$ = Wiki$(l$)
|
||||||
WikiParse a$
|
WikiParse a$
|
||||||
|
END IF
|
||||||
|
IF Help_LinkL THEN
|
||||||
|
norep = 1: GOTO delsrchagain
|
||||||
|
ELSE
|
||||||
GOTO newpageparsed
|
GOTO newpageparsed
|
||||||
END IF
|
END IF
|
||||||
END IF
|
END IF
|
||||||
|
|
|
@ -16,9 +16,10 @@ 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)
|
||||||
DIM SHARED Help_LinkN
|
DIM SHARED Help_LinkN, Help_LinkL '# of links, local link flag
|
||||||
'Link Types:
|
'Link Types:
|
||||||
' PAGE:wikipagename
|
' PAGE:wikipagename
|
||||||
|
' SECT:dummylink (not processed, just to mark page sections as search targets for local links)
|
||||||
' EXTL:external link url
|
' EXTL:external link url
|
||||||
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
|
||||||
|
|
|
@ -263,9 +263,9 @@ END FUNCTION
|
||||||
SUB WikiParse (a$) 'Wiki page interpret
|
SUB WikiParse (a$) 'Wiki page interpret
|
||||||
|
|
||||||
'Clear info
|
'Clear info
|
||||||
help_h = 0: help_w = 0: Help_Line$ = "": Help_Link$ = "": Help_LinkN = 0
|
help_h = 0: help_w = 0
|
||||||
Help_Txt$ = SPACE$(1000000)
|
Help_Line$ = "": Help_Txt$ = SPACE$(1000000): Help_Txt_Len = 0
|
||||||
Help_Txt_Len = 0
|
Help_Link$ = "SECT:dummylink" + Help_Link_Sep$: Help_LinkN = 1
|
||||||
|
|
||||||
Help_Pos = 1: Help_Wrap_Pos = 0
|
Help_Pos = 1: Help_Wrap_Pos = 0
|
||||||
Help_Line$ = MKL$(1)
|
Help_Line$ = MKL$(1)
|
||||||
|
@ -286,7 +286,7 @@ SUB WikiParse (a$) 'Wiki page interpret
|
||||||
Help_Center = 0: Help_CIndent$ = ""
|
Help_Center = 0: Help_CIndent$ = ""
|
||||||
Help_DList = 0: Help_ChkBlank = 0
|
Help_DList = 0: Help_ChkBlank = 0
|
||||||
|
|
||||||
link = 0: elink = 0: cb = 0: nl = 1: ah = 0: dl = 0
|
link = 0: elink = 0: cb = 0: nl = 1: hl = 0: ah = 0: dl = 0
|
||||||
|
|
||||||
col = Help_Col
|
col = Help_Col
|
||||||
|
|
||||||
|
@ -521,8 +521,8 @@ SUB WikiParse (a$) 'Wiki page interpret
|
||||||
etext$ = elink$
|
etext$ = elink$
|
||||||
i2 = INSTR(elink$, " ")
|
i2 = INSTR(elink$, " ")
|
||||||
IF i2 > 0 THEN
|
IF i2 > 0 THEN
|
||||||
etext$ = RIGHT$(elink$, LEN(elink$) - i2)
|
etext$ = MID$(elink$, i2 + 1) 'text part
|
||||||
elink$ = LEFT$(elink$, i2 - 1)
|
elink$ = LEFT$(elink$, i2 - 1) 'link part
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
Help_LinkN = Help_LinkN + 1
|
Help_LinkN = Help_LinkN + 1
|
||||||
|
@ -555,17 +555,13 @@ SUB WikiParse (a$) 'Wiki page interpret
|
||||||
text$ = link$
|
text$ = link$
|
||||||
i2 = INSTR(link$, "|") 'pipe link?
|
i2 = INSTR(link$, "|") 'pipe link?
|
||||||
IF i2 > 0 THEN
|
IF i2 > 0 THEN
|
||||||
text$ = RIGHT$(link$, LEN(link$) - i2) 'text part
|
text$ = MID$(link$, i2 + 1) 'text part
|
||||||
link$ = LEFT$(link$, i2 - 1) ' 'link part
|
link$ = LEFT$(link$, i2 - 1) 'link part
|
||||||
END IF
|
END IF
|
||||||
i2 = INSTR(link$, "#") 'local link?
|
i2 = INSTR(link$, "#") 'local link?
|
||||||
IF i2 > 0 THEN
|
IF i2 > 0 THEN
|
||||||
link$ = LEFT$(link$, i2 - 1) 'link to TOP
|
IF text$ = link$ THEN text$ = MID$(link$, i2 + 1) 'use anchor if no alternate text yet
|
||||||
IF link$ = "" THEN
|
IF LEFT$(link$, 1) = "#" THEN link$ = Help_PageLoaded$ + link$ 'add current page if missing
|
||||||
IF LEFT$(text$, 1) = "#" THEN text$ = MID$(text$, 2)
|
|
||||||
Help_AddTxt text$, 8, 0
|
|
||||||
GOTO charDone
|
|
||||||
END IF
|
|
||||||
END IF
|
END IF
|
||||||
IF LEFT$(link$, 9) = "Category:" THEN 'ignore category links
|
IF LEFT$(link$, 9) = "Category:" THEN 'ignore category links
|
||||||
Help_CheckRemoveBlankLine
|
Help_CheckRemoveBlankLine
|
||||||
|
@ -663,7 +659,7 @@ SUB WikiParse (a$) 'Wiki page interpret
|
||||||
'----------
|
'----------
|
||||||
IF cbo$ <> "" THEN
|
IF cbo$ <> "" THEN
|
||||||
IF RIGHT$(cbo$, 1) = ":" THEN Help_Underline = 2: ELSE Help_Underline = 1
|
IF RIGHT$(cbo$, 1) = ":" THEN Help_Underline = 2: ELSE Help_Underline = 1
|
||||||
Help_AddTxt cbo$, Help_Col_Section, 0: ah = 2
|
Help_AddTxt cbo$, Help_Col_Section, 1: ah = 2
|
||||||
END IF
|
END IF
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
|
@ -824,16 +820,16 @@ SUB WikiParse (a$) 'Wiki page interpret
|
||||||
IF Help_LockParse = 0 THEN
|
IF Help_LockParse = 0 THEN
|
||||||
'Custom section headings (section color, h3 single underline, h2 double underline)
|
'Custom section headings (section color, h3 single underline, h2 double underline)
|
||||||
ii = 0
|
ii = 0
|
||||||
IF c$(4) = " ===" AND Help_Heading = 3 THEN ii = 3: Help_Heading = 0: ah = 2
|
IF c$(4) = " ===" AND Help_Heading = 3 THEN ii = 3: Help_Heading = 0: hl = 0: ah = 2
|
||||||
IF c$(3) = "===" AND Help_Heading = 3 THEN ii = 2: Help_Heading = 0: ah = 2
|
IF c$(3) = "===" AND Help_Heading = 3 THEN ii = 2: Help_Heading = 0: hl = 0: ah = 2
|
||||||
IF c$(3) = "===" AND nl = 1 THEN ii = 2: Help_CheckBlankLine: Help_Heading = 3
|
IF c$(3) = "===" AND nl = 1 THEN ii = 2: Help_CheckBlankLine: Help_Heading = 3: hl = 1
|
||||||
IF c$(4) = "=== " AND nl = 1 THEN ii = 3: Help_CheckBlankLine: Help_Heading = 3
|
IF c$(4) = "=== " AND nl = 1 THEN ii = 3: Help_CheckBlankLine: Help_Heading = 3: hl = 1
|
||||||
IF ii > 0 THEN i = i + ii: col = Help_Col: Help_Underline = 1: GOTO charDone
|
IF ii > 0 THEN i = i + ii: col = Help_Col: Help_Underline = 1: GOTO charDone
|
||||||
ii = 0
|
ii = 0
|
||||||
IF c$(3) = " ==" AND Help_Heading = 2 THEN ii = 2: Help_Heading = 0: ah = 2
|
IF c$(3) = " ==" AND Help_Heading = 2 THEN ii = 2: Help_Heading = 0: hl = 0: ah = 2
|
||||||
IF c$(2) = "==" AND Help_Heading = 2 THEN ii = 1: Help_Heading = 0: ah = 2
|
IF c$(2) = "==" AND Help_Heading = 2 THEN ii = 1: Help_Heading = 0: hl = 0: ah = 2
|
||||||
IF c$(2) = "==" AND nl = 1 THEN ii = 1: Help_CheckBlankLine: Help_Heading = 2
|
IF c$(2) = "==" AND nl = 1 THEN ii = 1: Help_CheckBlankLine: Help_Heading = 2: hl = 1
|
||||||
IF c$(3) = "== " AND nl = 1 THEN ii = 2: Help_CheckBlankLine: Help_Heading = 2
|
IF c$(3) = "== " AND nl = 1 THEN ii = 2: Help_CheckBlankLine: Help_Heading = 2: hl = 1
|
||||||
IF ii > 0 THEN i = i + ii: col = Help_Col: Help_Underline = 2: GOTO charDone
|
IF ii > 0 THEN i = i + ii: col = Help_Col: Help_Underline = 2: GOTO charDone
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
|
@ -987,7 +983,7 @@ SUB WikiParse (a$) 'Wiki page interpret
|
||||||
nl = 1
|
nl = 1
|
||||||
GOTO charDoneKnl 'keep just set nl state
|
GOTO charDoneKnl 'keep just set nl state
|
||||||
END IF
|
END IF
|
||||||
Help_AddTxt CHR$(c), col, 0
|
Help_AddTxt CHR$(c), col, hl
|
||||||
|
|
||||||
charDone:
|
charDone:
|
||||||
nl = 0
|
nl = 0
|
||||||
|
|
Loading…
Reference in a new issue