From 649d44b27ea267ab46e462f527b00efd7566e267 Mon Sep 17 00:00:00 2001 From: FellippeHeitor Date: Tue, 29 Dec 2015 16:56:58 -0200 Subject: [PATCH 1/5] If the cursor is on a SUB/FUNC name, it is highlighted. --- source/ide/ide_methods.bas | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/source/ide/ide_methods.bas b/source/ide/ide_methods.bas index 2540ed405..8c5ac976c 100644 --- a/source/ide/ide_methods.bas +++ b/source/ide/ide_methods.bas @@ -6411,10 +6411,31 @@ DIM sep AS STRING * 1 sep = CHR$(0) '-------- end of generic dialog box header -------- +'------- identify word or character at current cursor position - copied/adapted from FUNCTION ide2: +a$ = idegetline(idecy) +x = idecx +IF x <= LEN(a$) THEN + IF alphanumeric(ASC(a$, x)) THEN + x1 = x + DO WHILE x1 > 1 + IF alphanumeric(ASC(a$, x1 - 1)) OR ASC(a$, x1 - 1) = 36 THEN x1 = x1 - 1 ELSE EXIT DO + LOOP + x2 = x + DO WHILE x2 < LEN(a$) + IF alphanumeric(ASC(a$, x2 + 1)) OR ASC(a$, x2 + 1) = 36 THEN x2 = x2 + 1 ELSE EXIT DO + LOOP + a2$ = MID$(a$, x1, x2 - x1 + 1) + ELSE + a2$ = CHR$(ASC(a$, x)) + END IF + a2$ = UCASE$(a2$) 'a2$ now holds the word or character at current cursor position +END IF + '-------- init -------- ly$ = MKL$(1) CurrentlyViewingWhichSUBFUNC = 1 +PreferCurrentCursorSUBFUNC = 0 l$ = ideprogname$ IF l$ = "" THEN l$ = "Untitled" + tempfolderindexstr$ FOR y = 1 TO iden @@ -6451,6 +6472,11 @@ FOR y = 1 TO iden n$ = a$ args$ = "" END IF + + 'If the user currently has the cursor over a SUB/FUNC name, let's highlight it + 'instead of the currently in edition, for a quick link functionality: + IF a2$ = UCASE$(n$) THEN PreferCurrentCursorSUBFUNC = (LEN(ly$) / 4) + IF LEN(n$) <= 20 THEN n$ = n$ + SPACE$(20 - LEN(n$)) ELSE @@ -6483,7 +6509,11 @@ o(i).y = 1 '68 o(i).w = idewx - 12: o(i).h = idewy + idesubwindow - 9 o(i).txt = idenewtxt(l$) -o(i).sel = CurrentlyViewingWhichSUBFUNC +IF PreferCurrentCursorSUBFUNC <> 0 THEN + o(i).sel = PreferCurrentCursorSUBFUNC +ELSE + o(i).sel = CurrentlyViewingWhichSUBFUNC +END IF o(i).nam = idenewtxt("Program Items") From cf05f689a4af7d5945ea3f771766f5ae11f52430 Mon Sep 17 00:00:00 2001 From: FellippeHeitor Date: Thu, 31 Dec 2015 02:23:06 -0200 Subject: [PATCH 2/5] Improves on listbox search, allowing for more than the first letter to be searched (repeatedly pressing the same letter still works as before). --- source/ide/ide_methods.bas | 98 +++++++++++++++++++++++--------------- 1 file changed, 60 insertions(+), 38 deletions(-) diff --git a/source/ide/ide_methods.bas b/source/ide/ide_methods.bas index 8c5ac976c..16d24a63a 100644 --- a/source/ide/ide_methods.bas +++ b/source/ide/ide_methods.bas @@ -6772,6 +6772,7 @@ LOOP END FUNCTION SUB ideobjupdate (o AS idedbotype, focus, f, focusoffset, kk$, altletter$, mb, mousedown, mouseup, mx, my, info, mw) +STATIC SearchTerm$, LastKeybInput as single DIM sep AS STRING * 1 sep = CHR$(0) @@ -6976,50 +6977,71 @@ IF t = 2 THEN 'list box END IF IF LEN(kk$) = 1 THEN + ResetKeybTimer = 0 + IF TIMER - LastKeybInput > 1 THEN SearchTerm$ = "": ResetKeybTimer = -1 + LastKeybInput = TIMER k = ASC(UCASE$(kk$)): IF k < 32 OR k > 126 THEN k = 255 - old_sel = o.sel + 'Populate ListBoxITEMS: a$ = idetxt(o.txt) - - retryfind: - n = 1 - x = 1 - x2 = INSTR(x, a$, sep) - IF LEN(a$) THEN again = 1 ELSE again = 0 - DO WHILE x2 <> 0 OR again <> 0 - IF x2 THEN - ca2$ = MID$(a$, x, x2 - x) - a2$ = UCASE$(ca2$) + redim ListBoxITEMS(0) as string + if len(a$) > 0 then + n = 0: x = 1 + do + x2 = INSTR(x, a$, sep) + if x2 > 0 then + n = n + 1 + redim _preserve ListBoxITEMS(1 to n) as string + ListBoxITEMS(n) = mid$(a$, x, x2 - x) + else + n = n + 1 + redim _preserve ListBoxITEMS(1 to n) as string + ListBoxITEMS(n) = right$(a$, len(a$) - x + 1) + exit do + end if x = x2 + 1 - again = 1 - ELSE - ca2$ = RIGHT$(a$, LEN(a$) - x + 1) - a2$ = UCASE$(ca2$) - again = 0 - END IF + loop + end if - IF n > old_sel THEN - match = 0 - FOR ai = 1 TO LEN(a2$) - aa = ASC(a2$, ai) - IF aa > 126 OR (k <> 95 AND aa = 95) THEN - 'ignore - ELSE - IF aa = k THEN match = 1 - EXIT FOR - END IF - NEXT - IF match = 1 THEN - o.sel = n - GOTO selected + if k = 255 then + if o.sel > 0 then idetxt(o.stx) = ListBoxITEMS(o.sel) + goto selected 'Search is not performed if kk$ isn't a printable character + else + SearchTerm$ = SearchTerm$ + UCASE$(kk$) + END IF + + if len(SearchTerm$) = 2 and left$(SearchTerm$, 1) = right$(SearchTerm$, 1) then + 'if the user is pressing the same letter again, we deduce the search + 'is only for the initials + ResetKeybTimer = -1 + SearchTerm$ = ucase$(kk$) + end if + + SearchPass = 1 + if not ResetKeybTimer then StartSearch = abs(o.sel) else StartSearch = abs(o.sel) + 1 + if StartSearch < 1 or StartSearch > n then StartSearch = 1 + retryfind: + if SearchPass > 2 then goto selected + for findMatch = StartSearch to n + validCHARS$ = "" + FOR ai = 1 TO LEN(ListBoxITEMS(FindMatch)) + aa = ASC(ucase$(ListBoxITEMS(findMatch)), ai) + IF aa > 126 OR (k <> 95 AND aa = 95) THEN + 'ignore + ELSE + validCHARS$ = validCHARS$ + CHR$(aa) END IF - END IF - - IF n = o.sel THEN idetxt(o.stx) = ca2$ - n = n + 1 - x2 = INSTR(x, a$, sep) - LOOP - IF old_sel THEN old_sel = 0: GOTO retryfind + NEXT + if findMatch = o.sel then idetxt(o.stx) = ListBoxITEMS(FindMatch) + IF left$(validCHARS$, len(SearchTerm$)) = SearchTerm$ THEN + o.sel = findMatch + GOTO selected + end if + next findMatch + 'No match, try again: + StartSearch = 1 + SearchPass = SearchPass + 1 + goto retryfind selected: END IF From 1749254321a0bf031f8cd931479c2371fb46eb32 Mon Sep 17 00:00:00 2001 From: FellippeHeitor Date: Thu, 31 Dec 2015 02:44:50 -0200 Subject: [PATCH 3/5] Temporarily remove comments in front of SUB/FUNCTION before adding to window title or SUBs dialog. --- source/ide/ide_methods.bas | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/source/ide/ide_methods.bas b/source/ide/ide_methods.bas index 16d24a63a..69b953fb4 100644 --- a/source/ide/ide_methods.bas +++ b/source/ide/ide_methods.bas @@ -708,6 +708,15 @@ DO END IF NEXT + 'attempt to cleanse sfname$, just in case there are any comments or other unwanted stuff + for CleanseSFNAME = 1 to len(sfname$) + select case mid$(sfname$, CleanseSFNAME, 1) + case " ", "'", ":" + sfname$ = left$(sfname$, CleanseSFNAME - 1) + exit for + end select + next + 'update title of main window COLOR 7, 1: LOCATE 2, 2: PRINT STRING$(idewx - 2, "Ä"); IF LEN(ideprogname) THEN a$ = ideprogname ELSE a$ = "Untitled" + tempfolderindexstr$ @@ -6477,6 +6486,15 @@ FOR y = 1 TO iden 'instead of the currently in edition, for a quick link functionality: IF a2$ = UCASE$(n$) THEN PreferCurrentCursorSUBFUNC = (LEN(ly$) / 4) + 'attempt to cleanse n$, just in case there are any comments or other unwanted stuff + for CleanseN = 1 to len(n$) + select case mid$(n$, CleanseN, 1) + case " ", "'", ":" + n$ = left$(n$, CleanseN - 1) + exit for + end select + next + IF LEN(n$) <= 20 THEN n$ = n$ + SPACE$(20 - LEN(n$)) ELSE From ebde55ec7e2a0bbf6935180cc186e7a8ba501997 Mon Sep 17 00:00:00 2001 From: FellippeHeitor Date: Thu, 31 Dec 2015 09:59:46 -0200 Subject: [PATCH 4/5] Fixed a crash when filename is too long to fit the screen. --- source/ide/ide_methods.bas | 1 + 1 file changed, 1 insertion(+) diff --git a/source/ide/ide_methods.bas b/source/ide/ide_methods.bas index 69b953fb4..6108f1b89 100644 --- a/source/ide/ide_methods.bas +++ b/source/ide/ide_methods.bas @@ -723,6 +723,7 @@ DO a$ = " " + a$ if LEN(sfname$) > 0 then a$ = a$ + ":" + sfname$ a$ = a$ + " " + if len(a$) > idewx - 5 then a$ = left$(a$, idewx - 11) + string$(3, 250) + " " COLOR 1, 7: LOCATE 2, ((idewx / 2) - 1) - (LEN(a$) - 1) \ 2: PRINT a$; 'update search bar From 418e8aebcf14613124a2aa94fb9a0d455d038036 Mon Sep 17 00:00:00 2001 From: FellippeHeitor Date: Thu, 31 Dec 2015 10:28:34 -0200 Subject: [PATCH 5/5] Incorporated Luke's ASCII fix, to avoid going back in commits. --- source/ide/ide_methods.bas | 102 ++++++++++++++++++++----------------- 1 file changed, 54 insertions(+), 48 deletions(-) diff --git a/source/ide/ide_methods.bas b/source/ide/ide_methods.bas index 6108f1b89..c2ee6e75b 100644 --- a/source/ide/ide_methods.bas +++ b/source/ide/ide_methods.bas @@ -316,12 +316,12 @@ IF idelaunched = 0 THEN COLOR 7, 1: idebox 1, idewy - 4, idewx, 5 'edit corners - COLOR 7, 1: LOCATE idewy - 4, 1: PRINT "Ã";: LOCATE idewy - 4, idewx: PRINT "´"; + COLOR 7, 1: LOCATE idewy - 4, 1: PRINT chr$(195);: LOCATE idewy - 4, idewx: PRINT chr$(180); IF idehelp = 1 THEN COLOR 7, 0: idebox 1, idewy, idewx, idesubwindow + 1 - COLOR 7, 0: LOCATE idewy, 1: PRINT "Ã";: LOCATE idewy, idewx: PRINT "´"; - COLOR 7, 0: LOCATE idewy, idewx - 3: PRINT "´XÃ"; + COLOR 7, 0: LOCATE idewy, 1: PRINT chr$(195);: LOCATE idewy, idewx: PRINT chr$(180); + COLOR 7, 0: LOCATE idewy, idewx - 3: PRINT chr$(180) + "X" + chr$(195); END IF 'add status title @@ -718,7 +718,7 @@ DO next 'update title of main window - COLOR 7, 1: LOCATE 2, 2: PRINT STRING$(idewx - 2, "Ä"); + COLOR 7, 1: LOCATE 2, 2: PRINT STRING$(idewx - 2, chr$(196)); IF LEN(ideprogname) THEN a$ = ideprogname ELSE a$ = "Untitled" + tempfolderindexstr$ a$ = " " + a$ if LEN(sfname$) > 0 then a$ = a$ + ":" + sfname$ @@ -728,12 +728,12 @@ DO 'update search bar LOCATE 2, idewx - 30 - COLOR 7, 1: PRINT "´"; - COLOR 3, 1: PRINT "Find[ ]"; - COLOR 7, 1: PRINT "Ã"; + COLOR 7, 1: PRINT chr$(180); + COLOR 3, 1: PRINT "Find[ " + chr$(18) + "]"; + COLOR 7, 1: PRINT chr$(195); f$ = idefindtext IF LEN(f$) > 20 THEN - f$ = "úúú" + RIGHT$(f$, 17) + f$ = string$(3, 250) + RIGHT$(f$, 17) END IF LOCATE 2, idewx - 28 + 4: COLOR 3, 1: PRINT f$ findtext$ = f$ @@ -833,14 +833,14 @@ DO PRINT CHR$(a); ELSE COLOR 7, 0 - PRINT "Ä"; + PRINT chr$(196); END IF NEXT 'Help_Search_Str a$ = "" IF LEN(Help_Search_Str) THEN a$ = Help_Search_Str - IF LEN(a$) > 20 THEN a$ = "úúú" + RIGHT$(a$, 17) + IF LEN(a$) > 20 THEN a$ = string$(3, 250) + RIGHT$(a$, 17) a$ = "[" + a$ + "](DELETE=next)" END IF IdeInfo$ = a$ @@ -864,7 +864,7 @@ DO 'show info message (if any) a$ = IdeInfo$ - IF LEN(a$) > 60 THEN a$ = LEFT$(a$, 57) + "úúú" + IF LEN(a$) > 60 THEN a$ = LEFT$(a$, 57) + string$(3, 250) IF LEN(a$) < 60 THEN a$ = a$ + SPACE$(60 - LEN(a$)) COLOR 0, 3: LOCATE idewy + idesubwindow, 2 PRINT a$; @@ -1590,7 +1590,7 @@ DO ' PRINT CHR$(a); ' ELSE ' COLOR 7, 0 - ' PRINT "Ä"; + ' PRINT chr$(196); ' END IF 'NEXT @@ -2834,7 +2834,7 @@ DO a$ = idegetline(idecy) IF LEN(a$) < idecx - 1 THEN a$ = a$ + SPACE$(idecx - 1 - LEN(a$)) - IF K$ = CHR$(27) AND NOT AltSpecial THEN GOTO specialchar 'Steve edit 07-04-2014 to stop ESC from printing  in the IDE + IF K$ = CHR$(27) AND NOT AltSpecial THEN GOTO specialchar 'Steve edit 07-04-2014 to stop ESC from printing chr$(27) in the IDE IF ideinsert THEN a2$ = RIGHT$(a$, LEN(a$) - idecx + 1) @@ -2976,7 +2976,7 @@ DO FOR i = 1 TO menusize(m) m$ = menu$(m, i) IF m$ = "-" THEN - COLOR 0, 7: LOCATE i + 2, xx - 2: PRINT "Ã" + STRING$(w + 2, "Ä") + "´"; + COLOR 0, 7: LOCATE i + 2, xx - 2: PRINT chr$(195) + STRING$(w + 2, chr$(196)) + chr$(180); ELSE IF r = i THEN LOCATE i + 2, xx - 1: COLOR 7, 0: PRINT SPACE$(w + 2); LOCATE i + 2, xx @@ -3868,20 +3868,20 @@ LOOP END FUNCTION SUB idebox (x, y, w, h) -LOCATE y, x: PRINT "Ú" + STRING$(w - 2, "Ä") + "¿"; +LOCATE y, x: PRINT chr$(218) + STRING$(w - 2, 196) + chr$(191); FOR y2 = y + 1 TO y + h - 2 - LOCATE y2, x: PRINT "³" + SPACE$(w - 2) + "³"; + LOCATE y2, x: PRINT chr$(179) + SPACE$(w - 2) + chr$(179); NEXT -LOCATE y + h - 1, x: PRINT "À" + STRING$(w - 2, "Ä") + "Ù"; +LOCATE y + h - 1, x: PRINT chr$(192) + STRING$(w - 2, 196) + chr$(217); END SUB SUB ideboxshadow (x, y, w, h) -LOCATE y, x: PRINT "Ú" + STRING$(w - 2, "Ä") + "¿"; +LOCATE y, x: PRINT chr$(218) + STRING$(w - 2, 196) + chr$(191); FOR y2 = y + 1 TO y + h - 2 - LOCATE y2, x: PRINT "³" + SPACE$(w - 2) + "³"; + LOCATE y2, x: PRINT chr$(179) + SPACE$(w - 2) + chr$(179); NEXT -LOCATE y + h - 1, x: PRINT "À" + STRING$(w - 2, "Ä") + "Ù"; +LOCATE y + h - 1, x: PRINT chr$(192) + STRING$(w - 2, 196) + chr$(217); 'shadow COLOR 8, 0 FOR y2 = y + 1 TO y + h - 1 @@ -5148,12 +5148,12 @@ i = i2: n = n2 'LOCATE y, x: PRINT CHR$(27); 'LOCATE y, x + w - 1: PRINT CHR$(26); 'FOR x2 = x + 1 TO x + w - 2 -'LOCATE y, x2: PRINT "°"; +'LOCATE y, x2: PRINT chr$(176); 'NEXT 'IF w > 3 THEN 'p2! = w - 2 - .00001 'x2 = x + 1 + INT(p2! * p!) -'LOCATE y, x2: PRINT "Û"; +'LOCATE y, x2: PRINT chr$(219); 'END IF @@ -5164,7 +5164,7 @@ COLOR 0, 7 LOCATE y, x: PRINT CHR$(27); LOCATE y, x + h - 1: PRINT CHR$(26); FOR x2 = x + 1 TO x + h - 2 - LOCATE y, x2: PRINT "°"; + LOCATE y, x2: PRINT chr$(176); NEXT 'draw slider @@ -5193,7 +5193,7 @@ IF h = 4 THEN 'show whichever is closer of the two positions p! = (i - 1) / (n - 1) IF p! < .5 THEN x2 = x + 1 ELSE x2 = x + 2 - LOCATE y, x2: PRINT "Û"; + LOCATE y, x2: PRINT chr$(219); idehbar = x2 EXIT FUNCTION END IF @@ -5207,13 +5207,13 @@ IF h > 4 THEN END IF IF i = 1 THEN x2 = x + 1 - LOCATE y, x2: PRINT "Û"; + LOCATE y, x2: PRINT chr$(219); idehbar = x2 EXIT FUNCTION END IF IF i = n THEN x2 = x + h - 2 - LOCATE y, x2: PRINT "Û"; + LOCATE y, x2: PRINT chr$(219); idehbar = x2 EXIT FUNCTION END IF @@ -5221,7 +5221,7 @@ IF h > 4 THEN p! = (i - 1) / (n - 1) p! = p! * (h - 4) x2 = x + 2 + INT(p!) - LOCATE y, x2: PRINT "Û"; + LOCATE y, x2: PRINT chr$(219); idehbar = x2 EXIT FUNCTION END IF @@ -5618,7 +5618,7 @@ DO 'main loop COLOR 0, 7: LOCATE p.y + 4, p.x + 2: PRINT "Path: "; a$ = path$ w = p.w - 8 - IF LEN(a$) > w - 3 THEN a$ = "úúú" + RIGHT$(a$, w - 3) + IF LEN(a$) > w - 3 THEN a$ = string$(3, 250) + RIGHT$(a$, w - 3) PRINT a$; '-------- end of custom display changes -------- @@ -6001,7 +6001,7 @@ DO 'main loop COLOR 0, 7: LOCATE p.y + 4, p.x + 2: PRINT "Path: "; a$ = path$ w = p.w - 8 - IF LEN(a$) > w - 3 THEN a$ = "úúú" + RIGHT$(a$, w - 3) + IF LEN(a$) > w - 3 THEN a$ = string$(3, 250) + RIGHT$(a$, w - 3) PRINT a$; '-------- end of custom display changes -------- @@ -6383,7 +6383,7 @@ COLOR 7, 1 FOR b = 1 TO IdeBmkN y = IdeBmk(b).y IF y >= idesy AND y <= idesy + (idewy - 9) THEN - LOCATE 3 + y - idesy, 1: PRINT "Å"; + LOCATE 3 + y - idesy, 1: PRINT chr$(197); END IF NEXT @@ -6499,21 +6499,21 @@ FOR y = 1 TO iden IF LEN(n$) <= 20 THEN n$ = n$ + SPACE$(20 - LEN(n$)) ELSE - n$ = LEFT$(n$, 17) + "úúú" + n$ = LEFT$(n$, 17) + string$(3, 250) END IF IF LEN(args$) <= (idewx - 41) THEN args$ = args$ + SPACE$((idewx - 41) - LEN(args$)) ELSE - args$ = LEFT$(args$, (idewx - 44)) + "úúú" + args$ = LEFT$(args$, (idewx - 44)) + string$(3, 250) END IF - l$ = l$ + sep + "ÃÄ" + n$ + " " + sf$ + args$ + l$ = l$ + sep + chr$(195) + chr$(196) + n$ + " " + sf$ + args$ END IF NEXT FOR x = LEN(l$) TO 1 STEP -1 a$ = MID$(l$, x, 1) - IF a$ = "Ã" THEN MID$(l$, x, 1) = "À": EXIT FOR + IF a$ = chr$(195) THEN MID$(l$, x, 1) = chr$(192): EXIT FOR NEXT @@ -7239,7 +7239,7 @@ COLOR 0, 7 LOCATE y, x: PRINT CHR$(24); LOCATE y + h - 1, x: PRINT CHR$(25); FOR y2 = y + 1 TO y + h - 2 - LOCATE y2, x: PRINT "°"; + LOCATE y2, x: PRINT chr$(176); NEXT 'draw slider @@ -7268,7 +7268,7 @@ IF h = 4 THEN 'show whichever is closer of the two positions p! = (i - 1) / (n - 1) IF p! < .5 THEN y2 = y + 1 ELSE y2 = y + 2 - LOCATE y2, x: PRINT "Û"; + LOCATE y2, x: PRINT chr$(219); idevbar = y2 EXIT FUNCTION END IF @@ -7282,13 +7282,13 @@ IF h > 4 THEN END IF IF i = 1 THEN y2 = y + 1 - LOCATE y2, x: PRINT "Û"; + LOCATE y2, x: PRINT chr$(219); idevbar = y2 EXIT FUNCTION END IF IF i = n THEN y2 = y + h - 2 - LOCATE y2, x: PRINT "Û"; + LOCATE y2, x: PRINT chr$(219); idevbar = y2 EXIT FUNCTION END IF @@ -7296,7 +7296,7 @@ IF h > 4 THEN p! = (i - 1) / (n - 1) p! = p! * (h - 4) y2 = y + 2 + INT(p!) - LOCATE y2, x: PRINT "Û"; + LOCATE y2, x: PRINT chr$(219); idevbar = y2 EXIT FUNCTION END IF @@ -9094,7 +9094,7 @@ COLOR 7, 0 'CLS 'FOR y = Help_wy1 - 1 TO Help_wy2 + 1 ' FOR x = Help_wx1 - 1 TO Help_wx2 + 1 -' LOCATE y, x: PRINT "Û"; +' LOCATE y, x: PRINT chr$(219); ' NEXT 'NEXT @@ -9566,7 +9566,7 @@ FOR r = 1 TO 5 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 = 5 THEN f$ = "#Recent..." - IF LEN(f$) > 25 THEN f$ = "úúú" + RIGHT$(f$, 22) + IF LEN(f$) > 25 THEN f$ = string$(3, 250) + RIGHT$(f$, 22) IF r <= 4 THEN IdeRecentLink(r, 1) = f$ menu$(m, i) = f$: i = i + 1 END IF @@ -9608,8 +9608,9 @@ END SUB SUB ideASCIIbox 'IF INSTR(_OS$, "WIN") THEN ret% = SHELL("internal\ASCII-Picker.exe") ELSE ret% = SHELL("internal/ASCII-Picker") - +'(code to fix font and arrow keys also written by Steve) w = _WIDTH: h = _HEIGHT +font = _FONT temp = _NEWIMAGE(640, 480, 32) temp1 = _NEWIMAGE(640, 480, 32) ws = _NEWIMAGE(640, 480, 32) @@ -9650,9 +9651,12 @@ oldmousex = _MOUSEX: oldmousey = _MOUSEY DO _LIMIT 60 DO: LOOP WHILE _MOUSEINPUT + if oldx <> _mousex and oldy <> _mousey then + x = _MOUSEX \ 40 + 1 'If mouse moved, where are we now? + y = _MOUSEY \ 30 + 1 + end if + oldx = _mousex: oldy = _mousey - x = _MOUSEX \ 40 + 1 'If mouse moved, where are we now? - y = _MOUSEY \ 30 + 1 num = (y - 1) * 16 + x - 1 IF num = 0 THEN text$ = "" @@ -9684,7 +9688,7 @@ DO CASE 13: EXIT DO CASE 27 _AUTODISPLAY - SCREEN 0: WIDTH w, h: _DEST 0: _DELAY .2 + SCREEN 0: WIDTH w, h: _FONT font: _DEST 0: _DELAY .2 IF _RESIZE THEN donothing = atall EXIT SUB CASE 32: toggle = NOT toggle @@ -9702,13 +9706,13 @@ DO Ex = _EXIT IF Ex THEN _AUTODISPLAY - SCREEN 0: WIDTH w, h: _DEST 0: _DELAY .2 + SCREEN 0: WIDTH w, h: _FONT font: _DEST 0: _DELAY .2 IF _RESIZE THEN donothing = atall EXIT FUNCTION END IF IF MouseExit THEN _AUTODISPLAY - SCREEN 0: WIDTH w, h: _DEST 0: _DELAY .2 + SCREEN 0: WIDTH w, h: _FONT font: _DEST 0: _DELAY .2 IF _RESIZE THEN donothing = atall EXIT FUNCTION END IF @@ -9731,7 +9735,9 @@ END IF _AUTODISPLAY -SCREEN 0: WIDTH w, h: _DEST 0: _DELAY .2 +SCREEN 0: WIDTH w, h +_FONT font +_DEST 0: _DELAY .2 IF _RESIZE THEN donothing = atall END FUNCTION