diff options
Diffstat (limited to 'pkg/theme/gocui.go')
-rw-r--r-- | pkg/theme/gocui.go | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/pkg/theme/gocui.go b/pkg/theme/gocui.go new file mode 100644 index 000000000..6bda0c721 --- /dev/null +++ b/pkg/theme/gocui.go @@ -0,0 +1,45 @@ +package theme + +import ( + "github.com/gookit/color" + "github.com/jesseduffield/gocui" + "github.com/jesseduffield/lazygit/pkg/utils" +) + +var gocuiColorMap = map[string]gocui.Attribute{ + "default": gocui.ColorDefault, + "black": gocui.ColorBlack, + "red": gocui.ColorRed, + "green": gocui.ColorGreen, + "yellow": gocui.ColorYellow, + "blue": gocui.ColorBlue, + "magenta": gocui.ColorMagenta, + "cyan": gocui.ColorCyan, + "white": gocui.ColorWhite, + "bold": gocui.AttrBold, + "reverse": gocui.AttrReverse, + "underline": gocui.AttrUnderline, +} + +// GetAttribute gets the gocui color attribute from the string +func GetGocuiAttribute(key string) gocui.Attribute { + if utils.IsValidHexValue(key) { + values := color.HEX(key).Values() + return gocui.NewRGBColor(int32(values[0]), int32(values[1]), int32(values[2])) + } + + value, present := gocuiColorMap[key] + if present { + return value + } + return gocui.ColorWhite +} + +// GetGocuiStyle bitwise OR's a list of attributes obtained via the given keys +func GetGocuiStyle(keys []string) gocui.Attribute { + var attribute gocui.Attribute + for _, key := range keys { + attribute |= GetGocuiAttribute(key) + } + return attribute +} |