gridlayout.go 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. // Copyright 2018 visualfc. All rights reserved.
  2. package tk
  3. import "fmt"
  4. type GridLayout struct {
  5. *LayoutFrame
  6. items []*LayoutItem
  7. }
  8. func (w *GridLayout) AddWidget(widget Widget, attrs ...*LayoutAttr) error {
  9. if !IsValidWidget(widget) {
  10. return ErrInvalid
  11. }
  12. return Grid(widget, AppendLayoutAttrs(attrs, GridAttrInMaster(w))...)
  13. }
  14. func (w *GridLayout) AddWidgets(widgets ...Widget) error {
  15. return GridList(widgets, GridAttrInMaster(w))
  16. }
  17. func (w *GridLayout) AddWidgetList(widgets []Widget, attrs ...*LayoutAttr) error {
  18. return GridList(widgets, AppendLayoutAttrs(attrs, GridAttrInMaster(w))...)
  19. }
  20. func (w *GridLayout) AddWidgetEx(widget Widget, row int, column int, rowspan int, columnspan int, sticky Sticky) error {
  21. if !IsValidWidget(widget) {
  22. return ErrInvalid
  23. }
  24. return Grid(widget, GridAttrRow(row), GridAttrColumn(column),
  25. GridAttrRowSpan(rowspan), GridAttrColumnSpan(columnspan),
  26. GridAttrSticky(sticky), GridAttrInMaster(w))
  27. }
  28. func (w *GridLayout) RemoveWidget(widget Widget) error {
  29. if !IsValidWidget(widget) {
  30. return ErrInvalid
  31. }
  32. return GridRemove(widget)
  33. }
  34. func (w *GridLayout) Repack() error {
  35. return Pack(w, PackAttrFill(FillBoth), PackAttrExpand(true))
  36. }
  37. func (w *GridLayout) SetBorderWidth(width int) error {
  38. return eval(fmt.Sprintf("%v configure -borderwidth {%v}", w.Id(), width))
  39. }
  40. func (w *GridLayout) BorderWidth() int {
  41. r, _ := evalAsInt(fmt.Sprintf("%v cget -borderwidth", w.Id()))
  42. return r
  43. }
  44. // row index from 0, -1=all
  45. func (w *GridLayout) SetRowAttr(row int, pad int, weight int, group string) error {
  46. return GridRowIndex(w, row, GridIndexAttrPad(pad), GridIndexAttrWeight(weight), GridIndexAttrUniform(group))
  47. }
  48. // column index from 0, -1=all
  49. func (w *GridLayout) SetColumnAttr(column int, pad int, weight int, group string) error {
  50. return GridColumnIndex(w, column, GridIndexAttrPad(pad), GridIndexAttrWeight(weight), GridIndexAttrUniform(group))
  51. }
  52. func NewGridLayout(parent Widget) *GridLayout {
  53. grid := &GridLayout{NewLayoutFrame(parent), nil}
  54. grid.Lower(nil)
  55. grid.Repack()
  56. return grid
  57. }