summaryrefslogtreecommitdiffstats
path: root/pkg/theme
diff options
context:
space:
mode:
authorJesse Duffield <jessedduffield@gmail.com>2021-07-31 17:15:38 +1000
committerJesse Duffield <jessedduffield@gmail.com>2021-07-31 17:56:47 +1000
commit550c0fd4dc0ee2d6bb6185fa0dd50ff9e250a9de (patch)
tree068efeda909c5803d7d4dabaf753420e1fca7c02 /pkg/theme
parent0bc0e4ac88f430976e4f2e69285ad6c56d94c137 (diff)
refactor
Diffstat (limited to 'pkg/theme')
-rw-r--r--pkg/theme/gocui.go45
-rw-r--r--pkg/theme/style.go57
-rw-r--r--pkg/theme/theme.go89
3 files changed, 102 insertions, 89 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
+}
diff --git a/pkg/theme/style.go b/pkg/theme/style.go
new file mode 100644
index 000000000..ba014681a
--- /dev/null
+++ b/pkg/theme/style.go
@@ -0,0 +1,57 @@
+package theme
+
+import (
+ "github.com/gookit/color"
+ "github.com/jesseduffield/lazygit/pkg/gui/style"
+ "github.com/jesseduffield/lazygit/pkg/utils"
+)
+
+var colorMap = map[string]struct {
+ foreground style.TextStyle
+ background style.TextStyle
+}{
+ "default": {style.FgWhite, style.BgBlack},
+ "black": {style.FgBlack, style.BgBlack},
+ "red": {style.FgRed, style.BgRed},
+ "green": {style.FgGreen, style.BgGreen},
+ "yellow": {style.FgYellow, style.BgYellow},
+ "blue": {style.FgBlue, style.BgBlue},
+ "magenta": {style.FgMagenta, style.BgMagenta},
+ "cyan": {style.FgCyan, style.BgCyan},
+ "white": {style.FgWhite, style.BgWhite},
+}
+
+func GetTextStyle(keys []string, background bool) style.TextStyle {
+ s := style.New()
+
+ for _, key := range keys {
+ switch key {
+ case "bold":
+ s = s.SetBold()
+ case "reverse":
+ s = s.SetReverse()
+ case "underline":
+ s = s.SetUnderline()
+ default:
+ value, present := colorMap[key]
+ if present {
+ var c style.TextStyle
+ if background {
+ c = value.background
+ } else {
+ c = value.foreground
+ }
+ s = s.MergeStyle(c)
+ } else if utils.IsValidHexValue(key) {
+ c := style.NewRGBColor(color.HEX(key, background))
+ if background {
+ s.SetBg(c)
+ } else {
+ s.SetFg(c)
+ }
+ }
+ }
+ }
+
+ return s
+}
diff --git a/pkg/theme/theme.go b/pkg/theme/theme.go
index d05897540..b19af5e54 100644
--- a/pkg/theme/theme.go
+++ b/pkg/theme/theme.go
@@ -1,11 +1,9 @@
package theme
import (
- "github.com/gookit/color"
"github.com/jesseduffield/gocui"
"github.com/jesseduffield/lazygit/pkg/config"
"github.com/jesseduffield/lazygit/pkg/gui/style"
- "github.com/jesseduffield/lazygit/pkg/utils"
)
var (
@@ -61,90 +59,3 @@ func UpdateTheme(themeConfig config.ThemeConfig) {
GocuiDefaultTextColor = gocui.ColorWhite
}
}
-
-// 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]))
- }
-
- colorMap := 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,
- }
- value, present := colorMap[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
-}
-
-var colorMap = map[string]struct {
- foreground style.TextStyle
- background style.TextStyle
-}{
- "default": {style.FgWhite, style.BgBlack},
- "black": {style.FgBlack, style.BgBlack},
- "red": {style.FgRed, style.BgRed},
- "green": {style.FgGreen, style.BgGreen},
- "yellow": {style.FgYellow, style.BgYellow},
- "blue": {style.FgBlue, style.BgBlue},
- "magenta": {style.FgMagenta, style.BgMagenta},
- "cyan": {style.FgCyan, style.BgCyan},
- "white": {style.FgWhite, style.BgWhite},
-}
-
-func GetTextStyle(keys []string, background bool) style.TextStyle {
- s := style.New()
-
- for _, key := range keys {
- switch key {
- case "bold":
- s = s.SetBold()
- case "reverse":
- s = s.SetReverse()
- case "underline":
- s = s.SetUnderline()
- default:
- value, present := colorMap[key]
- if present {
- var c style.TextStyle
- if background {
- c = value.background
- } else {
- c = value.foreground
- }
- s = s.MergeStyle(c)
- } else if utils.IsValidHexValue(key) {
- c := style.NewRGBColor(color.HEX(key, background))
- if background {
- s.SetBg(c)
- } else {
- s.SetFg(c)
- }
- }
- }
- }
-
- return s
-}