diff options
Diffstat (limited to 'widgets')
-rw-r--r-- | widgets/account.go | 19 | ||||
-rw-r--r-- | widgets/dirlist.go | 10 | ||||
-rw-r--r-- | widgets/exline.go | 9 | ||||
-rw-r--r-- | widgets/msglist.go | 24 | ||||
-rw-r--r-- | widgets/msgviewer.go | 21 | ||||
-rw-r--r-- | widgets/spinner.go | 10 | ||||
-rw-r--r-- | widgets/status.go | 11 | ||||
-rw-r--r-- | widgets/terminal.go | 36 |
8 files changed, 45 insertions, 95 deletions
diff --git a/widgets/account.go b/widgets/account.go index f8abdc9..a8cd9ad 100644 --- a/widgets/account.go +++ b/widgets/account.go @@ -14,16 +14,15 @@ import ( ) type AccountView struct { - acct *config.AccountConfig - conf *config.AercConfig - dirlist *DirectoryList - grid *ui.Grid - host TabHost - logger *log.Logger - onInvalidate func(d ui.Drawable) - msglist *MessageList - msgStores map[string]*lib.MessageStore - worker *types.Worker + acct *config.AccountConfig + conf *config.AercConfig + dirlist *DirectoryList + grid *ui.Grid + host TabHost + logger *log.Logger + msglist *MessageList + msgStores map[string]*lib.MessageStore + worker *types.Worker } func NewAccountView(conf *config.AercConfig, acct *config.AccountConfig, diff --git a/widgets/dirlist.go b/widgets/dirlist.go index eb79bc4..374d142 100644 --- a/widgets/dirlist.go +++ b/widgets/dirlist.go @@ -12,10 +12,10 @@ import ( ) type DirectoryList struct { + ui.Invalidatable conf *config.AccountConfig dirs []string logger *log.Logger - onInvalidate func(d ui.Drawable) selecting string selected string spinner *Spinner @@ -77,14 +77,8 @@ func (dirlist *DirectoryList) Selected() string { return dirlist.selected } -func (dirlist *DirectoryList) OnInvalidate(onInvalidate func(d ui.Drawable)) { - dirlist.onInvalidate = onInvalidate -} - func (dirlist *DirectoryList) Invalidate() { - if dirlist.onInvalidate != nil { - dirlist.onInvalidate(dirlist) - } + dirlist.DoInvalidate(dirlist) } func (dirlist *DirectoryList) Draw(ctx *ui.Context) { diff --git a/widgets/exline.go b/widgets/exline.go index 5c9f065..8b18736 100644 --- a/widgets/exline.go +++ b/widgets/exline.go @@ -12,6 +12,7 @@ import ( // TODO: scrolling type ExLine struct { + ui.Invalidatable command []rune commit func(cmd string) ctx *ui.Context @@ -33,14 +34,8 @@ func NewExLine(commit func(cmd string), cancel func()) *ExLine { } } -func (ex *ExLine) OnInvalidate(onInvalidate func(d ui.Drawable)) { - ex.onInvalidate = onInvalidate -} - func (ex *ExLine) Invalidate() { - if ex.onInvalidate != nil { - ex.onInvalidate(ex) - } + ex.DoInvalidate(ex) } func (ex *ExLine) Draw(ctx *ui.Context) { diff --git a/widgets/msglist.go b/widgets/msglist.go index ea9b245..c4b5d82 100644 --- a/widgets/msglist.go +++ b/widgets/msglist.go @@ -12,14 +12,14 @@ import ( ) type MessageList struct { - conf *config.AercConfig - logger *log.Logger - height int - onInvalidate func(d ui.Drawable) - scroll int - selected int - spinner *Spinner - store *lib.MessageStore + ui.Invalidatable + conf *config.AercConfig + logger *log.Logger + height int + scroll int + selected int + spinner *Spinner + store *lib.MessageStore } // TODO: fish in config @@ -37,14 +37,8 @@ func NewMessageList(logger *log.Logger) *MessageList { return ml } -func (ml *MessageList) OnInvalidate(onInvalidate func(d ui.Drawable)) { - ml.onInvalidate = onInvalidate -} - func (ml *MessageList) Invalidate() { - if ml.onInvalidate != nil { - ml.onInvalidate(ml) - } + ml.DoInvalidate(ml) } func (ml *MessageList) Draw(ctx *ui.Context) { diff --git a/widgets/msgviewer.go b/widgets/msgviewer.go index 711879b..ba99911 100644 --- a/widgets/msgviewer.go +++ b/widgets/msgviewer.go @@ -252,8 +252,7 @@ func (mv *MessageViewer) Focus(focus bool) { } type HeaderView struct { - onInvalidate func(d ui.Drawable) - + ui.Invalidatable Name string Value string } @@ -281,17 +280,11 @@ func (hv *HeaderView) Draw(ctx *ui.Context) { } func (hv *HeaderView) Invalidate() { - if hv.onInvalidate != nil { - hv.onInvalidate(hv) - } -} - -func (hv *HeaderView) OnInvalidate(fn func(d ui.Drawable)) { - hv.onInvalidate = fn + hv.DoInvalidate(hv) } type MultipartView struct { - onInvalidate func(d ui.Drawable) + ui.Invalidatable } func (mpv *MultipartView) Draw(ctx *ui.Context) { @@ -303,11 +296,5 @@ func (mpv *MultipartView) Draw(ctx *ui.Context) { } func (mpv *MultipartView) Invalidate() { - if mpv.onInvalidate != nil { - mpv.onInvalidate(mpv) - } -} - -func (mpv *MultipartView) OnInvalidate(fn func(d ui.Drawable)) { - mpv.onInvalidate = fn + mpv.DoInvalidate(mpv) } diff --git a/widgets/spinner.go b/widgets/spinner.go index 0ab3e13..bb7dbe8 100644 --- a/widgets/spinner.go +++ b/widgets/spinner.go @@ -23,8 +23,8 @@ var ( ) type Spinner struct { + ui.Invalidatable frame int64 // access via atomic - onInvalidate func(d ui.Drawable) stop chan struct{} } @@ -84,12 +84,6 @@ func (s *Spinner) Draw(ctx *ui.Context) { ctx.Printf(col, 0, tcell.StyleDefault, "%s", frames[cur]) } -func (s *Spinner) OnInvalidate(onInvalidate func(d ui.Drawable)) { - s.onInvalidate = onInvalidate -} - func (s *Spinner) Invalidate() { - if s.onInvalidate != nil { - s.onInvalidate(s) - } + s.DoInvalidate(s) } diff --git a/widgets/status.go b/widgets/status.go index 3536760..344454a 100644 --- a/widgets/status.go +++ b/widgets/status.go @@ -9,10 +9,9 @@ import ( ) type StatusLine struct { + ui.Invalidatable stack []*StatusMessage fallback StatusMessage - - onInvalidate func(d ui.Drawable) } type StatusMessage struct { @@ -31,14 +30,8 @@ func NewStatusLine() *StatusLine { } } -func (status *StatusLine) OnInvalidate(onInvalidate func(d ui.Drawable)) { - status.onInvalidate = onInvalidate -} - func (status *StatusLine) Invalidate() { - if status.onInvalidate != nil { - status.onInvalidate(status) - } + status.DoInvalidate(status) } func (status *StatusLine) Draw(ctx *ui.Context) { diff --git a/widgets/terminal.go b/widgets/terminal.go index 84f80e3..63c105f 100644 --- a/widgets/terminal.go +++ b/widgets/terminal.go @@ -88,20 +88,20 @@ func init() { } type Terminal struct { - closed bool - cmd *exec.Cmd - colors map[tcell.Color]tcell.Color - ctx *ui.Context - cursorPos vterm.Pos - cursorShown bool - damage []vterm.Rect - destroyed bool - err error - focus bool - onInvalidate func(d ui.Drawable) - pty *os.File - start chan interface{} - vterm *vterm.VTerm + ui.Invalidatable + closed bool + cmd *exec.Cmd + colors map[tcell.Color]tcell.Color + ctx *ui.Context + cursorPos vterm.Pos + cursorShown bool + damage []vterm.Rect + destroyed bool + err error + focus bool + pty *os.File + start chan interface{} + vterm *vterm.VTerm OnClose func(err error) OnStart func() @@ -225,10 +225,6 @@ func (term *Terminal) Destroy() { term.destroyed = true } -func (term *Terminal) OnInvalidate(cb func(d ui.Drawable)) { - term.onInvalidate = cb -} - func (term *Terminal) Invalidate() { if term.vterm != nil { width, height := term.vterm.Size() @@ -239,9 +235,7 @@ func (term *Terminal) Invalidate() { } func (term *Terminal) invalidate() { - if term.onInvalidate != nil { - term.onInvalidate(term) - } + term.DoInvalidate(term) } func (term *Terminal) Draw(ctx *ui.Context) { |