summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--main.go25
-rw-r--r--window.go98
2 files changed, 75 insertions, 48 deletions
diff --git a/main.go b/main.go
index eb9bdb4..5e4d1b4 100644
--- a/main.go
+++ b/main.go
@@ -1,9 +1,11 @@
package gui
-import "log"
+import (
+ "log"
-import "github.com/andlabs/ui"
-import _ "github.com/andlabs/ui/winmanifest"
+ "github.com/andlabs/ui"
+ _ "github.com/andlabs/ui/winmanifest"
+)
func Main(f func()) {
log.Println("Starting gui.Main() (using gtk via andlabs/ui)")
@@ -13,7 +15,7 @@ func Main(f func()) {
// Other goroutines must use this
//
// You can not acess / process the GUI thread directly from
-// other goroutines. This is due to the nature of how
+// other goroutines. This is due to the nature of how
// Linux, MacOS and Windows work (they all work differently. suprise. surprise.)
// For example: gui.Queue(addNewTabForColorSelection())
func Queue(f func()) {
@@ -21,16 +23,15 @@ func Queue(f func()) {
ui.QueueMain(f)
}
-// gui.Main(
-// gui.MainExample()
-// )
-func MainExample() {
- name := "jcarr"
- log.Println("gui.initUI() inside ui.Main()")
+// gui.Main(gui.MainExample())
+func ExampleWindow() {
+ log.Println("START gui.ExampleWindow()")
- box := InitWindow(nil, "StartNewWindow" + name, 0)
+ title := "Test Window"
+ box := InitWindow(nil, title, 0)
window := box.Window
- log.Println("StartNewWindow() box =", box)
+ log.Println("box =", box)
+ log.Println("window =", window)
window.UiWindow.Show()
}
diff --git a/window.go b/window.go
index a6c5b4f..1dfe05a 100644
--- a/window.go
+++ b/window.go
@@ -1,18 +1,22 @@
package gui
-import "log"
-import "time"
-import "strconv"
-// import "regexp"
+import (
+ "log"
+ "strconv"
+ "time"
-import "github.com/andlabs/ui"
-import _ "github.com/andlabs/ui/winmanifest"
+ "github.com/andlabs/ui"
+
+ // import "regexp"
+
+ _ "github.com/andlabs/ui/winmanifest"
+)
func initUI(name string, callback func(*GuiBox) *GuiBox) {
ui.Main(func() {
log.Println("gui.initUI() inside ui.Main()")
- box := InitWindow(nil, "StartNewWindow" + name, 0)
+ box := InitWindow(nil, "StartNewWindow"+name, 0)
box = callback(box)
window := box.Window
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) {
log.Println("StartNewWindow() ui.Main() Create a new window")
- if (bg) {
+ if bg {
go initUI(name, callback)
time.Sleep(500 * time.Millisecond) // this might make it more stable on windows?
} else {
@@ -49,7 +53,7 @@ func InitWindow(gw *GuiWindow, name string, axis int) *GuiBox {
log.Println("InitGuiWindow() START")
var box *GuiBox
- if (gw == nil) {
+ if gw == nil {
box = mapWindow(nil, name, Config.Height, Config.Width)
} else {
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
// This is the first window. One must create it here
- if (gw == nil) {
+ if gw == nil {
log.Println("initWindow() ADDING ui.NewWindow()")
newGuiWindow.UiWindow = ui.NewWindow(name, int(newGuiWindow.Height), int(newGuiWindow.Width), true)
newGuiWindow.UiWindow.SetBorderless(false)
@@ -68,7 +72,7 @@ func InitWindow(gw *GuiWindow, name string, axis int) *GuiBox {
newGuiWindow.UiWindow.OnClosing(func(*ui.Window) bool {
log.Println("initTabWindow() OnClosing() THIS WINDOW IS CLOSING newGuiWindow=", newGuiWindow)
// newGuiWindow.UiWindow.Destroy()
- if (Config.Exit == nil) {
+ if Config.Exit == nil {
ui.Quit()
} else {
// allow a custom exit function
@@ -83,23 +87,23 @@ func InitWindow(gw *GuiWindow, name string, axis int) *GuiBox {
tmp := 0
newGuiWindow.TabNumber = &tmp
} else {
- newGuiWindow.UiWindow = gw.UiWindow
- newGuiWindow.UiTab = gw.UiTab
+ newGuiWindow.UiWindow = gw.UiWindow
+ newGuiWindow.UiTab = gw.UiTab
}
- newGuiWindow.BoxMap = make(map[string]*GuiBox)
- newGuiWindow.EntryMap = make(map[string]*GuiEntry)
+ newGuiWindow.BoxMap = make(map[string]*GuiBox)
+ newGuiWindow.EntryMap = make(map[string]*GuiEntry)
// Data.Windows = append(Data.Windows, &newGuiWindow)
- if (newGuiWindow.UiTab == nil) {
- tabnum := 0
- newGuiWindow.TabNumber = &tabnum
+ if newGuiWindow.UiTab == nil {
+ tabnum := 0
+ newGuiWindow.TabNumber = &tabnum
} else {
- tabnum := newGuiWindow.UiTab.NumPages()
- newGuiWindow.TabNumber = &tabnum
+ tabnum := newGuiWindow.UiTab.NumPages()
+ newGuiWindow.TabNumber = &tabnum
}
- Data.WindowMap[newGuiWindow.Name] = newGuiWindow
+ Data.WindowMap[newGuiWindow.Name] = newGuiWindow
log.Println("InitGuiWindow() END *GuiWindow =", newGuiWindow)
return box
@@ -108,14 +112,14 @@ func InitWindow(gw *GuiWindow, name string, axis int) *GuiBox {
func DeleteWindow(name string) {
log.Println("gui.DeleteWindow() START name =", name)
window := Data.WindowMap[name]
- if (window == nil) {
+ if window == nil {
log.Println("gui.DeleteWindow() NO WINDOW WITH name =", name)
return
}
log.Println("gui.DumpBoxes() MAP: ", name)
log.Println("gui.DumpBoxes()\tWindow.name =", window.Name)
- if (window.TabNumber == nil) {
+ if window.TabNumber == nil {
log.Println("gui.DumpBoxes() \tWindows.TabNumber = nil")
}
tab := *window.TabNumber
@@ -127,11 +131,11 @@ func DeleteWindow(name string) {
// renumber tabs here
for name, window := range Data.WindowMap {
log.Println("gui.DumpBoxes() MAP: ", name)
- if (window.TabNumber == nil) {
+ if window.TabNumber == nil {
log.Println("gui.DumpBoxes() \tWindows.TabNumber = nil")
} else {
log.Println("gui.DumpBoxes() \tWindows.TabNumber =", *window.TabNumber)
- if (tab < *window.TabNumber) {
+ if tab < *window.TabNumber {
log.Println("gui.DumpBoxes() \tSubtracting 1 from TabNumber")
*window.TabNumber -= 1
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 {
- hbox := ui.NewHorizontalBox()
- hbox.SetPadded(true)
+ hbox := ui.NewHorizontalBox()
+ hbox.SetPadded(true)
return hbox
}
@@ -180,27 +184,27 @@ var master = 0
func mapWindow(window *ui.Window, title string, x int, y int) *GuiBox {
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)
master = master + 1
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)
panic("Data.WindowMap[newGuiWindow.Name] already exists")
return nil
}
log.Println("gui.WindowMap START title =", title)
var newGuiWindow GuiWindow
- newGuiWindow.Width = x
- newGuiWindow.Height = y
- newGuiWindow.Name = title
- newGuiWindow.UiWindow = window
+ newGuiWindow.Width = x
+ newGuiWindow.Height = y
+ newGuiWindow.Name = title
+ newGuiWindow.UiWindow = window
- newGuiWindow.BoxMap = make(map[string]*GuiBox)
- newGuiWindow.EntryMap = make(map[string]*GuiEntry)
+ newGuiWindow.BoxMap = make(map[string]*GuiBox)
+ newGuiWindow.EntryMap = make(map[string]*GuiEntry)
- Data.WindowMap[newGuiWindow.Name] = &newGuiWindow
+ Data.WindowMap[newGuiWindow.Name] = &newGuiWindow
var box GuiBox
box.Window = &newGuiWindow
@@ -208,3 +212,25 @@ func mapWindow(window *ui.Window, title string, x int, y int) *GuiBox {
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
+}