diff options
| -rw-r--r-- | eventGocui.go | 28 | ||||
| -rw-r--r-- | eventMouse.go | 37 | ||||
| -rw-r--r-- | eventMouseMove.go | 80 | ||||
| -rw-r--r-- | init.go | 1 |
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 +} @@ -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 { |
