gxui

package module
v0.0.0-...-597c9ea Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 21, 2015 License: BSD-3-Clause Imports: 13 Imported by: 0

README

GXUI - A Go cross platform UI library.

Disclaimer

All code in this package is experimental and will have frequent breaking changes. Please feel free to play, but please don't be upset when the API has significant reworkings.

The code is currently undocumented, and is certainly not idiomatic Go. It will be heavily refactored over the coming months.

This is not an official Google product (experimental or otherwise), it is just code that happens to be owned by Google.

Dependencies

Linux:

In order to build GXUI on linux, you will need the following packages installed:

sudo apt-get install libxi-dev libxcursor-dev libxrandr-dev libxinerama-dev mesa-common-dev libgl1-mesa-dev
Common:

After setting up GOPATH (see Go documentation), you will first need to fetch the required dependencies:

go get code.google.com/p/freetype-go/freetype
go get github.com/go-gl/gl/v3.2-core/gl
go get github.com/go-gl/glfw/v3.1/glfw

Once these have been fetched, you can then fetch the GXUI library:

go get github.com/google/gxui

Samples

Samples can be found in gxui/samples.

To build all samples run:

go install github.com/google/gxui/samples/...

And they will be built into GOPATH/bin.

If you add GOPATH/bin to your PATH, you can simply type the name of a sample to run it. For example: image_viewer.

Fonts

Many of the samples require a font to render text. The dark theme (and currently the only theme) uses Roboto. This is built into the gxfont package.

Make sure to mention this font in any notices file distributed with your application.

Contributing

GXUI was written by a couple of Googlers as an experiment, but with help of the open-source community GXUI could mature into something far more interesting.

Contributions, however small are extremely welcome but will require the author to have signed the Google Individual Contributor License Agreement.

The CLA is necessary mainly because you own the copyright to your changes, even after your contribution becomes part of our codebase, so we need your permission to use and distribute your code. We also need to be sure of various other things—for instance that you'll tell us if you know that your code infringes on other people's patents. You don't have to sign the CLA until after you've submitted your code for review and a member has approved it, but you must do it before we can put your code into our codebase. Before you start working on a larger contribution, you should get in touch with us first through the issue tracker with your idea so that we can help out and possibly guide you. Coordinating up front makes it much easier to avoid frustration later on.

Documentation

Index

Constants

View Source
const (
	AspectStretch = iota
	AspectCorrectLetterbox
	AspectCorrectCrop
)

Variables

View Source
var Black = Color{0.0, 0.0, 0.0, 1.0}
View Source
var BlackBrush = CreateBrush(Black)
View Source
var Blue = Color{0.0, 0.0, 1.0, 1.0}
View Source
var Blue10 = Color{0.0, 0.0, 0.1, 1.0}
View Source
var Blue20 = Color{0.0, 0.0, 0.2, 1.0}
View Source
var Blue30 = Color{0.0, 0.0, 0.3, 1.0}
View Source
var Blue40 = Color{0.0, 0.0, 0.4, 1.0}
View Source
var Blue50 = Color{0.0, 0.0, 0.5, 1.0}
View Source
var Blue60 = Color{0.0, 0.0, 0.6, 1.0}
View Source
var Blue70 = Color{0.0, 0.0, 0.7, 1.0}
View Source
var Blue80 = Color{0.0, 0.0, 0.8, 1.0}
View Source
var Blue90 = Color{0.0, 0.0, 0.9, 1.0}
View Source
var DefaultBrush = WhiteBrush
View Source
var Gray10 = Color{0.1, 0.1, 0.1, 1.0}
View Source
var Gray15 = Color{0.15, 0.15, 0.15, 1.0}
View Source
var Gray20 = Color{0.2, 0.2, 0.2, 1.0}
View Source
var Gray30 = Color{0.3, 0.3, 0.3, 1.0}
View Source
var Gray40 = Color{0.4, 0.4, 0.4, 1.0}
View Source
var Gray50 = Color{0.5, 0.5, 0.5, 1.0}
View Source
var Gray60 = Color{0.6, 0.6, 0.6, 1.0}
View Source
var Gray70 = Color{0.7, 0.7, 0.7, 1.0}
View Source
var Gray80 = Color{0.8, 0.8, 0.8, 1.0}
View Source
var Gray90 = Color{0.9, 0.9, 0.9, 1.0}
View Source
var Green = Color{0.0, 1.0, 0.0, 1.0}
View Source
var Green10 = Color{0.0, 0.1, 0.0, 1.0}
View Source
var Green20 = Color{0.0, 0.2, 0.0, 1.0}
View Source
var Green30 = Color{0.0, 0.3, 0.0, 1.0}
View Source
var Green40 = Color{0.0, 0.4, 0.0, 1.0}
View Source
var Green50 = Color{0.0, 0.5, 0.0, 1.0}
View Source
var Green60 = Color{0.0, 0.6, 0.0, 1.0}
View Source
var Green70 = Color{0.0, 0.7, 0.0, 1.0}
View Source
var Green80 = Color{0.0, 0.8, 0.0, 1.0}
View Source
var Green90 = Color{0.0, 0.9, 0.0, 1.0}
View Source
var Red = Color{1.0, 0.0, 0.0, 1.0}
View Source
var Red10 = Color{0.1, 0.0, 0.0, 1.0}
View Source
var Red20 = Color{0.2, 0.0, 0.0, 1.0}
View Source
var Red30 = Color{0.3, 0.0, 0.0, 1.0}
View Source
var Red40 = Color{0.4, 0.0, 0.0, 1.0}
View Source
var Red50 = Color{0.5, 0.0, 0.0, 1.0}
View Source
var Red60 = Color{0.6, 0.0, 0.0, 1.0}
View Source
var Red70 = Color{0.7, 0.0, 0.0, 1.0}
View Source
var Red80 = Color{0.8, 0.0, 0.0, 1.0}
View Source
var Red90 = Color{0.9, 0.0, 0.0, 1.0}
View Source
var Transparent = Color{0.0, 0.0, 0.0, 0.0}
View Source
var TransparentBrush = CreateBrush(Transparent)
View Source
var White = Color{1.0, 1.0, 1.0, 1.0}
View Source
var WhiteBrush = CreateBrush(White)
View Source
var Yellow = Color{1.0, 1.0, 0.0, 1.0}

Functions

func BreadcrumbsAt(p Container, pnt math.Point) string

func ChildToParent

func ChildToParent(coord math.Point, from Control, to Parent) math.Point

func Dump

func Dump(c interface{})

func EventLoop

func EventLoop(driver Driver)

func FunctionName

func FunctionName(i interface{}) string

func ParentToChild

func ParentToChild(coord math.Point, from Parent, to Control) math.Point

func Path

func Path(p interface{}) string

func RuneArrayToString

func RuneArrayToString(arr []rune) string

func SetFocus

func SetFocus(focusable Focusable)

func StringToRuneArray

func StringToRuneArray(str string) []rune

func TransformCoordinate

func TransformCoordinate(coord math.Point, from, to Control) math.Point

func ValidateHierarchy

func ValidateHierarchy(p Parent)

func WindowToChild

func WindowToChild(coord math.Point, to Control) math.Point

Types

type Adapter

type Adapter interface {
	ItemSize(theme Theme) math.Size
	Count() int
	ItemId(index int) AdapterItemId
	ItemIndex(id AdapterItemId) int
	Create(theme Theme, index int) Control
	OnDataChanged(func()) EventSubscription
	OnDataReplaced(func()) EventSubscription
}

type AdapterBase

type AdapterBase struct {
	// contains filtered or unexported fields
}

func (*AdapterBase) DataChanged

func (a *AdapterBase) DataChanged()

func (*AdapterBase) DataReplaced

func (a *AdapterBase) DataReplaced()

func (*AdapterBase) OnDataChanged

func (a *AdapterBase) OnDataChanged(f func()) EventSubscription

func (*AdapterBase) OnDataReplaced

func (a *AdapterBase) OnDataReplaced(f func()) EventSubscription

type AdapterItemId

type AdapterItemId uint64
const InvalidAdapterItemId AdapterItemId = 0xFFFFFFFFFFFFFFFF

func (AdapterItemId) IsValid

func (i AdapterItemId) IsValid() bool

type AspectMode

type AspectMode int

type Brush

type Brush struct {
	Color Color
}

func CreateBrush

func CreateBrush(color Color) Brush

type BubbleOverlay

type BubbleOverlay interface {
	Control
	Show(control Control, target math.Point)
	Hide()
}

type Button

type Button interface {
	LinearLayout
	Text() string
	SetText(string)
	Type() ButtonType
	SetType(ButtonType)
	IsChecked() bool
	SetChecked(bool)
}

type ButtonType

type ButtonType int
const (
	PushButton ButtonType = iota
	ToggleButton
)

type Canvas

type Canvas interface {
	Size() math.Size
	Complete()
	Push()
	Pop()
	AddClip(math.Rect)
	Clear(Color)
	DrawCanvas(c Canvas, position math.Point)
	DrawTexture(t Texture, bounds math.Rect)
	DrawText(Font, string, Color, math.Rect, HorizontalAlignment, VerticalAlignment)
	DrawRunes(font Font, runes []rune, color Color, points []math.Point, origin math.Point)
	DrawLines(Polygon, Pen)
	DrawPolygon(Polygon, Pen, Brush)
	DrawRect(math.Rect, Brush)
	DrawRoundedRect(rect math.Rect, tl, tr, bl, br float32, p Pen, b Brush)
	Release()
}

type ChanneledEvent

type ChanneledEvent struct {
	sync.RWMutex
	// contains filtered or unexported fields
}

func (*ChanneledEvent) Fire

func (e *ChanneledEvent) Fire(args ...interface{})

func (*ChanneledEvent) Listen

func (e *ChanneledEvent) Listen(listener interface{}) EventSubscription

func (*ChanneledEvent) ParameterTypes

func (e *ChanneledEvent) ParameterTypes() []reflect.Type

type CodeEditor

type CodeEditor interface {
	TextBox
	SyntaxLayers() CodeSyntaxLayers
	SetSyntaxLayers(CodeSyntaxLayers)
	TabWidth() int
	SetTabWidth(int)
	SuggestionProvider() CodeSuggestionProvider
	SetSuggestionProvider(CodeSuggestionProvider)
	ShowSuggestionList()
	HideSuggestionList()
}

type CodeSuggestion

type CodeSuggestion interface {
	Name() string
	Code() string
}

type CodeSuggestionProvider

type CodeSuggestionProvider interface {
	SuggestionsAt(runeIndex int) []CodeSuggestion
}

type CodeSyntaxLayer

type CodeSyntaxLayer struct {
	// contains filtered or unexported fields
}

func CreateCodeSyntaxLayer

func CreateCodeSyntaxLayer() *CodeSyntaxLayer

func (*CodeSyntaxLayer) Add

func (l *CodeSyntaxLayer) Add(start, count int)

func (*CodeSyntaxLayer) AddData

func (l *CodeSyntaxLayer) AddData(start, count int, data interface{})

func (*CodeSyntaxLayer) AddSpan

func (l *CodeSyntaxLayer) AddSpan(span interval.IntData)

func (*CodeSyntaxLayer) BackgroundColor

func (l *CodeSyntaxLayer) BackgroundColor() *Color

func (*CodeSyntaxLayer) BorderColor

func (l *CodeSyntaxLayer) BorderColor() *Color

func (*CodeSyntaxLayer) Clear

func (l *CodeSyntaxLayer) Clear()

func (*CodeSyntaxLayer) ClearBackgroundColor

func (l *CodeSyntaxLayer) ClearBackgroundColor()

func (*CodeSyntaxLayer) ClearBorderColor

func (l *CodeSyntaxLayer) ClearBorderColor()

func (*CodeSyntaxLayer) ClearColor

func (l *CodeSyntaxLayer) ClearColor()

func (*CodeSyntaxLayer) Color

func (l *CodeSyntaxLayer) Color() *Color

func (*CodeSyntaxLayer) Data

func (l *CodeSyntaxLayer) Data() interface{}

func (*CodeSyntaxLayer) SetBackgroundColor

func (l *CodeSyntaxLayer) SetBackgroundColor(color Color)

func (*CodeSyntaxLayer) SetBorderColor

func (l *CodeSyntaxLayer) SetBorderColor(color Color)

func (*CodeSyntaxLayer) SetColor

func (l *CodeSyntaxLayer) SetColor(color Color)

func (*CodeSyntaxLayer) SetData

func (l *CodeSyntaxLayer) SetData(data interface{})

func (*CodeSyntaxLayer) SpanAt

func (l *CodeSyntaxLayer) SpanAt(runeIndex int) *interval.IntData

func (*CodeSyntaxLayer) Spans

func (*CodeSyntaxLayer) UpdateSpans

func (l *CodeSyntaxLayer) UpdateSpans(runeCount int, edits []TextBoxEdit)

type CodeSyntaxLayers

type CodeSyntaxLayers []*CodeSyntaxLayer

func (*CodeSyntaxLayers) Clear

func (l *CodeSyntaxLayers) Clear()

func (*CodeSyntaxLayers) Get

func (l *CodeSyntaxLayers) Get(idx int) *CodeSyntaxLayer

type Color

type Color struct {
	R, G, B, A float32
}

func ColorFromHex

func ColorFromHex(hex uint32) Color

func (Color) MulRGB

func (c Color) MulRGB(s float32) Color

func (Color) Saturate

func (c Color) Saturate() Color

type Container

type Container interface {
	Parent
	Relayout()
	Redraw()
	ChildCount() int
	ChildIndex(child Control) int
	ChildAt(int) Control
	AddChild(child Control)
	AddChildAt(index int, child Control)
	RemoveChild(child Control)
	RemoveChildAt(index int)
	RemoveAll()
	Padding() math.Spacing
	SetPadding(math.Spacing)
}

func CommonAncestor

func CommonAncestor(a, b Control) Container

type Control

type Control interface {
	Layout(math.Rect)
	Draw() Canvas
	Bounds() math.Rect
	Parent() Container
	SetParent(Container)
	Attached() bool
	Attach()
	Detach()
	DesiredSize(min, max math.Size) math.Size
	Margin() math.Spacing
	SetMargin(math.Spacing)
	IsVisible() bool
	SetVisible(bool)
	ContainsPoint(math.Point) bool
	IsMouseOver() bool
	IsMouseDown(button MouseButton) bool

	Click(MouseEvent) (consume bool)
	DoubleClick(MouseEvent) (consume bool)
	KeyPress(KeyboardEvent) (consume bool)
	KeyStroke(KeyStrokeEvent) (consume bool)
	MouseScroll(MouseEvent) (consume bool)

	MouseMove(MouseEvent)
	MouseEnter(MouseEvent)
	MouseExit(MouseEvent)
	MouseDown(MouseEvent)
	MouseUp(MouseEvent)
	KeyDown(KeyboardEvent)
	KeyUp(KeyboardEvent)
	KeyRepeat(KeyboardEvent)

	OnAttach(func()) EventSubscription
	OnDetach(func()) EventSubscription
	OnClick(func(MouseEvent)) EventSubscription
	OnDoubleClick(func(MouseEvent)) EventSubscription
	OnKeyPress(func(KeyboardEvent)) EventSubscription
	OnKeyStroke(func(KeyStrokeEvent)) EventSubscription
	OnMouseMove(func(MouseEvent)) EventSubscription
	OnMouseEnter(func(MouseEvent)) EventSubscription
	OnMouseExit(func(MouseEvent)) EventSubscription
	OnMouseDown(func(MouseEvent)) EventSubscription
	OnMouseUp(func(MouseEvent)) EventSubscription
	OnMouseScroll(func(MouseEvent)) EventSubscription
	OnKeyDown(func(KeyboardEvent)) EventSubscription
	OnKeyUp(func(KeyboardEvent)) EventSubscription
	OnKeyRepeat(func(KeyboardEvent)) EventSubscription
}

func FindControl

func FindControl(root Control, test func(Control) bool) Control

type ControlList

type ControlList []Control

func (ControlList) Contains

func (l ControlList) Contains(c Control) bool

type ControlPoint

type ControlPoint struct {
	C Control
	P math.Point
}

type ControlPointList

type ControlPointList []ControlPoint

func ControlsUnder

func ControlsUnder(p math.Point, c Parent) ControlPointList

func TopControlsUnder

func TopControlsUnder(p math.Point, c Parent) ControlPointList

func (ControlPointList) Contains

func (l ControlPointList) Contains(c Control) bool

func (ControlPointList) Find

func (l ControlPointList) Find(c Control) (math.Point, bool)

type DefaultAdapter

type DefaultAdapter struct {
	AdapterBase
	// contains filtered or unexported fields
}

func CreateDefaultAdapter

func CreateDefaultAdapter() *DefaultAdapter

func (*DefaultAdapter) Count

func (a *DefaultAdapter) Count() int

func (*DefaultAdapter) Create

func (a *DefaultAdapter) Create(theme Theme, index int) Control

func (*DefaultAdapter) Data

func (a *DefaultAdapter) Data() interface{}

func (*DefaultAdapter) IdOf

func (a *DefaultAdapter) IdOf(data interface{}) AdapterItemId

func (*DefaultAdapter) ItemId

func (a *DefaultAdapter) ItemId(index int) AdapterItemId

func (*DefaultAdapter) ItemIndex

func (a *DefaultAdapter) ItemIndex(id AdapterItemId) int

func (*DefaultAdapter) ItemSize

func (a *DefaultAdapter) ItemSize(theme Theme) math.Size

func (*DefaultAdapter) SetData

func (a *DefaultAdapter) SetData(data interface{})

func (*DefaultAdapter) SetItemSize

func (a *DefaultAdapter) SetItemSize(s math.Size)

func (*DefaultAdapter) SetItemSizeAsLargest

func (a *DefaultAdapter) SetItemSizeAsLargest(theme Theme)

func (*DefaultAdapter) SetStyleLabel

func (a *DefaultAdapter) SetStyleLabel(f func(Theme, Label))

func (*DefaultAdapter) ValueOf

func (a *DefaultAdapter) ValueOf(id AdapterItemId) interface{}

type Driver

type Driver interface {
	// Events returns the event queue for the UI. The application should pull each
	// func from the returned chan and execute it on the main UI go-routine. The
	// application is free to write additional funcs to this chan in order for
	// them to be executed on the main UI go-routine.
	Events() chan func()
	Terminate()
	SetClipboard(str string)
	GetClipboard() (string, error)

	// CreateFont loads a font from the provided TrueType bytes.
	CreateFont(data []byte, size int) (Font, error)

	CreateViewport(width, height int, name string) Viewport
	CreateCanvas(math.Size) Canvas
	CreateTexture(img image.Image, pixelsPerDip float32) Texture
}
type DropDownList interface {
	Focusable
	Container
	SetBubbleOverlay(BubbleOverlay)
	BubbleOverlay() BubbleOverlay
	Adapter() Adapter
	SetAdapter(Adapter)
	BorderPen() Pen
	SetBorderPen(Pen)
	BackgroundBrush() Brush
	SetBackgroundBrush(Brush)
	Selected() AdapterItemId
	Select(AdapterItemId)
	OnSelectionChanged(func(AdapterItemId)) EventSubscription
	OnShowList(func()) EventSubscription
	OnHideList(func()) EventSubscription
}

type Event

type Event interface {
	Fire(args ...interface{})
	Listen(interface{}) EventSubscription
	ParameterTypes() []reflect.Type
}

func CreateChanneledEvent

func CreateChanneledEvent(signature interface{}, channel chan func()) Event

func CreateEvent

func CreateEvent(signature interface{}) Event

type EventBase

type EventBase struct {
	// contains filtered or unexported fields
}

func (*EventBase) Fire

func (e *EventBase) Fire(args ...interface{})

func (*EventBase) InvokeListeners

func (e *EventBase) InvokeListeners(args []interface{})

func (*EventBase) Listen

func (e *EventBase) Listen(listener interface{}) EventSubscription

Event compliance

func (*EventBase) ParameterTypes

func (e *EventBase) ParameterTypes() []reflect.Type

func (*EventBase) String

func (e *EventBase) String() string

func (*EventBase) VerifyArguments

func (e *EventBase) VerifyArguments(args []interface{})

func (*EventBase) VerifySignature

func (e *EventBase) VerifySignature(argTys []reflect.Type, isVariadic bool)

type EventListener

type EventListener struct {
	Id       int
	Function reflect.Value
}

type EventSubscription

type EventSubscription interface {
	Unlisten()
}

type FilteredListAdapter

type FilteredListAdapter struct {
	AdapterBase
	// contains filtered or unexported fields
}

func (*FilteredListAdapter) Count

func (a *FilteredListAdapter) Count() int

func (*FilteredListAdapter) Create

func (a *FilteredListAdapter) Create(theme Theme, index int) Control

func (*FilteredListAdapter) Item

func (*FilteredListAdapter) ItemId

func (a *FilteredListAdapter) ItemId(index int) AdapterItemId

func (*FilteredListAdapter) ItemIndex

func (a *FilteredListAdapter) ItemIndex(id AdapterItemId) int

func (*FilteredListAdapter) ItemSize

func (a *FilteredListAdapter) ItemSize(theme Theme) math.Size

Adapter compliance

func (*FilteredListAdapter) Len

func (a *FilteredListAdapter) Len() int

sort.Interface compliance

func (*FilteredListAdapter) Less

func (a *FilteredListAdapter) Less(i, j int) bool

func (*FilteredListAdapter) SetItems

func (a *FilteredListAdapter) SetItems(items []FilteredListItem)

func (*FilteredListAdapter) Sort

func (a *FilteredListAdapter) Sort(partial string)

func (*FilteredListAdapter) Swap

func (a *FilteredListAdapter) Swap(i, j int)

type FilteredListItem

type FilteredListItem struct {
	Name string
	Data interface{}
}

type FocusController

type FocusController struct {
	// contains filtered or unexported fields
}

func CreateFocusController

func CreateFocusController(window Window) *FocusController

func (*FocusController) Focus

func (c *FocusController) Focus() Focusable

func (*FocusController) FocusNext

func (c *FocusController) FocusNext()

func (*FocusController) FocusPrev

func (c *FocusController) FocusPrev()

func (*FocusController) Focusable

func (c *FocusController) Focusable(ctrl Control) Focusable

func (*FocusController) NextChildFocusable

func (c *FocusController) NextChildFocusable(p Container, after Control, forwards bool) Focusable

func (*FocusController) NextFocusable

func (c *FocusController) NextFocusable(after Control, forwards bool) Focusable

func (*FocusController) SetFocus

func (c *FocusController) SetFocus(f Focusable)

func (*FocusController) SetFocusCount

func (c *FocusController) SetFocusCount() int

type Focusable

type Focusable interface {
	Control

	IsFocusable() bool
	HasFocus() bool

	GainedFocus()
	LostFocus()

	OnGainedFocus(func()) EventSubscription
	OnLostFocus(func()) EventSubscription
}

type Font

type Font interface {
	LoadGlyphs(first, last rune)
	Size() int
	GlyphMaxSize() math.Size
	Measure(string) math.Size
	MeasureRunes([]rune) math.Size
	LayoutRunes(offsets []math.Point, runes []rune, alignRect math.Rect, h HorizontalAlignment, v VerticalAlignment)
}

type HorizontalAlignment

type HorizontalAlignment int
const (
	AlignLeft HorizontalAlignment = iota
	AlignCenter
	AlignRight
)

type Image

type Image interface {
	Control
	Texture() Texture
	SetTexture(Texture)
	Polygon() (Polygon, Pen, Brush)
	SetPolygon(Polygon, Pen, Brush)
	BorderPen() Pen
	SetBorderPen(Pen)
	BackgroundBrush() Brush
	SetBackgroundBrush(Brush)
	ScalingMode() ScalingMode
	SetScalingMode(ScalingMode)
	SetExplicitSize(math.Size)
	AspectMode() AspectMode
	SetAspectMode(AspectMode)
	PixelAt(math.Point) (math.Point, bool)
}

type KeyStrokeEvent

type KeyStrokeEvent struct {
	Character rune
	Modifier  KeyboardModifier
}

type KeyboardController

type KeyboardController struct {
	// contains filtered or unexported fields
}

func CreateKeyboardController

func CreateKeyboardController(w Window) *KeyboardController

type KeyboardEvent

type KeyboardEvent struct {
	Key      KeyboardKey
	Modifier KeyboardModifier
}

type KeyboardKey

type KeyboardKey int
const (
	KeyUnknown KeyboardKey = iota
	KeySpace
	KeyApostrophe
	KeyComma
	KeyMinus
	KeyPeriod
	KeySlash
	Key0
	Key1
	Key2
	Key3
	Key4
	Key5
	Key6
	Key7
	Key8
	Key9
	KeySemicolon
	KeyEqual
	KeyA
	KeyB
	KeyC
	KeyD
	KeyE
	KeyF
	KeyG
	KeyH
	KeyI
	KeyJ
	KeyK
	KeyL
	KeyM
	KeyN
	KeyO
	KeyP
	KeyQ
	KeyR
	KeyS
	KeyT
	KeyU
	KeyV
	KeyW
	KeyX
	KeyY
	KeyZ
	KeyLeftBracket
	KeyBackslash
	KeyRightBracket
	KeyGraveAccent
	KeyWorld1
	KeyWorld2
	KeyEscape
	KeyEnter
	KeyTab
	KeyBackspace
	KeyInsert
	KeyDelete
	KeyRight
	KeyLeft
	KeyDown
	KeyUp
	KeyPageUp
	KeyPageDown
	KeyHome
	KeyEnd
	KeyCapsLock
	KeyScrollLock
	KeyNumLock
	KeyPrintScreen
	KeyPause
	KeyF1
	KeyF2
	KeyF3
	KeyF4
	KeyF5
	KeyF6
	KeyF7
	KeyF8
	KeyF9
	KeyF10
	KeyF11
	KeyF12
	KeyKp0
	KeyKp1
	KeyKp2
	KeyKp3
	KeyKp4
	KeyKp5
	KeyKp6
	KeyKp7
	KeyKp8
	KeyKp9
	KeyKpDecimal
	KeyKpDivide
	KeyKpMultiply
	KeyKpSubtract
	KeyKpAdd
	KeyKpEnter
	KeyKpEqual
	KeyLeftShift
	KeyLeftControl
	KeyLeftAlt
	KeyLeftSuper
	KeyRightShift
	KeyRightControl
	KeyRightAlt
	KeyRightSuper
	KeyMenu
	KeyLast
)

type KeyboardModifier

type KeyboardModifier int
const (
	ModNone    KeyboardModifier = 0
	ModShift   KeyboardModifier = 1
	ModControl KeyboardModifier = 2
	ModAlt     KeyboardModifier = 4
	ModSuper   KeyboardModifier = 8
)

func (KeyboardModifier) Alt

func (m KeyboardModifier) Alt() bool

func (KeyboardModifier) Control

func (m KeyboardModifier) Control() bool

func (KeyboardModifier) Shift

func (m KeyboardModifier) Shift() bool

func (KeyboardModifier) Super

func (m KeyboardModifier) Super() bool

type Label

type Label interface {
	Control
	Text() string
	SetText(string)
	Color() Color
	SetColor(Color)
	Multiline() bool
	SetMultiline(bool)
	SetHorizontalAlignment(HorizontalAlignment)
	HorizontalAlignment() HorizontalAlignment
	SetVerticalAlignment(VerticalAlignment)
	VerticalAlignment() VerticalAlignment
}

type LinearLayout

type LinearLayout interface {
	Control
	Container
	Orientation() Orientation
	SetOrientation(Orientation)
	HorizontalAlignment() HorizontalAlignment
	SetHorizontalAlignment(HorizontalAlignment)
	VerticalAlignment() VerticalAlignment
	SetVerticalAlignment(VerticalAlignment)
	BorderPen() Pen
	SetBorderPen(Pen)
	BackgroundBrush() Brush
	SetBackgroundBrush(Brush)
}

type List

type List interface {
	Focusable
	Parent
	Adapter() Adapter
	SetAdapter(Adapter)
	SetOrientation(Orientation)
	Orientation() Orientation
	BorderPen() Pen
	SetBorderPen(Pen)
	BackgroundBrush() Brush
	SetBackgroundBrush(Brush)
	ScrollTo(AdapterItemId)
	IsItemVisible(AdapterItemId) bool
	Item(AdapterItemId) Control
	Selected() AdapterItemId
	Select(AdapterItemId)
	OnSelectionChanged(func(AdapterItemId)) EventSubscription
	OnItemClicked(func(MouseEvent, AdapterItemId)) EventSubscription
}

type MouseButton

type MouseButton int
const (
	MouseButtonLeft MouseButton = iota
	MouseButtonMiddle
	MouseButtonRight
)

type MouseController

type MouseController struct {
	// contains filtered or unexported fields
}

func CreateMouseController

func CreateMouseController(w Window, focusController *FocusController) *MouseController

type MouseEvent

type MouseEvent struct {
	Button           MouseButton
	Point            math.Point // Local to the event receiver
	WindowPoint      math.Point
	Window           Window
	ScrollX, ScrollY int
	Modifier         KeyboardModifier
}

type Orientation

type Orientation int
const (
	Vertical Orientation = iota
	Horizontal
)

func (Orientation) Flip

func (o Orientation) Flip() Orientation

func (Orientation) Horizontal

func (o Orientation) Horizontal() bool

func (Orientation) Major

func (o Orientation) Major(x, y int) int

func (Orientation) Minor

func (o Orientation) Minor(x, y int) int

func (Orientation) Vertical

func (o Orientation) Vertical() bool

type PanelHolder

type PanelHolder interface {
	Control
	AddPanel(panel Control, name string)
	AddPanelAt(panel Control, name string, index int)
	RemovePanel(panel Control)
	Select(int)
	PanelCount() int
	PanelIndex(Control) int
	Panel(int) Control
	Tab(int) Control
}

type Parent

type Parent interface {
	Children() []Control
}

type ParentPoint

type ParentPoint struct {
	C Parent
	P math.Point
}

type Pen

type Pen struct {
	Width float32
	Color Color
}
var DefaultPen Pen = CreatePen(1.0, Black)
var TransparentPen Pen = CreatePen(0.0, Transparent)
var WhitePen Pen = CreatePen(1.0, White)

func CreatePen

func CreatePen(width float32, color Color) Pen

type Polygon

type Polygon []PolygonVertex

type PolygonVertex

type PolygonVertex struct {
	Position      math.Point
	RoundedRadius float32
}

type ProgressBar

type ProgressBar interface {
	Control
	SetDesiredSize(math.Size)
	SetProgress(int)
	Progress() int
	SetTarget(int)
	Target() int
}

type ScalingMode

type ScalingMode int
const (
	Scaling1to1 ScalingMode = iota
	ScalingExpandGreedy
	ScalingExplicitSize
)

type ScrollBar

type ScrollBar interface {
	Control

	OnScroll(func(from, to int)) EventSubscription
	ScrollPosition() (from, to int)
	SetScrollPosition(from, to int)
	ScrollLimit() int
	SetScrollLimit(l int)
	AutoHide() bool
	SetAutoHide(l bool)
	Orientation() Orientation
	SetOrientation(Orientation)
}

type ScrollLayout

type ScrollLayout interface {
	Control
	Parent
	SetChild(Control)
	Child() Control
	SetScrollAxis(horizontal, vertical bool)
	ScrollAxis() (horizontal, vertical bool)
	BorderPen() Pen
	SetBorderPen(Pen)
	BackgroundBrush() Brush
	SetBackgroundBrush(Brush)
}

type SelectionTransform

type SelectionTransform func(int) int

type SimpleEvent

type SimpleEvent struct {
	EventBase
}

type SplitterLayout

type SplitterLayout interface {
	Control
	Container
	ChildWeight(Control) float32
	SetChildWeight(Control, float32)
	Orientation() Orientation
	SetOrientation(Orientation)
}

type Stringer

type Stringer interface {
	String() string
}

type TextBox

type TextBox interface {
	Focusable
	OnSelectionChanged(func()) EventSubscription
	OnTextChanged(func([]TextBoxEdit)) EventSubscription
	Padding() math.Spacing
	SetPadding(math.Spacing)
	Runes() []rune
	Text() string
	SetText(string)
	Font() Font
	SetFont(Font)
	Multiline() bool
	SetMultiline(bool)
	DesiredWidth() int
	SetDesiredWidth(desiredWidth int)
	TextColor() Color
	SetTextColor(Color)
	Select(TextSelectionList)
	SelectAll()
	Carets() []int
	RuneIndexAt(p math.Point) (idx int, found bool)
	TextAt(s, e int) string
	WordAt(runeIndex int) string
	ScrollToLine(int)
	ScrollToRune(int)
	LineIndex(runeIndex int) int
	LineStart(line int) int
	LineEnd(line int) int
}

type TextBoxController

type TextBoxController struct {
	// contains filtered or unexported fields
}

func CreateTextBoxController

func CreateTextBoxController() *TextBoxController

func (*TextBoxController) AddCaret

func (t *TextBoxController) AddCaret(c int)

func (*TextBoxController) AddCarets

func (t *TextBoxController) AddCarets(transform SelectionTransform)

func (*TextBoxController) AddCaretsDown

func (t *TextBoxController) AddCaretsDown()

func (*TextBoxController) AddCaretsUp

func (t *TextBoxController) AddCaretsUp()

func (*TextBoxController) AddSelection

func (t *TextBoxController) AddSelection(s TextSelection)

func (*TextBoxController) Backspace

func (t *TextBoxController) Backspace()

func (*TextBoxController) Caret

func (t *TextBoxController) Caret(i int) int

func (*TextBoxController) Carets

func (t *TextBoxController) Carets() []int

func (*TextBoxController) ClearSelections

func (t *TextBoxController) ClearSelections()

func (*TextBoxController) Delete

func (t *TextBoxController) Delete()

func (*TextBoxController) Deselect

func (t *TextBoxController) Deselect(moveCaretToStart bool) (deselected bool)

func (*TextBoxController) FirstCaret

func (t *TextBoxController) FirstCaret() int

func (*TextBoxController) FirstSelection

func (t *TextBoxController) FirstSelection() TextSelection

func (*TextBoxController) GrowSelections

func (t *TextBoxController) GrowSelections(transform SelectionTransform)

func (*TextBoxController) IndentSelection

func (t *TextBoxController) IndentSelection(tabWidth int)

func (*TextBoxController) IndexDown

func (t *TextBoxController) IndexDown(i int) int

func (*TextBoxController) IndexEnd

func (t *TextBoxController) IndexEnd(i int) int

func (*TextBoxController) IndexFirst

func (t *TextBoxController) IndexFirst(i int) int

func (*TextBoxController) IndexHome

func (t *TextBoxController) IndexHome(i int) int

func (*TextBoxController) IndexLast

func (t *TextBoxController) IndexLast(i int) int

func (*TextBoxController) IndexLeft

func (t *TextBoxController) IndexLeft(i int) int

func (*TextBoxController) IndexRight

func (t *TextBoxController) IndexRight(i int) int

func (*TextBoxController) IndexUp

func (t *TextBoxController) IndexUp(i int) int

func (*TextBoxController) IndexWordLeft

func (t *TextBoxController) IndexWordLeft(i int) int

func (*TextBoxController) IndexWordRight

func (t *TextBoxController) IndexWordRight(i int) int

func (*TextBoxController) LastCaret

func (t *TextBoxController) LastCaret() int

func (*TextBoxController) LastSelection

func (t *TextBoxController) LastSelection() TextSelection

func (*TextBoxController) Line

func (t *TextBoxController) Line(i int) string

func (*TextBoxController) LineAndRow

func (t *TextBoxController) LineAndRow(index int) (line, row int)

func (*TextBoxController) LineCount

func (t *TextBoxController) LineCount() int

func (*TextBoxController) LineEnd

func (t *TextBoxController) LineEnd(i int) int

func (*TextBoxController) LineIndent

func (t *TextBoxController) LineIndent(i int) int

func (*TextBoxController) LineIndex

func (t *TextBoxController) LineIndex(p int) int

func (*TextBoxController) LineRunes

func (t *TextBoxController) LineRunes(i int) []rune

func (*TextBoxController) LineStart

func (t *TextBoxController) LineStart(i int) int

func (*TextBoxController) MoveDown

func (t *TextBoxController) MoveDown()

func (*TextBoxController) MoveEnd

func (t *TextBoxController) MoveEnd()

func (*TextBoxController) MoveFirst

func (t *TextBoxController) MoveFirst()

func (*TextBoxController) MoveHome

func (t *TextBoxController) MoveHome()

func (*TextBoxController) MoveLast

func (t *TextBoxController) MoveLast()

func (*TextBoxController) MoveLeft

func (t *TextBoxController) MoveLeft()

func (*TextBoxController) MoveLeftByWord

func (t *TextBoxController) MoveLeftByWord()

func (*TextBoxController) MoveRight

func (t *TextBoxController) MoveRight()

func (*TextBoxController) MoveRightByWord

func (t *TextBoxController) MoveRightByWord()

func (*TextBoxController) MoveSelections

func (t *TextBoxController) MoveSelections(transform SelectionTransform)

func (*TextBoxController) MoveUp

func (t *TextBoxController) MoveUp()

func (*TextBoxController) OnSelectionChanged

func (t *TextBoxController) OnSelectionChanged(f func()) EventSubscription

func (*TextBoxController) OnTextChanged

func (t *TextBoxController) OnTextChanged(f func([]TextBoxEdit)) EventSubscription

func (*TextBoxController) Replace

func (t *TextBoxController) Replace(f func(sel TextSelection) string)

func (*TextBoxController) ReplaceAll

func (t *TextBoxController) ReplaceAll(str string)

func (*TextBoxController) ReplaceAllRunes

func (t *TextBoxController) ReplaceAllRunes(str []rune)

func (*TextBoxController) ReplaceAt

func (t *TextBoxController) ReplaceAt(text []rune, s, e int, replacement []rune) ([]rune, TextBoxEdit)

func (*TextBoxController) ReplaceRunes

func (t *TextBoxController) ReplaceRunes(f func(sel TextSelection) []rune)

func (*TextBoxController) ReplaceWithNewline

func (t *TextBoxController) ReplaceWithNewline()

func (*TextBoxController) ReplaceWithNewlineKeepIndent

func (t *TextBoxController) ReplaceWithNewlineKeepIndent()

func (*TextBoxController) RestoreNextSelections

func (t *TextBoxController) RestoreNextSelections()

func (*TextBoxController) RestorePreviousSelections

func (t *TextBoxController) RestorePreviousSelections()

func (*TextBoxController) RuneInWord

func (t *TextBoxController) RuneInWord(r rune) bool

func (*TextBoxController) SelectAll

func (t *TextBoxController) SelectAll()

func (*TextBoxController) SelectDown

func (t *TextBoxController) SelectDown()

func (*TextBoxController) SelectEnd

func (t *TextBoxController) SelectEnd()

func (*TextBoxController) SelectFirst

func (t *TextBoxController) SelectFirst()

func (*TextBoxController) SelectHome

func (t *TextBoxController) SelectHome()

func (*TextBoxController) SelectLast

func (t *TextBoxController) SelectLast()

func (*TextBoxController) SelectLeft

func (t *TextBoxController) SelectLeft()

func (*TextBoxController) SelectLeftByWord

func (t *TextBoxController) SelectLeftByWord()

func (*TextBoxController) SelectRight

func (t *TextBoxController) SelectRight()

func (*TextBoxController) SelectRightByWord

func (t *TextBoxController) SelectRightByWord()

func (*TextBoxController) SelectUp

func (t *TextBoxController) SelectUp()

func (*TextBoxController) Selection

func (t *TextBoxController) Selection(i int) TextSelection

func (*TextBoxController) SelectionCount

func (t *TextBoxController) SelectionCount() int

func (*TextBoxController) SelectionLineText

func (t *TextBoxController) SelectionLineText(i int) string

func (*TextBoxController) SelectionText

func (t *TextBoxController) SelectionText(i int) string

func (*TextBoxController) Selections

func (t *TextBoxController) Selections() TextSelectionList

func (*TextBoxController) SetCaret

func (t *TextBoxController) SetCaret(c int)

func (*TextBoxController) SetSelection

func (t *TextBoxController) SetSelection(s TextSelection)

func (*TextBoxController) SetSelections

func (t *TextBoxController) SetSelections(s TextSelectionList)

func (*TextBoxController) SetText

func (t *TextBoxController) SetText(str string)

func (*TextBoxController) SetTextEdits

func (t *TextBoxController) SetTextEdits(text []rune, edits []TextBoxEdit)

func (*TextBoxController) SetTextRunes

func (t *TextBoxController) SetTextRunes(text []rune)

func (*TextBoxController) StoreCaretLocations

func (t *TextBoxController) StoreCaretLocations()

func (*TextBoxController) Text

func (t *TextBoxController) Text() string

func (*TextBoxController) TextRange

func (t *TextBoxController) TextRange(s, e int) string

func (*TextBoxController) TextRunes

func (t *TextBoxController) TextRunes() []rune

func (*TextBoxController) UnindentSelection

func (t *TextBoxController) UnindentSelection(tabWidth int)

func (*TextBoxController) WordAt

func (t *TextBoxController) WordAt(runeIdx int) (s, e int)

type TextBoxEdit

type TextBoxEdit struct {
	At    int
	Delta int
}

type TextSelection

type TextSelection struct {
	// contains filtered or unexported fields
}

func CreateTextSelection

func CreateTextSelection(start, end int, caretAtStart bool) TextSelection

func (TextSelection) Caret

func (i TextSelection) Caret() int

func (TextSelection) CaretAtStart

func (i TextSelection) CaretAtStart() bool

func (TextSelection) End

func (i TextSelection) End() int

func (TextSelection) First

func (i TextSelection) First() int

func (TextSelection) From

func (i TextSelection) From() int

func (TextSelection) Last

func (i TextSelection) Last() int

func (TextSelection) Length

func (i TextSelection) Length() int

func (TextSelection) Offset

func (t TextSelection) Offset(i int) TextSelection

func (TextSelection) Range

func (i TextSelection) Range() (start, end int)

func (TextSelection) Span

func (i TextSelection) Span() (start, end uint64)

func (TextSelection) Start

func (i TextSelection) Start() int

type TextSelectionList

type TextSelectionList []TextSelection

func (TextSelectionList) Cap

func (l TextSelectionList) Cap() int

func (TextSelectionList) Copy

func (l TextSelectionList) Copy(to, from, count int)

func (TextSelectionList) GetInterval

func (l TextSelectionList) GetInterval(index int) (start, end uint64)

func (*TextSelectionList) GrowTo

func (l *TextSelectionList) GrowTo(length, capacity int)

func (TextSelectionList) Len

func (l TextSelectionList) Len() int

func (TextSelectionList) MergeData

func (l TextSelectionList) MergeData(index int, i interval.Node)

func (TextSelectionList) SetInterval

func (l TextSelectionList) SetInterval(index int, start, end uint64)

func (*TextSelectionList) SetLen

func (l *TextSelectionList) SetLen(len int)

func (TextSelectionList) Transform

func (l TextSelectionList) Transform(from int, transform func(i int) int) TextSelectionList

func (TextSelectionList) TransformCarets

func (l TextSelectionList) TransformCarets(from int, transform func(i int) int) TextSelectionList

type Texture

type Texture interface {
	Image() image.Image
	Size() math.Size
	SizePixels() math.Size
	FlipY() bool
	SetFlipY(bool)
	AddRef()
	Release()
}

type Theme

type Theme interface {
	Driver() Driver
	DefaultFont() Font
	SetDefaultFont(Font)
	CreateBubbleOverlay() BubbleOverlay
	CreateButton() Button
	CreateCodeEditor() CodeEditor
	CreateDropDownList() DropDownList
	CreateImage() Image
	CreateLabel() Label
	CreateLinearLayout() LinearLayout
	CreateList() List
	CreatePanelHolder() PanelHolder
	CreateProgressBar() ProgressBar
	CreateScrollBar() ScrollBar
	CreateScrollLayout() ScrollLayout
	CreateSplitterLayout() SplitterLayout
	CreateTextBox() TextBox
	CreateTree() Tree
	CreateWindow(width, height int, title string) Window
}

type ToolTipController

type ToolTipController struct {
	// contains filtered or unexported fields
}

func CreateToolTipController

func CreateToolTipController(bubbleOverlay BubbleOverlay, driver Driver) *ToolTipController

func (*ToolTipController) AddToolTip

func (c *ToolTipController) AddToolTip(control Control, delaySeconds float32, creator ToolTipCreator)

func (*ToolTipController) ShowToolTip

func (c *ToolTipController) ShowToolTip(toolTip Control, at math.Point)

type ToolTipCreator

type ToolTipCreator func(math.Point) Control

type Tree

type Tree interface {
	Focusable
	SetAdapter(TreeAdapter)
	Adapter() TreeAdapter

	// Show makes the item with the specified id visible, expanding the tree if
	// necessary.
	Show(AdapterItemId)

	// ExpandAll expands all tree nodes.
	ExpandAll()

	// CollapseAll collapses all tree nodes.
	CollapseAll()

	Selected() AdapterItemId
	Select(AdapterItemId)
	OnSelectionChanged(func(AdapterItemId)) EventSubscription
}

type TreeAdapter

type TreeAdapter interface {
	TreeAdapterNode
	ItemSize(theme Theme) math.Size
	OnDataChanged(func()) EventSubscription
	OnDataReplaced(func()) EventSubscription
}

type TreeAdapterNode

type TreeAdapterNode interface {
	Count() int
	ItemId(index int) AdapterItemId
	ItemIndex(id AdapterItemId) int
	Create(theme Theme, index int) Control
	CreateNode(index int) TreeAdapterNode
}

type VerticalAlignment

type VerticalAlignment int
const (
	AlignTop VerticalAlignment = iota
	AlignMiddle
	AlignBottom
)

type Viewer

type Viewer interface {
	View(t Theme) Control
}

type Viewport

type Viewport interface {
	SizeDips() math.Size
	SizePixels() math.Size
	Title() string
	SetTitle(string)
	Show()
	Hide()
	Close()
	SetCanvas(Canvas)
	OnClose(func()) EventSubscription
	OnResize(func()) EventSubscription
	OnMouseMove(func(MouseEvent)) EventSubscription
	OnMouseEnter(func(MouseEvent)) EventSubscription
	OnMouseExit(func(MouseEvent)) EventSubscription
	OnMouseDown(func(MouseEvent)) EventSubscription
	OnMouseUp(func(MouseEvent)) EventSubscription
	OnMouseScroll(func(MouseEvent)) EventSubscription
	OnKeyDown(func(KeyboardEvent)) EventSubscription
	OnKeyUp(func(KeyboardEvent)) EventSubscription
	OnKeyRepeat(func(KeyboardEvent)) EventSubscription
	OnKeyStroke(func(KeyStrokeEvent)) EventSubscription
}

type Window

type Window interface {
	Container

	Viewport() Viewport
	Title() string
	SetTitle(string)
	Show()
	Hide()
	Close()

	Focus() Focusable
	SetFocus(Control) bool

	Click(MouseEvent)
	DoubleClick(MouseEvent)
	KeyPress(KeyboardEvent)
	KeyStroke(KeyStrokeEvent)

	// Events
	OnClose(func()) EventSubscription
	OnResize(func()) EventSubscription
	OnMouseMove(func(MouseEvent)) EventSubscription
	OnMouseEnter(func(MouseEvent)) EventSubscription
	OnMouseExit(func(MouseEvent)) EventSubscription
	OnMouseDown(func(MouseEvent)) EventSubscription
	OnMouseUp(func(MouseEvent)) EventSubscription
	OnMouseScroll(func(MouseEvent)) EventSubscription
	OnKeyDown(func(KeyboardEvent)) EventSubscription
	OnKeyUp(func(KeyboardEvent)) EventSubscription
	OnKeyRepeat(func(KeyboardEvent)) EventSubscription
	OnKeyStroke(func(KeyStrokeEvent)) EventSubscription
}

func WindowContaining

func WindowContaining(c Control) Window

Directories

Path Synopsis
drivers
gl
Package gxfont provides default fonts.
Package gxfont provides default fonts.
samples
themes

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL