doodle/pkg/uix/canvas_link_tool.go

37 lines
818 B
Go
Raw Permalink Normal View History

package uix
import (
"errors"
"git.kirsle.net/apps/doodle/pkg/drawtool"
"git.kirsle.net/apps/doodle/pkg/shmem"
)
// LinkStart initializes the Link tool.
func (w *Canvas) LinkStart() {
w.Tool = drawtool.LinkTool
w.linkFirst = nil
}
// LinkAdd adds an actor to be linked in the Link tool.
func (w *Canvas) LinkAdd(a *Actor) error {
if w.linkFirst == nil {
// First click, hold onto this actor.
w.linkFirst = a
shmem.Flash("Doodad '%s' selected, click the next Doodad to link it to",
a.Doodad().Title,
)
} else {
// Second click, call the OnLinkActors handler with the two actors.
if w.OnLinkActors != nil {
w.OnLinkActors(w.linkFirst, a)
} else {
return errors.New("Canvas.LinkAdd: no OnLinkActors handler is ready")
}
// Reset the link state.
w.linkFirst = nil
}
return nil
}