Example #1
0
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
}
Example #2
0
File: action.go Project: etel/walk
func (a Action) initAction(wa *walk.Action) (*walk.Action, error) {
	text := a.Text
	if text == "" {
		text = "-"
	}
	if err := wa.SetText(text); err != nil {
		return nil, err
	}
	if err := wa.SetImage(a.Image); err != nil {
		return nil, err
	}

	if a.OnTriggered != nil {
		wa.Triggered().Attach(a.OnTriggered)
	}

	if a.AssignTo != nil {
		*a.AssignTo = wa
	}

	return wa, nil
}