From 4b6207743b90968d6b822032a4355e43b6ce6da9 Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Mon, 3 Apr 2023 10:26:47 -0500 Subject: gocui: working towards correct layout make a gocui widget binary tree more debugging cleanups sample button app displays in gocui geometry logic closer to correct improvements in gocui layout continued attempts to clean up tabs dump binary tree moving towards proper chan callback() deprecate Widget.Name Signed-off-by: Jeff Carr --- toolkit/democui/mouse.go | 169 ----------------------------------------------- 1 file changed, 169 deletions(-) delete mode 100644 toolkit/democui/mouse.go (limited to 'toolkit/democui/mouse.go') diff --git a/toolkit/democui/mouse.go b/toolkit/democui/mouse.go deleted file mode 100644 index fc74d27..0000000 --- a/toolkit/democui/mouse.go +++ /dev/null @@ -1,169 +0,0 @@ -// 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 ( - "errors" - "fmt" - - "github.com/awesome-gocui/gocui" -) - -func MouseMain() { - g, err := gocui.NewGui(gocui.OutputNormal, true) - if err != nil { - panic(err) - } - defer g.Close() - - me.baseGui = g - - g.Cursor = true - g.Mouse = true - - g.SetManagerFunc(layout) - - if err := defaultKeybindings(g); err != nil { - panic(err) - } - - if err := g.MainLoop(); err != nil && !errors.Is(err, gocui.ErrQuit) { - panic(err) - } -} - -func layout(g *gocui.Gui) error { - maxX, maxY := g.Size() - if _, err := g.View("msg"); msgMouseDown && err == nil { - moveMsg(g) - } - if v, err := g.SetView("global", -1, -1, maxX, maxY, 0); err != nil { - if !errors.Is(err, gocui.ErrUnknownView) { - return err - } - v.Frame = false - } - if v, err := g.SetView("but1", 2, 2, 22, 7, 0); err != nil { - if !errors.Is(err, gocui.ErrUnknownView) { - return err - } - v.SelBgColor = gocui.ColorGreen - v.SelFgColor = gocui.ColorBlack - fmt.Fprintln(v, "Button 1 - line 1") - fmt.Fprintln(v, "Button 1 - line 2") - fmt.Fprintln(v, "Button 1 - line 3") - fmt.Fprintln(v, "Button 1 - line 4") - if _, err := g.SetCurrentView("but1"); err != nil { - return err - } - } - if v, err := g.SetView("but2", 24, 2, 44, 4, 0); err != nil { - if !errors.Is(err, gocui.ErrUnknownView) { - return err - } - v.SelBgColor = gocui.ColorGreen - v.SelFgColor = gocui.ColorBlack - fmt.Fprintln(v, "Button 2 - line 1") - } - helplayout(g) - updateHighlightedView(g) - return nil -} - -func quit(g *gocui.Gui, v *gocui.View) error { - return gocui.ErrQuit -} - -func showMsg(g *gocui.Gui, v *gocui.View) error { - var l string - var err error - - if _, err := g.SetCurrentView(v.Name()); err != nil { - return err - } - - _, cy := v.Cursor() - if l, err = v.Line(cy); err != nil { - l = "" - } - - maxX, maxY := g.Size() - if v, err := g.SetView("msg", maxX/2-10, maxY/2, maxX/2+10, maxY/2+2, 0); err == nil || errors.Is(err, gocui.ErrUnknownView) { - v.Clear() - v.SelBgColor = gocui.ColorCyan - v.SelFgColor = gocui.ColorBlack - fmt.Fprintln(v, l) - } - return nil -} - -func updateHighlightedView(g *gocui.Gui) { - mx, my := g.MousePosition() - for _, view := range g.Views() { - view.Highlight = false - } - if v, err := g.ViewByPosition(mx, my); err == nil { - v.Highlight = true - } -} - -func moveMsg(g *gocui.Gui) { - mx, my := g.MousePosition() - if !movingMsg && (mx != initialMouseX || my != initialMouseY) { - movingMsg = true - } - g.SetView("msg", mx-xOffset, my-yOffset, mx-xOffset+20, my-yOffset+2, 0) -} - -func msgDown(g *gocui.Gui, v *gocui.View) error { - initialMouseX, initialMouseY = g.MousePosition() - if vx, vy, _, _, err := g.ViewPosition("msg"); err == nil { - xOffset = initialMouseX - vx - yOffset = initialMouseY - vy - msgMouseDown = true - } - return nil -} - -func globalDown(g *gocui.Gui, v *gocui.View) error { - mx, my := g.MousePosition() - if vx0, vy0, vx1, vy1, err := g.ViewPosition("msg"); err == nil { - if mx >= vx0 && mx <= vx1 && my >= vy0 && my <= vy1 { - return msgDown(g, v) - } - } - globalMouseDown = true - maxX, _ := g.Size() - msg := fmt.Sprintf("Mouse down at: %d,%d", mx, my) - x := mx - len(msg)/2 - if x < 0 { - x = 0 - } else if x+len(msg)+1 > maxX-1 { - x = maxX - 1 - len(msg) - 1 - } - if v, err := g.SetView("globalDown", x, my-1, x+len(msg)+1, my+1, 0); err != nil { - if !errors.Is(err, gocui.ErrUnknownView) { - return err - } - v.WriteString(msg) - } - return nil -} - -func mouseUp(g *gocui.Gui, v *gocui.View) error { - if msgMouseDown { - msgMouseDown = false - if movingMsg { - movingMsg = false - return nil - } else { - g.DeleteView("msg") - } - } else if globalMouseDown { - globalMouseDown = false - g.DeleteView("globalDown") - } - return nil -} -- cgit v1.2.3