1
1
Fork 0
mirror of https://github.com/QB64-Phoenix-Edition/QB64pe.git synced 2024-06-26 17:10: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 menusize(1 TO 10)
DIM SHARED menus AS INTEGER, idecontextualmenuID AS INTEGER
DIM SHARED ideeditmenuID AS INTEGER
DIM SHARED menubar$, idecontextualSearch$
DIM SHARED ideundocombo, ideundocombochr, idenoundo, idemergeundo
DIM SHARED idealthighlight, ideentermenu
@ -198,4 +199,4 @@ DIM SHARED iderunmode
DIM SHARED IdeAndroidMenu
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
m = m + 1: i = 0
menu$(m, i) = "Edit": i = i + 1
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
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
ideeditmenuID = m
IdeMakeEditMenu
m = m + 1: i = 0
menu$(m, i) = "View": i = i + 1
@ -3220,6 +3206,7 @@ PCOPY 0, 2
SCREEN , , 1, 0
r = 1
IF idecontextualmenu = 1 THEN idectxmenuX = mX: idectxmenuY = mY: m = idecontextualmenuID
IdeMakeEditMenu
oldmy = mY: oldmx = mX
DO
PCOPY 2, 1
@ -3238,6 +3225,7 @@ DO
m$ = menu$(m, i)
l = LEN(m$)
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 l > w THEN w = l
NEXT
@ -3257,6 +3245,16 @@ DO
m$ = menu$(m, i)
IF m$ = "-" THEN
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
IF r = i THEN LOCATE i + yy, xx - 1: COLOR 7, 0: PRINT SPACE$(w + 2);
LOCATE i + yy, xx
@ -3269,7 +3267,6 @@ DO
IF r = i THEN COLOR 7, 0 ELSE COLOR 0, 7
END IF
PRINT MID$(m$, x, 1);
NEXT
@ -4202,7 +4199,9 @@ DO
PCOPY 3, 0: SCREEN , , 3, 0: idewait4mous: idewait4alt: GOTO ideloop
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
@ -10494,6 +10493,44 @@ SUB IdeMakeContextualMenu
menusize(m) = i - 1
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$)
f$ = CRLF + f2$ + CRLF
fh = FREEFILE