expose FlexItem, add crudy funcs

pull/40/head
Tony Worm 7 years ago
parent 03571f15bb
commit 35f18087f3

@ -11,7 +11,7 @@ const (
) )
// flexItem holds layout options for one item. // flexItem holds layout options for one item.
type flexItem struct { type FlexItem struct {
Item Primitive // The item to be positioned. Item Primitive // The item to be positioned.
FixedSize int // The item's fixed size which may not be changed, 0 if it has no fixed size. FixedSize int // The item's fixed size which may not be changed, 0 if it has no fixed size.
Proportion int // The item's proportion. Proportion int // The item's proportion.
@ -25,7 +25,7 @@ type Flex struct {
*Box *Box
// The items to be positioned. // The items to be positioned.
items []flexItem items []FlexItem
// FlexRow or FlexColumn. // FlexRow or FlexColumn.
direction int direction int
@ -73,10 +73,48 @@ func (f *Flex) SetFullScreen(fullScreen bool) *Flex {
// primitive receives focus. If multiple items have the "focus" flag set to // primitive receives focus. If multiple items have the "focus" flag set to
// true, the first one will receive focus. // true, the first one will receive focus.
func (f *Flex) AddItem(item Primitive, fixedSize, proportion int, focus bool) *Flex { func (f *Flex) AddItem(item Primitive, fixedSize, proportion int, focus bool) *Flex {
f.items = append(f.items, flexItem{Item: item, FixedSize: fixedSize, Proportion: proportion, Focus: focus}) itm := FlexItem{Item: item, FixedSize: fixedSize, Proportion: proportion, Focus: focus}
return f.AddFlexItem(itm)
}
func (f *Flex) AddFlexItem(item FlexItem) *Flex {
f.items = append(f.items, item)
return f return f
} }
func (f *Flex) GetItems() []FlexItem {
return f.items
}
func (f *Flex) GetItem(idx int) FlexItem {
return f.items[idx]
}
func (f *Flex) SetItem(idx int, item Primitive, fixedSize, proportion int, focus bool) {
itm := FlexItem{Item: item, FixedSize: fixedSize, Proportion: proportion, Focus: focus}
f.SetFlexItem(idx, itm)
}
func (f *Flex) SetFlexItem(idx int, item FlexItem) {
f.items[idx] = item
}
func (f *Flex) InsItem(idx int, item Primitive, fixedSize, proportion int, focus bool) {
itm := FlexItem{Item: item, FixedSize: fixedSize, Proportion: proportion, Focus: focus}
f.InsFlexItem(idx, itm)
}
func (f *Flex) InsFlexItem(idx int, item FlexItem) {
f.items = append(f.items, FlexItem{})
copy(f.items[idx+1:], f.items[idx:])
f.items[idx] = item
}
func (f *Flex) DelItem(idx int) {
copy(f.items[idx:], f.items[idx+1:])
f.items[len(f.items)-1] = FlexItem{}
f.items = f.items[:len(f.items)-1]
}
// Draw draws this primitive onto the screen. // Draw draws this primitive onto the screen.
func (f *Flex) Draw(screen tcell.Screen) { func (f *Flex) Draw(screen tcell.Screen) {
f.Box.Draw(screen) f.Box.Draw(screen)

Loading…
Cancel
Save