mirror of
https://github.com/FellippeHeitor/InForm.git
synced 2025-01-15 03:49:56 +00:00
Properly stores and retrieves special characters from .frm; Closes #67.
Special characters are now saved using escape codes which are interpreted at load time. Instead of storing CHR$(10), we store \10; inside the string being saved and so forth for every character below ASC(32), for CHR(34) and for ASC("\").
This commit is contained in:
parent
5a396f0143
commit
5ddeaf6c59
3 changed files with 59 additions and 24 deletions
|
@ -4618,21 +4618,6 @@ FUNCTION __UI_LoadThemeImage& (FileName$)
|
||||||
__UI_LoadThemeImage& = TempImage
|
__UI_LoadThemeImage& = TempImage
|
||||||
END FUNCTION
|
END FUNCTION
|
||||||
|
|
||||||
'---------------------------------------------------------------------------------
|
|
||||||
FUNCTION __UI_SpecialCharsToCHR$ (Text$)
|
|
||||||
DIM i AS LONG, Temp$
|
|
||||||
|
|
||||||
Temp$ = CHR$(34)
|
|
||||||
FOR i = 1 TO LEN(Text$)
|
|
||||||
IF ASC(Text$, i) < 32 OR ASC(Text$, i) = 34 THEN
|
|
||||||
Temp$ = Temp$ + CHR$(34) + " + CHR$(" + LTRIM$(STR$(ASC(Text$, i))) + ") + " + CHR$(34)
|
|
||||||
ELSE
|
|
||||||
Temp$ = Temp$ + MID$(Text$, i, 1)
|
|
||||||
END IF
|
|
||||||
NEXT
|
|
||||||
__UI_SpecialCharsToCHR$ = Temp$ + CHR$(34)
|
|
||||||
END FUNCTION
|
|
||||||
|
|
||||||
'---------------------------------------------------------------------------------
|
'---------------------------------------------------------------------------------
|
||||||
SUB SetRadioButtonValue (id AS LONG)
|
SUB SetRadioButtonValue (id AS LONG)
|
||||||
'Radio buttons will change value of others in the same group
|
'Radio buttons will change value of others in the same group
|
||||||
|
|
|
@ -3398,12 +3398,12 @@ SUB SaveForm (ExitToQB64 AS _BYTE, SaveOnlyFrm AS _BYTE)
|
||||||
'ELSE
|
'ELSE
|
||||||
' a$ = PreviewCaptions(i)
|
' a$ = PreviewCaptions(i)
|
||||||
'END IF
|
'END IF
|
||||||
a$ = " SetCaption __UI_NewID, " + __UI_SpecialCharsToCHR$(PreviewCaptions(i))
|
a$ = " SetCaption __UI_NewID, " + SpecialCharsToEscapeCode$(PreviewCaptions(i))
|
||||||
PRINT #TextFileNum, a$
|
PRINT #TextFileNum, a$
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
IF LEN(PreviewTips(i)) > 0 THEN
|
IF LEN(PreviewTips(i)) > 0 THEN
|
||||||
a$ = " ToolTip(__UI_NewID) = " + __UI_SpecialCharsToCHR$(PreviewTips(i))
|
a$ = " ToolTip(__UI_NewID) = " + SpecialCharsToEscapeCode$(PreviewTips(i))
|
||||||
PRINT #TextFileNum, a$
|
PRINT #TextFileNum, a$
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
|
@ -3432,12 +3432,12 @@ SUB SaveForm (ExitToQB64 AS _BYTE, SaveOnlyFrm AS _BYTE)
|
||||||
a$ = " LoadImage Control(__UI_NewID), " + CHR$(34) + PreviewTexts(i) + CHR$(34)
|
a$ = " LoadImage Control(__UI_NewID), " + CHR$(34) + PreviewTexts(i) + CHR$(34)
|
||||||
PRINT #TextFileNum, a$
|
PRINT #TextFileNum, a$
|
||||||
CASE ELSE
|
CASE ELSE
|
||||||
a$ = " Text(__UI_NewID) = " + __UI_SpecialCharsToCHR$(PreviewTexts(i))
|
a$ = " Text(__UI_NewID) = " + SpecialCharsToEscapeCode$(PreviewTexts(i))
|
||||||
PRINT #TextFileNum, a$
|
PRINT #TextFileNum, a$
|
||||||
END SELECT
|
END SELECT
|
||||||
END IF
|
END IF
|
||||||
IF LEN(PreviewMasks(i)) > 0 THEN
|
IF LEN(PreviewMasks(i)) > 0 THEN
|
||||||
a$ = " Mask(__UI_NewID) = " + __UI_SpecialCharsToCHR$(PreviewMasks(i))
|
a$ = " Mask(__UI_NewID) = " + SpecialCharsToEscapeCode$(PreviewMasks(i))
|
||||||
PRINT #TextFileNum, a$
|
PRINT #TextFileNum, a$
|
||||||
END IF
|
END IF
|
||||||
IF PreviewControls(i).TransparentColor > 0 THEN
|
IF PreviewControls(i).TransparentColor > 0 THEN
|
||||||
|
@ -4265,3 +4265,18 @@ FUNCTION Download$ (url$, file$, timelimit) STATIC
|
||||||
Download = MKI$(0) 'still working
|
Download = MKI$(0) 'still working
|
||||||
END FUNCTION
|
END FUNCTION
|
||||||
|
|
||||||
|
'---------------------------------------------------------------------------------
|
||||||
|
FUNCTION SpecialCharsToEscapeCode$ (Text$)
|
||||||
|
DIM i AS LONG, Temp$
|
||||||
|
|
||||||
|
Temp$ = CHR$(34)
|
||||||
|
FOR i = 1 TO LEN(Text$)
|
||||||
|
IF ASC(Text$, i) < 32 OR ASC(Text$, i) = 34 OR ASC(Text$, i) = 92 THEN
|
||||||
|
Temp$ = Temp$ + "\" + LTRIM$(STR$(ASC(Text$, i))) + ";"
|
||||||
|
ELSE
|
||||||
|
Temp$ = Temp$ + MID$(Text$, i, 1)
|
||||||
|
END IF
|
||||||
|
NEXT
|
||||||
|
SpecialCharsToEscapeCode$ = Temp$ + CHR$(34)
|
||||||
|
END FUNCTION
|
||||||
|
|
||||||
|
|
|
@ -2233,13 +2233,12 @@ SUB LoadPreviewText
|
||||||
'Caption
|
'Caption
|
||||||
DummyText$ = nextParameter(b$) 'discard first parameter
|
DummyText$ = nextParameter(b$) 'discard first parameter
|
||||||
DummyText$ = nextParameter(b$)
|
DummyText$ = nextParameter(b$)
|
||||||
'Replace CHR$(10) with \n:
|
DummyText$ = RestoreCHRfromEscapeCode$(DummyText$)
|
||||||
DummyText$ = Replace$(DummyText$, CHR$(34) + " + CHR$(10) + " + CHR$(34), "\n", False, 0)
|
|
||||||
SetCaption TempValue, DummyText$
|
SetCaption TempValue, DummyText$
|
||||||
ELSEIF LEFT$(b$, 8) = "AddItem " THEN
|
ELSEIF LEFT$(b$, 8) = "AddItem " THEN
|
||||||
'Caption
|
'Caption
|
||||||
DummyText$ = nextParameter(b$) 'discard first parameter
|
DummyText$ = nextParameter(b$) 'discard first parameter
|
||||||
DummyText$ = nextParameter(b$)
|
DummyText$ = RestoreCHRfromEscapeCode(nextParameter(b$))
|
||||||
AddItem TempValue, DummyText$
|
AddItem TempValue, DummyText$
|
||||||
ELSEIF LEFT$(b$, 10) = "LoadImage " THEN
|
ELSEIF LEFT$(b$, 10) = "LoadImage " THEN
|
||||||
'Image
|
'Image
|
||||||
|
@ -2249,12 +2248,12 @@ SUB LoadPreviewText
|
||||||
ELSEIF LEFT$(b$, 22) = "ToolTip(__UI_NewID) = " THEN
|
ELSEIF LEFT$(b$, 22) = "ToolTip(__UI_NewID) = " THEN
|
||||||
'Tooltip
|
'Tooltip
|
||||||
DummyText$ = MID$(b$, INSTR(b$, " = ") + 3)
|
DummyText$ = MID$(b$, INSTR(b$, " = ") + 3)
|
||||||
DummyText$ = Replace$(DummyText$, CHR$(34) + " + CHR$(10) + " + CHR$(34), CHR$(10), False, 0)
|
DummyText$ = RestoreCHRfromEscapeCode$(DummyText$)
|
||||||
ToolTip(TempValue) = removeQuotation$(DummyText$)
|
ToolTip(TempValue) = removeQuotation$(DummyText$)
|
||||||
ELSEIF LEFT$(b$, 19) = "Text(__UI_NewID) = " THEN
|
ELSEIF LEFT$(b$, 19) = "Text(__UI_NewID) = " THEN
|
||||||
'Text
|
'Text
|
||||||
DummyText$ = MID$(b$, INSTR(b$, " = ") + 3)
|
DummyText$ = MID$(b$, INSTR(b$, " = ") + 3)
|
||||||
DummyText$ = Replace$(DummyText$, CHR$(34) + " + CHR$(10) + " + CHR$(34), CHR$(10), False, 0)
|
DummyText$ = RestoreCHRfromEscapeCode$(DummyText$)
|
||||||
Text(TempValue) = removeQuotation$(DummyText$)
|
Text(TempValue) = removeQuotation$(DummyText$)
|
||||||
|
|
||||||
IF Control(TempValue).Type = __UI_Type_PictureBox OR Control(TempValue).Type = __UI_Type_Button THEN
|
IF Control(TempValue).Type = __UI_Type_PictureBox OR Control(TempValue).Type = __UI_Type_Button THEN
|
||||||
|
@ -2269,6 +2268,7 @@ SUB LoadPreviewText
|
||||||
ELSEIF LEFT$(b$, 19) = "Mask(__UI_NewID) = " THEN
|
ELSEIF LEFT$(b$, 19) = "Mask(__UI_NewID) = " THEN
|
||||||
'Mask
|
'Mask
|
||||||
DummyText$ = MID$(b$, INSTR(b$, " = ") + 3)
|
DummyText$ = MID$(b$, INSTR(b$, " = ") + 3)
|
||||||
|
DummyText$ = RestoreCHRfromEscapeCode$(DummyText$)
|
||||||
Mask(TempValue) = removeQuotation$(DummyText$)
|
Mask(TempValue) = removeQuotation$(DummyText$)
|
||||||
ELSEIF INSTR(b$, "__UI_NewControl") > 0 THEN
|
ELSEIF INSTR(b$, "__UI_NewControl") > 0 THEN
|
||||||
'New Control
|
'New Control
|
||||||
|
@ -2942,3 +2942,38 @@ SUB LoadDefaultFonts
|
||||||
Control(__UI_FormID).Font = SetFont("InForm/resources/NotoMono-Regular.ttf", 12)
|
Control(__UI_FormID).Font = SetFont("InForm/resources/NotoMono-Regular.ttf", 12)
|
||||||
END IF
|
END IF
|
||||||
END SUB
|
END SUB
|
||||||
|
|
||||||
|
FUNCTION RestoreCHRfromEscapeCode$ (__Text$)
|
||||||
|
DIM Text$, i AS LONG, BackSlash AS LONG, SemiColon AS LONG
|
||||||
|
DIM j AS LONG, tempNum$
|
||||||
|
|
||||||
|
Text$ = __Text$
|
||||||
|
|
||||||
|
IF INSTR(Text$, "\") = 0 THEN
|
||||||
|
RestoreCHRfromEscapeCode$ = Text$
|
||||||
|
EXIT FUNCTION
|
||||||
|
END IF
|
||||||
|
|
||||||
|
DO
|
||||||
|
BackSlash = INSTR(BackSlash + 1, Text$, "\")
|
||||||
|
IF BackSlash = 0 THEN EXIT DO
|
||||||
|
|
||||||
|
SemiColon = INSTR(BackSlash + 1, Text$, ";")
|
||||||
|
IF SemiColon = 0 THEN _CONTINUE
|
||||||
|
|
||||||
|
tempNum$ = ""
|
||||||
|
FOR j = BackSlash + 1 TO SemiColon - 1
|
||||||
|
IF ASC(Text$, j) < 48 OR ASC(Text$, j) > 57 THEN tempNum$ = "": EXIT FOR
|
||||||
|
tempNum$ = tempNum$ + MID$(Text$, j, 1)
|
||||||
|
NEXT
|
||||||
|
|
||||||
|
IF LEN(tempNum$) THEN
|
||||||
|
Text$ = LEFT$(Text$, BackSlash - 1) + CHR$(VAL(tempNum$)) + MID$(Text$, SemiColon + 1)
|
||||||
|
END IF
|
||||||
|
|
||||||
|
BackSlash = 0
|
||||||
|
LOOP
|
||||||
|
|
||||||
|
RestoreCHRfromEscapeCode$ = Text$
|
||||||
|
END FUNCTION
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue