1
1
Fork 0
mirror of https://github.com/QB64-Phoenix-Edition/QB64pe.git synced 2024-06-29 09:20:38 +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:
FellippeHeitor 2016-01-05 23:14:51 -02:00
parent 47d5a0a473
commit 11e33dd3cb
2 changed files with 57 additions and 19 deletions

View file

@ -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
@ -198,4 +199,4 @@ DIM SHARED iderunmode
DIM SHARED IdeAndroidMenu DIM SHARED IdeAndroidMenu
DIM SHARED IdeAndroidStartScript AS STRING DIM SHARED IdeAndroidStartScript AS STRING
DIM SHARED IdeAndroidMakeScript AS STRING DIM SHARED IdeAndroidMakeScript AS STRING

View file

@ -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