1
1
Fork 0
mirror of https://github.com/QB64Official/qb64.git synced 2024-07-03 08:51:22 +00:00

Merge pull request #125 from QB64Team/IdeTweaks

Ide tweaks
This commit is contained in:
Fellippe Heitor 2021-02-06 05:26:07 -03:00 committed by GitHub
commit e5b48f2718
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 178 additions and 38 deletions

View file

@ -18,7 +18,7 @@ DIM SHARED IdeSystem AS LONG
'3=Scrolling within the help window '3=Scrolling within the help window
IdeSystem = 1 IdeSystem = 1
DIM SHARED IdeRecentLink(1 TO 4, 1 TO 2) AS STRING DIM SHARED IdeRecentLink(1 TO 6, 1 TO 2) AS STRING
DIM SHARED IdeOpenFile AS STRING 'makes IdeOpen directly open the file passed DIM SHARED IdeOpenFile AS STRING 'makes IdeOpen directly open the file passed
TYPE IdeBmkType TYPE IdeBmkType
@ -194,6 +194,7 @@ DIM SHARED idefocusline 'simply stores the location of the line to highlight in
DIM SHARED idecompilererrormessage$ DIM SHARED idecompilererrormessage$
DIM SHARED ideautorun DIM SHARED ideautorun
DIM SHARED menu$(1 TO 10, 0 TO 20) DIM SHARED menu$(1 TO 10, 0 TO 20)
DIM SHARED menuDesc$(1 TO 10, 0 TO 20)
DIM SHARED menusize(1 TO 10) DIM SHARED menusize(1 TO 10)
DIM SHARED menus AS INTEGER, idecontextualmenuID AS INTEGER DIM SHARED menus AS INTEGER, idecontextualmenuID AS INTEGER
DIM SHARED ideeditmenuID AS INTEGER, SearchMenuID AS INTEGER DIM SHARED ideeditmenuID AS INTEGER, SearchMenuID AS INTEGER

View file

@ -260,99 +260,126 @@ FUNCTION ide2 (ignore)
m = m + 1: i = 0: ViewMenuID = m m = m + 1: i = 0: ViewMenuID = m
menu$(m, i) = "View": i = i + 1 menu$(m, i) = "View": i = i + 1
menu$(m, i) = "#SUBs... F2": i = i + 1 menu$(m, i) = "#SUBs... F2": i = i + 1
menuDesc$(m, i - 1) = "Displays a list of SUB/FUNCTION procedures"
menu$(m, i) = "#Line Numbers " + CHR$(16): i = i + 1 menu$(m, i) = "#Line Numbers " + CHR$(16): i = i + 1
menuDesc$(m, i - 1) = "Toggles and customizes line numbers (side bar)"
menu$(m, i) = "-": i = i + 1 menu$(m, i) = "-": i = i + 1
ViewMenuCompilerWarnings = i ViewMenuCompilerWarnings = i
menu$(ViewMenuID, ViewMenuCompilerWarnings) = "Compiler #Warnings... Ctrl+W": i = i + 1 menu$(ViewMenuID, ViewMenuCompilerWarnings) = "Compiler #Warnings... Ctrl+W": i = i + 1
menuDesc$(m, i - 1) = "Displays a list of recent code warnings"
menusize(m) = i - 1 menusize(m) = i - 1
m = m + 1: i = 0: SearchMenuID = m m = m + 1: i = 0: SearchMenuID = m
menu$(m, i) = "Search": i = i + 1 menu$(m, i) = "Search": i = i + 1
menu$(m, i) = "#Find... Ctrl+F3": i = i + 1 menu$(m, i) = "#Find... Ctrl+F3": i = i + 1
menuDesc$(m, i - 1) = "Finds specified text"
menu$(m, i) = "#Repeat Last Find (Shift+) F3": i = i + 1 menu$(m, i) = "#Repeat Last Find (Shift+) F3": i = i + 1
menuDesc$(m, i - 1) = "Finds next occurrence of text specified in previous search"
menu$(m, i) = "#Change... Alt+F3": i = i + 1 menu$(m, i) = "#Change... Alt+F3": i = i + 1
menuDesc$(m, i - 1) = "Finds and changes specified text"
menu$(m, i) = "-": i = i + 1 menu$(m, i) = "-": i = i + 1
menu$(m, i) = "Clear Search #History...": i = i + 1 menu$(m, i) = "Clear Search #History...": i = i + 1
menuDesc$(m, i - 1) = "Clears history of searched text items"
menu$(m, i) = "-": i = i + 1 menu$(m, i) = "-": i = i + 1
SearchMenuEnableQuickNav = i SearchMenuEnableQuickNav = i
menu$(m, i) = "Enable #Quick Navigation (Back Arrow)": i = i + 1 menu$(m, i) = "#Quick Navigation": i = i + 1
menuDesc$(m, i - 1) = "Toggles Quick Navigation (back arrow)"
IF EnableQuickNav THEN IF EnableQuickNav THEN
menu$(SearchMenuID, SearchMenuEnableQuickNav) = CHR$(7) + menu$(SearchMenuID, SearchMenuEnableQuickNav) menu$(SearchMenuID, SearchMenuEnableQuickNav) = CHR$(7) + menu$(SearchMenuID, SearchMenuEnableQuickNav)
END IF END IF
menu$(m, i) = "-": i = i + 1 menu$(m, i) = "-": i = i + 1
menu$(m, i) = "Add/Remove #Bookmark Alt+Left": i = i + 1 menu$(m, i) = "Add/Remove #Bookmark Alt+Left": i = i + 1
menuDesc$(m, i - 1) = "Toggles a bookmark in the current line"
menu$(m, i) = "#Next Bookmark Alt+Down": i = i + 1 menu$(m, i) = "#Next Bookmark Alt+Down": i = i + 1
menuDesc$(m, i - 1) = "Navigates to the next bookmark"
menu$(m, i) = "#Previous Bookmark Alt+Up": i = i + 1 menu$(m, i) = "#Previous Bookmark Alt+Up": i = i + 1
menuDesc$(m, i - 1) = "Navigates to the previous bookmark"
menu$(m, i) = "-": i = i + 1 menu$(m, i) = "-": i = i + 1
menu$(m, i) = "#Go To Line... Ctrl+G": i = i + 1 menu$(m, i) = "#Go To Line... Ctrl+G": i = i + 1
menuDesc$(m, i - 1) = "Jumps to the specified line number"
menusize(m) = i - 1 menusize(m) = i - 1
m = m + 1: i = 0: RunMenuID = m m = m + 1: i = 0: RunMenuID = m
menu$(m, i) = "Run": i = i + 1 menu$(m, i) = "Run": i = i + 1
menu$(m, i) = "#Start F5": i = i + 1 menu$(m, i) = "#Start F5": i = i + 1
menuDesc$(m, i - 1) = "Compiles current program and runs it"
menu$(m, i) = "Modify #COMMAND$...": i = i + 1 menu$(m, i) = "Modify #COMMAND$...": i = i + 1
menuDesc$(m, i - 1) = "Sets string returned by COMMAND$ function"
menu$(m, i) = "-": i = i + 1 menu$(m, i) = "-": i = i + 1
RunMenuSaveExeWithSource = i RunMenuSaveExeWithSource = i
menu$(m, i) = "Output EXE to Source #Folder": i = i + 1 menu$(m, i) = "Output EXE to Source #Folder": i = i + 1
menuDesc$(m, i - 1) = "Toggles compiling program to QB64's folder or to source folder"
IF SaveExeWithSource THEN IF SaveExeWithSource THEN
menu$(RunMenuID, RunMenuSaveExeWithSource) = CHR$(7) + menu$(RunMenuID, RunMenuSaveExeWithSource) menu$(RunMenuID, RunMenuSaveExeWithSource) = CHR$(7) + menu$(RunMenuID, RunMenuSaveExeWithSource)
END IF END IF
menu$(m, i) = "-": i = i + 1 menu$(m, i) = "-": i = i + 1
'menu$(m, i) = "Start (#Detached) Ctrl+F5": i = i + 1
IF os$ = "LNX" THEN IF os$ = "LNX" THEN
menu$(m, i) = "Make E#xecutable Only F11": i = i + 1 menu$(m, i) = "Make E#xecutable Only F11": i = i + 1
ELSE ELSE
menu$(m, i) = "Make E#XE Only F11": i = i + 1 menu$(m, i) = "Make E#XE Only F11": i = i + 1
END IF END IF
menuDesc$(m, i - 1) = "Compiles current program without running it"
menusize(m) = i - 1 menusize(m) = i - 1
m = m + 1: i = 0: OptionsMenuID = m m = m + 1: i = 0: OptionsMenuID = m
menu$(m, i) = "Options": i = i + 1 menu$(m, i) = "Options": i = i + 1
menu$(m, i) = "#Display...": i = i + 1 menu$(m, i) = "#Display...": i = i + 1
menuDesc$(m, i - 1) = "Changes screen size and font"
menu$(m, i) = "IDE C#olors...": i = i + 1 menu$(m, i) = "IDE C#olors...": i = i + 1
menuDesc$(m, i - 1) = "Changes or customizes IDE color scheme"
menu$(m, i) = "#Code Layout...": i = i + 1 menu$(m, i) = "#Code Layout...": i = i + 1
menuDesc$(m, i - 1) = "Changes auto-format features"
menu$(m, i) = "-": i = i + 1 menu$(m, i) = "-": i = i + 1
menu$(m, i) = "#Language...": i = i + 1 menu$(m, i) = "#Language...": i = i + 1
menuDesc$(m, i - 1) = "Changes code page to use with TTF fonts"
menu$(m, i) = "#Backup/Undo...": i = i + 1 menu$(m, i) = "#Backup/Undo...": i = i + 1
menuDesc$(m, i - 1) = "Sets size of backup/undo buffer"
menu$(m, i) = "#Advanced...": i = i + 1 menu$(m, i) = "#Advanced...": i = i + 1
menuDesc$(m, i - 1) = "Enables embedding C++ debug information into compiled program"
menu$(m, i) = "-": i = i + 1 menu$(m, i) = "-": i = i + 1
OptionsMenuDisableSyntax = i OptionsMenuDisableSyntax = i
menu$(m, i) = "Syntax #Highlighter": i = i + 1 menu$(m, i) = "Syntax #Highlighter": i = i + 1
menuDesc$(m, i - 1) = "Toggles syntax highlighter"
IF NOT DisableSyntaxHighlighter THEN IF NOT DisableSyntaxHighlighter THEN
menu$(OptionsMenuID, OptionsMenuDisableSyntax) = CHR$(7) + menu$(OptionsMenuID, OptionsMenuDisableSyntax) menu$(OptionsMenuID, OptionsMenuDisableSyntax) = CHR$(7) + menu$(OptionsMenuID, OptionsMenuDisableSyntax)
END IF END IF
OptionsMenuSwapMouse = i OptionsMenuSwapMouse = i
menu$(m, i) = "#Swap Mouse Buttons": i = i + 1 menu$(m, i) = "#Swap Mouse Buttons": i = i + 1
menuDesc$(m, i - 1) = "Swaps functionality of left/right mouse buttons"
IF MouseButtonSwapped THEN IF MouseButtonSwapped THEN
menu$(OptionsMenuID, OptionsMenuSwapMouse) = CHR$(7) + menu$(OptionsMenuID, OptionsMenuSwapMouse) menu$(OptionsMenuID, OptionsMenuSwapMouse) = CHR$(7) + menu$(OptionsMenuID, OptionsMenuSwapMouse)
END IF END IF
OptionsMenuPasteCursor = i OptionsMenuPasteCursor = i
menu$(m, i) = "Cursor After #Pasted Content": i = i + 1 menu$(m, i) = "Cursor After #Paste": i = i + 1
menuDesc$(m, i - 1) = "Toggles placing the cursor before/after the pasted content"
IF PasteCursorAtEnd THEN IF PasteCursorAtEnd THEN
menu$(OptionsMenuID, OptionsMenuPasteCursor) = CHR$(7) + menu$(OptionsMenuID, OptionsMenuPasteCursor) menu$(OptionsMenuID, OptionsMenuPasteCursor) = CHR$(7) + menu$(OptionsMenuID, OptionsMenuPasteCursor)
END IF END IF
OptionsMenuShowErrorsImmediately = i OptionsMenuShowErrorsImmediately = i
menu$(m, i) = "Show Compilation #Errors Immediately": i = i + 1 menu$(m, i) = "Syntax Ch#ecker": i = i + 1
menuDesc$(m, i - 1) = "Toggles instant syntax checker (status area)"
IF IDEShowErrorsImmediately THEN IF IDEShowErrorsImmediately THEN
menu$(OptionsMenuID, OptionsMenuShowErrorsImmediately) = CHR$(7) + menu$(OptionsMenuID, OptionsMenuShowErrorsImmediately) menu$(OptionsMenuID, OptionsMenuShowErrorsImmediately) = CHR$(7) + menu$(OptionsMenuID, OptionsMenuShowErrorsImmediately)
END IF END IF
OptionsMenuIgnoreWarnings = i OptionsMenuIgnoreWarnings = i
menu$(m, i) = "Ignore #Warnings": i = i + 1 menu$(m, i) = "Ignore #Warnings": i = i + 1
menuDesc$(m, i - 1) = "Toggles display of warning messages (unused variables, etc)"
IF IgnoreWarnings THEN menu$(OptionsMenuID, OptionsMenuIgnoreWarnings) = CHR$(7) + "Ignore #Warnings" IF IgnoreWarnings THEN menu$(OptionsMenuID, OptionsMenuIgnoreWarnings) = CHR$(7) + "Ignore #Warnings"
OptionsMenuAutoComplete = i OptionsMenuAutoComplete = i
menu$(m, i) = "Code Suggest#ions": i = i + 1 menu$(m, i) = "Code Suggest#ions": i = i + 1
menuDesc$(m, i - 1) = "Toggles code suggestions/auto-complete"
IF IdeAutoComplete THEN menu$(OptionsMenuID, OptionsMenuAutoComplete) = CHR$(7) + "Code Suggest#ions" IF IdeAutoComplete THEN menu$(OptionsMenuID, OptionsMenuAutoComplete) = CHR$(7) + "Code Suggest#ions"
@ -361,23 +388,34 @@ FUNCTION ide2 (ignore)
m = m + 1: i = 0 m = m + 1: i = 0
menu$(m, i) = "Tools": i = i + 1 menu$(m, i) = "Tools": i = i + 1
menu$(m, i) = "#ASCII Chart...": i = i + 1 menu$(m, i) = "#ASCII Chart...": i = i + 1
menuDesc$(m, i - 1) = "Displays ASCII characters and allows inserting in current program"
menu$(m, i) = "Insert Quick #Keycode Ctrl+K": i = i + 1 menu$(m, i) = "Insert Quick #Keycode Ctrl+K": i = i + 1
menuDesc$(m, i - 1) = "Captures key codes and inserts in current program"
menu$(m, i) = "#Math Evaluator...": i = i + 1 menu$(m, i) = "#Math Evaluator...": i = i + 1
menuDesc$(m, i - 1) = "Displays the math evaluator dialog"
menu$(m, i) = "#RGB Color Mixer...": i = i + 1 menu$(m, i) = "#RGB Color Mixer...": i = i + 1
menuDesc$(m, i - 1) = "Allows mixing colors to edit/insert _RGB statements"
menusize(m) = i - 1 menusize(m) = i - 1
m = m + 1: i = 0 m = m + 1: i = 0
menu$(m, i) = "Help": i = i + 1 menu$(m, i) = "Help": i = i + 1
menu$(m, i) = "#View Shift+F1": i = i + 1 menu$(m, i) = "#View Shift+F1": i = i + 1
menuDesc$(m, i - 1) = "Displays help window"
menu$(m, i) = "#Contents Page": i = i + 1 menu$(m, i) = "#Contents Page": i = i + 1
menuDesc$(m, i - 1) = "Displays help contents page"
menu$(m, i) = "Keyword #Index": i = i + 1 menu$(m, i) = "Keyword #Index": i = i + 1
menuDesc$(m, i - 1) = "Displays keyword index page"
menu$(m, i) = "#Keywords by Usage": i = i + 1 menu$(m, i) = "#Keywords by Usage": i = i + 1
menuDesc$(m, i - 1) = "Displays keywords index by usage"
menu$(m, i) = "-": i = i + 1 menu$(m, i) = "-": i = i + 1
menu$(m, i) = "#Update Current Page": i = i + 1 menu$(m, i) = "#Update Current Page": i = i + 1
menuDesc$(m, i - 1) = "Downloads the latest version of an article from the wiki"
menu$(m, i) = "Update All #Pages...": i = i + 1 menu$(m, i) = "Update All #Pages...": i = i + 1
menuDesc$(m, i - 1) = "Downloads the latest version of all articles from the wiki"
menu$(m, i) = "-": i = i + 1 menu$(m, i) = "-": i = i + 1
menu$(m, i) = "#About...": i = i + 1 menu$(m, i) = "#About...": i = i + 1
menuDesc$(m, i - 1) = "Displays the current version of QB64"
menusize(m) = i - 1 menusize(m) = i - 1
menus = m menus = m
@ -391,12 +429,15 @@ FUNCTION ide2 (ignore)
menu$(m, i) = "ViewMenuShowLineNumbersSubMenu": i = i + 1 menu$(m, i) = "ViewMenuShowLineNumbersSubMenu": i = i + 1
ViewMenuShowLineNumbersSubMenuID = m ViewMenuShowLineNumbersSubMenuID = m
IF ShowLineNumbers THEN menu$(m, i) = "#Hide Line Numbers" ELSE menu$(m, i) = "#Show Line Numbers" IF ShowLineNumbers THEN menu$(m, i) = "#Hide Line Numbers" ELSE menu$(m, i) = "#Show Line Numbers"
menuDesc$(m, i) = "Toggles displaying line numbers (side bar)"
i = i + 1 i = i + 1
menu$(m, i) = "#Background Color": IF ShowLineNumbersUseBG THEN menu$(m, i) = CHR$(7) + menu$(m, i) menu$(m, i) = "#Background Color": IF ShowLineNumbersUseBG THEN menu$(m, i) = CHR$(7) + menu$(m, i)
menuDesc$(m, i) = "Toggles displaying a different background (side bar)"
ViewMenuShowBGID = i ViewMenuShowBGID = i
IF ShowLineNumbers = 0 THEN menu$(m, i) = "~" + menu$(m, i) IF ShowLineNumbers = 0 THEN menu$(m, i) = "~" + menu$(m, i)
i = i + 1 i = i + 1
menu$(m, i) = "Sho#w Separator": IF ShowLineNumbersSeparator THEN menu$(m, i) = CHR$(7) + menu$(m, i) menu$(m, i) = "Sho#w Separator": IF ShowLineNumbersSeparator THEN menu$(m, i) = CHR$(7) + menu$(m, i)
menuDesc$(m, i) = "Toggles showing a separator line (side bar)"
ViewMenuShowSeparatorID = i ViewMenuShowSeparatorID = i
IF ShowLineNumbers = 0 THEN menu$(m, i) = "~" + menu$(m, i) IF ShowLineNumbers = 0 THEN menu$(m, i) = "~" + menu$(m, i)
i = i + 1 i = i + 1
@ -4123,6 +4164,7 @@ FUNCTION ide2 (ignore)
IF KB = KEY_RIGHT THEN m = m + 1 IF KB = KEY_RIGHT THEN m = m + 1
IF KB = KEY_ESC THEN IF KB = KEY_ESC THEN
COLOR 0, 7: _PRINTSTRING (1, 1), menubar$ COLOR 0, 7: _PRINTSTRING (1, 1), menubar$
IdeInfo = ""
GOTO ideloop GOTO ideloop
END IF END IF
IF m < 1 THEN m = menus IF m < 1 THEN m = menus
@ -4197,7 +4239,6 @@ FUNCTION ide2 (ignore)
backToParent.y2 = backToParent.y1 + menusize(parentMenu) backToParent.y2 = backToParent.y1 + menusize(parentMenu)
END IF END IF
END IF END IF
COLOR 0, 7
'calculate menu width 'calculate menu width
w = 0 w = 0
FOR i = 1 TO menusize(m) FOR i = 1 TO menusize(m)
@ -4222,6 +4263,9 @@ FUNCTION ide2 (ignore)
END IF END IF
IF xx > idewx - w - 3 THEN xx = idewx - w - 3 IF xx > idewx - w - 3 THEN xx = idewx - w - 3
UpdateMenuHelpLine menuDesc$(m, r)
COLOR 0, 7
ideboxshadow xx - 2, yy, w + 4, menusize(m) + 2 ideboxshadow xx - 2, yy, w + 4, menusize(m) + 2
'draw menu items 'draw menu items
@ -4697,29 +4741,29 @@ FUNCTION ide2 (ignore)
GOTO ideloop GOTO ideloop
END IF END IF
IF RIGHT$(menu$(m, s), 28) = "Cursor After #Pasted Content" THEN IF RIGHT$(menu$(m, s), 19) = "Cursor After #Paste" THEN
PCOPY 2, 0 PCOPY 2, 0
PasteCursorAtEnd = NOT PasteCursorAtEnd PasteCursorAtEnd = NOT PasteCursorAtEnd
IF PasteCursorAtEnd THEN IF PasteCursorAtEnd THEN
WriteConfigSetting "'[GENERAL SETTINGS]", "PasteCursorAtEnd", "TRUE" WriteConfigSetting "'[GENERAL SETTINGS]", "PasteCursorAtEnd", "TRUE"
menu$(OptionsMenuID, OptionsMenuPasteCursor) = CHR$(7) + "Cursor After #Pasted Content" menu$(OptionsMenuID, OptionsMenuPasteCursor) = CHR$(7) + "Cursor After #Paste"
ELSE ELSE
WriteConfigSetting "'[GENERAL SETTINGS]", "PasteCursorAtEnd", "FALSE" WriteConfigSetting "'[GENERAL SETTINGS]", "PasteCursorAtEnd", "FALSE"
menu$(OptionsMenuID, OptionsMenuPasteCursor) = "Cursor After #Pasted Content" menu$(OptionsMenuID, OptionsMenuPasteCursor) = "Cursor After #Paste"
END IF END IF
PCOPY 3, 0: SCREEN , , 3, 0 PCOPY 3, 0: SCREEN , , 3, 0
GOTO ideloop GOTO ideloop
END IF END IF
IF RIGHT$(menu$(m, s), 36) = "Show Compilation #Errors Immediately" THEN IF RIGHT$(menu$(m, s), 15) = "Syntax Ch#ecker" THEN
PCOPY 2, 0 PCOPY 2, 0
IDEShowErrorsImmediately = NOT IDEShowErrorsImmediately IDEShowErrorsImmediately = NOT IDEShowErrorsImmediately
IF IDEShowErrorsImmediately THEN IF IDEShowErrorsImmediately THEN
WriteConfigSetting "'[GENERAL SETTINGS]", "ShowErrorsImmediately", "TRUE" WriteConfigSetting "'[GENERAL SETTINGS]", "ShowErrorsImmediately", "TRUE"
menu$(OptionsMenuID, OptionsMenuShowErrorsImmediately) = CHR$(7) + "Show Compilation #Errors Immediately" menu$(OptionsMenuID, OptionsMenuShowErrorsImmediately) = CHR$(7) + "Syntax Ch#ecker"
ELSE ELSE
WriteConfigSetting "'[GENERAL SETTINGS]", "ShowErrorsImmediately", "FALSE" WriteConfigSetting "'[GENERAL SETTINGS]", "ShowErrorsImmediately", "FALSE"
menu$(OptionsMenuID, OptionsMenuShowErrorsImmediately) = "Show Compilation #Errors Immediately" menu$(OptionsMenuID, OptionsMenuShowErrorsImmediately) = "Syntax Ch#ecker"
END IF END IF
idechangemade = 1 idechangemade = 1
PCOPY 3, 0: SCREEN , , 3, 0 PCOPY 3, 0: SCREEN , , 3, 0
@ -4773,15 +4817,15 @@ FUNCTION ide2 (ignore)
GOTO ideloop GOTO ideloop
END IF END IF
IF MID$(menu$(m, s), 1, 24) = "Enable #Quick Navigation" OR MID$(menu$(m, s), 2, 24) = "Enable #Quick Navigation" THEN IF MID$(menu$(m, s), 1, 17) = "#Quick Navigation" OR MID$(menu$(m, s), 2, 17) = "#Quick Navigation" THEN
PCOPY 2, 0 PCOPY 2, 0
EnableQuickNav = NOT EnableQuickNav EnableQuickNav = NOT EnableQuickNav
IF EnableQuickNav THEN IF EnableQuickNav THEN
WriteConfigSetting "'[GENERAL SETTINGS]", "EnableQuickNav", "TRUE" WriteConfigSetting "'[GENERAL SETTINGS]", "EnableQuickNav", "TRUE"
menu$(SearchMenuID, SearchMenuEnableQuickNav) = CHR$(7) + "Enable #Quick Navigation (Back Arrow)" menu$(SearchMenuID, SearchMenuEnableQuickNav) = CHR$(7) + "#Quick Navigation"
ELSE ELSE
WriteConfigSetting "'[GENERAL SETTINGS]", "EnableQuickNav", "FALSE" WriteConfigSetting "'[GENERAL SETTINGS]", "EnableQuickNav", "FALSE"
menu$(SearchMenuID, SearchMenuEnableQuickNav) = "Enable #Quick Navigation (Back Arrow)" menu$(SearchMenuID, SearchMenuEnableQuickNav) = "#Quick Navigation"
END IF END IF
PCOPY 3, 0: SCREEN , , 3, 0 PCOPY 3, 0: SCREEN , , 3, 0
GOTO ideloop GOTO ideloop
@ -5538,7 +5582,7 @@ FUNCTION ide2 (ignore)
END IF END IF
AttemptToLoadRecent = 0 AttemptToLoadRecent = 0
FOR ml = 1 TO 4 FOR ml = 1 TO UBOUND(IdeRecentLink, 1)
IF LEN(IdeRecentLink(ml, 1)) THEN IF LEN(IdeRecentLink(ml, 1)) THEN
IF menu$(m, s) = IdeRecentLink(ml, 1) THEN IF menu$(m, s) = IdeRecentLink(ml, 1) THEN
IdeOpenFile$ = IdeRecentLink(ml, 2) IdeOpenFile$ = IdeRecentLink(ml, 2)
@ -5578,7 +5622,7 @@ FUNCTION ide2 (ignore)
GOTO ideloop GOTO ideloop
END IF END IF
IF menu$(m, s) = "Clear #Recent..." THEN IF menu$(m, s) = "#Clear Recent..." THEN
PCOPY 2, 0 PCOPY 2, 0
r$ = ideclearhistory$("FILES") r$ = ideclearhistory$("FILES")
IF r$ = "Y" THEN IF r$ = "Y" THEN
@ -13048,31 +13092,53 @@ SUB IdeMakeFileMenu
m = 1: i = 0 m = 1: i = 0
menu$(m, i) = "File": i = i + 1 menu$(m, i) = "File": i = i + 1
menu$(m, i) = "#New Ctrl+N": i = i + 1 menu$(m, i) = "#New Ctrl+N": i = i + 1
menuDesc$(m, i - 1) = "Closes current program and starts a blank one"
menu$(m, i) = "#Open... Ctrl+O": i = i + 1 menu$(m, i) = "#Open... Ctrl+O": i = i + 1
menuDesc$(m, i - 1) = "Loads a program into memory"
menu$(m, i) = "#Save Ctrl+S": i = i + 1 menu$(m, i) = "#Save Ctrl+S": i = i + 1
menuDesc$(m, i - 1) = "Writes current program to a file on disk"
menu$(m, i) = "Save #As...": i = i + 1 menu$(m, i) = "Save #As...": i = i + 1
menuDesc$(m, i - 1) = "Saves current program with specified name"
fh = FREEFILE fh = FREEFILE
OPEN ".\internal\temp\recent.bin" FOR BINARY AS #fh: a$ = SPACE$(LOF(fh)): GET #fh, , a$ OPEN ".\internal\temp\recent.bin" FOR BINARY AS #fh: a$ = SPACE$(LOF(fh)): GET #fh, , a$
a$ = RIGHT$(a$, LEN(a$) - 2) a$ = RIGHT$(a$, LEN(a$) - 2)
FOR r = 1 TO 5 maxRecentInFileMenu = UBOUND(IdeRecentLink, 1)
IF r <= 4 THEN IdeRecentLink(r, 1) = "" maxLengthRecentFiles = 35
FOR r = 1 TO maxRecentInFileMenu + 1
IF r <= maxRecentInFileMenu THEN IdeRecentLink(r, 1) = ""
ai = INSTR(a$, CRLF) ai = INSTR(a$, CRLF)
IF ai THEN IF ai THEN
IF r = 1 THEN menu$(m, i) = "-": i = i + 1 IF r = 1 THEN menu$(m, i) = "-": i = i + 1
f$ = LEFT$(a$, ai - 1): IF ai = LEN(a$) - 1 THEN a$ = "" ELSE a$ = RIGHT$(a$, LEN(a$) - ai - 3) f$ = LEFT$(a$, ai - 1): IF ai = LEN(a$) - 1 THEN a$ = "" ELSE a$ = RIGHT$(a$, LEN(a$) - ai - 3)
IF r <= 4 THEN IdeRecentLink(r, 2) = f$ IF r <= maxRecentInFileMenu THEN IdeRecentLink(r, 2) = f$
IF r = 5 THEN f$ = "#Recent..." 'f$ = MID$(f$, _INSTRREV(f$, pathsep$) + 1)
IF LEN(f$) > 25 THEN f$ = STRING$(3, 250) + RIGHT$(f$, 22) IF LEN(f$) > maxLengthRecentFiles THEN f$ = STRING$(3, 250) + RIGHT$(f$, maxLengthRecentFiles - 3)
IF r <= 4 THEN IdeRecentLink(r, 1) = f$ f$ = "#" + str2$(r) + " " + f$
menu$(m, i) = f$: i = i + 1 IF r = maxRecentInFileMenu + 1 THEN f$ = "#Recent..."
menu$(m, i) = f$
IF r <= maxRecentInFileMenu THEN
IdeRecentLink(r, 1) = f$
f$ = "Open '" + IdeRecentLink(r, 2) + "'"
ai = 3
DO UNTIL LEN(f$) <= idewx - 2
ai = ai + 1
f$ = "Open '" + STRING$(3, 250) + MID$(IdeRecentLink(r, 2), ai) + "'"
LOOP
menuDesc$(m, i) = f$
END IF
i = i + 1
END IF END IF
NEXT NEXT
CLOSE #fh CLOSE #fh
IF menu$(m, i - 1) <> "#Recent..." AND menu$(m, i - 1) <> "Save #As..." THEN IF menu$(m, i - 1) <> "#Recent..." AND menu$(m, i - 1) <> "Save #As..." THEN
menu$(m, i) = "Clear #Recent...": i = i + 1 menu$(m, i) = "#Clear Recent...": i = i + 1
menuDesc$(m, i - 1) = "Clears list of recently loaded files"
ELSE
menuDesc$(m, i - 1) = "Displays a complete list of recently loaded files"
END IF END IF
menu$(m, i) = "-": i = i + 1 menu$(m, i) = "-": i = i + 1
menu$(m, i) = "E#xit": i = i + 1 menu$(m, i) = "E#xit": i = i + 1
menuDesc$(m, i - 1) = "Exits QB64"
menusize(m) = i - 1 menusize(m) = i - 1
END SUB END SUB
@ -13093,6 +13159,7 @@ SUB IdeMakeContextualMenu
sela2$ = LEFT$(sela2$, 19) + STRING$(3, 250) sela2$ = LEFT$(sela2$, 19) + STRING$(3, 250)
END IF END IF
menu$(m, i) = "Find '" + sela2$ + "'": i = i + 1 menu$(m, i) = "Find '" + sela2$ + "'": i = i + 1
menuDesc$(m, i - 1) = "Searches for the text currently selected"
END IF END IF
'build SUB/FUNCTION list: 'build SUB/FUNCTION list:
@ -13177,6 +13244,7 @@ SUB IdeMakeContextualMenu
EXIT FOR EXIT FOR
ELSE ELSE
menu$(m, i) = "#Go To " + CursorSF$: i = i + 1 menu$(m, i) = "#Go To " + CursorSF$: i = i + 1
menuDesc$(m, i - 1) = "Jumps to procedure definition"
SubFuncLIST(1) = SubFuncLIST(CheckSF) SubFuncLIST(1) = SubFuncLIST(CheckSF)
EXIT FOR EXIT FOR
END IF END IF
@ -13196,6 +13264,7 @@ SUB IdeMakeContextualMenu
END IF END IF
IF LabelLineNumber > 0 AND LabelLineNumber <> idecy THEN IF LabelLineNumber > 0 AND LabelLineNumber <> idecy THEN
menu$(m, i) = "Go To #Label " + RTRIM$(Labels(r).cn): i = i + 1 menu$(m, i) = "Go To #Label " + RTRIM$(Labels(r).cn): i = i + 1
menuDesc$(m, i - 1) = "Jumps to label"
REDIM _PRESERVE SubFuncLIST(1 TO UBOUND(SubFuncLIST) + 1) AS STRING REDIM _PRESERVE SubFuncLIST(1 TO UBOUND(SubFuncLIST) + 1) AS STRING
SubFuncLIST(UBOUND(SubFuncLIST)) = MKL$(Labels(r).SourceLineNumber) SubFuncLIST(UBOUND(SubFuncLIST)) = MKL$(Labels(r).SourceLineNumber)
END IF END IF
@ -13213,6 +13282,7 @@ SUB IdeMakeContextualMenu
END IF END IF
IF INSTR(l2$, "PARENTHESIS") = 0 THEN IF INSTR(l2$, "PARENTHESIS") = 0 THEN
menu$(m, i) = "#Help On '" + l2$ + "'": i = i + 1 menu$(m, i) = "#Help On '" + l2$ + "'": i = i + 1
menuDesc$(m, i - 1) = "Opens help article on the selected term"
END IF END IF
END IF END IF
END IF END IF
@ -13234,25 +13304,38 @@ SUB IdeMakeContextualMenu
Found_RGB = Found_RGB + INSTR(UCASE$(a$), "RGBA32(") Found_RGB = Found_RGB + INSTR(UCASE$(a$), "RGBA32(")
IF Found_RGB THEN IF Found_RGB THEN
menu$(m, i) = "#RGB Color Mixer...": i = i + 1 menu$(m, i) = "#RGB Color Mixer...": i = i + 1
menuDesc$(m, i - 1) = "Allows mixing colors to edit/insert _RGB statements"
menu$(m, i) = "-": i = i + 1 menu$(m, i) = "-": i = i + 1
END IF END IF
NoRGBFound: NoRGBFound:
'--------- _RGB mixer check done. -------------------------------------------- '--------- _RGB mixer check done. --------------------------------------------
IF (ideselect <> 0) THEN menu$(m, i) = "Cu#t Shift+Del or Ctrl+X": i = i + 1 IF (ideselect <> 0) THEN
IF (ideselect = 1) THEN menu$(m, i) = "Cu#t Shift+Del or Ctrl+X": i = i + 1
menuDesc$(m, i - 1) = "Deletes selected text and copies it to clipboard"
menu$(m, i) = "#Copy Ctrl+Ins or Ctrl+C": i = i + 1 menu$(m, i) = "#Copy Ctrl+Ins or Ctrl+C": i = i + 1
menuDesc$(m, i - 1) = "Copies selected text to clipboard"
END IF END IF
clip$ = _CLIPBOARD$ 'read clipboard clip$ = _CLIPBOARD$ 'read clipboard
IF LEN(clip$) THEN menu$(m, i) = "#Paste Shift+Ins or Ctrl+V": i = i + 1 IF LEN(clip$) THEN
menu$(m, i) = "#Paste Shift+Ins or Ctrl+V": i = i + 1
menuDesc$(m, i - 1) = "Inserts clipboard contents at current location"
END IF
IF ideselect THEN menu$(m, i) = "Cl#ear Del": i = i + 1 IF ideselect THEN
menu$(m, i) = "Cl#ear Del": i = i + 1
menuDesc$(m, i - 1) = "Deletes selected text"
END IF
menu$(m, i) = "Select #All Ctrl+A": i = i + 1 menu$(m, i) = "Select #All Ctrl+A": i = i + 1
menuDesc$(m, i - 1) = "Selects all contents of current program"
menu$(m, i) = "-": i = i + 1 menu$(m, i) = "-": i = i + 1
menu$(m, i) = "To#ggle Comment Ctrl+T": i = i + 1 menu$(m, i) = "To#ggle Comment Ctrl+T": i = i + 1
menuDesc$(m, i - 1) = "Toggles comment (') on the current selection"
menu$(m, i) = "Add Co#mment (') Ctrl+R": i = i + 1 menu$(m, i) = "Add Co#mment (') Ctrl+R": i = i + 1
menuDesc$(m, i - 1) = "Adds comment marker (') to the current selection"
menu$(m, i) = "Remove Comme#nt (') Ctrl+Shift+R": i = i + 1 menu$(m, i) = "Remove Comme#nt (') Ctrl+Shift+R": i = i + 1
menuDesc$(m, i - 1) = "Removes comment marker (') from the current selection"
IF ideselect THEN IF ideselect THEN
y1 = idecy y1 = idecy
y2 = ideselecty1 y2 = ideselecty1
@ -13266,14 +13349,18 @@ SUB IdeMakeContextualMenu
NEXT NEXT
IF a2$ <> "" THEN IF a2$ <> "" THEN
menu$(m, i) = "#Increase Indent TAB": i = i + 1 menu$(m, i) = "#Increase Indent TAB": i = i + 1
menuDesc$(m, i - 1) = "Increases indentation of the current selection"
menu$(m, i) = "#Decrease Indent" menu$(m, i) = "#Decrease Indent"
menuDesc$(m, i) = "Decreases indentation of the current selection"
IF INSTR(_OS$, "WIN") OR INSTR(_OS$, "MAC") THEN menu$(m, i) = menu$(m, i) + " Shift+TAB" IF INSTR(_OS$, "WIN") OR INSTR(_OS$, "MAC") THEN menu$(m, i) = menu$(m, i) + " Shift+TAB"
i = i + 1 i = i + 1
menu$(m, i) = "-": i = i + 1 menu$(m, i) = "-": i = i + 1
END IF END IF
ELSE ELSE
menu$(m, i) = "#Increase Indent TAB": i = i + 1 menu$(m, i) = "#Increase Indent TAB": i = i + 1
menuDesc$(m, i - 1) = "Increases indentation of the current selection"
menu$(m, i) = "#Decrease Indent" menu$(m, i) = "#Decrease Indent"
menuDesc$(m, i) = "Decreases indentation of the current selection"
IF INSTR(_OS$, "WIN") OR INSTR(_OS$, "MAC") THEN menu$(m, i) = menu$(m, i) + " Shift+TAB" IF INSTR(_OS$, "WIN") OR INSTR(_OS$, "MAC") THEN menu$(m, i) = menu$(m, i) + " Shift+TAB"
i = i + 1 i = i + 1
menu$(m, i) = "-": i = i + 1 menu$(m, i) = "-": i = i + 1
@ -13282,21 +13369,31 @@ SUB IdeMakeContextualMenu
menu$(m, i) = "-": i = i + 1 menu$(m, i) = "-": i = i + 1
END IF END IF
menu$(m, i) = "New #SUB...": i = i + 1 menu$(m, i) = "New #SUB...": i = i + 1
menuDesc$(m, i - 1) = "Creates a new subprocedure at the end of the current program"
menu$(m, i) = "New #FUNCTION...": i = i + 1 menu$(m, i) = "New #FUNCTION...": i = i + 1
menuDesc$(m, i - 1) = "Creates a new function at the end of the current program"
ELSEIF IdeSystem = 3 THEN ELSEIF IdeSystem = 3 THEN
IF (Help_Select = 2) THEN IF (Help_Select = 2) THEN
menu$(m, i) = "#Copy Ctrl+Ins or Ctrl+C": i = i + 1 menu$(m, i) = "#Copy Ctrl+Ins or Ctrl+C": i = i + 1
menuDesc$(m, i - 1) = "Copies selected text to clipboard"
END IF END IF
menu$(m, i) = "Select #All Ctrl+A": i = i + 1 menu$(m, i) = "Select #All Ctrl+A": i = i + 1
menuDesc$(m, i - 1) = "Selects all contents of current article"
menu$(m, i) = "-": i = i + 1 menu$(m, i) = "-": i = i + 1
menu$(m, i) = "#Contents Page": i = i + 1 menu$(m, i) = "#Contents Page": i = i + 1
menuDesc$(m, i - 1) = "Displays help contents page"
menu$(m, i) = "Keyword #Index": i = i + 1 menu$(m, i) = "Keyword #Index": i = i + 1
menuDesc$(m, i - 1) = "Displays keyword index page"
menu$(m, i) = "#Keywords by Usage": i = i + 1 menu$(m, i) = "#Keywords by Usage": i = i + 1
menuDesc$(m, i - 1) = "Displays keywords index by usage"
menu$(m, i) = "-": i = i + 1 menu$(m, i) = "-": i = i + 1
menu$(m, i) = "#Update Current Page": i = i + 1 menu$(m, i) = "#Update Current Page": i = i + 1
menuDesc$(m, i - 1) = "Downloads the latest version of this article from the wiki"
menu$(m, i) = "Update All #Pages...": i = i + 1 menu$(m, i) = "Update All #Pages...": i = i + 1
menuDesc$(m, i - 1) = "Downloads the latest version of all articles from the wiki"
menu$(m, i) = "-": i = i + 1 menu$(m, i) = "-": i = i + 1
menu$(m, i) = "Clo#se Help ESC": i = i + 1 menu$(m, i) = "Clo#se Help ESC": i = i + 1
menuDesc$(m, i - 1) = "Closes help window"
END IF END IF
menusize(m) = i - 1 menusize(m) = i - 1
END SUB END SUB
@ -13307,44 +13404,62 @@ SUB IdeMakeEditMenu
IF IdeSystem = 1 THEN IF IdeSystem = 1 THEN
menu$(m, i) = "#Undo Ctrl+Z": i = i + 1 menu$(m, i) = "#Undo Ctrl+Z": i = i + 1
menuDesc$(m, i - 1) = "Restores program state before last edit"
menu$(m, i) = "#Redo Ctrl+Y": i = i + 1 menu$(m, i) = "#Redo Ctrl+Y": i = i + 1
menuDesc$(m, i - 1) = "Redoes latest undo action"
ELSE ELSE
menu$(m, i) = "~#Undo Ctrl+Z": i = i + 1 menu$(m, i) = "~#Undo Ctrl+Z": i = i + 1
menuDesc$(m, i - 1) = "Restores program state before last edit"
menu$(m, i) = "~#Redo Ctrl+Y": i = i + 1 menu$(m, i) = "~#Redo Ctrl+Y": i = i + 1
menuDesc$(m, i - 1) = "Redoes latest undo action"
END IF END IF
menu$(m, i) = "-": i = i + 1 menu$(m, i) = "-": i = i + 1
IF (IdeSystem = 1 AND ideselect = 1) OR IdeSystem = 2 THEN IF (IdeSystem = 1 AND ideselect = 1) OR IdeSystem = 2 THEN
menu$(m, i) = "Cu#t Shift+Del or Ctrl+X": i = i + 1 menu$(m, i) = "Cu#t Shift+Del or Ctrl+X": i = i + 1
menuDesc$(m, i - 1) = "Deletes selected text and copies it to clipboard"
menu$(m, i) = "#Copy Ctrl+Ins or Ctrl+C": i = i + 1 menu$(m, i) = "#Copy Ctrl+Ins or Ctrl+C": i = i + 1
menuDesc$(m, i - 1) = "Copies selected text to clipboard"
ELSEIF (IdeSystem = 3 AND Help_Select = 2) THEN ELSEIF (IdeSystem = 3 AND Help_Select = 2) THEN
menu$(m, i) = "~Cu#t Shift+Del or Ctrl+X": i = i + 1 menu$(m, i) = "~Cu#t Shift+Del or Ctrl+X": i = i + 1
menuDesc$(m, i - 1) = "Deletes selected text and copies it to clipboard"
menu$(m, i) = "#Copy Ctrl+Ins or Ctrl+C": i = i + 1 menu$(m, i) = "#Copy Ctrl+Ins or Ctrl+C": i = i + 1
menuDesc$(m, i - 1) = "Copies selected text to clipboard"
ELSE ELSE
menu$(m, i) = "~Cu#t Shift+Del or Ctrl+X": i = i + 1 menu$(m, i) = "~Cu#t Shift+Del or Ctrl+X": i = i + 1
menuDesc$(m, i - 1) = "Deletes selected text and copies it to clipboard"
menu$(m, i) = "~#Copy Ctrl+Ins or Ctrl+C": i = i + 1 menu$(m, i) = "~#Copy Ctrl+Ins or Ctrl+C": i = i + 1
menuDesc$(m, i - 1) = "Copies selected text to clipboard"
END IF END IF
clip$ = _CLIPBOARD$ 'read clipboard clip$ = _CLIPBOARD$ 'read clipboard
IF (LEN(clip$) > 0 AND IdeSystem = 1) OR IdeSystem = 2 THEN IF (LEN(clip$) > 0 AND IdeSystem = 1) OR IdeSystem = 2 THEN
menu$(m, i) = "#Paste Shift+Ins or Ctrl+V": i = i + 1 menu$(m, i) = "#Paste Shift+Ins or Ctrl+V": i = i + 1
menuDesc$(m, i - 1) = "Inserts clipboard contents at current location"
ELSE ELSE
menu$(m, i) = "~#Paste Shift+Ins or Ctrl+V": i = i + 1 menu$(m, i) = "~#Paste Shift+Ins or Ctrl+V": i = i + 1
menuDesc$(m, i - 1) = "Inserts clipboard contents at current location"
END IF END IF
IF (IdeSystem = 1 AND ideselect = 1) OR IdeSystem = 2 THEN IF (IdeSystem = 1 AND ideselect = 1) OR IdeSystem = 2 THEN
menu$(m, i) = "Cl#ear Del": i = i + 1 menu$(m, i) = "Cl#ear Del": i = i + 1
menuDesc$(m, i - 1) = "Deletes selected text"
ELSE ELSE
menu$(m, i) = "~Cl#ear Del": i = i + 1 menu$(m, i) = "~Cl#ear Del": i = i + 1
menuDesc$(m, i - 1) = "Deletes selected text"
END IF END IF
menu$(m, i) = "Select #All Ctrl+A": i = i + 1 menu$(m, i) = "Select #All Ctrl+A": i = i + 1
menuDesc$(m, i - 1) = "Selects all contents of current program"
IF IdeSystem = 1 THEN IF IdeSystem = 1 THEN
menu$(m, i) = "-": i = i + 1 menu$(m, i) = "-": i = i + 1
menu$(m, i) = "To#ggle Comment Ctrl+T": i = i + 1 menu$(m, i) = "To#ggle Comment Ctrl+T": i = i + 1
menuDesc$(m, i - 1) = "Toggles comment (') on the current selection"
menu$(m, i) = "Add Co#mment (') Ctrl+R": i = i + 1 menu$(m, i) = "Add Co#mment (') Ctrl+R": i = i + 1
menuDesc$(m, i - 1) = "Adds comment marker (') to the current selection"
menu$(m, i) = "Remove Comme#nt (') Ctrl+Shift+R": i = i + 1 menu$(m, i) = "Remove Comme#nt (') Ctrl+Shift+R": i = i + 1
menuDesc$(m, i - 1) = "Removes comment marker (') from the current selection"
IF ideselect THEN IF ideselect THEN
y1 = idecy y1 = idecy
y2 = ideselecty1 y2 = ideselecty1
@ -13358,42 +13473,59 @@ SUB IdeMakeEditMenu
NEXT NEXT
IF a2$ = "" THEN IF a2$ = "" THEN
menu$(m, i) = "~#Increase Indent TAB": i = i + 1 menu$(m, i) = "~#Increase Indent TAB": i = i + 1
menuDesc$(m, i - 1) = "Increases indentation of the current selection"
menu$(m, i) = "~#Decrease Indent" menu$(m, i) = "~#Decrease Indent"
menuDesc$(m, i) = "Decreases indentation of the current selection"
IF INSTR(_OS$, "WIN") OR INSTR(_OS$, "MAC") THEN menu$(m, i) = menu$(m, i) + " Shift+TAB" IF INSTR(_OS$, "WIN") OR INSTR(_OS$, "MAC") THEN menu$(m, i) = menu$(m, i) + " Shift+TAB"
i = i + 1 i = i + 1
ELSE ELSE
menu$(m, i) = "#Increase Indent TAB": i = i + 1 menu$(m, i) = "#Increase Indent TAB": i = i + 1
menuDesc$(m, i - 1) = "Increases indentation of the current selection"
menu$(m, i) = "#Decrease Indent" menu$(m, i) = "#Decrease Indent"
menuDesc$(m, i) = "Decreases indentation of the current selection"
IF INSTR(_OS$, "WIN") OR INSTR(_OS$, "MAC") THEN menu$(m, i) = menu$(m, i) + " Shift+TAB" IF INSTR(_OS$, "WIN") OR INSTR(_OS$, "MAC") THEN menu$(m, i) = menu$(m, i) + " Shift+TAB"
i = i + 1 i = i + 1
END IF END IF
ELSE ELSE
menu$(m, i) = "#Increase Indent TAB": i = i + 1 menu$(m, i) = "#Increase Indent TAB": i = i + 1
menuDesc$(m, i - 1) = "Increases indentation of the current selection"
menu$(m, i) = "#Decrease Indent" menu$(m, i) = "#Decrease Indent"
menuDesc$(m, i) = "Decreases indentation of the current selection"
IF INSTR(_OS$, "WIN") OR INSTR(_OS$, "MAC") THEN menu$(m, i) = menu$(m, i) + " Shift+TAB" IF INSTR(_OS$, "WIN") OR INSTR(_OS$, "MAC") THEN menu$(m, i) = menu$(m, i) + " Shift+TAB"
i = i + 1 i = i + 1
END IF END IF
ELSE ELSE
menu$(m, i) = "~#Increase Indent TAB": i = i + 1 menu$(m, i) = "~#Increase Indent TAB": i = i + 1
menuDesc$(m, i - 1) = "Increases indentation of the current selection"
menu$(m, i) = "~#Decrease Indent" menu$(m, i) = "~#Decrease Indent"
menuDesc$(m, i) = "Decreases indentation of the current selection"
IF INSTR(_OS$, "WIN") OR INSTR(_OS$, "MAC") THEN menu$(m, i) = menu$(m, i) + " Shift+TAB" IF INSTR(_OS$, "WIN") OR INSTR(_OS$, "MAC") THEN menu$(m, i) = menu$(m, i) + " Shift+TAB"
i = i + 1 i = i + 1
END IF END IF
menu$(m, i) = "-": i = i + 1 menu$(m, i) = "-": i = i + 1
menu$(m, i) = "New #SUB...": i = i + 1 menu$(m, i) = "New #SUB...": i = i + 1
menuDesc$(m, i - 1) = "Creates a new subprocedure at the end of the current program"
menu$(m, i) = "New #FUNCTION...": i = i + 1 menu$(m, i) = "New #FUNCTION...": i = i + 1
menuDesc$(m, i - 1) = "Creates a new function at the end of the current program"
ELSE ELSE
menu$(m, i) = "-": i = i + 1 menu$(m, i) = "-": i = i + 1
menu$(m, i) = "~To#ggle Comment Ctrl+T": i = i + 1 menu$(m, i) = "~To#ggle Comment Ctrl+T": i = i + 1
menuDesc$(m, i - 1) = "Toggles comment (') on the current selection"
menu$(m, i) = "~Add Co#mment (') Ctrl+R": i = i + 1 menu$(m, i) = "~Add Co#mment (') Ctrl+R": i = i + 1
menuDesc$(m, i - 1) = "Adds comment marker (') to the current selection"
menu$(m, i) = "~Remove Comme#nt (') Ctrl+Shift+R": i = i + 1 menu$(m, i) = "~Remove Comme#nt (') Ctrl+Shift+R": i = i + 1
menuDesc$(m, i - 1) = "Removes comment marker (') from the current selection"
menu$(m, i) = "~#Increase Indent TAB": i = i + 1 menu$(m, i) = "~#Increase Indent TAB": i = i + 1
menuDesc$(m, i - 1) = "Increases indentation of the current selection"
menu$(m, i) = "~#Decrease Indent" menu$(m, i) = "~#Decrease Indent"
menuDesc$(m, i) = "Decreases indentation of the current selection"
IF INSTR(_OS$, "WIN") OR INSTR(_OS$, "MAC") THEN menu$(m, i) = menu$(m, i) + " Shift+TAB" IF INSTR(_OS$, "WIN") OR INSTR(_OS$, "MAC") THEN menu$(m, i) = menu$(m, i) + " Shift+TAB"
i = i + 1 i = i + 1
menu$(m, i) = "-": i = i + 1 menu$(m, i) = "-": i = i + 1
menu$(m, i) = "~New #SUB...": i = i + 1 menu$(m, i) = "~New #SUB...": i = i + 1
menuDesc$(m, i - 1) = "Creates a new subprocedure at the end of the current program"
menu$(m, i) = "~New #FUNCTION...": i = i + 1 menu$(m, i) = "~New #FUNCTION...": i = i + 1
menuDesc$(m, i - 1) = "Creates a new function at the end of the current program"
END IF END IF
menusize(m) = i - 1 menusize(m) = i - 1
END SUB END SUB
@ -14233,6 +14365,13 @@ SUB UpdateIdeInfo
PCOPY 3, 0 PCOPY 3, 0
END SUB END SUB
SUB UpdateMenuHelpLine (a$)
IF LEN(a$) > (idewx - 2) THEN a$ = LEFT$(a$, (idewx - 4)) + STRING$(3, 250)
COLOR 0, 3
_PRINTSTRING (1, idewy + idesubwindow), SPACE$(idewx)
_PRINTSTRING (2, idewy + idesubwindow), a$
END SUB
FUNCTION DarkenFGBG (Action AS _BYTE) FUNCTION DarkenFGBG (Action AS _BYTE)
'Darken the interface while compilation is taking place, 'Darken the interface while compilation is taking place,
'to give a sense of temporary unavailability: 'to give a sense of temporary unavailability:

View file

@ -9781,7 +9781,7 @@ DO
IF lineinput THEN a$ = "Expected string variable": GOTO errmes IF lineinput THEN a$ = "Expected string variable": GOTO errmes
IF (t AND ISARRAY) THEN IF (t AND ISARRAY) THEN
IF (t AND ISOFFSETINBITS) THEN IF (t AND ISOFFSETINBITS) THEN
a$ = "INPUT cannot handle BIT array elements yet": GOTO errmes a$ = "INPUT cannot handle BIT array elements": GOTO errmes
END IF END IF
END IF END IF
e$ = "&(" + refer(e$, t, 0) + ")" e$ = "&(" + refer(e$, t, 0) + ")"
@ -10515,7 +10515,7 @@ DO
'the number of array elements required is known AND 'the number of array elements required is known AND
'the number of elements in the array to be passed is known 'the number of elements in the array to be passed is known
IF id.arrayelements <> nelereq THEN a$ = "Passing arrays with a differing number of elements to a SUB/FUNCTION is not supported (yet)": GOTO errmes IF id.arrayelements <> nelereq THEN a$ = "Passing arrays with a differing number of elements to a SUB/FUNCTION is not supported": GOTO errmes
END IF END IF
@ -10577,7 +10577,7 @@ DO
ELSE ELSE
'not a udt 'not a udt
IF arr THEN IF arr THEN
IF (sourcetyp2 AND ISOFFSETINBITS) THEN a$ = "Cannot pass BIT array offsets yet": GOTO errmes IF (sourcetyp2 AND ISOFFSETINBITS) THEN a$ = "Cannot pass BIT array offsets": GOTO errmes
e$ = "(&(" + refer(e$, sourcetyp, 0) + "))" e$ = "(&(" + refer(e$, sourcetyp, 0) + "))"
IF Error_Happened THEN GOTO errmes IF Error_Happened THEN GOTO errmes
ELSE ELSE
@ -15120,7 +15120,7 @@ FUNCTION udtreference$ (o$, a$, typ AS LONG)
r$ = r$ + str2$(u) + sp3 + str2$(E) + sp3 r$ = r$ + str2$(u) + sp3 + str2$(E) + sp3
IF o MOD 8 THEN Give_Error "QB64 cannot handle bit offsets within user defined types yet": EXIT FUNCTION IF o MOD 8 THEN Give_Error "QB64 cannot handle bit offsets within user defined types": EXIT FUNCTION
o = o \ 8 o = o \ 8
IF o$ <> "" THEN IF o$ <> "" THEN
@ -16991,7 +16991,7 @@ FUNCTION evaluatefunc$ (a2$, args AS LONG, typ AS LONG)
'print id.arrayelements,nelereq 'print id.arrayelements,nelereq
' 1 , 2 ' 1 , 2
IF id.arrayelements <> nelereq THEN Give_Error "Passing arrays with a differing number of elements to a SUB/FUNCTION is not supported (yet)": EXIT FUNCTION IF id.arrayelements <> nelereq THEN Give_Error "Passing arrays with a differing number of elements to a SUB/FUNCTION is not supported": EXIT FUNCTION
@ -17066,7 +17066,7 @@ FUNCTION evaluatefunc$ (a2$, args AS LONG, typ AS LONG)
ELSE ELSE
'not a udt 'not a udt
IF arr THEN IF arr THEN
IF (sourcetyp2 AND ISOFFSETINBITS) THEN Give_Error "Cannot pass BIT array offsets yet": EXIT FUNCTION IF (sourcetyp2 AND ISOFFSETINBITS) THEN Give_Error "Cannot pass BIT array offsets": EXIT FUNCTION
e$ = "(&(" + refer(e$, sourcetyp, 0) + "))" e$ = "(&(" + refer(e$, sourcetyp, 0) + "))"
IF Error_Happened THEN EXIT FUNCTION IF Error_Happened THEN EXIT FUNCTION
ELSE ELSE
@ -17879,7 +17879,7 @@ FUNCTION evaluatetotyp$ (a2$, targettyp AS LONG)
'pointer required? 'pointer required?
IF (targettyp AND ISPOINTER) THEN IF (targettyp AND ISPOINTER) THEN
Give_Error "evaluatetotyp received a request for a pointer! (as yet unsupported)": EXIT FUNCTION Give_Error "evaluatetotyp received a request for a pointer (unsupported)": EXIT FUNCTION
'... '...
Give_Error "Invalid pointer": EXIT FUNCTION Give_Error "Invalid pointer": EXIT FUNCTION
END IF END IF
@ -20472,7 +20472,7 @@ FUNCTION refer$ (a2$, typ AS LONG, method AS LONG)
i = INSTR(a$, sp3): o$ = RIGHT$(a$, LEN(a$) - i) i = INSTR(a$, sp3): o$ = RIGHT$(a$, LEN(a$) - i)
n$ = "UDT_" + RTRIM$(id.n): IF id.t = 0 THEN n$ = "ARRAY_" + n$ + "[0]" n$ = "UDT_" + RTRIM$(id.n): IF id.t = 0 THEN n$ = "ARRAY_" + n$ + "[0]"
IF E = 0 THEN Give_Error "User defined types in expressions are invalid": EXIT FUNCTION IF E = 0 THEN Give_Error "User defined types in expressions are invalid": EXIT FUNCTION
IF typ AND ISOFFSETINBITS THEN Give_Error "Cannot resolve bit-length variables inside user defined types yet": EXIT FUNCTION IF typ AND ISOFFSETINBITS THEN Give_Error "Cannot resolve bit-length variables inside user defined types": EXIT FUNCTION
IF typ AND ISSTRING THEN IF typ AND ISSTRING THEN
IF typ AND ISFIXEDLENGTH THEN IF typ AND ISFIXEDLENGTH THEN
@ -21681,7 +21681,7 @@ SUB setrefer (a2$, typ2 AS LONG, e2$, method AS LONG)
END IF 'e=0 END IF 'e=0
IF typ AND ISOFFSETINBITS THEN Give_Error "Cannot resolve bit-length variables inside user defined types yet": EXIT SUB IF typ AND ISOFFSETINBITS THEN Give_Error "Cannot resolve bit-length variables inside user defined types": EXIT SUB
IF typ AND ISSTRING THEN IF typ AND ISSTRING THEN
IF typ AND ISFIXEDLENGTH THEN IF typ AND ISFIXEDLENGTH THEN
o2$ = "(((uint8*)" + scope$ + n$ + ")+(" + o$ + "))" o2$ = "(((uint8*)" + scope$ + n$ + ")+(" + o$ + "))"