summaryrefslogtreecommitdiffstats
path: root/pkg/theme/gocui.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/theme/gocui.go')
-rw-r--r--pkg/theme/gocui.go45
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
+}