mirror of
https://github.com/siderolabs/talos.git
synced 2025-08-20 14:11:11 +02:00
Allows configuring: - cidr. - dhcp enable/disable. - MTU. - Ignore. - Dhcp metric. Signed-off-by: Artem Chernyshev <artem.0xD2@gmail.com>
77 lines
1.6 KiB
Go
77 lines
1.6 KiB
Go
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
package components
|
|
|
|
import "github.com/rivo/tview"
|
|
|
|
// NewGroup creates new Group.
|
|
func NewGroup(app *tview.Application) *Group {
|
|
return &Group{
|
|
app: app,
|
|
current: -1,
|
|
elements: []tview.Primitive{},
|
|
}
|
|
}
|
|
|
|
// Group is an attempt to straighten out built-in tview TAB focus sequence.
|
|
type Group struct {
|
|
app *tview.Application
|
|
elements []tview.Primitive
|
|
current int
|
|
focus tview.Primitive
|
|
}
|
|
|
|
// AddElement to the group.
|
|
func (eg *Group) AddElement(element tview.Primitive) tview.Primitive {
|
|
eg.elements = append(eg.elements, element)
|
|
|
|
return element
|
|
}
|
|
|
|
// FocusFirst sets focus to the first element.
|
|
func (eg *Group) FocusFirst() {
|
|
if len(eg.elements) == 0 {
|
|
return
|
|
}
|
|
|
|
eg.current = 0
|
|
eg.focus = eg.elements[eg.current]
|
|
eg.app.SetFocus(eg.focus)
|
|
}
|
|
|
|
// NextFocus switch focus to the next element.
|
|
func (eg *Group) NextFocus() {
|
|
eg.detectFocus()
|
|
eg.current = (eg.current + 1) % (len(eg.elements))
|
|
eg.focus = eg.elements[eg.current]
|
|
eg.app.SetFocus(eg.focus)
|
|
}
|
|
|
|
// PrevFocus switch focus to the prev element.
|
|
func (eg *Group) PrevFocus() {
|
|
eg.detectFocus()
|
|
eg.current--
|
|
|
|
if eg.current < 0 {
|
|
eg.current = len(eg.elements) - 1
|
|
}
|
|
|
|
eg.focus = eg.elements[eg.current]
|
|
eg.app.SetFocus(eg.focus)
|
|
}
|
|
|
|
func (eg *Group) detectFocus() {
|
|
focused := eg.app.GetFocus()
|
|
if eg.focus == nil || focused != eg.focus {
|
|
for i, e := range eg.elements {
|
|
if e == focused {
|
|
eg.current = i
|
|
|
|
break
|
|
}
|
|
}
|
|
}
|
|
}
|