summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2025-02-01 16:44:43 -0600
committerJeff Carr <[email protected]>2025-02-01 16:44:43 -0600
commit3d5ee3f89b73dd5ba0d78a0b0d816fe96ed9f8a0 (patch)
tree09e887a22ae34ab184abc3024bc0c6707549a706
parent2e0465e44a7db03f804b6c66699f8eed3d9fbfad (diff)
this gocui package is really cool
-rw-r--r--eventGocui.go28
-rw-r--r--eventMouse.go37
-rw-r--r--eventMouseMove.go80
-rw-r--r--init.go1
4 files changed, 82 insertions, 64 deletions
diff --git a/eventGocui.go b/eventGocui.go
index ea327b8..2ce9f94 100644
--- a/eventGocui.go
+++ b/eventGocui.go
@@ -9,7 +9,6 @@ package main
import (
"errors"
- "fmt"
"github.com/awesome-gocui/gocui"
@@ -23,37 +22,10 @@ import (
// complicated console handling, it sends events here in a clean way.
// This is equivalent to the linux command xev (apt install x11-utils)
func gocuiEvent(g *gocui.Gui) error {
- me.ecount += 1
- maxX, maxY := g.Size()
- mx, my := g.MousePosition()
- log.Verbose("handleEvent() START", maxX, maxY, mx, my, msgMouseDown)
- if _, err := g.View("msg"); msgMouseDown && err == nil {
- moveMsg(g)
- }
- if widgetView, _ := g.View("msg"); widgetView == nil {
- log.Log(NOW, "handleEvent() create output widget now", maxX, maxY, mx, my)
- makeOutputWidget(g, "this is a create before a mouse click")
- if me.logStdout != nil {
- // setOutput(me.logStdout)
- // me.logStdout.Write("test out")
- w := me.logStdout.TK.(*guiWidget)
- msg := fmt.Sprintf("test out gocuiEvent() %d\n", me.ecount)
- w.Write([]byte(msg))
- // log.CaptureMode(w)
- log.Log(NOW, "logStdout test out")
- }
- } else {
- log.Verbose("output widget already exists", maxX, maxY, mx, my)
- }
mouseMove(g)
- log.Verbose("handleEvent() END ", maxX, maxY, mx, my, msgMouseDown)
return nil
}
-func dragOutputWindow() {
- log.Log(GOCUI, "todo: make dragOutputWindow")
-}
-
// turns off the frame on the global window
func setFrame(b bool) {
// TODO: figure out what this might be useful for
diff --git a/eventMouse.go b/eventMouse.go
index 383185b..052bc53 100644
--- a/eventMouse.go
+++ b/eventMouse.go
@@ -1,19 +1,6 @@
// Copyright 2017-2025 WIT.COM Inc. All rights reserved.
// Use of this source code is governed by the GPL 3.0
-// NOTE: our code is under the GPL, not BSD
-
-// note by [email protected] in 2025: this is one of the coolest
-// things ever what this does. I've tried to improve
-// it while I've been working on making a gocui
-// GO plugin so it can be generalized as a useful
-// console interface. Well done everyone that has
-// contributed to this gocui project !!!
-
-// Copyright 2014 The gocui Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
package main
import (
@@ -25,29 +12,7 @@ import (
"go.wit.com/log"
)
-// this function uses the mouse position to highlight & unhighlight things
-// this is run every time the user moves the mouse over the terminal window
-func mouseMove(g *gocui.Gui) {
- mx, my := g.MousePosition()
-
- w := mx
- h := my
-
- if me.supermouse {
- for _, tk := range findByXY(w, h) {
- tk.dumpWidget("mouseMove()")
- }
- }
-
- for _, view := range g.Views() {
- view.Highlight = false
- }
- if v, err := g.ViewByPosition(mx, my); err == nil {
- v.Highlight = true
- }
-}
-
-// I think this lets me drag the debugging window
+// event triggers when you push down on a mouse button
func msgDown(g *gocui.Gui, v *gocui.View) error {
initialMouseX, initialMouseY = g.MousePosition()
diff --git a/eventMouseMove.go b/eventMouseMove.go
new file mode 100644
index 0000000..3972cb2
--- /dev/null
+++ b/eventMouseMove.go
@@ -0,0 +1,80 @@
+// Copyright 2017-2025 WIT.COM Inc. All rights reserved.
+// Use of this source code is governed by the GPL 3.0
+
+// 2025 note by jcarr:
+// this is one of the coolest things ever worked with.
+// Personally, I've been working on making a gocui GO plugin
+// so I can use it as a generalized console GUI toolkit.
+//
+// Well done everyone that has contributed to this gocui project !!!
+// I am in your debt. Happy hacking & peace.
+
+package main
+
+import (
+ "fmt"
+
+ "github.com/awesome-gocui/gocui"
+ log "go.wit.com/log"
+)
+
+// this function uses the mouse position to highlight & unhighlight things
+// this is run every time the user moves the mouse over the terminal window
+func mouseMove(g *gocui.Gui) {
+ mx, my := g.MousePosition()
+
+ w := mx
+ h := my
+
+ if me.supermouse {
+ for _, tk := range findByXY(w, h) {
+ tk.dumpWidget("mouseMove()")
+ }
+ }
+
+ if mouseMoveOld(g) {
+ return
+ }
+
+ for _, view := range g.Views() {
+ view.Highlight = false
+ }
+ if v, err := g.ViewByPosition(mx, my); err == nil {
+ v.Highlight = true
+ }
+}
+
+/*
+func dragOutputWindow() {
+ log.Log(GOCUI, "todo: make dragOutputWindow")
+}
+*/
+
+func mouseMoveOld(g *gocui.Gui) bool {
+ me.ecount += 1
+ maxX, maxY := g.Size()
+ mx, my := g.MousePosition()
+ log.Log(NOW, "handleEvent() START", maxX, maxY, mx, my, msgMouseDown)
+ if _, err := g.View("msg"); msgMouseDown && err == nil {
+ moveMsg(g)
+ return true
+ }
+ if widgetView, _ := g.View("msg"); widgetView == nil {
+ log.Log(NOW, "handleEvent() create output widget now", maxX, maxY, mx, my)
+ makeOutputWidget(g, "this is a create before a mouse click")
+ if me.logStdout != nil {
+ // setOutput(me.logStdout)
+ // me.logStdout.Write("test out")
+ w := me.logStdout.TK.(*guiWidget)
+ msg := fmt.Sprintf("test out gocuiEvent() %d\n", me.ecount)
+ w.Write([]byte(msg))
+ // log.CaptureMode(w)
+ log.Log(NOW, "logStdout test out")
+ }
+ return true
+ } else {
+ log.Log(NOW, "output widget already exists", maxX, maxY, mx, my)
+ }
+ log.Log(NOW, "handleEvent() END ", maxX, maxY, mx, my, msgMouseDown)
+ return false
+}
diff --git a/init.go b/init.go
index 3f0c3d4..d1028d9 100644
--- a/init.go
+++ b/init.go
@@ -168,6 +168,7 @@ func gocuiMain() {
// register how the 'gocui' will work as a GO toolkit plugin
// all applications will use these keys. they are universal.
+ // registered event handlers still have the events sent to gocuiEvent() above
registerHandlers(g)
/*
if err := defaultKeybindings(g); err != nil {