paned.go 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. // Copyright 2018 visualfc. All rights reserved.
  2. package tk
  3. import "fmt"
  4. // panedwindow
  5. type Paned struct {
  6. BaseWidget
  7. }
  8. func NewPaned(parent Widget, orient Orient, attributes ...*WidgetAttr) *Paned {
  9. iid := makeNamedWidgetId(parent, "atk_paned")
  10. attributes = append(attributes, &WidgetAttr{"orient", orient})
  11. info := CreateWidgetInfo(iid, WidgetTypePaned, true, attributes)
  12. if info == nil {
  13. return nil
  14. }
  15. w := &Paned{}
  16. w.id = iid
  17. w.info = info
  18. RegisterWidget(w)
  19. return w
  20. }
  21. func (w *Paned) Attach(id string) error {
  22. info, err := CheckWidgetInfo(id, WidgetTypePaned)
  23. if err != nil {
  24. return err
  25. }
  26. w.id = id
  27. w.info = info
  28. RegisterWidget(w)
  29. return nil
  30. }
  31. func (w *Paned) SetWidth(width int) error {
  32. return eval(fmt.Sprintf("%v configure -width {%v}", w.id, width))
  33. }
  34. func (w *Paned) Width() int {
  35. r, _ := evalAsInt(fmt.Sprintf("%v cget -width", w.id))
  36. return r
  37. }
  38. func (w *Paned) SetHeight(height int) error {
  39. return eval(fmt.Sprintf("%v configure -height {%v}", w.id, height))
  40. }
  41. func (w *Paned) Height() int {
  42. r, _ := evalAsInt(fmt.Sprintf("%v cget -height", w.id))
  43. return r
  44. }
  45. func (w *Paned) AddWidget(widget Widget, weight int) error {
  46. if !IsValidWidget(widget) {
  47. return ErrInvalid
  48. }
  49. return eval(fmt.Sprintf("%v add %v -weight %v", w.id, widget.Id(), weight))
  50. }
  51. func (w *Paned) InsertWidget(pane int, widget Widget, weight int) error {
  52. if !IsValidWidget(widget) {
  53. return ErrInvalid
  54. }
  55. return eval(fmt.Sprintf("%v insert %v %v -weight %v", w.id, pane, widget.Id(), weight))
  56. }
  57. func (w *Paned) SetPane(pane int, weight int) error {
  58. return eval(fmt.Sprintf("%v pane %v -weight %v", w.id, pane, weight))
  59. }
  60. func (w *Paned) RemovePane(pane int) error {
  61. return eval(fmt.Sprintf("%v forget %v", w.id, pane))
  62. }
  63. func PanedAttrWidth(width int) *WidgetAttr {
  64. return &WidgetAttr{"width", width}
  65. }
  66. func PanedAttrHeight(height int) *WidgetAttr {
  67. return &WidgetAttr{"height", height}
  68. }