func setActionImage(action *walk.Action, image interface{}) (err error) { var img walk.Image switch image := image.(type) { case nil: return nil case *walk.Bitmap: img = image case string: if img, err = imageFromFile(image); err != nil { return } } if bmp, ok := img.(*walk.Bitmap); ok { return action.SetImage(bmp) } return errors.New("invalid type for Image") }
func (m Menu) createAction(builder *Builder, menu *walk.Menu) (*walk.Action, error) { subMenu, err := walk.NewMenu() if err != nil { return nil, err } var action *walk.Action if menu == nil { action = walk.NewMenuAction(subMenu) } else if action, err = menu.Actions().AddMenu(subMenu); err != nil { return nil, err } if err := action.SetText(m.Text); err != nil { return nil, err } if err := setActionImage(action, m.Image); err != nil { return nil, err } for _, item := range m.Items { if _, err := item.createAction(builder, subMenu); err != nil { return nil, err } } if m.OnTriggered != nil { action.Triggered().Attach(m.OnTriggered) } if m.AssignActionTo != nil { *m.AssignActionTo = action } if m.AssignTo != nil { *m.AssignTo = subMenu } return action, nil }