mirror of
https://github.com/bcicen/ctop.git
synced 2024-08-30 18:23:19 +00:00
add SetCursor method to menu
This commit is contained in:
parent
db050031df
commit
84849a0c9f
2
menus.go
2
menus.go
@ -64,7 +64,7 @@ func SortMenu() {
|
||||
}
|
||||
|
||||
// set cursor position to current sort field
|
||||
//current := config.GetVal("sortField")
|
||||
m.SetCursor(config.GetVal("sortField"))
|
||||
//for n, item := range m.Items {
|
||||
//if item.Val == current {
|
||||
//m.CursorPos = n
|
||||
|
@ -14,7 +14,7 @@ type Menu struct {
|
||||
TextFgColor ui.Attribute
|
||||
TextBgColor ui.Attribute
|
||||
Selectable bool
|
||||
CursorPos int
|
||||
cursorPos int
|
||||
items Items
|
||||
padding Padding
|
||||
}
|
||||
@ -24,11 +24,12 @@ func NewMenu() *Menu {
|
||||
Block: *ui.NewBlock(),
|
||||
TextFgColor: ui.ThemeAttr("par.text.fg"),
|
||||
TextBgColor: ui.ThemeAttr("par.text.bg"),
|
||||
CursorPos: 0,
|
||||
cursorPos: 0,
|
||||
padding: Padding{4, 2},
|
||||
}
|
||||
}
|
||||
|
||||
// Append Item to Menu
|
||||
func (m *Menu) AddItems(items ...Item) {
|
||||
for _, i := range items {
|
||||
m.items = append(m.items, i)
|
||||
@ -49,6 +50,17 @@ func (m *Menu) DelItem(s string) (success bool) {
|
||||
return success
|
||||
}
|
||||
|
||||
// Move cursor to an position by Item value or label
|
||||
func (m *Menu) SetCursor(s string) (success bool) {
|
||||
for n, i := range m.items {
|
||||
if i.Val == s || i.Label == s {
|
||||
m.cursorPos = n
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// Sort menu items(if enabled) and re-calculate window size
|
||||
func (m *Menu) refresh() {
|
||||
if m.SortItems {
|
||||
@ -59,7 +71,7 @@ func (m *Menu) refresh() {
|
||||
}
|
||||
|
||||
func (m *Menu) SelectedItem() Item {
|
||||
return m.items[m.CursorPos]
|
||||
return m.items[m.cursorPos]
|
||||
}
|
||||
|
||||
func (m *Menu) Buffer() ui.Buffer {
|
||||
@ -70,7 +82,7 @@ func (m *Menu) Buffer() ui.Buffer {
|
||||
x := m.padding[0]
|
||||
for _, ch := range item.Text() {
|
||||
// invert bg/fg colors on currently selected row
|
||||
if m.Selectable && n == m.CursorPos {
|
||||
if m.Selectable && n == m.cursorPos {
|
||||
cell = ui.Cell{Ch: ch, Fg: m.TextBgColor, Bg: m.TextFgColor}
|
||||
} else {
|
||||
cell = ui.Cell{Ch: ch, Fg: m.TextFgColor, Bg: m.TextBgColor}
|
||||
@ -84,15 +96,15 @@ func (m *Menu) Buffer() ui.Buffer {
|
||||
}
|
||||
|
||||
func (m *Menu) Up(ui.Event) {
|
||||
if m.CursorPos > 0 {
|
||||
m.CursorPos--
|
||||
if m.cursorPos > 0 {
|
||||
m.cursorPos--
|
||||
ui.Render(m)
|
||||
}
|
||||
}
|
||||
|
||||
func (m *Menu) Down(ui.Event) {
|
||||
if m.CursorPos < (len(m.items) - 1) {
|
||||
m.CursorPos++
|
||||
if m.cursorPos < (len(m.items) - 1) {
|
||||
m.cursorPos++
|
||||
ui.Render(m)
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user