diff options
Diffstat (limited to 'widgets')
| -rw-r--r-- | widgets/aerc.go | 24 | ||||
| -rw-r--r-- | widgets/exline.go | 49 | ||||
| -rw-r--r-- | widgets/status.go | 30 | 
3 files changed, 45 insertions, 58 deletions
| diff --git a/widgets/aerc.go b/widgets/aerc.go index 5563275..19ddfdd 100644 --- a/widgets/aerc.go +++ b/widgets/aerc.go @@ -5,7 +5,7 @@ import (  	"log"  	"time" -	tb "github.com/nsf/termbox-go" +	"github.com/gdamore/tcell"  	libui "git.sr.ht/~sircmpwn/aerc2/lib/ui"  ) @@ -35,7 +35,7 @@ func NewAerc(logger *log.Logger) *Aerc {  	// TODO: move sidebar into tab content, probably  	grid.AddChild(libui.NewText("aerc").  		Strategy(libui.TEXT_CENTER). -		Color(tb.ColorBlack, tb.ColorWhite)) +		Color(tcell.ColorBlack, tcell.ColorWhite))  	// sidebar placeholder:  	grid.AddChild(libui.NewBordered(  		libui.NewFill('.'), libui.BORDER_RIGHT)).At(1, 0).Span(2, 1) @@ -75,10 +75,10 @@ func (aerc *Aerc) Draw(ctx *libui.Context) {  	aerc.grid.Draw(ctx)  } -func (aerc *Aerc) Event(event tb.Event) bool { -	switch event.Type { -	case tb.EventKey: -		if event.Ch == ':' { +func (aerc *Aerc) Event(event tcell.Event) bool { +	switch event := event.(type) { +	case *tcell.EventKey: +		if event.Rune() == ':' {  			exline := NewExLine(func(command string) {  				aerc.statusline.Push(fmt.Sprintf("TODO: execute %s", command),  					3 * time.Second) @@ -92,12 +92,10 @@ func (aerc *Aerc) Event(event tb.Event) bool {  			aerc.statusbar.Push(exline)  			return true  		} -		fallthrough -	default: -		if aerc.interactive != nil { -			return aerc.interactive.Event(event) -		} else { -			return false -		} +	} +	if aerc.interactive != nil { +		return aerc.interactive.Event(event) +	} else { +		return false  	}  } diff --git a/widgets/exline.go b/widgets/exline.go index 0522371..de652ba 100644 --- a/widgets/exline.go +++ b/widgets/exline.go @@ -2,7 +2,7 @@ package widgets  import (  	"github.com/mattn/go-runewidth" -	tb "github.com/nsf/termbox-go" +	"github.com/gdamore/tcell"  	"git.sr.ht/~sircmpwn/aerc2/lib/ui"  ) @@ -40,15 +40,10 @@ func (ex *ExLine) Invalidate() {  }  func (ex *ExLine) Draw(ctx *ui.Context) { -	cell := tb.Cell{ -		Fg: tb.ColorDefault, -		Bg: tb.ColorDefault, -		Ch: ' ', -	} -	ctx.Fill(0, 0, ctx.Width(), ctx.Height(), cell) -	ctx.Printf(0, 0, cell, ":%s", string(ex.command)) +	ctx.Fill(0, 0, ctx.Width(), ctx.Height(), ' ', tcell.StyleDefault) +	ctx.Printf(0, 0, tcell.StyleDefault, ":%s", string(ex.command))  	cells := runewidth.StringWidth(string(ex.command[:ex.index])) -	tb.SetCursor(ctx.X()+cells+1, ctx.Y()) +	ctx.SetCursor(cells + 1, 0)  }  func (ex *ExLine) insert(ch rune) { @@ -93,43 +88,41 @@ func (ex *ExLine) backspace() {  	}  } -func (ex *ExLine) Event(event tb.Event) bool { -	switch event.Type { -	case tb.EventKey: -		switch event.Key { -		case tb.KeySpace: -			ex.insert(' ') -		case tb.KeyBackspace, tb.KeyBackspace2: +func (ex *ExLine) Event(event tcell.Event) bool { +	switch event := event.(type) { +	case *tcell.EventKey: +		switch event.Key() { +		case tcell.KeyBackspace, tcell.KeyBackspace2:  			ex.backspace() -		case tb.KeyCtrlD, tb.KeyDelete: +		case tcell.KeyCtrlD, tcell.KeyDelete:  			ex.deleteChar() -		case tb.KeyCtrlB, tb.KeyArrowLeft: +		case tcell.KeyCtrlB, tcell.KeyLeft:  			if ex.index > 0 {  				ex.index--  				ex.Invalidate()  			} -		case tb.KeyCtrlF, tb.KeyArrowRight: +		case tcell.KeyCtrlF, tcell.KeyRight:  			if ex.index < len(ex.command) {  				ex.index++  				ex.Invalidate()  			} -		case tb.KeyCtrlA, tb.KeyHome: +		case tcell.KeyCtrlA, tcell.KeyHome:  			ex.index = 0  			ex.Invalidate() -		case tb.KeyCtrlE, tb.KeyEnd: +		case tcell.KeyCtrlE, tcell.KeyEnd:  			ex.index = len(ex.command)  			ex.Invalidate() -		case tb.KeyCtrlW: +		case tcell.KeyCtrlW:  			ex.deleteWord() -		case tb.KeyEnter: -			tb.HideCursor() +		case tcell.KeyEnter: +			//ex.ctx.Screen().HideCursor()  			ex.commit(string(ex.command)) -		case tb.KeyEsc, tb.KeyCtrlC: -			tb.HideCursor() +		case tcell.KeyEsc, tcell.KeyCtrlC: +			//ex.ctx.Screen().HideCursor()  			ex.cancel()  		default: -			if event.Ch != 0 { -				ex.insert(event.Ch) +			if event.Rune() != 0 { +				ex.insert(event.Rune())  			}  		}  	} diff --git a/widgets/status.go b/widgets/status.go index bb87d33..3b4dbcc 100644 --- a/widgets/status.go +++ b/widgets/status.go @@ -3,7 +3,7 @@ package widgets  import (  	"time" -	tb "github.com/nsf/termbox-go" +	"github.com/gdamore/tcell"  	"git.sr.ht/~sircmpwn/aerc2/lib/ui"  ) @@ -16,16 +16,16 @@ type StatusLine struct {  }  type StatusMessage struct { -	bg      tb.Attribute -	fg      tb.Attribute +	bg      tcell.Color +	fg      tcell.Color  	message string  }  func NewStatusLine() *StatusLine {  	return &StatusLine{  		fallback: StatusMessage{ -			bg:      tb.ColorWhite, -			fg:      tb.ColorBlack, +			bg:      tcell.ColorWhite, +			fg:      tcell.ColorBlack,  			message: "Idle",  		},  	} @@ -46,19 +46,15 @@ func (status *StatusLine) Draw(ctx *ui.Context) {  	if len(status.stack) != 0 {  		line = status.stack[len(status.stack)-1]  	} -	cell := tb.Cell{ -		Fg: line.fg, -		Bg: line.bg, -		Ch: ' ', -	} -	ctx.Fill(0, 0, ctx.Width(), ctx.Height(), cell) -	ctx.Printf(0, 0, cell, "%s", line.message) +	style := tcell.StyleDefault.Background(line.bg).Foreground(line.fg) +	ctx.Fill(0, 0, ctx.Width(), ctx.Height(), ' ', style) +	ctx.Printf(0, 0, style, "%s", line.message)  }  func (status *StatusLine) Set(text string) *StatusMessage {  	status.fallback = StatusMessage{ -		bg:      tb.ColorWhite, -		fg:      tb.ColorBlack, +		bg:      tcell.ColorWhite, +		fg:      tcell.ColorBlack,  		message: text,  	}  	status.Invalidate() @@ -67,8 +63,8 @@ func (status *StatusLine) Set(text string) *StatusMessage {  func (status *StatusLine) Push(text string, expiry time.Duration) *StatusMessage {  	msg := &StatusMessage{ -		bg:      tb.ColorWhite, -		fg:      tb.ColorBlack, +		bg:      tcell.ColorWhite, +		fg:      tcell.ColorBlack,  		message: text,  	}  	status.stack = append(status.stack, msg) @@ -85,7 +81,7 @@ func (status *StatusLine) Push(text string, expiry time.Duration) *StatusMessage  	return msg  } -func (msg *StatusMessage) Color(bg tb.Attribute, fg tb.Attribute) { +func (msg *StatusMessage) Color(bg tcell.Color, fg tcell.Color) {  	msg.bg = bg  	msg.fg = fg  } | 
