summary refs log tree commit diff stats
path: root/config
diff options
context:
space:
mode:
authorDrew DeVault <sir@cmpwn.com>2019-03-30 21:45:41 -0400
committerDrew DeVault <sir@cmpwn.com>2019-03-30 21:45:41 -0400
commit5d0402aeea1dcc69adb46227ab1cd73b5e768880 (patch)
treefeac387ac2441d36a8bca272efa182884c11f05c /config
parent04d9ab3ce6b8161ef7bc0ec4e5011f6ceadb73b6 (diff)
downloadaerc-5d0402aeea1dcc69adb46227ab1cd73b5e768880.tar.gz
Add message view commands, :close
Diffstat (limited to 'config')
-rw-r--r--config/binds.conf2
1 files changed, 1 insertions, 1 deletions
diff --git a/config/binds.conf b/config/binds.conf
index 2037cec..520c731 100644
--- a/config/binds.conf
+++ b/config/binds.conf
@@ -32,7 +32,7 @@ c = :cf<space>
 $ = :term<space>
 | = :pipe<space>
 
-[msgview]
+[view]
 q = :close<Enter>
 | = :pipe<space>
 r = :reply<Enter>
com> 2018-02-27 21:02:56 -0500 Add statusline widget' href='/akspecs/aerc/commit/widgets/status.go?h=0.5.0&id=a073d7613fac7c79b7909d93a0dd7bfea05d5c9d'>a073d76 ^
80e891a ^


a073d76 ^



80e891a ^

a073d76 ^







80e891a ^

a073d76 ^


6728a11 ^
a073d76 ^











80e891a ^
a073d76 ^


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87




               
                                  











                                          

                           





                                        

                                                  




                                        
                                                                          













                                                        


                                                                           



                                                           

                                          







                                                                                  

                                          


                                                
                    











                                                                                              
                                                                 


                   
package widgets

import (
	"time"

	"github.com/gdamore/tcell"

	"git.sr.ht/~sircmpwn/aerc2/lib/ui"
)

type StatusLine struct {
	stack    []*StatusMessage
	fallback StatusMessage

	onInvalidate func(d ui.Drawable)
}

type StatusMessage struct {
	bg      tcell.Color
	fg      tcell.Color
	message string
}

func NewStatusLine() *StatusLine {
	return &StatusLine{
		fallback: StatusMessage{
			bg:      tcell.ColorWhite,
			fg:      tcell.ColorBlack,
			message: "Idle",
		},
	}
}

func (status *StatusLine) OnInvalidate(onInvalidate func(d ui.Drawable)) {
	status.onInvalidate = onInvalidate
}

func (status *StatusLine) Invalidate() {
	if status.onInvalidate != nil {
		status.onInvalidate(status)
	}
}

func (status *StatusLine) Draw(ctx *ui.Context) {
	line := &status.fallback
	if len(status.stack) != 0 {
		line = status.stack[len(status.stack)-1]
	}
	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:      tcell.ColorWhite,
		fg:      tcell.ColorBlack,
		message: text,
	}
	status.Invalidate()
	return &status.fallback
}

func (status *StatusLine) Push(text string, expiry time.Duration) *StatusMessage {
	msg := &StatusMessage{
		bg:      tcell.ColorWhite,
		fg:      tcell.ColorBlack,
		message: text,
	}
	status.stack = append(status.stack, msg)
	go (func() {
		time.Sleep(expiry)
		for i, m := range status.stack {
			if m == msg {
				status.stack = append(status.stack[:i], status.stack[i+1:]...)
				break
			}
		}
		status.Invalidate()
	})()
	return msg
}

func (msg *StatusMessage) Color(bg tcell.Color, fg tcell.Color) {
	msg.bg = bg
	msg.fg = fg
}