diff options
| -rw-r--r-- | lib/ui/drawable.go | 10 | ||||
| -rw-r--r-- | lib/ui/interactive.go | 20 | ||||
| -rw-r--r-- | lib/ui/interfaces.go | 42 | 
3 files changed, 42 insertions, 30 deletions
| diff --git a/lib/ui/drawable.go b/lib/ui/drawable.go deleted file mode 100644 index ef09451..0000000 --- a/lib/ui/drawable.go +++ /dev/null @@ -1,10 +0,0 @@ -package ui - -type Drawable interface { -	// Called when this renderable should draw itself -	Draw(ctx *Context) -	// Specifies a function to call when this cell needs to be redrawn -	OnInvalidate(callback func(d Drawable)) -	// Invalidates the drawable -	Invalidate() -} diff --git a/lib/ui/interactive.go b/lib/ui/interactive.go deleted file mode 100644 index 2d4f099..0000000 --- a/lib/ui/interactive.go +++ /dev/null @@ -1,20 +0,0 @@ -package ui - -import ( -	"github.com/gdamore/tcell" -) - -type Interactive interface { -	// Returns true if the event was handled by this component -	Event(event tcell.Event) bool -} - -type Simulator interface { -	// Queues up the given input events for simulation -	Simulate(events []tcell.Event) -} - -type DrawableInteractive interface { -	Drawable -	Interactive -} diff --git a/lib/ui/interfaces.go b/lib/ui/interfaces.go new file mode 100644 index 0000000..320183f --- /dev/null +++ b/lib/ui/interfaces.go @@ -0,0 +1,42 @@ +package ui + +import ( +	"github.com/gdamore/tcell" +) + +type Drawable interface { +	// Called when this renderable should draw itself +	Draw(ctx *Context) +	// Specifies a function to call when this cell needs to be redrawn +	OnInvalidate(callback func(d Drawable)) +	// Invalidates the drawable +	Invalidate() +} + +type Interactive interface { +	// Returns true if the event was handled by this component +	Event(event tcell.Event) bool +} + +type Simulator interface { +	// Queues up the given input events for simulation +	Simulate(events []tcell.Event) +} + +type DrawableInteractive interface { +	Drawable +	Interactive +} + +// A drawable which contains other drawables +type Container interface { +	Drawable +	// A list of all drawables which are children of this one (do not recurse +	// into your grandchildren). +	Children() []Drawable +	// Return the "focused" child, or none of no preference. Does not actually +	// have to be Interactive. If there is a preferred child, input events will +	// be directed to it. If there's no preference, events will be delivered to +	// all children. +	InteractiveChild() Drawable +} | 
