Scroll containers yay

This commit is contained in:
2023-04-16 03:37:28 -04:00
parent ed6de3a36f
commit b9c8350677
9 changed files with 272 additions and 389 deletions

View File

@@ -1,8 +1,7 @@
package main
import "image"
// import "image"
import "git.tebibyte.media/sashakoshka/tomo"
import "git.tebibyte.media/sashakoshka/tomo/layouts"
import "git.tebibyte.media/sashakoshka/tomo/elements"
import _ "git.tebibyte.media/sashakoshka/tomo/backends/all"
import "git.tebibyte.media/sashakoshka/tomo/elements/containers"
@@ -14,58 +13,56 @@ func main () {
func run () {
window, _ := tomo.NewWindow(tomo.Bounds(0, 0, 360, 240))
window.SetTitle("Scroll")
container := containers.NewContainer(layouts.Vertical { true, true })
container := containers.NewVBox(true, true)
window.Adopt(container)
textBox := elements.NewTextBox("", copypasta)
scrollContainer := containers.NewScrollContainer(true, false)
scrollContainer := containers.NewScroll(true, false)
disconnectedContainer := containers.NewContainer (layouts.Horizontal {
Gap: true,
})
list := elements.NewList (
elements.NewListEntry("This is list item 0", nil),
elements.NewListEntry("This is list item 1", nil),
elements.NewListEntry("This is list item 2", nil),
elements.NewListEntry("This is list item 3", nil),
elements.NewListEntry("This is list item 4", nil),
elements.NewListEntry("This is list item 5", nil),
elements.NewListEntry("This is list item 6", nil),
elements.NewListEntry("This is list item 7", nil),
elements.NewListEntry("This is list item 8", nil),
elements.NewListEntry("This is list item 9", nil),
elements.NewListEntry("This is list item 10", nil),
elements.NewListEntry("This is list item 11", nil),
elements.NewListEntry("This is list item 12", nil),
elements.NewListEntry("This is list item 13", nil),
elements.NewListEntry("This is list item 14", nil),
elements.NewListEntry("This is list item 15", nil),
elements.NewListEntry("This is list item 16", nil),
elements.NewListEntry("This is list item 17", nil),
elements.NewListEntry("This is list item 18", nil),
elements.NewListEntry("This is list item 19", nil),
elements.NewListEntry("This is list item 20", nil))
list.Collapse(0, 32)
scrollBar := elements.NewScrollBar(true)
list.OnScrollBoundsChange (func () {
scrollBar.SetBounds (
list.ScrollContentBounds(),
list.ScrollViewportBounds())
})
scrollBar.OnScroll (func (viewport image.Point) {
list.ScrollTo(viewport)
})
disconnectedContainer := containers.NewHBox(false, true)
// list := elements.NewList (
// elements.NewListEntry("This is list item 0", nil),
// elements.NewListEntry("This is list item 1", nil),
// elements.NewListEntry("This is list item 2", nil),
// elements.NewListEntry("This is list item 3", nil),
// elements.NewListEntry("This is list item 4", nil),
// elements.NewListEntry("This is list item 5", nil),
// elements.NewListEntry("This is list item 6", nil),
// elements.NewListEntry("This is list item 7", nil),
// elements.NewListEntry("This is list item 8", nil),
// elements.NewListEntry("This is list item 9", nil),
// elements.NewListEntry("This is list item 10", nil),
// elements.NewListEntry("This is list item 11", nil),
// elements.NewListEntry("This is list item 12", nil),
// elements.NewListEntry("This is list item 13", nil),
// elements.NewListEntry("This is list item 14", nil),
// elements.NewListEntry("This is list item 15", nil),
// elements.NewListEntry("This is list item 16", nil),
// elements.NewListEntry("This is list item 17", nil),
// elements.NewListEntry("This is list item 18", nil),
// elements.NewListEntry("This is list item 19", nil),
// elements.NewListEntry("This is list item 20", nil))
// list.Collapse(0, 32)
// scrollBar := elements.NewScrollBar(true)
// list.OnScrollBoundsChange (func () {
// scrollBar.SetBounds (
// list.ScrollContentBounds(),
// list.ScrollViewportBounds())
// })
// scrollBar.OnScroll (func (viewport image.Point) {
// list.ScrollTo(viewport)
// })
scrollContainer.Adopt(textBox)
container.Adopt(elements.NewLabel("A ScrollContainer:", false), false)
container.Adopt(scrollContainer, false)
disconnectedContainer.Adopt(list, false)
// disconnectedContainer.Adopt(list, false)
disconnectedContainer.Adopt (elements.NewLabel (
"Notice how the scroll bar to the right can be used to " +
"control the list, despite not even touching it. It is " +
"indeed a thing you can do. It is also terrible UI design so " +
"don't do it.", true), true)
disconnectedContainer.Adopt(scrollBar, false)
// disconnectedContainer.Adopt(scrollBar, false)
container.Adopt(disconnectedContainer, true)
window.OnClose(tomo.Stop)