REFACTOR: continue to move in a better direction

Signed-off-by: Jeff Carr <jcarr@wit.com>
This commit is contained in:
Jeff Carr 2021-10-06 10:43:58 -05:00
parent b4a11c0aa1
commit 790e6f2c46
2 changed files with 75 additions and 48 deletions

23
main.go
View File

@ -1,9 +1,11 @@
package gui package gui
import "log" import (
"log"
import "github.com/andlabs/ui" "github.com/andlabs/ui"
import _ "github.com/andlabs/ui/winmanifest" _ "github.com/andlabs/ui/winmanifest"
)
func Main(f func()) { func Main(f func()) {
log.Println("Starting gui.Main() (using gtk via andlabs/ui)") log.Println("Starting gui.Main() (using gtk via andlabs/ui)")
@ -21,16 +23,15 @@ func Queue(f func()) {
ui.QueueMain(f) ui.QueueMain(f)
} }
// gui.Main( // gui.Main(gui.MainExample())
// gui.MainExample() func ExampleWindow() {
// ) log.Println("START gui.ExampleWindow()")
func MainExample() {
name := "jcarr"
log.Println("gui.initUI() inside ui.Main()")
box := InitWindow(nil, "StartNewWindow" + name, 0) title := "Test Window"
box := InitWindow(nil, title, 0)
window := box.Window window := box.Window
log.Println("StartNewWindow() box =", box) log.Println("box =", box)
log.Println("window =", window)
window.UiWindow.Show() window.UiWindow.Show()
} }

View File

@ -1,18 +1,22 @@
package gui package gui
import "log" import (
import "time" "log"
import "strconv" "strconv"
// import "regexp" "time"
import "github.com/andlabs/ui" "github.com/andlabs/ui"
import _ "github.com/andlabs/ui/winmanifest"
// import "regexp"
_ "github.com/andlabs/ui/winmanifest"
)
func initUI(name string, callback func(*GuiBox) *GuiBox) { func initUI(name string, callback func(*GuiBox) *GuiBox) {
ui.Main(func() { ui.Main(func() {
log.Println("gui.initUI() inside ui.Main()") log.Println("gui.initUI() inside ui.Main()")
box := InitWindow(nil, "StartNewWindow" + name, 0) box := InitWindow(nil, "StartNewWindow"+name, 0)
box = callback(box) box = callback(box)
window := box.Window window := box.Window
log.Println("StartNewWindow() box =", box) log.Println("StartNewWindow() box =", box)
@ -24,7 +28,7 @@ func initUI(name string, callback func(*GuiBox) *GuiBox) {
func StartNewWindow(bg bool, name string, axis int, callback func(*GuiBox) *GuiBox) { func StartNewWindow(bg bool, name string, axis int, callback func(*GuiBox) *GuiBox) {
log.Println("StartNewWindow() ui.Main() Create a new window") log.Println("StartNewWindow() ui.Main() Create a new window")
if (bg) { if bg {
go initUI(name, callback) go initUI(name, callback)
time.Sleep(500 * time.Millisecond) // this might make it more stable on windows? time.Sleep(500 * time.Millisecond) // this might make it more stable on windows?
} else { } else {
@ -49,7 +53,7 @@ func InitWindow(gw *GuiWindow, name string, axis int) *GuiBox {
log.Println("InitGuiWindow() START") log.Println("InitGuiWindow() START")
var box *GuiBox var box *GuiBox
if (gw == nil) { if gw == nil {
box = mapWindow(nil, name, Config.Height, Config.Width) box = mapWindow(nil, name, Config.Height, Config.Width)
} else { } else {
box = mapWindow(gw.UiWindow, name, Config.Height, Config.Width) box = mapWindow(gw.UiWindow, name, Config.Height, Config.Width)
@ -59,7 +63,7 @@ func InitWindow(gw *GuiWindow, name string, axis int) *GuiBox {
newGuiWindow := box.Window newGuiWindow := box.Window
// This is the first window. One must create it here // This is the first window. One must create it here
if (gw == nil) { if gw == nil {
log.Println("initWindow() ADDING ui.NewWindow()") log.Println("initWindow() ADDING ui.NewWindow()")
newGuiWindow.UiWindow = ui.NewWindow(name, int(newGuiWindow.Height), int(newGuiWindow.Width), true) newGuiWindow.UiWindow = ui.NewWindow(name, int(newGuiWindow.Height), int(newGuiWindow.Width), true)
newGuiWindow.UiWindow.SetBorderless(false) newGuiWindow.UiWindow.SetBorderless(false)
@ -68,7 +72,7 @@ func InitWindow(gw *GuiWindow, name string, axis int) *GuiBox {
newGuiWindow.UiWindow.OnClosing(func(*ui.Window) bool { newGuiWindow.UiWindow.OnClosing(func(*ui.Window) bool {
log.Println("initTabWindow() OnClosing() THIS WINDOW IS CLOSING newGuiWindow=", newGuiWindow) log.Println("initTabWindow() OnClosing() THIS WINDOW IS CLOSING newGuiWindow=", newGuiWindow)
// newGuiWindow.UiWindow.Destroy() // newGuiWindow.UiWindow.Destroy()
if (Config.Exit == nil) { if Config.Exit == nil {
ui.Quit() ui.Quit()
} else { } else {
// allow a custom exit function // allow a custom exit function
@ -83,23 +87,23 @@ func InitWindow(gw *GuiWindow, name string, axis int) *GuiBox {
tmp := 0 tmp := 0
newGuiWindow.TabNumber = &tmp newGuiWindow.TabNumber = &tmp
} else { } else {
newGuiWindow.UiWindow = gw.UiWindow newGuiWindow.UiWindow = gw.UiWindow
newGuiWindow.UiTab = gw.UiTab newGuiWindow.UiTab = gw.UiTab
} }
newGuiWindow.BoxMap = make(map[string]*GuiBox) newGuiWindow.BoxMap = make(map[string]*GuiBox)
newGuiWindow.EntryMap = make(map[string]*GuiEntry) newGuiWindow.EntryMap = make(map[string]*GuiEntry)
// Data.Windows = append(Data.Windows, &newGuiWindow) // Data.Windows = append(Data.Windows, &newGuiWindow)
if (newGuiWindow.UiTab == nil) { if newGuiWindow.UiTab == nil {
tabnum := 0 tabnum := 0
newGuiWindow.TabNumber = &tabnum newGuiWindow.TabNumber = &tabnum
} else { } else {
tabnum := newGuiWindow.UiTab.NumPages() tabnum := newGuiWindow.UiTab.NumPages()
newGuiWindow.TabNumber = &tabnum newGuiWindow.TabNumber = &tabnum
} }
Data.WindowMap[newGuiWindow.Name] = newGuiWindow Data.WindowMap[newGuiWindow.Name] = newGuiWindow
log.Println("InitGuiWindow() END *GuiWindow =", newGuiWindow) log.Println("InitGuiWindow() END *GuiWindow =", newGuiWindow)
return box return box
@ -108,14 +112,14 @@ func InitWindow(gw *GuiWindow, name string, axis int) *GuiBox {
func DeleteWindow(name string) { func DeleteWindow(name string) {
log.Println("gui.DeleteWindow() START name =", name) log.Println("gui.DeleteWindow() START name =", name)
window := Data.WindowMap[name] window := Data.WindowMap[name]
if (window == nil) { if window == nil {
log.Println("gui.DeleteWindow() NO WINDOW WITH name =", name) log.Println("gui.DeleteWindow() NO WINDOW WITH name =", name)
return return
} }
log.Println("gui.DumpBoxes() MAP: ", name) log.Println("gui.DumpBoxes() MAP: ", name)
log.Println("gui.DumpBoxes()\tWindow.name =", window.Name) log.Println("gui.DumpBoxes()\tWindow.name =", window.Name)
if (window.TabNumber == nil) { if window.TabNumber == nil {
log.Println("gui.DumpBoxes() \tWindows.TabNumber = nil") log.Println("gui.DumpBoxes() \tWindows.TabNumber = nil")
} }
tab := *window.TabNumber tab := *window.TabNumber
@ -127,11 +131,11 @@ func DeleteWindow(name string) {
// renumber tabs here // renumber tabs here
for name, window := range Data.WindowMap { for name, window := range Data.WindowMap {
log.Println("gui.DumpBoxes() MAP: ", name) log.Println("gui.DumpBoxes() MAP: ", name)
if (window.TabNumber == nil) { if window.TabNumber == nil {
log.Println("gui.DumpBoxes() \tWindows.TabNumber = nil") log.Println("gui.DumpBoxes() \tWindows.TabNumber = nil")
} else { } else {
log.Println("gui.DumpBoxes() \tWindows.TabNumber =", *window.TabNumber) log.Println("gui.DumpBoxes() \tWindows.TabNumber =", *window.TabNumber)
if (tab < *window.TabNumber) { if tab < *window.TabNumber {
log.Println("gui.DumpBoxes() \tSubtracting 1 from TabNumber") log.Println("gui.DumpBoxes() \tSubtracting 1 from TabNumber")
*window.TabNumber -= 1 *window.TabNumber -= 1
log.Println("gui.DumpBoxes() \tWindows.TabNumber is now =", *window.TabNumber) log.Println("gui.DumpBoxes() \tWindows.TabNumber is now =", *window.TabNumber)
@ -170,8 +174,8 @@ func CreateBlankWindow(title string, x int, y int) *GuiBox {
} }
func initBlankWindow() ui.Control { func initBlankWindow() ui.Control {
hbox := ui.NewHorizontalBox() hbox := ui.NewHorizontalBox()
hbox.SetPadded(true) hbox.SetPadded(true)
return hbox return hbox
} }
@ -180,27 +184,27 @@ var master = 0
func mapWindow(window *ui.Window, title string, x int, y int) *GuiBox { func mapWindow(window *ui.Window, title string, x int, y int) *GuiBox {
log.Println("gui.WindowMap START title =", title) log.Println("gui.WindowMap START title =", title)
if (Data.WindowMap[title] != nil) { if Data.WindowMap[title] != nil {
log.Println("Data.WindowMap[title] already exists title =", title) log.Println("Data.WindowMap[title] already exists title =", title)
master = master + 1 master = master + 1
title = title + " jcarr " + strconv.Itoa(master) title = title + " jcarr " + strconv.Itoa(master)
} }
if (Data.WindowMap[title] != nil) { if Data.WindowMap[title] != nil {
log.Println("Data.WindowMap[title] already exists title =", title) log.Println("Data.WindowMap[title] already exists title =", title)
panic("Data.WindowMap[newGuiWindow.Name] already exists") panic("Data.WindowMap[newGuiWindow.Name] already exists")
return nil return nil
} }
log.Println("gui.WindowMap START title =", title) log.Println("gui.WindowMap START title =", title)
var newGuiWindow GuiWindow var newGuiWindow GuiWindow
newGuiWindow.Width = x newGuiWindow.Width = x
newGuiWindow.Height = y newGuiWindow.Height = y
newGuiWindow.Name = title newGuiWindow.Name = title
newGuiWindow.UiWindow = window newGuiWindow.UiWindow = window
newGuiWindow.BoxMap = make(map[string]*GuiBox) newGuiWindow.BoxMap = make(map[string]*GuiBox)
newGuiWindow.EntryMap = make(map[string]*GuiEntry) newGuiWindow.EntryMap = make(map[string]*GuiEntry)
Data.WindowMap[newGuiWindow.Name] = &newGuiWindow Data.WindowMap[newGuiWindow.Name] = &newGuiWindow
var box GuiBox var box GuiBox
box.Window = &newGuiWindow box.Window = &newGuiWindow
@ -208,3 +212,25 @@ func mapWindow(window *ui.Window, title string, x int, y int) *GuiBox {
return &box return &box
} }
func NewWindow(title string, x int, y int) {
box := mapWindow(nil, title, x, y)
log.Println("gui.NewWindow() title = box.Name =", box.Name)
window := ui.NewWindow(box.Name, x, y, false)
window.SetBorderless(false)
window.OnClosing(func(*ui.Window) bool {
log.Println("createWindow().OnClosing()", box.Name)
return true
})
ui.OnShouldQuit(func() bool {
log.Println("createWindow().Destroy()", box.Name)
window.Destroy()
return true
})
window.SetMargined(true)
window.Show()
box.Window.UiWindow = window
}