scrolllayout.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. // Copyright 2018 visualfc. All rights reserved.
  2. package tk
  3. type ScrollLayout struct {
  4. *GridLayout
  5. XScrollBar *ScrollBar
  6. YScrollBar *ScrollBar
  7. }
  8. func NewScrollLayout(parent Widget) *ScrollLayout {
  9. grid := NewGridLayout(parent)
  10. xscroll := NewScrollBar(parent, Horizontal)
  11. yscroll := NewScrollBar(parent, Vertical)
  12. grid.AddWidget(xscroll, GridAttrRow(1), GridAttrColumn(0), GridAttrSticky(StickyEW))
  13. grid.AddWidget(yscroll, GridAttrRow(0), GridAttrColumn(1), GridAttrSticky(StickyNS))
  14. return &ScrollLayout{grid, xscroll, yscroll}
  15. }
  16. func (w *ScrollLayout) SetWidget(widget Widget) error {
  17. if !IsValidWidget(widget) {
  18. return ErrInvalid
  19. }
  20. w.AddWidget(widget, GridAttrRow(0), GridAttrColumn(0), GridAttrSticky(StickyAll))
  21. w.SetRowAttr(0, 0, 1, "")
  22. w.SetColumnAttr(0, 0, 1, "")
  23. return nil
  24. }
  25. //export embedded id
  26. func (w *ScrollLayout) Id() string {
  27. return w.id
  28. }
  29. func (w *ScrollLayout) ShowXScrollBar(b bool) (err error) {
  30. if b {
  31. err = w.AddWidget(w.XScrollBar, GridAttrRow(1), GridAttrColumn(0), GridAttrSticky(StickyEW))
  32. } else {
  33. err = w.RemoveWidget(w.XScrollBar)
  34. }
  35. return
  36. }
  37. func (w *ScrollLayout) ShowYScrollBar(b bool) (err error) {
  38. if b {
  39. err = w.AddWidget(w.YScrollBar, GridAttrRow(1), GridAttrColumn(0), GridAttrSticky(StickyEW))
  40. } else {
  41. err = w.RemoveWidget(w.YScrollBar)
  42. }
  43. return
  44. }