diff options
Diffstat (limited to 'prev/group_windows.go')
| -rw-r--r-- | prev/group_windows.go | 91 |
1 files changed, 0 insertions, 91 deletions
diff --git a/prev/group_windows.go b/prev/group_windows.go deleted file mode 100644 index 18a3cc6..0000000 --- a/prev/group_windows.go +++ /dev/null @@ -1,91 +0,0 @@ -// 15 august 2014 - -package ui - -import ( - "unsafe" -) - -// #include "winapi_windows.h" -import "C" - -type group struct { - *controlSingleHWNDWithText - child Control - margined bool -} - -func newGroup(text string, control Control) Group { - hwnd := C.newControl(buttonclass, - C.BS_GROUPBOX, - C.WS_EX_CONTROLPARENT) - g := &group{ - controlSingleHWNDWithText: newControlSingleHWNDWithText(hwnd), - child: control, - } - g.fpreferredSize = g.xpreferredSize - g.fnTabStops = control.nTabStops // groupbox itself is not tabbable but the contents might be - g.SetText(text) - C.controlSetControlFont(g.hwnd) - C.setGroupSubclass(g.hwnd, unsafe.Pointer(g)) - control.setParent(&controlParent{g.hwnd}) - return g -} - -func (g *group) Text() string { - return g.text() -} - -func (g *group) SetText(text string) { - g.setText(text) -} - -func (g *group) Margined() bool { - return g.margined -} - -func (g *group) SetMargined(margined bool) { - g.margined = margined -} - -const ( - groupXMargin = 6 - groupYMarginTop = 11 // note this value /includes the groupbox label/ - groupYMarginBottom = 7 -) - -func (g *group) xpreferredSize(d *sizing) (width, height int) { - var r C.RECT - - width, height = g.child.preferredSize(d) - if width < int(g.textlen) { // if the text is longer, try not to truncate - width = int(g.textlen) - } - r.left = 0 - r.top = 0 - r.right = C.LONG(width) - r.bottom = C.LONG(height) - // use negative numbers to increase the size of the rectangle - if g.margined { - marginRectDLU(&r, -groupYMarginTop, -groupYMarginBottom, -groupXMargin, -groupXMargin, d) - } else { - // unforutnately, as mentioned above, the size of a groupbox includes the label and border - // 1 character cell (4DLU x, 8DLU y) on each side (but only 3DLU on the bottom) should be enough to make up for that; TODO is not, we can change it - // TODO make these named constants - marginRectDLU(&r, -8, -3, -4, -4, d) - } - return int(r.right - r.left), int(r.bottom - r.top) -} - -//export groupResized -func groupResized(data unsafe.Pointer, r C.RECT) { - g := (*group)(unsafe.Pointer(data)) - d := beginResize(g.hwnd) - if g.margined { - // see above - marginRectDLU(&r, groupYMarginTop, groupYMarginBottom, groupXMargin, groupXMargin, d) - } else { - marginRectDLU(&r, 8, 3, 4, 4, d) - } - g.child.resize(int(r.left), int(r.top), int(r.right - r.left), int(r.bottom - r.top), d) -} |
