diff options
| author | Pietro Gagliardi <[email protected]> | 2014-08-30 23:02:02 -0400 |
|---|---|---|
| committer | Pietro Gagliardi <[email protected]> | 2014-08-30 23:02:02 -0400 |
| commit | 77bf566ebbcb62acd4d08d905d9542d6ff9b6b80 (patch) | |
| tree | eeb8e72bc3bf57f5be7f0c0af4319189ac6de838 /container_unix.go | |
| parent | 155899c65ed32245e2ccad4197a10c77017d835b (diff) | |
...in with the new.
Diffstat (limited to 'container_unix.go')
| -rw-r--r-- | container_unix.go | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/container_unix.go b/container_unix.go new file mode 100644 index 0000000..fbfd993 --- /dev/null +++ b/container_unix.go @@ -0,0 +1,71 @@ +// +build !windows,!darwin + +// 23 february 2014 + +package ui + +import ( + "unsafe" +) + +// #include "gtk_unix.h" +import "C" + +type container struct { + containerbase + layoutwidget *C.GtkWidget + layoutcontainer *C.GtkContainer +} + +type sizing struct { + sizingbase + + // for size calculations + // gtk+ needs nothing + + // for the actual resizing + shouldVAlignTop bool +} + +func newContainer(child Control) *container { + c := new(container) + widget := C.newContainer(unsafe.Pointer(c)) + c.layoutwidget = widget + c.layoutcontainer = (*C.GtkContainer)(unsafe.Pointer(widget)) + c.child = child + c.child.setParent(&controlParent{c.layoutcontainer}) + return c +} + +func (c *container) setParent(p *controlParent) { + C.gtk_container_add(p.c, c.layoutwidget) +} + +//export containerResizing +func containerResizing(data unsafe.Pointer, r *C.GtkAllocation) { + c := (*container)(data) + c.resize(int(r.x), int(r.y), int(r.width), int(r.height)) +} + +const ( + gtkXMargin = 12 + gtkYMargin = 12 + gtkXPadding = 12 + gtkYPadding = 6 +) + +func (c *container) beginResize() (d *sizing) { + d = new(sizing) + if spaced { + d.xmargin = gtkXMargin + d.ymargintop = gtkYMargin + d.ymarginbottom = d.ymargintop + d.xpadding = gtkXPadding + d.ypadding = gtkYPadding + } + return d +} + +func (c *container) translateAllocationCoords(allocations []*allocation, winwidth, winheight int) { + // no need for coordinate conversion with gtk+ +} |
