ctop/config/switch.go

74 lines
1.2 KiB
Go
Raw Normal View History

package config
// defaults
var defaultSwitches = []*Switch{
&Switch{
Key: "sortReversed",
Val: false,
2018-09-17 03:33:52 +02:00
Label: "Reverse sort order",
},
&Switch{
Key: "allContainers",
2017-02-19 04:58:42 +01:00
Val: true,
2018-09-17 03:33:52 +02:00
Label: "Show all containers",
},
&Switch{
Key: "fullRowCursor",
Val: true,
Label: "Highlight entire cursor row (vs. name only)",
},
&Switch{
Key: "enableHeader",
2017-02-19 04:58:42 +01:00
Val: true,
2018-09-17 03:33:52 +02:00
Label: "Enable status header",
},
}
type Switch struct {
Key string
Val bool
Label string
}
// GetSwitch returns Switch by key
func GetSwitch(k string) *Switch {
lock.RLock()
defer lock.RUnlock()
for _, sw := range GlobalSwitches {
if sw.Key == k {
return sw
}
}
return &Switch{} // default
}
// GetSwitchVal returns Switch value by key
func GetSwitchVal(k string) bool {
return GetSwitch(k).Val
}
func UpdateSwitch(k string, val bool) {
sw := GetSwitch(k)
lock.Lock()
defer lock.Unlock()
if sw.Val != val {
log.Noticef("config change [%s]: %t -> %t", k, sw.Val, val)
sw.Val = val
}
}
// Toggle a boolean switch
func Toggle(k string) {
sw := GetSwitch(k)
lock.Lock()
defer lock.Unlock()
2020-01-03 00:02:53 +01:00
sw.Val = !sw.Val
log.Noticef("config change [%s]: %t -> %t", k, !sw.Val, sw.Val)
//log.Errorf("ignoring toggle for non-existant switch: %s", k)
}