mirror of
https://github.com/QB64-Phoenix-Edition/QB64pe.git
synced 2024-07-01 12:40:36 +00:00
Add disabled menu items and make Edit menu context-aware.
- Menu items starting with a tilde ("~") are displayed with COLOR 8 and without hotkeys highlighted. Clicking on them does nothing, but closes the menu. - Edit menu is now context-aware. Cut, copy and clear are only enabled if there is a selection. Paste is only enabled if _CLIPBOARD$ is not empty.
This commit is contained in:
parent
47d5a0a473
commit
11e33dd3cb
|
@ -188,6 +188,7 @@ DIM SHARED ideautorun
|
||||||
DIM SHARED menu$(1 TO 10, 0 TO 20)
|
DIM SHARED menu$(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
|
||||||
DIM SHARED menubar$, idecontextualSearch$
|
DIM SHARED menubar$, idecontextualSearch$
|
||||||
DIM SHARED ideundocombo, ideundocombochr, idenoundo, idemergeundo
|
DIM SHARED ideundocombo, ideundocombochr, idenoundo, idemergeundo
|
||||||
DIM SHARED idealthighlight, ideentermenu
|
DIM SHARED idealthighlight, ideentermenu
|
||||||
|
|
|
@ -181,22 +181,8 @@ IF idelaunched = 0 THEN
|
||||||
IdeMakeFileMenu
|
IdeMakeFileMenu
|
||||||
|
|
||||||
m = m + 1: i = 0
|
m = m + 1: i = 0
|
||||||
menu$(m, i) = "Edit": i = i + 1
|
ideeditmenuID = m
|
||||||
menu$(m, i) = "Cu#t Shift+Del or Ctrl+X": i = i + 1
|
IdeMakeEditMenu
|
||||||
menu$(m, i) = "#Copy Ctrl+Ins or Ctrl+C": i = i + 1
|
|
||||||
menu$(m, i) = "#Paste Shift+Ins or Ctrl+V": i = i + 1
|
|
||||||
menu$(m, i) = "Cl#ear Del": i = i + 1
|
|
||||||
menu$(m, i) = "Select #All Ctrl+A": i = i + 1
|
|
||||||
menu$(m, i) = "-": i = i + 1
|
|
||||||
menu$(m, i) = "#Undo Ctrl+Z": i = i + 1
|
|
||||||
menu$(m, i) = "#Redo Ctrl+Y": i = i + 1
|
|
||||||
menu$(m, i) = "-": i = i + 1
|
|
||||||
menu$(m, i) = "Comment (add ')": i = i + 1
|
|
||||||
menu$(m, i) = "Uncomment (remove ')": i = i + 1
|
|
||||||
menu$(m, i) = "-": i = i + 1
|
|
||||||
menu$(m, i) = "New #SUB...": i = i + 1
|
|
||||||
menu$(m, i) = "New #FUNCTION...": i = i + 1
|
|
||||||
menusize(m) = i - 1
|
|
||||||
|
|
||||||
m = m + 1: i = 0
|
m = m + 1: i = 0
|
||||||
menu$(m, i) = "View": i = i + 1
|
menu$(m, i) = "View": i = i + 1
|
||||||
|
@ -3220,6 +3206,7 @@ PCOPY 0, 2
|
||||||
SCREEN , , 1, 0
|
SCREEN , , 1, 0
|
||||||
r = 1
|
r = 1
|
||||||
IF idecontextualmenu = 1 THEN idectxmenuX = mX: idectxmenuY = mY: m = idecontextualmenuID
|
IF idecontextualmenu = 1 THEN idectxmenuX = mX: idectxmenuY = mY: m = idecontextualmenuID
|
||||||
|
IdeMakeEditMenu
|
||||||
oldmy = mY: oldmx = mX
|
oldmy = mY: oldmx = mX
|
||||||
DO
|
DO
|
||||||
PCOPY 2, 1
|
PCOPY 2, 1
|
||||||
|
@ -3238,6 +3225,7 @@ DO
|
||||||
m$ = menu$(m, i)
|
m$ = menu$(m, i)
|
||||||
l = LEN(m$)
|
l = LEN(m$)
|
||||||
IF INSTR(m$, "#") THEN l = l - 1
|
IF INSTR(m$, "#") THEN l = l - 1
|
||||||
|
IF LEFT$(m$, 1) = "~" THEN l = l - 1
|
||||||
IF INSTR(m$, " ") THEN l = l + 2 'min 4 spacing
|
IF INSTR(m$, " ") THEN l = l + 2 'min 4 spacing
|
||||||
IF l > w THEN w = l
|
IF l > w THEN w = l
|
||||||
NEXT
|
NEXT
|
||||||
|
@ -3257,6 +3245,16 @@ DO
|
||||||
m$ = menu$(m, i)
|
m$ = menu$(m, i)
|
||||||
IF m$ = "-" THEN
|
IF m$ = "-" THEN
|
||||||
COLOR 0, 7: LOCATE i + yy, xx - 2: PRINT chr$(195) + STRING$(w + 2, chr$(196)) + chr$(180);
|
COLOR 0, 7: LOCATE i + yy, xx - 2: PRINT chr$(195) + STRING$(w + 2, chr$(196)) + chr$(180);
|
||||||
|
ELSEIF left$(m$, 1) = "~" THEN
|
||||||
|
m$ = right$(m$, len(m$) - 1) 'Remove the tilde before printing
|
||||||
|
IF r = i THEN LOCATE i + yy, xx - 1: COLOR 7, 0: PRINT SPACE$(w + 2);
|
||||||
|
LOCATE i + yy, xx
|
||||||
|
h = -1: x = INSTR(m$, "#"): IF x THEN h = x: m$ = LEFT$(m$, x - 1) + RIGHT$(m$, LEN(m$) - x)
|
||||||
|
x = INSTR(m$, " "): IF x THEN m1$ = LEFT$(m$, x - 1): m2$ = RIGHT$(m$, LEN(m$) - x - 1): m$ = m1$ + SPACE$(w - LEN(m1$) - LEN(m2$)) + m2$
|
||||||
|
FOR x = 1 TO LEN(m$)
|
||||||
|
IF r = i THEN COLOR 8, 0 ELSE COLOR 8, 7
|
||||||
|
PRINT MID$(m$, x, 1);
|
||||||
|
NEXT
|
||||||
ELSE
|
ELSE
|
||||||
IF r = i THEN LOCATE i + yy, xx - 1: COLOR 7, 0: PRINT SPACE$(w + 2);
|
IF r = i THEN LOCATE i + yy, xx - 1: COLOR 7, 0: PRINT SPACE$(w + 2);
|
||||||
LOCATE i + yy, xx
|
LOCATE i + yy, xx
|
||||||
|
@ -3269,7 +3267,6 @@ DO
|
||||||
IF r = i THEN COLOR 7, 0 ELSE COLOR 0, 7
|
IF r = i THEN COLOR 7, 0 ELSE COLOR 0, 7
|
||||||
END IF
|
END IF
|
||||||
PRINT MID$(m$, x, 1);
|
PRINT MID$(m$, x, 1);
|
||||||
|
|
||||||
NEXT
|
NEXT
|
||||||
|
|
||||||
|
|
||||||
|
@ -4202,7 +4199,9 @@ DO
|
||||||
PCOPY 3, 0: SCREEN , , 3, 0: idewait4mous: idewait4alt: GOTO ideloop
|
PCOPY 3, 0: SCREEN , , 3, 0: idewait4mous: idewait4alt: GOTO ideloop
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
|
IF left$(menu$(m, s),1) = "~" THEN 'Ignore disabled items (starting with "~")
|
||||||
|
PCOPY 3, 0: SCREEN , , 3, 0: idewait4mous: idewait4alt: GOTO ideloop
|
||||||
|
END IF
|
||||||
|
|
||||||
|
|
||||||
SCREEN , , 0, 0
|
SCREEN , , 0, 0
|
||||||
|
@ -10494,6 +10493,44 @@ SUB IdeMakeContextualMenu
|
||||||
menusize(m) = i - 1
|
menusize(m) = i - 1
|
||||||
END SUB
|
END SUB
|
||||||
|
|
||||||
|
SUB IdeMakeEditMenu
|
||||||
|
m = ideeditmenuID: i = 0
|
||||||
|
menu$(m, i) = "Edit": i = i + 1
|
||||||
|
|
||||||
|
if ideselect then
|
||||||
|
menu$(m, i) = "Cu#t Shift+Del or Ctrl+X": i = i + 1
|
||||||
|
menu$(m, i) = "#Copy Ctrl+Ins or Ctrl+C": i = i + 1
|
||||||
|
else
|
||||||
|
menu$(m, i) = "~Cu#t Shift+Del or Ctrl+X": i = i + 1
|
||||||
|
menu$(m, i) = "~#Copy Ctrl+Ins or Ctrl+C": i = i + 1
|
||||||
|
end if
|
||||||
|
|
||||||
|
clip$ = _CLIPBOARD$ 'read clipboard
|
||||||
|
IF LEN(clip$) THEN
|
||||||
|
menu$(m, i) = "#Paste Shift+Ins or Ctrl+V": i = i + 1
|
||||||
|
else
|
||||||
|
menu$(m, i) = "~#Paste Shift+Ins or Ctrl+V": i = i + 1
|
||||||
|
end if
|
||||||
|
|
||||||
|
if ideselect then
|
||||||
|
menu$(m, i) = "Cl#ear Del": i = i + 1
|
||||||
|
else
|
||||||
|
menu$(m, i) = "~Cl#ear Del": i = i + 1
|
||||||
|
end if
|
||||||
|
|
||||||
|
menu$(m, i) = "Select #All Ctrl+A": i = i + 1
|
||||||
|
menu$(m, i) = "-": i = i + 1
|
||||||
|
menu$(m, i) = "#Undo Ctrl+Z": i = i + 1
|
||||||
|
menu$(m, i) = "#Redo Ctrl+Y": i = i + 1
|
||||||
|
menu$(m, i) = "-": i = i + 1
|
||||||
|
menu$(m, i) = "Comment (add ')": i = i + 1
|
||||||
|
menu$(m, i) = "Uncomment (remove ')": i = i + 1
|
||||||
|
menu$(m, i) = "-": i = i + 1
|
||||||
|
menu$(m, i) = "New #SUB...": i = i + 1
|
||||||
|
menu$(m, i) = "New #FUNCTION...": i = i + 1
|
||||||
|
menusize(m) = i - 1
|
||||||
|
END SUB
|
||||||
|
|
||||||
SUB IdeAddRecent (f2$)
|
SUB IdeAddRecent (f2$)
|
||||||
f$ = CRLF + f2$ + CRLF
|
f$ = CRLF + f2$ + CRLF
|
||||||
fh = FREEFILE
|
fh = FREEFILE
|
||||||
|
|
Loading…
Reference in a new issue