コード例 #1
0
func (r *LogsDisplay) DrawOriginList() {

	utility.WipeArea(0, 5, r.MarginPos, r.height-2, r.page.Foreground, r.page.Background)
	index := 0

	for _, origin := range r.originKeys {

		var bg termbox.Attribute
		fg := r.page.Foreground

		if r.LogOrigins[origin] {
			bg = termbox.ColorGreen
		} else {
			bg = termbox.ColorRed
		}

		if index == r.selectedOrigin {
			origin = fmt.Sprintf("> %s", origin)
			fg = termbox.ColorWhite | termbox.AttrBold
		} else {
			origin = fmt.Sprintf("  %s", origin)
		}

		origin = r.padRight(origin, " ", r.MarginPos)

		for i := 0; i < len(origin); i++ {
			termbox.SetCell(i, index+5, rune(origin[i]), fg, bg)
		}
		index++
	}
}
コード例 #2
0
func (r *LogsDisplay) DrawLogBuffer() {
	utility.WipeArea(r.MarginPos+1, 3, r.width, r.height-2, r.page.Foreground, r.page.Background)

	paneStart := 3
	paneEnd := r.height - 2 // height in rows of the screen

	if len(r.lineBuffer) < (paneEnd - paneStart) { // adjust for length of the buffer
		paneStart = paneEnd - len(r.lineBuffer)
	}

	offset := len(r.lineBuffer) - (paneEnd - paneStart)

	if r.pagingMode {
		offset = r.pagingOffset
	}

	// look at
	for i := paneEnd; i > paneStart; i-- {
		line := r.lineBuffer[(i-paneStart)+offset-1]

		cursor := r.MarginPos + 1

		if line.Source != "" {
			source := fmt.Sprintf("[%s] ", line.Source)
			utility.WriteString(source, cursor, i-1, utility.ColorBrightGreen, r.page.Background)
			cursor += len(source)
		}

		if line.Indent {
			utility.WriteString(">> ", cursor, i-1, utility.ColorBrightGreen, r.page.Background)
			cursor += 3
		}

		utility.WriteString(line.Line, cursor, i-1, r.page.Foreground, r.page.Background)
	}

	if r.pagingMode {
		numberOfPages := math.Ceil(float64(len(r.lineBuffer)) / float64(r.height-5))
		currentPage := math.Ceil(float64(r.pagingOffset)/float64(r.height-5) + 1)

		// offSetIndicator := fmt.Sprintf(" %d / %d ", r.pagingOffset, len(r.lineBuffer))
		offSetIndicator := fmt.Sprintf(" %d / %d ", int(currentPage), int(numberOfPages))
		x := r.width - len(offSetIndicator)
		utility.WriteString(offSetIndicator, x, paneStart, r.page.Foreground, termbox.ColorRed)
	}
}