summaryrefslogtreecommitdiff
path: root/box.go
blob: 673fca8b8880cf1d926a8f44c27c069ddabe3fa8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package main

import (
	"go.wit.com/toolkits/tree"
	"go.wit.com/widget"

	"go.wit.com/dev/andlabs/ui"
	_ "go.wit.com/dev/andlabs/ui/winmanifest"
)

// make new Box here
func newBox(n *tree.Node) {
	if notNew(n) {
		return
	}
	newt := new(guiWidget)
	var box *ui.Box

	if n.State.Direction == widget.Horizontal {
		box = ui.NewHorizontalBox()
	} else {
		box = ui.NewVerticalBox()
	}
	box.SetPadded(true)

	newt.uiBox = box
	newt.uiControl = box
	newt.boxC = 0
	n.TK = newt
	place(n.Parent, n)
}

/*
rawBox -- hack to arbitrarily add a box in andlabs to work
around the problem that a "group" can not have one entry in it
TODO: fix this so that a box is "added on demand" that is,
if "go.wit.com/gui" sends you a 2nd thing to add to a group,
automatically add a box then. The problem with this, is the macos, windows and linux gtk
will panic on a move when an chind object is disasociated from the group
I haven't had time to try to debug this, so, instead, it's just probably better to always
add a box here. There doesn't seem to be any real issue with forcing a box to be inserted
into the toolkits that is "outside" the binary tree of widgets. This only means, that on
a destroy of the tree, this box must be checked

even that is a probably not senario however since clicking on the close box in the toolkit
has the operating system destroy everything in the window. it may or may not be possible
to control that behavior. at this time, it's "undetermined" and the best course of action
is to detect the window is destroyed and then remove all the toolkit information
from all the nodes in the binary tree

TODO: handle user killing/closing a window using the OS
*/
func rawBox(n *tree.Node) *ui.Box {
	var box *ui.Box

	if n.State.Direction == widget.Horizontal {
		box = ui.NewHorizontalBox()
	} else {
		box = ui.NewVerticalBox()
	}
	box.SetPadded(true)

	return box
}