diff options
| author | Jeff Carr <[email protected]> | 2023-03-12 08:47:16 -0500 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2023-03-12 08:47:16 -0500 |
| commit | 20f13a4b5be1a986e1085214f492a0afe6db322f (patch) | |
| tree | 35d633c45a36798126520269e13ae70dd70b5b20 /toolkit/democui/mouse.go | |
| parent | 49202eeafdad8e5780fefdad3d2f87fd4354725e (diff) | |
Squashed commit of the following:
commit 448abc843e2241bab6c399f7a836dccba1defc18
Author: Jeff Carr <[email protected]>
Date: Sun Mar 12 08:35:28 2023 -0500
this should probably be a new release now
Signed-off-by: Jeff Carr <[email protected]>
commit a4064f7a6c5ac67437768aa2bc67c75dafc91c4c
Author: Jeff Carr <[email protected]>
Date: Sat Mar 11 03:18:23 2023 -0600
able to work on add 'Box' and play with 'Image'
Signed-off-by: Jeff Carr <[email protected]>
commit 6e59573d85e82ecb005805f50711dddc2df50480
Author: Jeff Carr <[email protected]>
Date: Sat Mar 11 03:04:34 2023 -0600
rearrange widget debugging
Signed-off-by: Jeff Carr <[email protected]>
commit e0570de75c6eb1b4f49e541d9ef5d83ae4434d3d
Author: Jeff Carr <[email protected]>
Date: Sat Mar 11 02:29:20 2023 -0600
debugging is lots smarter
Signed-off-by: Jeff Carr <[email protected]>
commit ece32a1e43d91cd197d0a8497ad2f034c46126e1
Author: Jeff Carr <[email protected]>
Date: Fri Mar 10 21:38:23 2023 -0600
first pass on a node delete
Signed-off-by: Jeff Carr <[email protected]>
commit c91cb0eddb0f73f8dea9b21a16cd76c7e2c19a33
Author: Jeff Carr <[email protected]>
Date: Fri Mar 10 21:06:29 2023 -0600
can recreate window list
Signed-off-by: Jeff Carr <[email protected]>
commit 470f9dc26aefd3626b319264fe151aa48d4d5377
Author: Jeff Carr <[email protected]>
Date: Fri Mar 10 12:07:34 2023 -0600
attempt to ressurect mouse in the console plugin
Signed-off-by: Jeff Carr <[email protected]>
commit 747bb53e06dda458cc8cd77b665f4d9d07f5e925
Author: Jeff Carr <[email protected]>
Date: Fri Mar 10 10:47:14 2023 -0600
jesus. gocui actually builds and works again as a plugin
it didn't take too much to change it
Signed-off-by: Jeff Carr <[email protected]>
commit 9283c65c8e9b8d2630b251ad952b6b52caddb307
Author: Jeff Carr <[email protected]>
Date: Fri Mar 10 07:26:53 2023 -0600
show/hide/etc for window widgets
Signed-off-by: Jeff Carr <[email protected]>
commit 5724cd7ffd8595ae049a7c9c21cb2f1a993c4b76
Author: Jeff Carr <[email protected]>
Date: Fri Mar 10 06:40:36 2023 -0600
compiles and runs
Signed-off-by: Jeff Carr <[email protected]>
commit 44a5e69ce17cb506adfe24ca72cc86caa9ebcc70
Author: Jeff Carr <[email protected]>
Date: Fri Mar 10 05:57:15 2023 -0600
more debugging improvements
Signed-off-by: Jeff Carr <[email protected]>
commit b86f145f0252e7545b2e7fa78e1d5960cacb7bad
Author: Jeff Carr <[email protected]>
Date: Fri Mar 10 03:42:32 2023 -0600
set margin on tab's works
Signed-off-by: Jeff Carr <[email protected]>
commit d2218c08cf44acd5f017a8faa1439ee6d2fd46d5
Author: Jeff Carr <[email protected]>
Date: Thu Mar 9 16:26:21 2023 -0600
ignore all *.so files
Signed-off-by: Jeff Carr <[email protected]>
commit e21934fff3cfea30b04df01bf0714f6927aa78f4
Author: Jeff Carr <[email protected]>
Date: Thu Mar 9 16:25:15 2023 -0600
can't embed the toolkit/*.so files here
Signed-off-by: Jeff Carr <[email protected]>
commit f1e6c5fc9c8ca36db3ad6109d64612b6850fa856
Author: Jeff Carr <[email protected]>
Date: Thu Mar 9 16:21:14 2023 -0600
andlabs group widget has Show() and Hide()
Signed-off-by: Jeff Carr <[email protected]>
commit e8487504aa76ca99c4891b777585a428fda0ef62
Author: Jeff Carr <[email protected]>
Date: Thu Mar 9 16:07:56 2023 -0600
pass the node id into the plugin to use in channels
Signed-off-by: Jeff Carr <[email protected]>
commit 3667940a77af4e3855facb9247771d595477302f
Author: Jeff Carr <[email protected]>
Date: Thu Mar 9 14:20:21 2023 -0600
fix SetText() on Label
Signed-off-by: Jeff Carr <[email protected]>
commit 311d6be66db84b63fb7124df64e2e9be0f0b76a4
Author: Jeff Carr <[email protected]>
Date: Thu Mar 9 14:06:46 2023 -0600
still compiles and runs
Signed-off-by: Jeff Carr <[email protected]>
commit ee4e9b21ef59a97f902c6dae2a57ac7b3063fe3b
Author: Jeff Carr <[email protected]>
Date: Thu Mar 9 11:02:34 2023 -0600
compiles
Signed-off-by: Jeff Carr <[email protected]>
Signed-off-by: Jeff Carr <[email protected]>
Diffstat (limited to 'toolkit/democui/mouse.go')
| -rw-r--r-- | toolkit/democui/mouse.go | 185 |
1 files changed, 185 insertions, 0 deletions
diff --git a/toolkit/democui/mouse.go b/toolkit/democui/mouse.go new file mode 100644 index 0000000..efda307 --- /dev/null +++ b/toolkit/democui/mouse.go @@ -0,0 +1,185 @@ +// 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" + "os" + + "github.com/awesome-gocui/gocui" +) + +var g *gocui.Gui +var err error +var Custom func(string) + +func OnExit(f func(string)) { + Custom = f +} + +func Exit() { + g.Close() +} + +func mouseClick(name string) { + // output screws up the console. Need to fix this by redirecting all console output to a file from log.Println() + // log.Println("g.Close()") + // g.Close() + + log("Found andlabs Running custom function for the mouse click") + Custom(name) + // panic("got andlabs") +} + +func Init() { + log("start Init()") + + f, err := os.OpenFile("/tmp/guilogfile", os.O_RDWR | os.O_CREATE | os.O_APPEND, 0666) + if err != nil { + exit("error opening file: %v", err) + } + defer f.Close() + + setOutput(f) + log("This is a test log entry") + + g, err = gocui.NewGui(gocui.OutputNormal, true) + if err != nil { + exit(err) + } + + g.Cursor = true + g.Mouse = true + + g.SetManagerFunc(layout) + + if err := keybindings(g); err != nil { + exit(err) + } + log("exit Init()") +} + +func StartConsoleMouse() { + defer g.Close() + log("start Main()") + + if err := g.MainLoop(); err != nil && !errors.Is(err, gocui.ErrQuit) { + exit(err) + } + log("exit Main()") +} + +func layout(g *gocui.Gui) error { + if v, err := g.SetView("but1", 2, 2, 22, 17, 0); err != nil { + if !errors.Is(err, gocui.ErrUnknownView) { + return err + } + v.Highlight = true + v.SelBgColor = gocui.ColorGreen + v.SelFgColor = gocui.ColorBlack + fmt.Fprintln(v, "andlabs") + fmt.Fprintln(v, "addDemoTab") + fmt.Fprintln(v, "DemoToolkitWindow") + fmt.Fprintln(v, "DebugWindow") + fmt.Fprintln(v, "do nothing") + fmt.Fprintln(v, "exit") + 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.Highlight = true + v.SelBgColor = gocui.ColorGreen + v.SelFgColor = gocui.ColorBlack + fmt.Fprintln(v, "Button 2 - line 1") + } + if v, err := g.SetView("but3", 24, 2, 44, 4, 0); err != nil { + if !errors.Is(err, gocui.ErrUnknownView) { + return err + } + v.Highlight = true + v.SelBgColor = gocui.ColorGreen + v.SelFgColor = gocui.ColorBlack + fmt.Fprintln(v, "Button 2 - line 1") + } + if v, err := g.SetView("but4", 24, 2, 44, 4, 0); err != nil { + if !errors.Is(err, gocui.ErrUnknownView) { + return err + } + v.Highlight = true + v.SelBgColor = gocui.ColorGreen + v.SelFgColor = gocui.ColorBlack + fmt.Fprintln(v, "Button 2 - line 1") + } + if v, err := g.SetView("but5", 24, 2, 44, 4, 0); err != nil { + if !errors.Is(err, gocui.ErrUnknownView) { + return err + } + v.Highlight = true + v.SelBgColor = gocui.ColorGreen + v.SelFgColor = gocui.ColorBlack + fmt.Fprintln(v, "Button 2 - line 1") + } + return nil +} + +func keybindings(g *gocui.Gui) error { + if err := g.SetKeybinding("", gocui.KeyCtrlC, gocui.ModNone, quit); err != nil { + return err + } + for _, n := range []string{"but1", "but2"} { + if err := g.SetKeybinding(n, gocui.MouseLeft, gocui.ModNone, showMsg); err != nil { + return err + } + } + if err := g.SetKeybinding("msg", gocui.MouseLeft, gocui.ModNone, delMsg); err != nil { + return err + } + if err := g.SetKeybinding("", gocui.MouseRight, gocui.ModNone, delMsg); err != nil { + return err + } + if err := g.SetKeybinding("", gocui.MouseMiddle, gocui.ModNone, delMsg); err != nil { + return err + } + 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 { + if !errors.Is(err, gocui.ErrUnknownView) { + return err + } + mouseClick(l) + fmt.Fprintln(v, l) + } + return nil +} + +func delMsg(g *gocui.Gui, v *gocui.View) error { + // Error check removed, because delete could be called multiple times with the above keybindings + g.DeleteView("msg") + return nil +} |
