summary refs log tree commit diff stats
path: root/lib/ui
diff options
context:
space:
mode:
authorDrew DeVault <sir@cmpwn.com>2020-05-28 10:32:42 -0400
committerDrew DeVault <sir@cmpwn.com>2020-05-28 10:32:42 -0400
commitcaad1b2c06a0446059ee5ee916e3dce1794b159b (patch)
treeee81255485234137a5902d87d5960ac06618b341 /lib/ui
parent76a91813d8dc0f0011202f8120fc197097f022aa (diff)
downloadaerc-caad1b2c06a0446059ee5ee916e3dce1794b159b.tar.gz
Revert "Add Style configuration"
This reverts commit 0f78f06610c0e8887aba2ae50e99b86477a384b3.
Diffstat (limited to 'lib/ui')
-rw-r--r--lib/ui/borders.go13
-rw-r--r--lib/ui/stack.go10
-rw-r--r--lib/ui/tab.go11
-rw-r--r--lib/ui/text.go42
-rw-r--r--lib/ui/textinput.go32
5 files changed, 60 insertions, 48 deletions
diff --git a/lib/ui/borders.go b/lib/ui/borders.go
index 99d6880..7a75759 100644
--- a/lib/ui/borders.go
+++ b/lib/ui/borders.go
@@ -2,8 +2,6 @@ package ui
 
 import (
 	"github.com/gdamore/tcell"
-
-	"git.sr.ht/~sircmpwn/aerc/config"
 )
 
 const (
@@ -18,15 +16,12 @@ type Bordered struct {
 	borders      uint
 	content      Drawable
 	onInvalidate func(d Drawable)
-	uiConfig     config.UIConfig
 }
 
-func NewBordered(
-	content Drawable, borders uint, uiConfig config.UIConfig) *Bordered {
+func NewBordered(content Drawable, borders uint) *Bordered {
 	b := &Bordered{
-		borders:  borders,
-		content:  content,
-		uiConfig: uiConfig,
+		borders: borders,
+		content: content,
 	}
 	content.OnInvalidate(b.contentInvalidated)
 	return b
@@ -49,7 +44,7 @@ func (bordered *Bordered) Draw(ctx *Context) {
 	y := 0
 	width := ctx.Width()
 	height := ctx.Height()
-	style := bordered.uiConfig.GetStyle(config.STYLE_BORDER)
+	style := tcell.StyleDefault.Reverse(true)
 	if bordered.borders&BORDER_LEFT != 0 {
 		ctx.Fill(0, 0, 1, ctx.Height(), ' ', style)
 		x += 1
diff --git a/lib/ui/stack.go b/lib/ui/stack.go
index c9004a0..690a869 100644
--- a/lib/ui/stack.go
+++ b/lib/ui/stack.go
@@ -3,19 +3,16 @@ package ui
 import (
 	"fmt"
 
-	"git.sr.ht/~sircmpwn/aerc/config"
-
 	"github.com/gdamore/tcell"
 )
 
 type Stack struct {
 	children     []Drawable
 	onInvalidate []func(d Drawable)
-	uiConfig     config.UIConfig
 }
 
-func NewStack(uiConfig config.UIConfig) *Stack {
-	return &Stack{uiConfig: uiConfig}
+func NewStack() *Stack {
+	return &Stack{}
 }
 
 func (stack *Stack) Children() []Drawable {
@@ -36,8 +33,7 @@ func (stack *Stack) Draw(ctx *Context) {
 	if len(stack.children) > 0 {
 		stack.Peek().Draw(ctx)
 	} else {
-		ctx.Fill(0, 0, ctx.Width(), ctx.Height(), ' ',
-			stack.uiConfig.GetStyle(config.STYLE_STACK))
+		ctx.Fill(0, 0, ctx.Width(), ctx.Height(), ' ', tcell.StyleDefault)
 	}
 }
 
diff --git a/lib/ui/tab.go b/lib/ui/tab.go
index cd5f448..4b99e4b 100644
--- a/lib/ui/tab.go
+++ b/lib/ui/tab.go
@@ -283,9 +283,9 @@ func (tabs *Tabs) removeHistory(index int) {
 func (strip *TabStrip) Draw(ctx *Context) {
 	x := 0
 	for i, tab := range strip.Tabs {
-		style := strip.uiConfig.GetStyle(config.STYLE_TAB)
+		style := tcell.StyleDefault.Reverse(true)
 		if strip.Selected == i {
-			style = strip.uiConfig.GetStyleSelected(config.STYLE_TAB)
+			style = tcell.StyleDefault
 		}
 		tabWidth := 32
 		if ctx.Width()-x < tabWidth {
@@ -301,8 +301,8 @@ func (strip *TabStrip) Draw(ctx *Context) {
 			break
 		}
 	}
-	ctx.Fill(x, 0, ctx.Width()-x, 1, ' ',
-		strip.uiConfig.GetStyle(config.STYLE_TAB))
+	style := tcell.StyleDefault.Reverse(true)
+	ctx.Fill(x, 0, ctx.Width()-x, 1, ' ', style)
 }
 
 func (strip *TabStrip) Invalidate() {
@@ -386,8 +386,7 @@ func (content *TabContent) Draw(ctx *Context) {
 	if content.Selected >= len(content.Tabs) {
 		width := ctx.Width()
 		height := ctx.Height()
-		ctx.Fill(0, 0, width, height, ' ',
-			content.uiConfig.GetStyle(config.STYLE_TAB))
+		ctx.Fill(0, 0, width, height, ' ', tcell.StyleDefault)
 	}
 
 	tab := content.Tabs[content.Selected]
diff --git a/lib/ui/text.go b/lib/ui/text.go
index 455c2eb..2b82598 100644
--- a/lib/ui/text.go
+++ b/lib/ui/text.go
@@ -15,13 +15,17 @@ type Text struct {
 	Invalidatable
 	text     string
 	strategy uint
-	style    tcell.Style
+	fg       tcell.Color
+	bg       tcell.Color
+	bold     bool
+	reverse  bool
 }
 
-func NewText(text string, style tcell.Style) *Text {
+func NewText(text string) *Text {
 	return &Text{
-		text:  text,
-		style: style,
+		bg:   tcell.ColorDefault,
+		fg:   tcell.ColorDefault,
+		text: text,
 	}
 }
 
@@ -37,6 +41,25 @@ func (t *Text) Strategy(strategy uint) *Text {
 	return t
 }
 
+func (t *Text) Bold(bold bool) *Text {
+	t.bold = bold
+	t.Invalidate()
+	return t
+}
+
+func (t *Text) Color(fg tcell.Color, bg tcell.Color) *Text {
+	t.fg = fg
+	t.bg = bg
+	t.Invalidate()
+	return t
+}
+
+func (t *Text) Reverse(reverse bool) *Text {
+	t.reverse = reverse
+	t.Invalidate()
+	return t
+}
+
 func (t *Text) Draw(ctx *Context) {
 	size := runewidth.StringWidth(t.text)
 	x := 0
@@ -46,8 +69,15 @@ func (t *Text) Draw(ctx *Context) {
 	if t.strategy == TEXT_RIGHT {
 		x = ctx.Width() - size
 	}
-	ctx.Fill(0, 0, ctx.Width(), ctx.Height(), ' ', t.style)
-	ctx.Printf(x, 0, t.style, "%s", t.text)
+	style := tcell.StyleDefault.Background(t.bg).Foreground(t.fg)
+	if t.bold {
+		style = style.Bold(true)
+	}
+	if t.reverse {
+		style = style.Reverse(true)
+	}
+	ctx.Fill(0, 0, ctx.Width(), ctx.Height(), ' ', style)
+	ctx.Printf(x, 0, style, "%s", t.text)
 }
 
 func (t *Text) Invalidate() {
diff --git a/lib/ui/textinput.go b/lib/ui/textinput.go
index 2445065..f6b0c72 100644
--- a/lib/ui/textinput.go
+++ b/lib/ui/textinput.go
@@ -6,8 +6,6 @@ import (
 
 	"github.com/gdamore/tcell"
 	"github.com/mattn/go-runewidth"
-
-	"git.sr.ht/~sircmpwn/aerc/config"
 )
 
 // TODO: Attach history providers
@@ -29,18 +27,16 @@ type TextInput struct {
 	completeIndex     int
 	completeDelay     time.Duration
 	completeDebouncer *time.Timer
-	uiConfig          config.UIConfig
 }
 
 // Creates a new TextInput. TextInputs will render a "textbox" in the entire
 // context they're given, and process keypresses to build a string from user
 // input.
-func NewTextInput(text string, ui config.UIConfig) *TextInput {
+func NewTextInput(text string) *TextInput {
 	return &TextInput{
-		cells:    -1,
-		text:     []rune(text),
-		index:    len([]rune(text)),
-		uiConfig: ui,
+		cells: -1,
+		text:  []rune(text),
+		index: len([]rune(text)),
 	}
 }
 
@@ -91,18 +87,16 @@ func (ti *TextInput) Draw(ctx *Context) {
 		ti.ensureScroll()
 	}
 	ti.ctx = ctx // gross
-
-	defaultStyle := ti.uiConfig.GetStyle(config.STYLE_DEFAULT)
-	ctx.Fill(0, 0, ctx.Width(), ctx.Height(), ' ', defaultStyle)
+	ctx.Fill(0, 0, ctx.Width(), ctx.Height(), ' ', tcell.StyleDefault)
 
 	text := ti.text[scroll:]
 	sindex := ti.index - scroll
 	if ti.password {
-		x := ctx.Printf(0, 0, defaultStyle, "%s", ti.prompt)
+		x := ctx.Printf(0, 0, tcell.StyleDefault, "%s", ti.prompt)
 		cells := runewidth.StringWidth(string(text))
-		ctx.Fill(x, 0, cells, 1, '*', defaultStyle)
+		ctx.Fill(x, 0, cells, 1, '*', tcell.StyleDefault)
 	} else {
-		ctx.Printf(0, 0, defaultStyle, "%s%s", ti.prompt, string(text))
+		ctx.Printf(0, 0, tcell.StyleDefault, "%s%s", ti.prompt, string(text))
 	}
 	cells := runewidth.StringWidth(string(text[:sindex]) + ti.prompt)
 	if ti.focus {
@@ -132,7 +126,6 @@ func (ti *TextInput) drawPopover(ctx *Context) {
 			ti.Set(stem + ti.StringRight())
 			ti.Invalidate()
 		},
-		uiConfig: ti.uiConfig,
 	}
 	width := maxLen(ti.completions) + 3
 	height := len(ti.completions)
@@ -360,7 +353,6 @@ type completions struct {
 	onSelect   func(int)
 	onExec     func()
 	onStem     func(string)
-	uiConfig   config.UIConfig
 }
 
 func maxLen(ss []string) int {
@@ -375,10 +367,10 @@ func maxLen(ss []string) int {
 }
 
 func (c *completions) Draw(ctx *Context) {
-	bg := c.uiConfig.GetStyle(config.STYLE_COMPLETION_DEFAULT)
-	gutter := c.uiConfig.GetStyle(config.STYLE_COMPLETION_GUTTER)
-	pill := c.uiConfig.GetStyle(config.STYLE_COMPLETION_PILL)
-	sel := c.uiConfig.GetStyleSelected(config.STYLE_COMPLETION_DEFAULT)
+	bg := tcell.StyleDefault
+	sel := tcell.StyleDefault.Reverse(true)
+	gutter := tcell.StyleDefault
+	pill := tcell.StyleDefault.Reverse(true)
 
 	ctx.Fill(0, 0, ctx.Width(), ctx.Height(), ' ', bg)