summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--debug.go65
-rw-r--r--gui.go4
-rw-r--r--structs.go2
-rw-r--r--table.go32
-rw-r--r--window.go73
5 files changed, 108 insertions, 68 deletions
diff --git a/debug.go b/debug.go
index 5c25248..5319354 100644
--- a/debug.go
+++ b/debug.go
@@ -3,7 +3,7 @@ package gui
import "log"
import "time"
import "fmt"
-import "reflect"
+// import "reflect"
// import "github.com/andlabs/ui"
// import _ "github.com/andlabs/ui/winmanifest"
@@ -32,13 +32,27 @@ func WatchGUI() {
func DumpBoxes() {
for name, window := range Data.WindowMap {
- log.Println("gui.DumpBoxes()", name)
+ log.Println("gui.DumpBoxes() MAP: ", name)
log.Println("gui.DumpBoxes()\tWindow.name =", window.Name)
- log.Println("gui.DumpBoxes()\tWindow.UiWindow type =", reflect.TypeOf(window.UiWindow))
- log.Println("gui.DumpBoxes()\tWindow.UiWindow =", window.UiWindow)
+ // log.Println("gui.DumpBoxes()\tWindow.UiWindow type =", reflect.TypeOf(window.UiWindow))
+ // log.Println("gui.DumpBoxes()\tWindow.UiWindow =", window.UiWindow)
+ if (window.TabNumber == nil) {
+ log.Println("gui.DumpBoxes() \tWindows.TabNumber = nil")
+ } else {
+ log.Println("gui.DumpBoxes() \tWindows.TabNumber =", *window.TabNumber)
+ }
+ for name, abox := range window.BoxMap {
+ log.Printf("gui.DumpBoxes() \tBOX mapname=%-12s abox.Name=%-12s", name, abox.Name)
+ if (name == "MAINBOX") {
+ if (Config.Debug) {
+ scs := spew.ConfigState{MaxDepth: 1}
+ scs.Dump(abox.UiBox)
+ }
+ }
+ }
if (window.UiTab != nil) {
- log.Println("gui.DumpBoxes()\tWindow.UiTab type =", reflect.TypeOf(window.UiTab))
- log.Println("gui.DumpBoxes()\tWindow.UiTab =", window.UiTab)
+ // log.Println("gui.DumpBoxes()\tWindow.UiTab type =", reflect.TypeOf(window.UiTab))
+ // log.Println("gui.DumpBoxes()\tWindow.UiTab =", window.UiTab)
pages := window.UiTab.NumPages()
log.Println("gui.DumpBoxes()\tWindow.UiTab.NumPages() =", pages)
// for i := 0; i < pages; i++ {
@@ -54,29 +68,10 @@ func DumpBoxes() {
}
}
for i, window := range Data.Windows {
- log.Println("gui.DumpBoxes() Data.Windows", i, "Name =", window.Name, "TabNumber =", window.TabNumber)
- for name, abox := range window.BoxMap {
- log.Printf("gui.DumpBoxes() \tBOX mapname=%-12s abox.Name=%-12s", name, abox.Name)
- if (name == "MAINBOX") {
- if (Config.Debug) {
- scs := spew.ConfigState{MaxDepth: 1}
- scs.Dump(abox.UiBox)
- }
- }
-
- /*
- if (name == "DEBUG") {
- log.Println("\t\twatchGUI() BOX abox =", reflect.TypeOf(abox))
- win := abox.Window
- log.Println("\t\twatchGUI() BOX win =", reflect.TypeOf(win))
- area := win.Area
- log.Println("\t\twatchGUI() BOX area =", reflect.TypeOf(area), area.UiArea)
- // spew.Dump(area.UiArea)
- // area.UiArea.Show()
- // time.Sleep(2000 * time.Millisecond)
- // os.Exit(0)
- }
- */
+ if (window.TabNumber == nil) {
+ log.Println("gui.DumpBoxes() Data.Windows", i, "Name =", window.Name, "TabNumber = nil")
+ } else {
+ log.Println("gui.DumpBoxes() Data.Windows", i, "Name =", window.Name, "TabNumber =", *window.TabNumber)
}
}
}
@@ -95,16 +90,4 @@ func addTableTab() {
log.Println("Sleep for 2 seconds, then try to add new tabs")
time.Sleep(1 * 1000 * 1000 * 1000)
- // AddTableTab(Data.Window1.T, 1, "test seven", 7, parts, nil)
-}
-
-/*
-func runTestHide(b *GuiButton) {
- log.Println("runTestHide START")
- Data.Window1.Box1.Hide()
- Data.Window1.Box2.Hide()
- // time.Sleep(2000 * time.Millisecond)
- Data.State = "HIDE"
- log.Println("runTestHide END")
}
-*/
diff --git a/gui.go b/gui.go
index 0923f0f..3bdd32e 100644
--- a/gui.go
+++ b/gui.go
@@ -12,12 +12,12 @@ const Yaxis = 1 // box that is vertical
func init() {
log.Println("gui.init() has been run")
-}
-func GuiInit() {
Data.buttonMap = make(map[*ui.Button]*GuiButton)
Data.WindowMap = make(map[string]*GuiWindow)
+}
+func GuiInit() {
ui.OnShouldQuit(func() bool {
ui.Quit()
return true
diff --git a/structs.go b/structs.go
index d4f41f2..3455dc4 100644
--- a/structs.go
+++ b/structs.go
@@ -64,7 +64,7 @@ type GuiWindow struct {
Width int
Height int
Axis int // does it add items to the X or Y axis
- TabNumber int // the andlabs/ui tab index
+ TabNumber *int // the andlabs/ui tab index
// the callback function to make the window contents
MakeWindow func(*GuiWindow) *GuiBox
diff --git a/table.go b/table.go
index b4e73c1..c18ecaa 100644
--- a/table.go
+++ b/table.go
@@ -98,6 +98,10 @@ func InitColumns(mh *TableData, parts []TableColumnData) {
}
func AddTableTab(gw *GuiWindow, name string, rowcount int, parts []TableColumnData) *TableData {
+ // gw.Name = name
+ // gw = InitGuiWindow(gw)
+ box := InitWindow(gw, name, Yaxis)
+
mh := new(TableData)
mh.RowCount = rowcount
@@ -134,25 +138,25 @@ func AddTableTab(gw *GuiWindow, name string, rowcount int, parts []TableColumnDa
}
}
- var gb *GuiBox
- gb = new(GuiBox)
+// var gb *GuiBox
+// gb = new(GuiBox)
- vbox := ui.NewVerticalBox()
- vbox.SetPadded(true)
- gb.UiBox = vbox
- gb.Window = gw
- gw.BoxMap[name] = gb
- mh.Box = gb
+// vbox := ui.NewVerticalBox()
+// vbox.SetPadded(true)
+// gb.UiBox = vbox
+// gb.Window = gw
+ gw.BoxMap[name] = box
+ mh.Box = box
- vbox.Append(table, true)
- gw.UiTab.Append(name, vbox)
+ box.UiBox.Append(table, true)
+ // gw.UiTab.Append(name, vbox)
- vbox.Append(ui.NewVerticalSeparator(), false)
+// vbox.Append(ui.NewVerticalSeparator(), false)
- hbox := ui.NewHorizontalBox()
- hbox.SetPadded(true)
+// hbox := ui.NewHorizontalBox()
+// hbox.SetPadded(true)
- vbox.Append(hbox, false)
+// vbox.Append(hbox, false)
return mh
}
diff --git a/window.go b/window.go
index d8ff786..5d2553d 100644
--- a/window.go
+++ b/window.go
@@ -24,10 +24,14 @@ func InitGuiWindow(gw *GuiWindow) *GuiWindow {
newGuiWindow.EntryMap["test"] = nil
Data.Windows = append(Data.Windows, &newGuiWindow)
- if (Data.WindowMap == nil) {
- log.Println("gui.InitGuiWindow() making the Data.WindowMap here")
- Data.WindowMap = make(map[string]*GuiWindow)
+ if (gw.UiTab == nil) {
+ tabnum := 0
+ newGuiWindow.TabNumber = &tabnum
+ } else {
+ tabnum := gw.UiTab.NumPages()
+ newGuiWindow.TabNumber = &tabnum
}
+
Data.WindowMap[newGuiWindow.Name] = &newGuiWindow
if (Data.buttonMap == nil) {
@@ -49,26 +53,28 @@ func StartNewWindow(bg bool, name string, axis int, callback func(*GuiWindow) *G
log.Println("StartNewWindow() START NEW GOROUTINE for ui.Main()")
go ui.Main(func() {
log.Println("gui.StartNewWindow() inside ui.Main()")
- go InitTabWindow(window)
+ go initTabWindow(window)
})
time.Sleep(2000 * time.Millisecond) // this might make it more stable on windows?
} else {
log.Println("StartNewWindow() WAITING for ui.Main()")
ui.Main(func() {
log.Println("gui.StartNewWindow() inside ui.Main()")
- InitTabWindow(window)
+ initTabWindow(window)
})
}
}
-func InitTabWindow(gw *GuiWindow) {
- log.Println("InitTabWindow() START. THIS WINDOW IS NOT YET SHOWN")
+// This creates the raw andlabs/ui Window
+func initTabWindow(gw *GuiWindow) {
+ log.Println("initTabWindow() START. THIS WINDOW IS NOT YET SHOWN")
+ log.Println("initTabWindow() START. name =", gw.Name)
gw.UiWindow = ui.NewWindow(gw.Name, int(gw.Width), int(gw.Height), true)
gw.UiWindow.SetBorderless(false)
gw.UiWindow.OnClosing(func(*ui.Window) bool {
- log.Println("InitTabWindow() OnClosing() THIS WINDOW IS CLOSING gw=", gw)
+ log.Println("initTabWindow() OnClosing() THIS WINDOW IS CLOSING gw=", gw)
ui.Quit()
return true
})
@@ -76,10 +82,15 @@ func InitTabWindow(gw *GuiWindow) {
gw.UiTab = ui.NewTab()
gw.UiWindow.SetChild(gw.UiTab)
gw.UiWindow.SetMargined(true)
+ tmp := 0
+ gw.TabNumber = &tmp
+
+ DumpBoxes()
+ // for {}
box := gw.MakeWindow(gw)
- log.Println("InitTabWindow() END box =", box)
- log.Println("InitTabWindow() END gw =", gw)
+ log.Println("initTabWindow() END box =", box)
+ log.Println("initTabWindow() END gw =", gw)
gw.UiWindow.Show()
}
@@ -90,3 +101,45 @@ func MessageWindow(gw *GuiWindow, msg1 string, msg2 string) {
func ErrorWindow(gw *GuiWindow, msg1 string, msg2 string) {
ui.MsgBoxError(gw.UiWindow, msg1, msg2)
}
+
+//
+// This creates a new 'window' (which is just a tab in the window)
+// This is this way because on Linux you can have more than one
+// actual window but that does not appear to work on the MacOS or Windows
+//
+func InitWindow(gw *GuiWindow, name string, axis int) *GuiBox {
+ window := Data.WindowMap[name]
+ if (window != nil) {
+ box := window.BoxMap["MAINBOX"]
+ log.Println("gui.InitWindow() tab already exists name =", name)
+ ErrorWindow(box.Window, "Create Window Error", "Window " + name + " already exists")
+ return nil
+ }
+
+ // if there is not an account, then go to 'make account'
+ gw.Name = name
+ var junk GuiWindow
+ // junk.MakeWindow = callback
+ junk.Name = name
+ junk.Axis = axis
+ junk.UiWindow = gw.UiWindow
+ junk.UiTab = gw.UiTab
+ newWindow := InitGuiWindow(gw)
+
+ var box *GuiBox
+ if (axis == Xaxis) {
+ box = HardBox(newWindow, Xaxis, name)
+ } else {
+ box = HardBox(newWindow, Yaxis, name)
+ }
+ return box
+}
+
+func DeleteWindow(name string) {
+ log.Println("gui.DeleteWindow() START name =", name)
+ window := Data.WindowMap[name]
+ if (window == nil) {
+ log.Println("gui.DeleteWindow() NO WINDOW WITH name =", name)
+ return
+ }
+}