1
1
Fork 0
mirror of https://github.com/QB64-Phoenix-Edition/QB64pe.git synced 2024-07-06 18:40:23 +00:00

Merge pull request #392 from a740g/versioninfo-enhancement

$VERSIONINFO enhancement (#20)
This commit is contained in:
Samuel Gomes 2023-10-15 20:01:15 +05:30 committed by GitHub
commit 00ae109489
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 59 additions and 21 deletions

1
.gitignore vendored
View file

@ -17,3 +17,4 @@ mingw32.exe
mingw64.exe mingw64.exe
.vscode .vscode
.DS_Store .DS_Store
source/qb64pe_start.command

View file

@ -12,14 +12,14 @@ $SCREENHIDE
$EXEICON:'./qb64pe.ico' $EXEICON:'./qb64pe.ico'
$VERSIONINFO:CompanyName=QB64 Phoenix Edition $VERSIONINFO:CompanyName='QB64 Phoenix Edition'
$VERSIONINFO:FileDescription=QB64 IDE and Compiler $VERSIONINFO:FileDescription='QB64 IDE and Compiler'
$VERSIONINFO:InternalName=qb64pe.bas $VERSIONINFO:InternalName='qb64pe.bas'
$VERSIONINFO:LegalCopyright=MIT $VERSIONINFO:LegalCopyright='MIT'
$VERSIONINFO:LegalTrademarks= $VERSIONINFO:LegalTrademarks=''
$VERSIONINFO:OriginalFilename=qb64pe.exe $VERSIONINFO:OriginalFilename='qb64pe.exe'
$VERSIONINFO:ProductName=QB64-PE $VERSIONINFO:ProductName='QB64-PE'
$VERSIONINFO:Comments=QB64 is a modern extended BASIC programming language that retains QB4.5/QBasic compatibility and compiles native binaries for Windows, Linux and macOS. $VERSIONINFO:Comments='QB64 is a modern extended BASIC programming language that retains QB4.5/QBasic compatibility and compiles native binaries for Windows, Linux and macOS.'
'$INCLUDE:'global\version.bas' '$INCLUDE:'global\version.bas'
'$INCLUDE:'global\settings.bas' '$INCLUDE:'global\settings.bas'
@ -119,6 +119,8 @@ OS_BITS = 64: IF INSTR(_OS$, "[32BIT]") THEN OS_BITS = 32
IF OS_BITS = 32 THEN WindowTitle = "QB64 Phoenix Edition (x32)" ELSE WindowTitle = "QB64 Phoenix Edition (x64)" IF OS_BITS = 32 THEN WindowTitle = "QB64 Phoenix Edition (x32)" ELSE WindowTitle = "QB64 Phoenix Edition (x64)"
_TITLE WindowTitle _TITLE WindowTitle
CONST METACOMMAND_STRING_ENCLOSING_PAIR = "''"
DIM SHARED ConsoleMode, No_C_Compile_Mode, NoIDEMode DIM SHARED ConsoleMode, No_C_Compile_Mode, NoIDEMode
DIM SHARED ShowWarnings AS _BYTE, QuietMode AS _BYTE, CMDLineFile AS STRING DIM SHARED ShowWarnings AS _BYTE, QuietMode AS _BYTE, CMDLineFile AS STRING
DIM SHARED MonochromeLoggingMode AS _BYTE DIM SHARED MonochromeLoggingMode AS _BYTE
@ -1866,7 +1868,7 @@ DO
END IF END IF
IF LEFT$(temp$, 7) = "$ERROR " THEN IF LEFT$(temp$, 7) = "$ERROR " THEN
temp$ = LTRIM$(MID$(temp$, 7)) temp$ = RemoveStringEnclosingPair(LTRIM$(MID$(temp$, 7)), METACOMMAND_STRING_ENCLOSING_PAIR)
a$ = "Compilation check failed: " + temp$ a$ = "Compilation check failed: " + temp$
GOTO errmes GOTO errmes
END IF END IF
@ -3325,6 +3327,7 @@ DO
VersionInfoKey$ = LTRIM$(RTRIM$(MID$(a3u$, FirstDelimiter + 1, SecondDelimiter - FirstDelimiter - 1))) VersionInfoKey$ = LTRIM$(RTRIM$(MID$(a3u$, FirstDelimiter + 1, SecondDelimiter - FirstDelimiter - 1)))
VersionInfoValue$ = StrReplace$(LTRIM$(RTRIM$(MID$(a3$, SecondDelimiter + 1))), CHR$(34), "'") VersionInfoValue$ = StrReplace$(LTRIM$(RTRIM$(MID$(a3$, SecondDelimiter + 1))), CHR$(34), "'")
issueWarning = 0 ' only issue warnings if this is true
SELECT CASE VersionInfoKey$ SELECT CASE VersionInfoKey$
CASE "FILEVERSION#" CASE "FILEVERSION#"
@ -3338,43 +3341,61 @@ DO
IF viProductVersion$ = "" THEN viProductVersion$ = viProductVersionNum$ IF viProductVersion$ = "" THEN viProductVersion$ = viProductVersionNum$
layout$ = SCase$("$VersionInfo:PRODUCTVERSION#=") + VersionInfoValue$ layout$ = SCase$("$VersionInfo:PRODUCTVERSION#=") + VersionInfoValue$
CASE "COMPANYNAME" CASE "COMPANYNAME"
viCompanyName$ = VersionInfoValue$ viCompanyName$ = RemoveStringEnclosingPair(VersionInfoValue$, METACOMMAND_STRING_ENCLOSING_PAIR)
layout$ = SCase$("$VersionInfo:") + "CompanyName=" + VersionInfoValue$ layout$ = SCase$("$VersionInfo:") + "CompanyName=" + VersionInfoValue$
issueWarning = -1
CASE "FILEDESCRIPTION" CASE "FILEDESCRIPTION"
viFileDescription$ = VersionInfoValue$ viFileDescription$ = RemoveStringEnclosingPair(VersionInfoValue$, METACOMMAND_STRING_ENCLOSING_PAIR)
layout$ = SCase$("$VersionInfo:") + "FileDescription=" + VersionInfoValue$ layout$ = SCase$("$VersionInfo:") + "FileDescription=" + VersionInfoValue$
issueWarning = -1
CASE "FILEVERSION" CASE "FILEVERSION"
viFileVersion$ = VersionInfoValue$ viFileVersion$ = RemoveStringEnclosingPair(VersionInfoValue$, METACOMMAND_STRING_ENCLOSING_PAIR)
layout$ = SCase$("$VersionInfo:") + "FileVersion=" + VersionInfoValue$ layout$ = SCase$("$VersionInfo:") + "FileVersion=" + VersionInfoValue$
issueWarning = -1
CASE "INTERNALNAME" CASE "INTERNALNAME"
viInternalName$ = VersionInfoValue$ viInternalName$ = RemoveStringEnclosingPair(VersionInfoValue$, METACOMMAND_STRING_ENCLOSING_PAIR)
layout$ = SCase$("$VersionInfo:") + "InternalName=" + VersionInfoValue$ layout$ = SCase$("$VersionInfo:") + "InternalName=" + VersionInfoValue$
issueWarning = -1
CASE "LEGALCOPYRIGHT" CASE "LEGALCOPYRIGHT"
viLegalCopyright$ = VersionInfoValue$ viLegalCopyright$ = RemoveStringEnclosingPair(VersionInfoValue$, METACOMMAND_STRING_ENCLOSING_PAIR)
layout$ = SCase$("$VersionInfo:") + "LegalCopyright=" + VersionInfoValue$ layout$ = SCase$("$VersionInfo:") + "LegalCopyright=" + VersionInfoValue$
issueWarning = -1
CASE "LEGALTRADEMARKS" CASE "LEGALTRADEMARKS"
viLegalTrademarks$ = VersionInfoValue$ viLegalTrademarks$ = RemoveStringEnclosingPair(VersionInfoValue$, METACOMMAND_STRING_ENCLOSING_PAIR)
layout$ = SCase$("$VersionInfo:") + "LegalTrademarks=" + VersionInfoValue$ layout$ = SCase$("$VersionInfo:") + "LegalTrademarks=" + VersionInfoValue$
issueWarning = -1
CASE "ORIGINALFILENAME" CASE "ORIGINALFILENAME"
viOriginalFilename$ = VersionInfoValue$ viOriginalFilename$ = RemoveStringEnclosingPair(VersionInfoValue$, METACOMMAND_STRING_ENCLOSING_PAIR)
layout$ = SCase$("$VersionInfo:") + "OriginalFilename=" + VersionInfoValue$ layout$ = SCase$("$VersionInfo:") + "OriginalFilename=" + VersionInfoValue$
issueWarning = -1
CASE "PRODUCTNAME" CASE "PRODUCTNAME"
viProductName$ = VersionInfoValue$ viProductName$ = RemoveStringEnclosingPair(VersionInfoValue$, METACOMMAND_STRING_ENCLOSING_PAIR)
layout$ = SCase$("$VersionInfo:") + "ProductName=" + VersionInfoValue$ layout$ = SCase$("$VersionInfo:") + "ProductName=" + VersionInfoValue$
issueWarning = -1
CASE "PRODUCTVERSION" CASE "PRODUCTVERSION"
viProductVersion$ = VersionInfoValue$ viProductVersion$ = RemoveStringEnclosingPair(VersionInfoValue$, METACOMMAND_STRING_ENCLOSING_PAIR)
layout$ = SCase$("$VersionInfo:") + "ProductVersion=" + VersionInfoValue$ layout$ = SCase$("$VersionInfo:") + "ProductVersion=" + VersionInfoValue$
issueWarning = -1
CASE "COMMENTS" CASE "COMMENTS"
viComments$ = VersionInfoValue$ viComments$ = RemoveStringEnclosingPair(VersionInfoValue$, METACOMMAND_STRING_ENCLOSING_PAIR)
layout$ = SCase$("$VersionInfo:") + "Comments=" + VersionInfoValue$ layout$ = SCase$("$VersionInfo:") + "Comments=" + VersionInfoValue$
issueWarning = -1
CASE "WEB" CASE "WEB"
viWeb$ = VersionInfoValue$ viWeb$ = RemoveStringEnclosingPair(VersionInfoValue$, METACOMMAND_STRING_ENCLOSING_PAIR)
layout$ = SCase$("$VersionInfo:") + "Web=" + VersionInfoValue$ layout$ = SCase$("$VersionInfo:") + "Web=" + VersionInfoValue$
issueWarning = -1
CASE ELSE CASE ELSE
a$ = "Invalid key. (Use FILEVERSION#, PRODUCTVERSION#, CompanyName, FileDescription, FileVersion, InternalName, LegalCopyright, LegalTrademarks, OriginalFilename, ProductName, ProductVersion, Comments or Web)" a$ = "Invalid key. (Use FILEVERSION#, PRODUCTVERSION#, CompanyName, FileDescription, FileVersion, InternalName, LegalCopyright, LegalTrademarks, OriginalFilename, ProductName, ProductVersion, Comments or Web)"
GOTO errmes GOTO errmes
END SELECT END SELECT
' Generate warnings if needed
IF issueWarning AND NOT IgnoreWarnings THEN
IF NOT HasStringEnclosingPair(VersionInfoValue$, METACOMMAND_STRING_ENCLOSING_PAIR) THEN
addWarning linenumber, inclevel, inclinenumber(inclevel), incname$(inclevel), "missing string bracket delimiters (" + METACOMMAND_STRING_ENCLOSING_PAIR + ")", VersionInfoValue$
END IF
END IF
VersionInfoSet = -1 VersionInfoSet = -1
GOTO finishednonexec GOTO finishednonexec

View file

@ -1,7 +1,6 @@
' '
' String manipulation functions ' String manipulation functions
' '
FUNCTION StrRemove$ (myString$, whatToRemove$) 'noncase sensitive FUNCTION StrRemove$ (myString$, whatToRemove$) 'noncase sensitive
DIM a$, b$ DIM a$, b$
DIM AS LONG i DIM AS LONG i
@ -32,6 +31,23 @@ FUNCTION StrReplace$ (myString$, find$, replaceWith$) 'noncase sensitive
StrReplace$ = a$ StrReplace$ = a$
END FUNCTION END FUNCTION
' Returns true if text has a certain enclosing pair like 'hello'
FUNCTION HasStringEnclosingPair%% (text AS STRING, pair AS STRING)
IF LEN(text) > 1 AND LEN(pair) > 1 THEN
HasStringEnclosingPair = ASC(pair, 1) = ASC(text, 1) AND ASC(pair, 2) = ASC(text, LEN(text))
END IF
END FUNCTION
' Removes a string's enclosing pair if it is found. So, 'hello world' can be returned as just hello world
' pair - is the enclosing pair. E.g. "''", "()", "[]" etc.
FUNCTION RemoveStringEnclosingPair$ (text AS STRING, pair AS STRING)
IF HasStringEnclosingPair(text, pair) THEN
RemoveStringEnclosingPair = MID$(text, 2, LEN(text) - 2)
ELSE
RemoveStringEnclosingPair = text
END IF
END FUNCTION
FUNCTION AddQuotes$ (s$) FUNCTION AddQuotes$ (s$)
AddQuotes$ = CHR$(34) + s$ + CHR$(34) AddQuotes$ = CHR$(34) + s$ + CHR$(34)
END FUNCTION END FUNCTION