diff options
| -rw-r--r-- | dropdown.go | 35 | ||||
| -rw-r--r-- | main.go | 28 | ||||
| -rw-r--r-- | mouse.go | 2 | ||||
| -rw-r--r-- | view.go | 33 | ||||
| -rw-r--r-- | widget.go | 33 |
5 files changed, 84 insertions, 47 deletions
diff --git a/dropdown.go b/dropdown.go index cb0f38d..872bc22 100644 --- a/dropdown.go +++ b/dropdown.go @@ -88,19 +88,6 @@ func (tk *guiWidget) showDropdown() { } } -func dropdownClicked(mouseX, mouseH int) { - tk := me.dropdownV - if tk.Visible() { - log.Log(NOW, "hide DDview() Mouse really down at:", mouseX, mouseH) - hideDDview() - } else { - log.Log(NOW, "show DDview() Mouse really down at:", mouseX, mouseH) - log.Log(NOW, "can you see the dropdown menu right now?") - log.Log(NOW, "if so, something is wrong. I think you can't see it") - showDDview() - } -} - func hideDDview() error { w, h := me.baseGui.MousePosition() log.Log(NOW, "hide dropdown menu() view msgMouseDown (w,h) =", w, h) @@ -127,18 +114,26 @@ func showDDview() error { return nil } -/* // if there is a drop down view active, treat it like a dialog box and close it - - if (hideDDview() == nil) { - return nil - } -*/ func (w *guiWidget) dropdownClicked(mouseW, mouseH int) { log.Log(NOW, "dropdownClicked() (w,h) =", mouseW, mouseH) - w.SetVisible(false) + w.deleteView() + + /* + tk := me.dropdownV + if tk.Visible() { + log.Log(NOW, "hide DDview() Mouse really down at:", mouseX, mouseH) + // hideDDview() + } else { + log.Log(NOW, "show DDview() Mouse really down at:", mouseX, mouseH) + log.Log(NOW, "can you see the dropdown menu right now?") + log.Log(NOW, "if so, something is wrong. I think you can't see it") + showDDview() + } + */ } + func dropdownUnclicked(mouseX, mouseH int) { tk := me.dropdownV log.Log(NOW, "mouseUp() view msgMouseDown (check here for dropdown menu click) (w,h) =", mouseX, mouseH) @@ -118,9 +118,31 @@ func mainGogui() { // it runs SetManagerFunc which passes every input // event (keyboard, mouse, etc) to the function "gocuiEvent()" func gocuiMain() { + defer func() { + if r := recover(); r != nil { + log.Warn("YAHOOOO Recovered in gocuiMain()", r) + log.Warn("Recovered from panic:", r) + me.baseGui.Close() + panic("BUMMER 2") + + // allow gocui to close if possible, then print stack + log.Sleep(1) + os.Stdout = origStdout + os.Stderr = origStderr + me.myTree.SendToolkitPanic() + log.Warn("Stack trace:") + debug.PrintStack() + + // attempt to switch to the nocui toolkit + log.Sleep(1) + me.myTree.SendToolkitLoad("nocui") + // panic("BUMMER") + return + } + }() g, err := gocui.NewGui(gocui.OutputNormal, true) if err != nil { - panic(err) + return } defer g.Close() @@ -135,10 +157,10 @@ func gocuiMain() { g.SetManagerFunc(gocuiEvent) if err := defaultKeybindings(g); err != nil { - panic(err) + // normally panic here } if err := g.MainLoop(); err != nil && !errors.Is(err, gocui.ErrQuit) { - panic(err) + // normally panic here } } @@ -66,7 +66,7 @@ func mouseDown(g *gocui.Gui, v *gocui.View) error { maxX, _ := g.Size() findUnderMouse() msg := fmt.Sprintf("mouseDown() Mouse really down at: %d,%d", mx, my) - dropdownClicked(mx, my) + // dropdownClicked(mx, my) x := mx - len(msg)/2 if x < 0 { x = 0 @@ -62,32 +62,35 @@ func (w *guiWidget) showView() { } log.Log(INFO, "showView() labelN =", w.labelN) + /* if w.hidden { w.SetVisible(false) return } - - // if the gocui element doesn't exist, create it - if w.v == nil { - w.recreateView() + */ + if w.v != nil { + return } + + w.recreateView() + w.textResize() + w.v.Clear() + fmt.Fprint(w.v, w.labelN) + /* x0, y0, x1, y1, _ := me.baseGui.ViewPosition(w.cuiName) // x0, y0, x1, y1, err := me.baseGui.ViewPosition(w.cuiName) // log.Log(INFO, "showView() w.v already defined for widget", w.String(), x0, y0, x1, y1, err) // n.smartGocuiSize() - changed := w.textResize() + // changed := w.textResize() - if !changed { - log.Log(INFO, "showView() Clear() and Fprint() here wId =", w.cuiName) - w.v.Clear() - fmt.Fprint(w.v, w.labelN) - w.SetVisible(false) - w.SetVisible(true) - return - } + log.Log(INFO, "showView() Clear() and Fprint() here wId =", w.cuiName) + w.v.Clear() + fmt.Fprint(w.v, w.labelN) log.Log(INFO, "showView() textResize() changed. Should recreateView here wId =", w.cuiName) + */ + /* // if the gocui element has changed where it is supposed to be on the screen // recreate it if x0 != w.gocuiSize.w0 { @@ -109,8 +112,9 @@ func (w *guiWidget) showView() { w.recreateView() return } + */ - w.SetVisible(true) + // w.SetVisible(true) } // create or recreate the gocui widget visible @@ -127,6 +131,7 @@ func (w *guiWidget) recreateView() { me.baseGui.DeleteView(w.cuiName) w.v = nil + w.textResize() a := w.gocuiSize.w0 b := w.gocuiSize.h0 c := w.gocuiSize.w1 @@ -70,11 +70,14 @@ func setupCtrlDownWidget() { } func (w *guiWidget) deleteView() { - if w.v != nil { - w.v.Visible = false - return - } + /* + if w.v != nil { + w.v.Visible = false + return + } + */ // make sure the view isn't really there + log.Log(NOW, "deleteView()", w.cuiName, w.WidgetType, w.node.WidgetId) me.baseGui.DeleteView(w.cuiName) w.v = nil } @@ -103,12 +106,24 @@ func (tk *guiWidget) Visible() bool { if tk.v == nil { return false } - return tk.v.Visible + // return tk.v.Visible + tk.v.Visible = true + return true +} + +func (tk *guiWidget) Show() { + tk.showView() +} + +func (tk *guiWidget) Hide() { + tk.deleteView() } -func (w *guiWidget) SetVisible(b bool) { - if w.v == nil { - return +func (tk *guiWidget) SetVisible(b bool) { + if b { + tk.Show() + } else { + tk.Hide() } - w.v.Visible = b + // w.v.Visible = b } |
