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
|
// set cursor position to current sort field
|
||||||
//current := config.GetVal("sortField")
|
m.SetCursor(config.GetVal("sortField"))
|
||||||
//for n, item := range m.Items {
|
//for n, item := range m.Items {
|
||||||
//if item.Val == current {
|
//if item.Val == current {
|
||||||
//m.CursorPos = n
|
//m.CursorPos = n
|
||||||
|
@ -14,7 +14,7 @@ type Menu struct {
|
|||||||
TextFgColor ui.Attribute
|
TextFgColor ui.Attribute
|
||||||
TextBgColor ui.Attribute
|
TextBgColor ui.Attribute
|
||||||
Selectable bool
|
Selectable bool
|
||||||
CursorPos int
|
cursorPos int
|
||||||
items Items
|
items Items
|
||||||
padding Padding
|
padding Padding
|
||||||
}
|
}
|
||||||
@ -24,11 +24,12 @@ func NewMenu() *Menu {
|
|||||||
Block: *ui.NewBlock(),
|
Block: *ui.NewBlock(),
|
||||||
TextFgColor: ui.ThemeAttr("par.text.fg"),
|
TextFgColor: ui.ThemeAttr("par.text.fg"),
|
||||||
TextBgColor: ui.ThemeAttr("par.text.bg"),
|
TextBgColor: ui.ThemeAttr("par.text.bg"),
|
||||||
CursorPos: 0,
|
cursorPos: 0,
|
||||||
padding: Padding{4, 2},
|
padding: Padding{4, 2},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Append Item to Menu
|
||||||
func (m *Menu) AddItems(items ...Item) {
|
func (m *Menu) AddItems(items ...Item) {
|
||||||
for _, i := range items {
|
for _, i := range items {
|
||||||
m.items = append(m.items, i)
|
m.items = append(m.items, i)
|
||||||
@ -49,6 +50,17 @@ func (m *Menu) DelItem(s string) (success bool) {
|
|||||||
return success
|
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
|
// Sort menu items(if enabled) and re-calculate window size
|
||||||
func (m *Menu) refresh() {
|
func (m *Menu) refresh() {
|
||||||
if m.SortItems {
|
if m.SortItems {
|
||||||
@ -59,7 +71,7 @@ func (m *Menu) refresh() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (m *Menu) SelectedItem() Item {
|
func (m *Menu) SelectedItem() Item {
|
||||||
return m.items[m.CursorPos]
|
return m.items[m.cursorPos]
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Menu) Buffer() ui.Buffer {
|
func (m *Menu) Buffer() ui.Buffer {
|
||||||
@ -70,7 +82,7 @@ func (m *Menu) Buffer() ui.Buffer {
|
|||||||
x := m.padding[0]
|
x := m.padding[0]
|
||||||
for _, ch := range item.Text() {
|
for _, ch := range item.Text() {
|
||||||
// invert bg/fg colors on currently selected row
|
// 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}
|
cell = ui.Cell{Ch: ch, Fg: m.TextBgColor, Bg: m.TextFgColor}
|
||||||
} else {
|
} else {
|
||||||
cell = ui.Cell{Ch: ch, Fg: m.TextFgColor, Bg: m.TextBgColor}
|
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) {
|
func (m *Menu) Up(ui.Event) {
|
||||||
if m.CursorPos > 0 {
|
if m.cursorPos > 0 {
|
||||||
m.CursorPos--
|
m.cursorPos--
|
||||||
ui.Render(m)
|
ui.Render(m)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Menu) Down(ui.Event) {
|
func (m *Menu) Down(ui.Event) {
|
||||||
if m.CursorPos < (len(m.items) - 1) {
|
if m.cursorPos < (len(m.items) - 1) {
|
||||||
m.CursorPos++
|
m.cursorPos++
|
||||||
ui.Render(m)
|
ui.Render(m)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user