|
|
|
@ -214,9 +214,11 @@ func updateMain() {
|
|
|
|
|
} |
|
|
|
|
mainBuffer.WriteString(statusMessage) |
|
|
|
|
|
|
|
|
|
mainbuf.SetTitle(" " + runewidth.Truncate(mainBuffer.String(), screenWidth-4, "...") + " ") |
|
|
|
|
mainbuf.SetTitle(" " + cview.Escape(runewidth.Truncate(mainBuffer.String(), screenWidth-4, "...")) + " ") |
|
|
|
|
mainBuffer.Reset() |
|
|
|
|
|
|
|
|
|
l := len(mainBufferFiles) + 1 |
|
|
|
|
|
|
|
|
|
var printed int |
|
|
|
|
var line string |
|
|
|
|
if mainBufferOrigin == 0 { |
|
|
|
@ -227,17 +229,11 @@ func updateMain() {
|
|
|
|
|
} else { |
|
|
|
|
line = "../" |
|
|
|
|
} |
|
|
|
|
lineWidth := runewidth.StringWidth(line) |
|
|
|
|
line = cview.Escape(line) |
|
|
|
|
mainBuffer.WriteString(line) |
|
|
|
|
|
|
|
|
|
if queueFocused { |
|
|
|
|
writeListItemSuffix(&mainBuffer, !queueFocused, mainBufferCursor, 0) |
|
|
|
|
} |
|
|
|
|
for i := len(line); i < screenWidth-2; i++ { |
|
|
|
|
mainBuffer.WriteRune(' ') |
|
|
|
|
} |
|
|
|
|
if !queueFocused { |
|
|
|
|
writeListItemSuffix(&mainBuffer, !queueFocused, mainBufferCursor, 0) |
|
|
|
|
} |
|
|
|
|
writeListItemSuffix(&mainBuffer, !queueFocused, mainBufferCursor, 0, 0, l, lineWidth, mainBufHeight-2) |
|
|
|
|
|
|
|
|
|
printed++ |
|
|
|
|
} |
|
|
|
@ -253,28 +249,31 @@ func updateMain() {
|
|
|
|
|
writeListItemPrefix(&mainBuffer, !queueFocused, mainBufferCursor-1, i) |
|
|
|
|
|
|
|
|
|
if entry.File.IsDir() { |
|
|
|
|
line = entry.File.Name() + "/" |
|
|
|
|
line = strings.TrimSpace(entry.File.Name()) + "/" |
|
|
|
|
} else { |
|
|
|
|
line = entry.String() |
|
|
|
|
} |
|
|
|
|
lineWidth := runewidth.StringWidth(line) |
|
|
|
|
line = cview.Escape(line) |
|
|
|
|
mainBuffer.WriteString(line) |
|
|
|
|
|
|
|
|
|
if queueFocused { |
|
|
|
|
writeListItemSuffix(&mainBuffer, !queueFocused, mainBufferCursor-1, i) |
|
|
|
|
} |
|
|
|
|
writeListItemSuffix(&mainBuffer, !queueFocused, mainBufferCursor, printed, i+1, l, lineWidth, mainBufHeight-2) |
|
|
|
|
|
|
|
|
|
for i := runewidth.StringWidth(line); i < screenWidth-2; i++ { |
|
|
|
|
mainBuffer.WriteRune(' ') |
|
|
|
|
printed++ |
|
|
|
|
if printed == mainBufHeight-2 { |
|
|
|
|
break |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if !queueFocused { |
|
|
|
|
writeListItemSuffix(&mainBuffer, !queueFocused, mainBufferCursor-1, i) |
|
|
|
|
remaining := (mainBufHeight - 2) - printed |
|
|
|
|
for i := 0; i < remaining; i++ { |
|
|
|
|
if printed > 0 { |
|
|
|
|
mainBuffer.WriteRune('\n') |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
writeListItemSuffix(&mainBuffer, !queueFocused, mainBufferCursor, printed, remaining-printed, l, 0, mainBufHeight-2) |
|
|
|
|
|
|
|
|
|
printed++ |
|
|
|
|
if printed == mainBufHeight-2 { |
|
|
|
|
break |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
mainbuf.SetText(mainBuffer.String()) |
|
|
|
@ -286,6 +285,8 @@ func updateQueue() {
|
|
|
|
|
|
|
|
|
|
queueBuffer.Reset() |
|
|
|
|
|
|
|
|
|
l := len(queueFiles) |
|
|
|
|
|
|
|
|
|
var printed int |
|
|
|
|
var line string |
|
|
|
|
for i, entry := range queueFiles { |
|
|
|
@ -300,18 +301,12 @@ func updateQueue() {
|
|
|
|
|
writeListItemPrefix(&queueBuffer, queueFocused, queueCursor, i) |
|
|
|
|
|
|
|
|
|
line = entry.String() |
|
|
|
|
lineWidth := runewidth.StringWidth(line) |
|
|
|
|
line = cview.Escape(line) |
|
|
|
|
|
|
|
|
|
queueBuffer.WriteString(line) |
|
|
|
|
|
|
|
|
|
if !queueFocused { |
|
|
|
|
writeListItemSuffix(&queueBuffer, queueFocused, queueCursor, i) |
|
|
|
|
} |
|
|
|
|
for i := runewidth.StringWidth(line); i < screenWidth-2; i++ { |
|
|
|
|
queueBuffer.WriteRune(' ') |
|
|
|
|
} |
|
|
|
|
if queueFocused { |
|
|
|
|
writeListItemSuffix(&queueBuffer, queueFocused, queueCursor, i) |
|
|
|
|
} |
|
|
|
|
writeListItemSuffix(&queueBuffer, queueFocused, queueCursor, printed, i, l, lineWidth, queueHeight-2) |
|
|
|
|
|
|
|
|
|
printed++ |
|
|
|
|
if printed == queueHeight-2 { |
|
|
|
@ -319,6 +314,17 @@ func updateQueue() {
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
remaining := (queueHeight - 2) - printed |
|
|
|
|
for i := 0; i < remaining; i++ { |
|
|
|
|
if printed > 0 { |
|
|
|
|
queueBuffer.WriteRune('\n') |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
writeListItemSuffix(&queueBuffer, queueFocused, queueCursor, printed, remaining-printed, l, 0, queueHeight-2) |
|
|
|
|
|
|
|
|
|
printed++ |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
queuebuf.SetText(queueBuffer.String()) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -334,14 +340,31 @@ func writeListItemPrefix(buffer *bytes.Buffer, focused bool, cursor int, i int)
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func writeListItemSuffix(buffer *bytes.Buffer, focused bool, cursor int, i int) { |
|
|
|
|
func writeListItemSuffix(buffer *bytes.Buffer, focused bool, cursor int, printed int, i int, count int, lineWidth int, height int) { |
|
|
|
|
if !focused && i == cursor { |
|
|
|
|
buffer.WriteString("[-:-:-]") |
|
|
|
|
} |
|
|
|
|
for i := lineWidth; i < screenWidth-3; i++ { |
|
|
|
|
buffer.WriteRune(' ') |
|
|
|
|
} |
|
|
|
|
if focused && i == cursor { |
|
|
|
|
buffer.WriteString("[-:-:-]") |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
scrollBlockPos := int(float64(height-1) * (float64(cursor) / float64(count-1))) |
|
|
|
|
if focused { |
|
|
|
|
if i == cursor { |
|
|
|
|
if printed == scrollBlockPos { |
|
|
|
|
buffer.WriteString("[::r]") |
|
|
|
|
buffer.WriteRune(' ') |
|
|
|
|
buffer.WriteString("[-:-:-]") |
|
|
|
|
} else { |
|
|
|
|
buffer.WriteRune('▒') |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
if i == cursor { |
|
|
|
|
buffer.WriteString("[-:-:-]") |
|
|
|
|
if printed == scrollBlockPos { |
|
|
|
|
buffer.WriteRune('▓') |
|
|
|
|
} else { |
|
|
|
|
buffer.WriteRune('░') |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|