summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dropdown.go35
-rw-r--r--main.go28
-rw-r--r--mouse.go2
-rw-r--r--view.go33
-rw-r--r--widget.go33
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)
diff --git a/main.go b/main.go
index 4d4dde4..e90794e 100644
--- a/main.go
+++ b/main.go
@@ -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
}
}
diff --git a/mouse.go b/mouse.go
index eec39a0..7488a07 100644
--- a/mouse.go
+++ b/mouse.go
@@ -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
diff --git a/view.go b/view.go
index a78d19c..67a1e11 100644
--- a/view.go
+++ b/view.go
@@ -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
diff --git a/widget.go b/widget.go
index c0d6557..ec1387c 100644
--- a/widget.go
+++ b/widget.go
@@ -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
}