mirror of
https://github.com/curioustorvald/tsvm.git
synced 2026-06-06 05:28:31 +09:00
tsvm: highlighter and popup drawing fix
This commit is contained in:
@@ -428,9 +428,26 @@ const OP_BUTTONS = [
|
|||||||
let opHover = -1
|
let opHover = -1
|
||||||
|
|
||||||
let opPanelDraw = (wo) => {
|
let opPanelDraw = (wo) => {
|
||||||
function hr(y) {
|
function hr(i, y) {
|
||||||
|
// draw horizontal rule...
|
||||||
|
con.color_pair(COL_TEXT, 255)
|
||||||
con.move(y, xp)
|
con.move(y, xp)
|
||||||
print(`\x84196u`.repeat(SIDEBAR_WIDTH - 2))
|
print(`\u00C4`.repeat(SIDEBAR_WIDTH - 2))
|
||||||
|
|
||||||
|
// if mouse is up, draw the whole box
|
||||||
|
if (opHover == i) {
|
||||||
|
let moveBack = (i == 0) ? 6 : 3
|
||||||
|
|
||||||
|
con.color_pair(COL_HLTEXT, 255)
|
||||||
|
con.move(y - moveBack, xp - 1)
|
||||||
|
con.prnch(0xDA); print('\u00C4'.repeat(SIDEBAR_WIDTH - 2)); con.prnch(0xBF)
|
||||||
|
for (let yy = 1; yy < moveBack; yy++) {
|
||||||
|
con.move(y - moveBack + yy, xp - 1); con.prnch(0xB3)
|
||||||
|
con.move(y - moveBack + yy, xp + SIDEBAR_WIDTH); con.prnch(0xB3)
|
||||||
|
}
|
||||||
|
con.move(y, xp - 1)
|
||||||
|
con.prnch(0xC0); print('\u00C4'.repeat(SIDEBAR_WIDTH - 2)); con.prnch(0xD9)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
function labCol(i) { return (opHover === i) ? COL_HLTEXT : COL_TEXT }
|
function labCol(i) { return (opHover === i) ? COL_HLTEXT : COL_TEXT }
|
||||||
|
|
||||||
@@ -441,76 +458,77 @@ let opPanelDraw = (wo) => {
|
|||||||
|
|
||||||
// other panel
|
// other panel
|
||||||
con.move(yp + 2, xp + 3)
|
con.move(yp + 2, xp + 3)
|
||||||
con.prnch((windowMode) ? 0x11 : 0x10)
|
con.color_pair(labCol(0), 255); con.prnch((windowMode) ? 0x11 : 0x10)
|
||||||
con.move(yp + 3, xp)
|
con.move(yp + 3, xp)
|
||||||
print(` \x1B[38;5;${labCol(0)}m[\x1B[38;5;${COL_HLACTION}mZ\x1B[38;5;${labCol(0)}m]`)
|
print(` \x1B[38;5;${labCol(0)}m[\x1B[38;5;${COL_HLACTION}mZ\x1B[38;5;${labCol(0)}m]`)
|
||||||
|
|
||||||
hr(yp+5)
|
hr(0, yp+5)
|
||||||
|
|
||||||
// go up
|
// go up
|
||||||
con.mvaddch(yp + 6, xp + 3, 0x18)
|
con.color_pair(labCol(1), 255); con.mvaddch(yp + 6, xp + 3, 0x18)
|
||||||
con.move(yp + 7, xp)
|
con.move(yp + 7, xp)
|
||||||
print(` \x1B[38;5;${labCol(1)}mGo \x1B[38;5;${COL_HLACTION}mU\x1B[38;5;${labCol(1)}mp`)
|
print(` \x1B[38;5;${labCol(1)}mGo \x1B[38;5;${COL_HLACTION}mU\x1B[38;5;${labCol(1)}mp`)
|
||||||
|
|
||||||
hr(yp+8)
|
hr(1, yp+8)
|
||||||
|
|
||||||
// copy
|
// copy
|
||||||
con.move(yp + 9, xp + 2)
|
con.move(yp + 9, xp + 2)
|
||||||
con.prnch(0xDB);con.prnch((windowMode) ? 0x1B : 0x1A);con.prnch(0xDB)
|
con.color_pair(labCol(2), 255); con.prnch(0xDB);con.prnch((windowMode) ? 0x1B : 0x1A);con.prnch(0xDB)
|
||||||
con.move(yp + 10, xp)
|
con.move(yp + 10, xp)
|
||||||
print(` \x1B[38;5;${COL_HLACTION}mC\x1B[38;5;${labCol(2)}mopy`)
|
print(` \x1B[38;5;${COL_HLACTION}mC\x1B[38;5;${labCol(2)}mopy`)
|
||||||
|
|
||||||
hr(yp+11)
|
hr(2, yp+11)
|
||||||
|
|
||||||
// move
|
// move
|
||||||
con.move(yp + 12, xp + 2)
|
con.move(yp + 12, xp + 2)
|
||||||
if (windowMode) con.prnch([0xDB, 0x1B, 0xB0]); else con.prnch([0xB0, 0x1A, 0xDB])
|
con.color_pair(labCol(3), 255); if (windowMode) con.prnch([0xDB, 0x1B, 0xB0]); else con.prnch([0xB0, 0x1A, 0xDB])
|
||||||
con.move(yp + 13, xp)
|
con.move(yp + 13, xp)
|
||||||
print(` \x1B[38;5;${labCol(3)}mMo\x1B[38;5;${COL_HLACTION}mv\x1B[38;5;${labCol(3)}me`)
|
print(` \x1B[38;5;${labCol(3)}mMo\x1B[38;5;${COL_HLACTION}mv\x1B[38;5;${labCol(3)}me`)
|
||||||
|
|
||||||
hr(yp+14)
|
hr(3, yp+14)
|
||||||
|
|
||||||
// delete
|
// delete
|
||||||
con.move(yp + 15, xp + 2)
|
con.move(yp + 15, xp + 2)
|
||||||
if (windowMode) con.prnch([0xDB, 0x1A, 0xF9]); else con.prnch([0xF9, 0x1B, 0xDB])
|
con.color_pair(labCol(4), 255); if (windowMode) con.prnch([0xDB, 0x1A, 0xF9]); else con.prnch([0xF9, 0x1B, 0xDB])
|
||||||
con.move(yp + 16, xp)
|
con.move(yp + 16, xp)
|
||||||
print(` \x1B[38;5;${COL_HLACTION}mD\x1B[38;5;${labCol(4)}melete`)
|
print(` \x1B[38;5;${COL_HLACTION}mD\x1B[38;5;${labCol(4)}melete`)
|
||||||
|
|
||||||
hr(yp+17)
|
hr(4, yp+17)
|
||||||
|
|
||||||
// mkdir
|
// mkdir
|
||||||
con.move(yp + 18, xp + 2)
|
con.move(yp + 18, xp + 2)
|
||||||
|
con.color_pair(labCol(5), 255);
|
||||||
con.prnch(0xDB)
|
con.prnch(0xDB)
|
||||||
con.video_reverse();con.prnch(0x2B);con.video_reverse()
|
con.video_reverse();con.prnch(0x2B);con.video_reverse()
|
||||||
con.prnch(0xDF)
|
con.prnch(0xDF)
|
||||||
con.move(yp + 19, xp)
|
con.move(yp + 19, xp)
|
||||||
print(` \x1B[38;5;${labCol(5)}mM\x1B[38;5;${COL_HLACTION}mk\x1B[38;5;${labCol(5)}mDir`)
|
print(` \x1B[38;5;${labCol(5)}mM\x1B[38;5;${COL_HLACTION}mk\x1B[38;5;${labCol(5)}mDir`)
|
||||||
|
|
||||||
hr(yp+20)
|
hr(5, yp+20)
|
||||||
|
|
||||||
// rename
|
// rename
|
||||||
con.move(yp + 21, xp + 2)
|
con.move(yp + 21, xp + 2)
|
||||||
con.prnch(0x4E);con.prnch(0x1A);con.prnch(0x52)
|
con.color_pair(labCol(6), 255); con.prnch(0x4E);con.prnch(0x1A);con.prnch(0x52)
|
||||||
con.move(yp + 22, xp)
|
con.move(yp + 22, xp)
|
||||||
print(` \x1B[38;5;${COL_HLACTION}mR\x1B[38;5;${labCol(6)}mename`)
|
print(` \x1B[38;5;${COL_HLACTION}mR\x1B[38;5;${labCol(6)}mename`)
|
||||||
|
|
||||||
hr(yp+23)
|
hr(6, yp+23)
|
||||||
|
|
||||||
// the dreaded hamburger menu
|
// the dreaded hamburger menu
|
||||||
con.move(yp + 24, xp + 3)
|
con.move(yp + 24, xp + 3)
|
||||||
con.prnch(0xf0)
|
con.color_pair(labCol(7), 255); con.prnch(0xf0)
|
||||||
con.move(yp + 25, xp)
|
con.move(yp + 25, xp)
|
||||||
print(` \x1B[38;5;${COL_HLACTION}mM\x1B[38;5;${labCol(7)}more`)
|
print(` \x1B[38;5;${COL_HLACTION}mM\x1B[38;5;${labCol(7)}more`)
|
||||||
|
|
||||||
hr(yp+26)
|
hr(7, yp+26)
|
||||||
|
|
||||||
// quit
|
// quit
|
||||||
con.move(yp + 27, xp + 3)
|
con.move(yp + 27, xp + 3)
|
||||||
con.prnch(0x58)
|
con.color_pair(labCol(8), 255); con.prnch(0x58)
|
||||||
con.move(yp + 28, xp)
|
con.move(yp + 28, xp)
|
||||||
print(` \x1B[38;5;${COL_HLACTION}mQ\x1B[38;5;${labCol(8)}muit`)
|
print(` \x1B[38;5;${COL_HLACTION}mQ\x1B[38;5;${labCol(8)}muit`)
|
||||||
|
|
||||||
|
con.color_pair(COL_TEXT, 255)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -220,6 +220,9 @@ function showDialog(opts) {
|
|||||||
const values = fields.map(f => (f.initial == null) ? '' : ('' + f.initial))
|
const values = fields.map(f => (f.initial == null) ? '' : ('' + f.initial))
|
||||||
const cursors = values.map(v => v.length)
|
const cursors = values.map(v => v.length)
|
||||||
|
|
||||||
|
let oldFG = con.get_color_fore()
|
||||||
|
let oldBG = con.get_color_back()
|
||||||
|
|
||||||
let buttons
|
let buttons
|
||||||
if (opts.buttons) {
|
if (opts.buttons) {
|
||||||
buttons = opts.buttons
|
buttons = opts.buttons
|
||||||
@@ -322,23 +325,23 @@ function showDialog(opts) {
|
|||||||
// Top border
|
// Top border
|
||||||
con.color_pair(frameFg, bg)
|
con.color_pair(frameFg, bg)
|
||||||
con.move(fbRow, fbCol)
|
con.move(fbRow, fbCol)
|
||||||
print('Ú' + 'Ä'.repeat(fw) + '¿')
|
print('\u00DA' + '\u00C4'.repeat(fw) + '\u00BF')
|
||||||
|
|
||||||
// Side borders + content
|
// Side borders + content
|
||||||
con.color_pair(frameFg, bg)
|
con.color_pair(frameFg, bg)
|
||||||
con.move(fbRow + 1, fbCol)
|
con.move(fbRow + 1, fbCol)
|
||||||
print('³')
|
print('\u00B3')
|
||||||
con.color_pair(fg, fieldBg)
|
con.color_pair(fg, fieldBg)
|
||||||
const s = fieldScroll(cursors[i], fw)
|
const s = fieldScroll(cursors[i], fw)
|
||||||
const vis = values[i].substring(s, s + fw)
|
const vis = values[i].substring(s, s + fw)
|
||||||
print(vis.padEnd(fw, ' '))
|
print(vis.padEnd(fw, ' '))
|
||||||
con.color_pair(frameFg, bg)
|
con.color_pair(frameFg, bg)
|
||||||
con.move(fbRow + 1, fbCol + fw + 1)
|
con.move(fbRow + 1, fbCol + fw + 1)
|
||||||
print('³')
|
print('\u00B3')
|
||||||
|
|
||||||
// Bottom border
|
// Bottom border
|
||||||
con.move(fbRow + 2, fbCol)
|
con.move(fbRow + 2, fbCol)
|
||||||
print('À' + 'Ä'.repeat(fw) + 'Ù')
|
print('\u00C0' + '\u00C4'.repeat(fw) + '\u00D9')
|
||||||
con.color_pair(fg, bg)
|
con.color_pair(fg, bg)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -518,6 +521,7 @@ function showDialog(opts) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
con.curs_set(0)
|
con.curs_set(0)
|
||||||
|
con.color_pair(oldFG, oldBG)
|
||||||
return done
|
return done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user