From f3b451c887ed8c9d50c750e6c4cc603cd87a0ccd Mon Sep 17 00:00:00 2001 From: Brian Mattern Date: Mon, 3 Jun 2019 16:02:22 -0700 Subject: [PATCH] Move filter event handling into proc widget. --- main.go | 35 ++--------------------------------- src/widgets/proc.go | 45 ++++++++++++++++++++++++++++++++------------- 2 files changed, 34 insertions(+), 46 deletions(-) diff --git a/main.go b/main.go index 1e677a7..3cf4add 100644 --- a/main.go +++ b/main.go @@ -12,7 +12,6 @@ import ( "strconv" "syscall" "time" - "unicode/utf8" docopt "github.com/docopt/docopt.go" ui "github.com/gizak/termui/v3" @@ -274,36 +273,6 @@ func initWidgets() { } } -// handleEditFilterEvents handles events while editing the proc filter. -// Returns true if the event was handled. -func handleEditFilterEvents(e ui.Event) bool { - if utf8.RuneCountInString(e.ID) == 1 { - proc.SetFilter(proc.Filter() + e.ID) - ui.Render(proc) - return true - } - switch e.ID { - case "", "": - proc.SetFilter("") - proc.SetEditingFilter(false) - ui.Render(proc) - case "": - proc.SetEditingFilter(false) - ui.Render(proc) - case "": - if filter := proc.Filter(); filter != "" { - proc.SetFilter(filter[:len(filter)-1]) - } - ui.Render(proc) - case "": - proc.SetFilter(proc.Filter() + " ") - ui.Render(proc) - default: - return false - } - return true -} - func eventLoop() { drawTicker := time.NewTicker(updateInterval).C @@ -327,8 +296,8 @@ func eventLoop() { } } case e := <-uiEvents: - - if proc.EditingFilter() && handleEditFilterEvents(e) { + if proc.HandleEvent(e) { + ui.Render(proc) break } switch e.ID { diff --git a/src/widgets/proc.go b/src/widgets/proc.go index df6d7e1..3a1c61e 100644 --- a/src/widgets/proc.go +++ b/src/widgets/proc.go @@ -96,19 +96,6 @@ func NewProcWidget() *ProcWidget { return self } -func (self *ProcWidget) Filter() string { - return self.filter -} - -func (self *ProcWidget) SetFilter(filter string) { - self.filter = filter - self.update() -} - -func (self *ProcWidget) EditingFilter() bool { - return self.editingFilter -} - func (self *ProcWidget) SetEditingFilter(editing bool) { self.editingFilter = editing if !editing { @@ -116,6 +103,38 @@ func (self *ProcWidget) SetEditingFilter(editing bool) { } } +// handleEditFilterEvents handles events while editing the proc filter. +// Returns true if the event was handled. +func (self *ProcWidget) HandleEvent(e tui.Event) bool { + if !self.editingFilter { + return false + } + if utf8.RuneCountInString(e.ID) == 1 { + self.filter += e.ID + self.update() + return true + } + switch e.ID { + case "", "": + self.filter = "" + self.update() + self.SetEditingFilter(false) + case "": + self.SetEditingFilter(false) + case "": + if self.filter != "" { + self.filter = self.filter[:len(self.filter)-1] + self.update() + } + case "": + self.filter += " " + self.update() + default: + return false + } + return true +} + func (self *ProcWidget) Draw(buf *tui.Buffer) { self.Table.Draw(buf) if self.filter != "" || self.editingFilter {