pushbutton.go 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. // Copyright 2012 The Walk Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style
  3. // license that can be found in the LICENSE file.
  4. // +build windows
  5. package declarative
  6. import (
  7. "github.com/lxn/walk"
  8. )
  9. type PushButton struct {
  10. AssignTo **walk.PushButton
  11. Name string
  12. Enabled Property
  13. Visible Property
  14. Font Font
  15. ToolTipText Property
  16. MinSize Size
  17. MaxSize Size
  18. StretchFactor int
  19. Row int
  20. RowSpan int
  21. Column int
  22. ColumnSpan int
  23. AlwaysConsumeSpace bool
  24. ContextMenuItems []MenuItem
  25. OnKeyDown walk.KeyEventHandler
  26. OnKeyPress walk.KeyEventHandler
  27. OnKeyUp walk.KeyEventHandler
  28. OnMouseDown walk.MouseEventHandler
  29. OnMouseMove walk.MouseEventHandler
  30. OnMouseUp walk.MouseEventHandler
  31. OnSizeChanged walk.EventHandler
  32. Text Property
  33. Image interface{}
  34. ImageAboveText bool
  35. OnClicked walk.EventHandler
  36. }
  37. func (pb PushButton) Create(builder *Builder) error {
  38. w, err := walk.NewPushButton(builder.Parent())
  39. if err != nil {
  40. return err
  41. }
  42. return builder.InitWidget(pb, w, func() error {
  43. img := pb.Image
  44. if s, ok := img.(string); ok {
  45. var err error
  46. if img, err = imageFromFile(s); err != nil {
  47. return err
  48. }
  49. }
  50. if img != nil {
  51. if err := w.SetImage(img.(walk.Image)); err != nil {
  52. return err
  53. }
  54. }
  55. if err := w.SetImageAboveText(pb.ImageAboveText); err != nil {
  56. return err
  57. }
  58. if pb.OnClicked != nil {
  59. w.Clicked().Attach(pb.OnClicked)
  60. }
  61. if pb.AssignTo != nil {
  62. *pb.AssignTo = w
  63. }
  64. return nil
  65. })
  66. }
  67. func (w PushButton) WidgetInfo() (name string, disabled, hidden bool, font *Font, toolTipText string, minSize, maxSize Size, stretchFactor, row, rowSpan, column, columnSpan int, alwaysConsumeSpace bool, contextMenuItems []MenuItem, OnKeyDown walk.KeyEventHandler, OnKeyPress walk.KeyEventHandler, OnKeyUp walk.KeyEventHandler, OnMouseDown walk.MouseEventHandler, OnMouseMove walk.MouseEventHandler, OnMouseUp walk.MouseEventHandler, OnSizeChanged walk.EventHandler) {
  68. return w.Name, false, false, &w.Font, "", w.MinSize, w.MaxSize, w.StretchFactor, w.Row, w.RowSpan, w.Column, w.ColumnSpan, w.AlwaysConsumeSpace, w.ContextMenuItems, w.OnKeyDown, w.OnKeyPress, w.OnKeyUp, w.OnMouseDown, w.OnMouseMove, w.OnMouseUp, w.OnSizeChanged
  69. }