TextView no longer embeds tomo.TextBox
This commit is contained in:
		
							parent
							
								
									d4e8847908
								
							
						
					
					
						commit
						6089dd3ff1
					
				
							
								
								
									
										74
									
								
								textview.go
									
									
									
									
									
								
							
							
						
						
									
										74
									
								
								textview.go
									
									
									
									
									
								
							@ -2,23 +2,77 @@ package objects
 | 
			
		||||
 | 
			
		||||
import "image"
 | 
			
		||||
import "git.tebibyte.media/tomo/tomo"
 | 
			
		||||
import "git.tebibyte.media/tomo/tomo/text"
 | 
			
		||||
import "git.tebibyte.media/tomo/tomo/event"
 | 
			
		||||
 | 
			
		||||
var _ tomo.Object = new(TabbedContainer)
 | 
			
		||||
 | 
			
		||||
// TextView is an area for displaying a large amount of multi-line text.
 | 
			
		||||
type TextView struct {
 | 
			
		||||
	tomo.TextBox
 | 
			
		||||
	box tomo.TextBox
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NewTextView creates a new text view.
 | 
			
		||||
func NewTextView (text string) *TextView {
 | 
			
		||||
	this := &TextView { TextBox: tomo.NewTextBox() }
 | 
			
		||||
	this.SetRole(tomo.R("objects", "TextView"))
 | 
			
		||||
	this.SetFocusable(true)
 | 
			
		||||
	this.SetSelectable(true)
 | 
			
		||||
	this.SetText(text)
 | 
			
		||||
	this.SetAttr(tomo.AOverflow(false, true))
 | 
			
		||||
	this.SetAttr(tomo.AWrap(true))
 | 
			
		||||
	this.OnScroll(this.handleScroll)
 | 
			
		||||
	return this
 | 
			
		||||
	textView := &TextView { box: tomo.NewTextBox() }
 | 
			
		||||
	textView.box.SetRole(tomo.R("objects", "TextView"))
 | 
			
		||||
	textView.box.SetFocusable(true)
 | 
			
		||||
	textView.box.SetSelectable(true)
 | 
			
		||||
	textView.SetText(text)
 | 
			
		||||
	textView.box.SetAttr(tomo.AOverflow(false, true))
 | 
			
		||||
	textView.box.SetAttr(tomo.AWrap(true))
 | 
			
		||||
	textView.box.OnScroll(textView.handleScroll)
 | 
			
		||||
	return textView
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetBox returns the underlying box.
 | 
			
		||||
func (this *TextView) GetBox () tomo.Box {
 | 
			
		||||
	return this.box
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// SetFocused sets whether or not this text view has keyboard focus. If set to
 | 
			
		||||
// true, this method will steal focus away from whichever object currently has
 | 
			
		||||
// focus.
 | 
			
		||||
func (this *TextView) SetFocused (focused bool) {
 | 
			
		||||
	this.box.SetFocused(focused)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Select sets the text cursor or selection.
 | 
			
		||||
func (this *TextView) Select (dot text.Dot) {
 | 
			
		||||
	this.box.Select(dot)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Dot returns the text cursor or selection.
 | 
			
		||||
func (this *TextView) Dot () text.Dot {
 | 
			
		||||
	return this.box.Dot()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// SetAlign sets the X and Y alignment of the text view.
 | 
			
		||||
func (this *TextView) SetAlign (x, y tomo.Align) {
 | 
			
		||||
	this.box.SetAttr(tomo.AAlign(x, y))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ContentBounds returns the bounds of the inner content of the text view
 | 
			
		||||
// relative to the text view's InnerBounds.
 | 
			
		||||
func (this *TextView) ContentBounds () image.Rectangle {
 | 
			
		||||
	return this.box.ContentBounds()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ScrollTo shifts the origin of the text view's content to the origin of the
 | 
			
		||||
// text view's InnerBounds, offset by the given point.
 | 
			
		||||
func (this *TextView) ScrollTo (position image.Point) {
 | 
			
		||||
	this.box.ScrollTo(position)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// OnContentBoundsChange specifies a function to be called when the text view's
 | 
			
		||||
// ContentBounds or InnerBounds changes.
 | 
			
		||||
func (this *TextView) OnContentBoundsChange (callback func ()) event.Cookie {
 | 
			
		||||
	return this.box.OnContentBoundsChange(callback)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// SetText sets the text content of the view.
 | 
			
		||||
func (this *TextView) SetText (text string) {
 | 
			
		||||
	this.box.SetText(text)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (this *TextView) handleScroll (x, y float64) bool {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user