1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
// Copyright 2019-2022 Graham Clark. All rights reserved. Use of this source
// code is governed by the MIT license that can be found in the LICENSE
// file.
// Package holder provides a widget that wraps an inner widget, and allows it to be easily swapped for another.
package holder
import (
"fmt"
"github.com/gcla/gowid"
)
//======================================================================
// Widget is the gowid analog of urwid's WidgetWrap.
type Widget struct {
gowid.IWidget
*gowid.Callbacks
gowid.SubWidgetCallbacks
}
func New(w gowid.IWidget) *Widget {
res := &Widget{
IWidget: w,
}
res.SubWidgetCallbacks = gowid.SubWidgetCallbacks{CB: &res.Callbacks}
var _ gowid.IWidget = res
var _ gowid.ICompositeWidget = res
return res
}
func (w *Widget) String() string {
return fmt.Sprintf("holder[%v]", w.SubWidget())
}
func (w *Widget) SubWidget() gowid.IWidget {
return w.IWidget
}
func (w *Widget) SetSubWidget(wi gowid.IWidget, app gowid.IApp) {
w.IWidget = wi
gowid.RunWidgetCallbacks(w, gowid.SubWidgetCB{}, app, w)
}
func (w *Widget) SubWidgetSize(size gowid.IRenderSize, focus gowid.Selector, app gowid.IApp) gowid.IRenderSize {
return w.SubWidget().RenderSize(size, focus, app)
}
//======================================================================
// Local Variables:
// mode: Go
// fill-column: 110
// End:
|