summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Mattern <rephorm@rephorm.com>2019-06-03 16:02:22 -0700
committerBrian Mattern <rephorm@rephorm.com>2019-06-03 16:02:22 -0700
commitf3b451c887ed8c9d50c750e6c4cc603cd87a0ccd (patch)
treecc0f60ec2dd0413729fc0162680d4e254d2a1928
parent32f88622c721fdea1fa93e49791c15103ac202ec (diff)
Move filter event handling into proc widget.
-rw-r--r--main.go35
-rw-r--r--src/widgets/proc.go45
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 "<C-c>", "<Escape>":
- proc.SetFilter("")
- proc.SetEditingFilter(false)
- ui.Render(proc)
- case "<Enter>":
- proc.SetEditingFilter(false)
- ui.Render(proc)
- case "<Backspace>":
- if filter := proc.Filter(); filter != "" {
- proc.SetFilter(filter[:len(filter)-1])
- }
- ui.Render(proc)
- case "<Space>":
- 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 "<C-c>", "<Escape>":
+ self.filter = ""
+ self.update()
+ self.SetEditingFilter(false)
+ case "<Enter>":
+ self.SetEditingFilter(false)
+ case "<Backspace>":
+ if self.filter != "" {
+ self.filter = self.filter[:len(self.filter)-1]
+ self.update()
+ }
+ case "<Space>":
+ 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 {