Documentation ¶
Overview ¶
In diesem File befinden sich alle Widgets, die im Zusammenhang mit adagui existieren. Aktuell sind dies:
Container Widgets -----------------
Group Panel ScrollPanel
Einheitliche Flags und Funktionen fuer das Profiling von Programmen.
In diesem File befinden sich alle Widgets, die im Zusammenhang mit adagui existieren. Aktuell sind dies:
Leaf Widgets (GUI bezogen) --------------------------
Button TextButton IconButton RadioButton Checkbox Slider A.k.a. Scrollbar PageButton Label Nur fuer kurze, einzeilige Texte Text (Geplant, wie Label aber fuer groessere Textmengen mit spez. Ausrichtung, waehlbarer Schrift und ev. Scrollbalken)
Index ¶
- Constants
- Variables
- func AddDebugDomain(domain DebugDomain)
- func SetDebugDomain(domain DebugDomain)
- func StartProfiling()
- func StopProfiling()
- type AlignType
- type Animation
- func NewAnimation(d time.Duration, fn func(float64)) *Animation
- func NewColorAnimation(start, stop color.Color, d time.Duration, fn func(color.Color)) *Animation
- func NewPositionAnimation(start, stop geom.Point, d time.Duration, fn func(geom.Point)) *Animation
- func NewSizeAnimation(start, stop geom.Point, d time.Duration, fn func(geom.Point)) *Animation
- type AnimationCurve
- type Border
- type BorderLayout
- type BoxLayout
- type Button
- type CanvasObject
- type CenterLayout
- type Checkbox
- type Circle
- type Container
- type ContainerEmbed
- func (c *ContainerEmbed) Add(n ...Node)
- func (c *ContainerEmbed) Del(n Node)
- func (c *ContainerEmbed) DelAll()
- func (c *ContainerEmbed) Init()
- func (c *ContainerEmbed) MinSize() geom.Point
- func (c *ContainerEmbed) OnChildMarked(child Node, newMarks Marks)
- func (c *ContainerEmbed) Paint(gc *gg.Context)
- func (c *ContainerEmbed) SelectTarget(pt geom.Point) Node
- func (c *ContainerEmbed) SetSize(s geom.Point)
- type DebugDomain
- type Ellipse
- type Embed
- func (m *Embed) Bounds() geom.Rectangle
- func (m *Embed) Contains(pt geom.Point) bool
- func (m *Embed) Enabled() bool
- func (m *Embed) Init()
- func (m *Embed) IsAtFront() bool
- func (m *Embed) Local2Parent(pt geom.Point) geom.Point
- func (m *Embed) Local2Screen(pt geom.Point) geom.Point
- func (m *Embed) LocalBounds() geom.Rectangle
- func (m *Embed) Mark(marks Marks)
- func (m *Embed) Matrix() *geom.Matrix
- func (m *Embed) MinSize() geom.Point
- func (m *Embed) Paint(gc *gg.Context)
- func (m *Embed) Parent2Local(pt geom.Point) geom.Point
- func (m *Embed) ParentBounds() geom.Rectangle
- func (m *Embed) Pos() geom.Point
- func (m *Embed) Rect() geom.Rectangle
- func (m *Embed) Remove()
- func (m *Embed) Rotate(a float64)
- func (m *Embed) RotateAbout(rp geom.Point, a float64)
- func (m *Embed) Scale(sx, sy float64)
- func (m *Embed) ScaleAbout(sp geom.Point, sx, sy float64)
- func (m *Embed) Screen2Local(pt geom.Point) geom.Point
- func (m *Embed) SetEnabled(e bool)
- func (m *Embed) SetMinSize(s geom.Point)
- func (m *Embed) SetPos(p geom.Point)
- func (m *Embed) SetSize(s geom.Point)
- func (m *Embed) SetVisible(v bool)
- func (m *Embed) Size() geom.Point
- func (m *Embed) ToBack()
- func (m *Embed) ToFront()
- func (m *Embed) Translate(dp geom.Point)
- func (m *Embed) Visible() bool
- func (m *Embed) Wrappee() *Embed
- type GridLayout
- type Group
- type IconButton
- type Label
- func (l *Label) Align() AlignType
- func (l *Label) Paint(gc *gg.Context)
- func (l *Label) SetAlign(a AlignType)
- func (l *Label) SetFont(fontFont *fonts.Font)
- func (l *Label) SetFontSize(fontSize float64)
- func (l *Label) SetSize(size geom.Point)
- func (l *Label) SetText(str string)
- func (l *Label) Text() string
- type LayoutManager
- type LeafEmbed
- func (m *LeafEmbed) Local2Parent(pt geom.Point) geom.Point
- func (m *LeafEmbed) Local2Screen(pt geom.Point) geom.Point
- func (m *LeafEmbed) OnChildMarked(child Node, newMarks Marks)
- func (m *LeafEmbed) Paint(gc *gg.Context)
- func (m *LeafEmbed) Parent2Local(pt geom.Point) geom.Point
- func (m *LeafEmbed) Screen2Local(pt geom.Point) geom.Point
- func (m *LeafEmbed) SelectTarget(pt geom.Point) Node
- type Line
- type ListButton
- type Marks
- type Node
- type NullLayout
- type Orientation
- type PaddedLayout
- type Panel
- type Point
- type Polygon
- type PushEmbed
- type RadioButton
- type Rectangle
- type Screen
- type ScrollPanel
- func (p *ScrollPanel) LocalBounds() geom.Rectangle
- func (p *ScrollPanel) Paint(gc *gg.Context)
- func (p *ScrollPanel) SetVirtualSize(sz geom.Point)
- func (p *ScrollPanel) SetXView(vx float64)
- func (p *ScrollPanel) SetYView(vy float64)
- func (p *ScrollPanel) ViewPort() geom.Point
- func (p *ScrollPanel) VirtualSize() geom.Point
- func (p *ScrollPanel) VisibleRange() geom.Point
- type Scrollbar
- type SelectEmbed
- type Separator
- type Shape
- type Slider
- func (s *Slider) Factor() float64
- func (s *Slider) InitValue() float64
- func (s *Slider) OnInputEvent(evt touch.Event)
- func (s *Slider) Paint(gc *gg.Context)
- func (s *Slider) Range() (float64, float64, float64)
- func (s *Slider) SetFactor(f float64)
- func (s *Slider) SetInitValue(v float64)
- func (s *Slider) SetRange(min, max, step float64)
- func (s *Slider) SetSize(size geom.Point)
- func (s *Slider) SetValue(v float64)
- func (s *Slider) Value() float64
- type Spacer
- type StackLayout
- type TabButton
- type TabMenu
- type TabPanel
- type TextButton
- func (b *TextButton) Align() AlignType
- func (b *TextButton) Paint(gc *gg.Context)
- func (b *TextButton) SetAlign(a AlignType)
- func (b *TextButton) SetFont(fontFont *fonts.Font)
- func (b *TextButton) SetFontSize(fontSize float64)
- func (b *TextButton) SetSize(size geom.Point)
- func (b *TextButton) SetText(str string)
- func (b *TextButton) Text() string
- type Window
- type WindowStage
Constants ¶
const ( AnimationRepeatForever = -1 DurationStandard = time.Millisecond * 300 DurationShort = time.Millisecond * 150 )
const ( MarkNeedsMeasure = Marks(1 << 0) MarkNeedsLayout = Marks(1 << 1) MarkNeedsPaint = Marks(1 << 2) MarkNeedsRecalc = Marks(1 << 3) )
Variables ¶
var ( AnimationEaseInOut = animationEaseInOut AnimationEaseIn = animationEaseIn AnimationEaseOut = animationEaseOut AnimationLinear = animationLinear )
var (
Debugf = func(domain DebugDomain, format string, a ...any) {}
)
var (
LayoutProps = PropsMap["Layout"]
)
Functions ¶
func AddDebugDomain ¶ added in v1.1.0
func AddDebugDomain(domain DebugDomain)
func SetDebugDomain ¶ added in v1.1.0
func SetDebugDomain(domain DebugDomain)
func StartProfiling ¶ added in v1.2.1
func StartProfiling()
func StopProfiling ¶ added in v1.2.1
func StopProfiling()
Types ¶
type Animation ¶
type Animation struct { AutoReverse bool Curve AnimationCurve Duration time.Duration RepeatCount int Tick func(float64) }
func NewColorAnimation ¶
func NewPositionAnimation ¶
func NewSizeAnimation ¶
type AnimationCurve ¶
Als nächstes folgen die Typen, mit welchen man Animation in die Bude bringen kann.
type Border ¶
type Border int
Der Typ Border wird fuer die Bezeichnung der vier Bildschirmseiten oder Richtungen verwendet.
type BorderLayout ¶
type BorderLayout struct {
// contains filtered or unexported fields
}
Das BorderLayout ist ein rechtes Monster. Damit können Fenster mit Titel- oder Menuzeile, rechter und linker Randspalte sowie Fusszeile verwaltet werden. Die einzelnen Zeilen können auch leer gelassen werden (verwende nil).
type BoxLayout ¶
type BoxLayout struct {
// contains filtered or unexported fields
}
Die BoxLayouts gibt es in zwei Varianten: horizontal oder vertikal. Alle verwalteten Kinder werden neben oder untereinander angeordnet und auf die gleiche Höhe, resp. gleiche Breite getrimmt. Bei diesem Layout kommen auch die Spacer-Widgets zum Einsatz: sie dehnen sich auf die maximale Breite, resp. Höhe aus, haben aber sonst keinen Inhalt oder Einfluss.
func NewHBoxLayout ¶
func NewVBoxLayout ¶
type Button ¶
Buttons sind neutrale Knoepfe, ohne spezifischen Inhalt, d.h. ohne Text oder Icons. Sie werden selten direkt verwendet, sondern dienen als generische Grundlage fuer die weiter unten definierten Text- oder Icon- Buttons.
func (*Button) OnInputEvent ¶
type CanvasObject ¶
type CenterLayout ¶
type CenterLayout struct{}
CenterLayout zentiert alle Kinder, verändert ihre Grössen jedoch nicht. Auch hier gilt das gleiche wie oben: nur für ein Kind zu verwenden.
type Checkbox ¶
type Checkbox struct { Button // contains filtered or unexported fields }
Checkboxen verhalten sich sehr aehnlich zu RadioButtons, sind jedoch eigen- staendig und nicht Teil einer Gruppe.
func NewCheckbox ¶
func NewCheckboxWithCallback ¶
func (*Checkbox) OnInputEvent ¶
func (*Checkbox) SetChecked ¶
type Container ¶
Dieses Interface implementieren zusaetzlich alle Nodes, welche als Container agieren koennen, d.h. eine Liste von weiteren Nodes fuehren.
type ContainerEmbed ¶
type ContainerEmbed struct { Embed touch.TouchEmbed ChildList *list.List Layout LayoutManager }
Alle GUI-Typen, welche weitere Nodes verwalten können (Fenster, Panels, etc.) müssen dagegen diesen Typ einbetten. Damit kann über die ChildList die angehängten Nodes verwaltet werden. Ebenso kann ein LayoutManager verwendet werden, der für die Platzierung der Nodes zuständig ist. Per Default wird das NullLayout verwendet, d.h. die Kinder müssen per SetPos platziert werden und bleiben an dieser Stelle.
func (*ContainerEmbed) Add ¶
func (c *ContainerEmbed) Add(n ...Node)
func (*ContainerEmbed) Del ¶
func (c *ContainerEmbed) Del(n Node)
func (*ContainerEmbed) DelAll ¶
func (c *ContainerEmbed) DelAll()
func (*ContainerEmbed) Init ¶
func (c *ContainerEmbed) Init()
func (*ContainerEmbed) MinSize ¶
func (c *ContainerEmbed) MinSize() geom.Point
func (*ContainerEmbed) OnChildMarked ¶
func (c *ContainerEmbed) OnChildMarked(child Node, newMarks Marks)
func (*ContainerEmbed) Paint ¶
func (c *ContainerEmbed) Paint(gc *gg.Context)
func (*ContainerEmbed) SelectTarget ¶
func (c *ContainerEmbed) SelectTarget(pt geom.Point) Node
func (*ContainerEmbed) SetSize ¶
func (c *ContainerEmbed) SetSize(s geom.Point)
type DebugDomain ¶ added in v1.1.0
type DebugDomain uint64
const ( Painting DebugDomain = 1 << iota Coordinates Events )
func NewDebugDomain ¶ added in v1.1.0
func NewDebugDomain() DebugDomain
type Ellipse ¶
type Ellipse struct {
Shape
}
Ein allgemeinerer Widget Typ ist die Ellipse.
func NewEllipse ¶
type Embed ¶
type Embed struct { Win *Window Wrapper Node Parent *ContainerEmbed Marks Marks props.PropertyEmbed // contains filtered or unexported fields }
Dieser Typ ist die Basis für alle graphischen Typen von AdaGui. Er kann jedoch nicht direkt verwendet werden, sondern dient als Basis für zwei weitere Embed-Typen (siehe weiter unten), welche für eigene Typen verwendet werden können.
func (*Embed) Contains ¶
Contains ermittelt, ob sich der Punkt pt innerhalb des Widgets befindet. Die Koordianten in pt muessen relativ zum Bezugssystem von m sein.
func (*Embed) Local2Parent ¶
Rechnet die Koordinaten in pt relativ zum Parent-Node um.
func (*Embed) Local2Screen ¶
Rechnet die lokalen Koordianten pt in Bildschirmkoordinaten um.
func (*Embed) LocalBounds ¶
func (*Embed) Parent2Local ¶
Rechnet die Koordinaten in pt vom relativen Bezugsystem des Parent-Nodes zu lokalen Koordinaten um.
func (*Embed) ParentBounds ¶
func (*Embed) Rotate ¶
Ersetzt die aktuelle Rotation des Nodes durch eine Rotation um a um den Mittelpunkt des Nodes.
func (*Embed) RotateAbout ¶
Ersetzt die aktuelle Rotation des Nodes durch eine Rotation um a um den angegebenen Drehpunkt.
func (*Embed) Scale ¶
Ersetzt die aktuelle Skalierung des Nodes durch eine Skalierung um sx, sy. Zentrum der Skalierung ist der Mittelpunkt des Nodes.
func (*Embed) ScaleAbout ¶
Ersetzt die aktuelle Skalierung des Nodes durch eine Skalierung um sx, sy mit sp als Zentrum der Skalierung.
func (*Embed) Screen2Local ¶
Rechnet die Bildschirmkoordinaten pt in lokale Koordianten um.
func (*Embed) SetEnabled ¶ added in v1.2.1
func (*Embed) SetMinSize ¶
func (*Embed) SetVisible ¶
type GridLayout ¶
type GridLayout struct { Cols int // contains filtered or unexported fields }
GridLayout ordnet die Kinder in einer bestimmten, fixen Anzahl Spalten (resp. Zeilen) an. Ueberschreitet die Anzahl der hinzugefuegten Kinder diese Groesse, dann wird eine weitere Zeile (resp. Spalte) erstellt und weitere Kinder analog zur ersten Zeile fortlaufend angeordnet.
type Group ¶
type Group struct {
ContainerEmbed
}
Eine Group ist die einfachste Form eines Containers. Sie dient hauptsaechlich als logisches Sammelbecken fuer Widgets auf dem Screen. Sie hat zwar ein eigenes Koordinatensystem und beherrscht alle Layouts, ist jedoch selber unsichtbar, d.h. dieses Widget hat weder Farbe, Rahmen noch andere optische Merkmale.
func NewGroupPL ¶ added in v1.2.1
func NewGroupPL(parent Container, layout LayoutManager) *Group
type IconButton ¶
type IconButton struct { Button // contains filtered or unexported fields }
Der IconButton stellt ein kleines Bild dar, welches als PNG-Datei beim Erstellen des Buttons angegeben wird. Die Groesse des Buttons passt sich der Groess der Bilddatei an.
func NewIconButton ¶
func NewIconButton(imgFile string) *IconButton
func NewIconButtonWithCallback ¶
func NewIconButtonWithCallback(imgFile string, btnData int, callback func(int)) *IconButton
func NewIconButtonWithData ¶
func NewIconButtonWithData(imgFile string, btnData int, data binding.Int) *IconButton
func (*IconButton) DataChanged ¶
func (b *IconButton) DataChanged(data binding.DataItem)
func (*IconButton) OnInputEvent ¶
func (b *IconButton) OnInputEvent(evt touch.Event)
func (*IconButton) Paint ¶
func (b *IconButton) Paint(gc *gg.Context)
type Label ¶
type Label struct { LeafEmbed // contains filtered or unexported fields }
Unter einem Label verstehen wir einfach eine Konserve für Text, kurzen Text!
func NewLabelWithData ¶
func (*Label) SetFont ¶
Die Property-Funktionen SetFont und SetFontSize muessen ueberschrieben werden, da sie ggf. die Groesse des Widgets beeinflussen.
func (*Label) SetFontSize ¶
type LayoutManager ¶
type LayoutManager interface { Layout(childList *list.List, size geom.Point) MinSize(childList *list.List) geom.Point }
LayoutManager eben...
func NewBorderLayout ¶
func NewBorderLayout(top, bottom, left, right Node) LayoutManager
func NewCenterLayout ¶
func NewCenterLayout() LayoutManager
func NewColumnGridLayout ¶
func NewColumnGridLayout(cols int) LayoutManager
Fixiert die Anzahl Spalten des GridLayouts.
func NewMaxLayout ¶
func NewMaxLayout() LayoutManager
func NewRowGridLayout ¶
func NewRowGridLayout(rows int) LayoutManager
Fixiert die Anzahl Zeilen des GridLayouts.
func NewStackLayout ¶
func NewStackLayout() LayoutManager
type LeafEmbed ¶
type LeafEmbed struct { Embed touch.TouchEmbed }
Jeder GUI-Typ, der selber keine weiteren Kinder verwaltet, muss diesen Typ einbetten.
func (*LeafEmbed) Local2Screen ¶
Umrechnungsmethoden fuer Koordinaten.
func (*LeafEmbed) OnChildMarked ¶
type Line ¶ added in v1.1.0
type Line struct { Shape // contains filtered or unexported fields }
Geraden
type ListButton ¶
type ListButton struct { Button Options []string Selected string // contains filtered or unexported fields }
Der Versuch, ein ListButton zu implementieren...
func NewListButton ¶
func NewListButton(options []string) *ListButton
func (*ListButton) OnInputEvent ¶
func (b *ListButton) OnInputEvent(evt touch.Event)
func (*ListButton) Paint ¶
func (b *ListButton) Paint(gc *gg.Context)
func (*ListButton) SelectedIndex ¶
func (b *ListButton) SelectedIndex() int
func (*ListButton) SetOptions ¶
func (b *ListButton) SetOptions(options []string)
func (*ListButton) SetSelectedIndex ¶
func (b *ListButton) SetSelectedIndex(i int)
type Marks ¶
type Marks uint32
func (Marks) NeedsLayout ¶
func (Marks) NeedsMeasure ¶
func (Marks) NeedsPaint ¶
func (Marks) NeedsRecalc ¶
func (*Marks) UnmarkNeedsLayout ¶
func (m *Marks) UnmarkNeedsLayout()
func (*Marks) UnmarkNeedsMeasure ¶
func (m *Marks) UnmarkNeedsMeasure()
func (*Marks) UnmarkNeedsPaint ¶
func (m *Marks) UnmarkNeedsPaint()
func (*Marks) UnmarkNeedsRecalc ¶
func (m *Marks) UnmarkNeedsRecalc()
type Node ¶
type Node interface { Wrappee() *Embed // Bewegt den aufrufenden Node an das Ende, resp. den Anfang der // Node-Liste seines Parents. ToBack() ToFront() IsAtFront() bool // Loescht den aufrufenden Node aus der Node-Liste seines Parents. Remove() // Setzt den Node an die angegebene Stelle, resp. retourniert die Position // des Widgets. Da jedes Widget seine 'Position' grundsätzlich selber // interpretieren kann, ist die Position nur über Methoden veränderbar, // resp. abrufbar. Pos() geom.Point SetPos(p geom.Point) Size() geom.Point SetSize(s geom.Point) MinSize() geom.Point SetMinSize(s geom.Point) // LocalBounds, resp. Bounds liefert das umfassende Rechteck des Nodes // in lokalen Koordinaten. LocalBounds() geom.Rectangle Bounds() geom.Rectangle // ParentBounds, resp. Rect liefert das umfassende Rechteck aus Sicht // des Parent-Nodes. ParentBounds() geom.Rectangle Rect() geom.Rectangle // Ist dieser node sichtbar? Visible() bool SetVisible(v bool) // Ist dieser node aktiv, resp. deaktiviert? Enabled() bool SetEnabled(e bool) // Zeichnet das Widget im Graphik-Kontext von gc. Dabei muss sich das // Widget nicht um irgendwelche Koordinaten kuemmern, sondern kann davon // ausgehen, dass die notwendigen Transformationen durch das // darueberliegende Container-Widget (sofern vorhanden) gemacht wurden. Paint(gc *gg.Context) // Dient der Markierung von Nodes, bspw. um anzuzeigen, dass sie neu // gezeichnet werden muessen. Mark(m Marks) OnChildMarked(child Node, newMarks Marks) OnInputEvent(evt touch.Event) // Retourniert true, falls sich der Punkt pt innerhalb oder auf dem // Node befindet und false andernfalls. Contains(pt geom.Point) bool // Mit SelectTarget kann ermittelt werden, welcher Node sich an der // Position pt befindet. Es kann sein, dass diese Methode 'nil' // zurueck gibt. SelectTarget(pt geom.Point) Node Local2Parent(pt geom.Point) geom.Point Parent2Local(pt geom.Point) geom.Point Local2Screen(pt geom.Point) geom.Point Screen2Local(pt geom.Point) geom.Point // Methoden für die Koordinatentransformationen. // Die Methoden Translate, Rotate und Scale setzen jeweils unabhängig // voneinander eine Matrix, welche die jeweilige Transformation enthält. // Mit Matrix erhält man dann die Transformation, welche sich aus der // Aneinanderreihung von Translate, Rotate und Scale ergibt. Translate(dp geom.Point) Rotate(a float64) RotateAbout(rp geom.Point, a float64) Scale(sx, sy float64) ScaleAbout(sp geom.Point, sx, sy float64) Matrix() *geom.Matrix }
Alle Elemente im Scenegraph des GUI haben dieses Interface zu implementieren.
type NullLayout ¶
type NullLayout struct{}
Mit dem NullLayout werden die verwalteten Nodes per SetPos platziert und werden durch den Container nicht mehr weiter verwaltet. MinSize liefert die maximale Grösse aller verwalteten Nodes.
type Orientation ¶
type Orientation int
Mit dem Typ Orientation koennen horizontale Ausrichtungen gegenueber vertikalen abgegrenzt werden.
const ( Horizontal Orientation = iota Vertical )
type PaddedLayout ¶
type PaddedLayout struct {
// contains filtered or unexported fields
}
Mit PaddedLayout kann sinnvollerweise nur ein Node verwaltet werden, der mit einem konfigurierbaren Abstand auf die ganze Grösse des Containers expandiert wird.
func NewPaddedLayout ¶
func NewPaddedLayout(pads ...float64) *PaddedLayout
Mit den variablen Parametern pads können die Ränder definiert werden. Dabei gilt:
- : verwende das Property 'Padding' a : verwende a für alle Ränder a,b : verwende a für die horizontalen und b für die vertikalen Ränder a,b,c : verwende a für links, b für oben und unten c für rechts a,b,c,d : (dito) und d für den unteren Rand.
type Panel ¶
type Panel struct { ContainerEmbed Image image.Image }
Ein Panel ist eine etwas komplexere Version eines Containers. Im Gegensatz zur Group ist ein Panel auf dem Bildschirm sichtbar. Ueber Properties laesst sich die visuelle Erscheinung beeinflussen. Panels beschneiden ihren Inhalt auf ihre Groesse. Sie koennen eine Hintergrundfarbe oder ein Hitergundbild haben.
type PushEmbed ¶ added in v1.1.0
type PushEmbed struct {
// contains filtered or unexported fields
}
Mit diesem Embed erhaelt ein Widget die Moeglichkeit, "gedrueckt" zu werden.
func (*PushEmbed) DataChanged ¶ added in v1.1.0
Wird autom. aufgerufen, sobald der Wert von 'pushed' veraendert wird.
func (*PushEmbed) Init ¶ added in v1.1.0
Initialisert wird das Embed mit einem Verweis auf das eigentliche Widget und der Moeglichkeit, den Status mit anderen Widgets zu teilen.
func (*PushEmbed) OnInputEvent ¶ added in v1.1.0
Muss vom umschliessenden Widget aufgerufen werden.
type RadioButton ¶
type RadioButton struct { Button // contains filtered or unexported fields }
Der RadioButton ist insofern ein Spezialfall, als er erstens zwei Zustaende haben kann (aktiv und nicht aktiv) und moeglicherweise einer Gruppe von RadioButtons angehoert, von denen nur einer aktiviert sein kann.
func NewRadioButtonWithData ¶
func NewRadioButtonWithData(label string, value int, data binding.Int) *RadioButton
func (*RadioButton) DataChanged ¶
func (b *RadioButton) DataChanged(data binding.DataItem)
func (*RadioButton) OnInputEvent ¶
func (b *RadioButton) OnInputEvent(evt touch.Event)
func (*RadioButton) Paint ¶
func (b *RadioButton) Paint(gc *gg.Context)
type Rectangle ¶
type Rectangle struct {
Shape
}
Und wo es Kreise gibt, da sind auch die Rechtecke nicht weit.
func NewRectangle ¶
type Screen ¶
type Screen struct {
// contains filtered or unexported fields
}
Dies ist die Datenstruktur, welche das TFT-Display aus einer hoeheren Abstraktion beschreibt. Diese Struktur darf es nur einmal (1) in einer Applikation geben.
func CurrentScreen ¶
func CurrentScreen() *Screen
Mit CurrentScreen wird die Referenz auf den aktuellen (einzigen) Bildschirm retourniert. Man könnte dies auch über eine globale Variable lösen.
func NewScreen ¶
func NewScreen(rotation adatft.RotationType) *Screen
Mit NewScreen wird ein neues Screen-Objekt erzeugt und alle technischen Objekte in Zusammenhang mit der Ansteuerung des Bildschirm und Touch- Screens erzeugt. Aktuell darf es nur ein (1) solches Objekt geben - ein mehrfaches Aufrufen von NewScreen führt zu einem Abbruch der Applikation.
func (*Screen) NewWindow ¶
Mit NewWindow wird ein neues Fenster erzeugt. Im Gegensatz zum Screen darf es in einer Applikation beliebig viele Fenster geben, von denen jedoch nur eines sichtbar, resp. aktiv ist.
func (*Screen) Quit ¶
func (s *Screen) Quit()
Mit Quit wird die Applikation (d.h. der MainEvent-Loop) terminiert. Da Run im Main-Thread gestartet wird und während der Laufzeit der Applikation nicht zurückkehrt, muss diese Methode aus einer weiteren Go-Routine (bspw. dem Callback-Handler eines Buttons) aufgerufen werden.
func (*Screen) Run ¶
func (s *Screen) Run()
Mit Run schliesslich wird der MainEvent-Loop der Applikation gestartet, das aktive Fenster wird dargestellt und mit Touch-Events beliefert. Wichtig: diese Methode kehrt nicht zurück, solange die Applikation läuft. Ein Aufruf dieser Methode via Go-Routine ist nicht sinnvoll, da sonst die Applikation gar nie richtig läuft (siehe auch Methode Quit).
func (*Screen) SetWindow ¶
Mit SetWindow wird das übergebene Fenster zum sichtbaren und aktiven Fenster. Nur aktive Fenster erhalten die Touch-Events vom Touchscreen und nur aktive Fenster werden dargestellt.
func (*Screen) StartAnimation ¶
func (*Screen) StopAnimation ¶
type ScrollPanel ¶ added in v1.1.0
type ScrollPanel struct { ContainerEmbed Image image.Image // contains filtered or unexported fields }
Komplexeres Panel mit Scrollmoeglichkeit.
func NewScrollPanel ¶ added in v1.1.0
func NewScrollPanel(w, h float64) *ScrollPanel
func (*ScrollPanel) LocalBounds ¶ added in v1.1.0
func (p *ScrollPanel) LocalBounds() geom.Rectangle
func (*ScrollPanel) Paint ¶ added in v1.1.0
func (p *ScrollPanel) Paint(gc *gg.Context)
func (*ScrollPanel) SetVirtualSize ¶ added in v1.1.0
func (p *ScrollPanel) SetVirtualSize(sz geom.Point)
func (*ScrollPanel) SetXView ¶ added in v1.1.0
func (p *ScrollPanel) SetXView(vx float64)
func (*ScrollPanel) SetYView ¶ added in v1.1.0
func (p *ScrollPanel) SetYView(vy float64)
func (*ScrollPanel) ViewPort ¶ added in v1.1.0
func (p *ScrollPanel) ViewPort() geom.Point
func (*ScrollPanel) VirtualSize ¶ added in v1.1.0
func (p *ScrollPanel) VirtualSize() geom.Point
Bestimmt die neue virtuelle Groesse des ScrolledPanels. Man kann bei sz keine Angaben machen, die kleiner als die eigentliche Groesse des Widgets ist.
func (*ScrollPanel) VisibleRange ¶ added in v1.1.0
func (p *ScrollPanel) VisibleRange() geom.Point
type Scrollbar ¶
Mit Slider kann man einen Schieberegler beliebiger Laenge horizontal oder vertikal im GUI positionieren. Als Werte sind aktuell nur Fliesskommazahlen vorgesehen.
func NewScrollbar ¶
func NewScrollbar(len float64, orient Orientation) *Scrollbar
func NewScrollbarWithCallback ¶
func NewScrollbarWithCallback(len float64, orient Orientation, callback func(float64)) *Scrollbar
func NewScrollbarWithData ¶
func NewScrollbarWithData(len float64, orient Orientation, dat binding.Float) *Scrollbar
func (*Scrollbar) OnInputEvent ¶
func (*Scrollbar) SetVisiRange ¶
type SelectEmbed ¶ added in v1.2.1
Mit diesem Embed erhaelt ein Widget die Moeglichkeit, "ausgewaehlt" oder "selektiert" zu werden.
func (*SelectEmbed) DataChanged ¶ added in v1.2.1
func (e *SelectEmbed) DataChanged(BindVar binding.DataItem)
Wird autom. aufgerufen, sobald der Wert von 'BindVar' veraendert wird.
func (*SelectEmbed) Init ¶ added in v1.2.1
func (e *SelectEmbed) Init(node Node, extData binding.Bool)
Initialisert wird das Embed mit einem Verweis auf das eigentliche Widget und der Moeglichkeit, den Status mit anderen Widgets zu teilen.
func (*SelectEmbed) OnInputEvent ¶ added in v1.2.1
func (e *SelectEmbed) OnInputEvent(evt touch.Event)
Muss vom umschliessenden Widget aufgerufen werden.
func (*SelectEmbed) Selected ¶ added in v1.2.1
func (e *SelectEmbed) Selected() bool
Ermittelt den Status des Embed.
type Separator ¶
type Separator struct { LeafEmbed // contains filtered or unexported fields }
Fuer die visuelle Abgrenzung in Box-Layouts.
func NewSeparator ¶
func NewSeparator(orient Orientation) *Separator
type Shape ¶ added in v1.1.0
type Shape struct { LeafEmbed PushEmbed SelectEmbed }
Abstrakter, allgemeiner Typ fuer geometrische Formen
func (*Shape) OnInputEvent ¶ added in v1.1.0
type Slider ¶
Mit Slider kann man einen Schieberegler beliebiger Laenge horizontal oder vertikal im GUI positionieren. Als Werte sind aktuell nur Fliesskommazahlen vorgesehen.
func NewSlider ¶
func NewSlider(len float64, orient Orientation) *Slider
func NewSliderWithCallback ¶
func NewSliderWithCallback(len float64, orient Orientation, callback func(float64)) *Slider
func NewSliderWithData ¶
func NewSliderWithData(len float64, orient Orientation, dat binding.Float) *Slider
func (*Slider) OnInputEvent ¶
func (*Slider) SetInitValue ¶
type Spacer ¶
Nimmt den verfügbaren Platz (vertikal oder horizontal) in Box-Layouts ein. Ist zwar ein Widget, passt aber irgendwie besser zum Layout-Zeugs.
func (*Spacer) ExpandHorizontal ¶
func (*Spacer) ExpandVertical ¶
type StackLayout ¶
type StackLayout struct{}
Wie beim PaddedLayout wird man mit Stack- oder Max-Layout sinnvollerweise auch nur ein einziges Child verwalten können. Dieses wird auf die ganze Grösse des Containers ausgedehnt - einfach ohne Ränder.
type TabButton ¶
type TabButton struct { Button // contains filtered or unexported fields }
func NewTabButton ¶
func NewTabButtonWithData ¶
func (*TabButton) DataChanged ¶
func (*TabButton) OnInputEvent ¶
func (*TabButton) SetTabIndex ¶
type TabMenu ¶ added in v1.1.0
type TabMenu struct { ContainerEmbed // contains filtered or unexported fields }
func NewTabMenu ¶ added in v1.1.0
func NewTabMenu() *TabMenu
type TabPanel ¶ added in v1.0.2
type TabPanel struct { ContainerEmbed // contains filtered or unexported fields }
TabPanel und TabButton sind fuer Tabbed Windows gedacht.
type TextButton ¶
type TextButton struct { Button // contains filtered or unexported fields }
Ein TextButton verhaelt sich analog zum neutralen Button, stellt jedoch zusaetzlich Text dar und passt seine Groesse diesem Text an.
func NewTextButton ¶
func NewTextButton(label string) *TextButton
func (*TextButton) Align ¶ added in v1.1.0
func (b *TextButton) Align() AlignType
func (*TextButton) Paint ¶
func (b *TextButton) Paint(gc *gg.Context)
func (*TextButton) SetAlign ¶ added in v1.1.0
func (b *TextButton) SetAlign(a AlignType)
func (*TextButton) SetFont ¶
func (b *TextButton) SetFont(fontFont *fonts.Font)
func (*TextButton) SetFontSize ¶
func (b *TextButton) SetFontSize(fontSize float64)
func (*TextButton) SetSize ¶
func (b *TextButton) SetSize(size geom.Point)
func (*TextButton) SetText ¶
func (b *TextButton) SetText(str string)
func (*TextButton) Text ¶
func (b *TextButton) Text() string
type Window ¶
func (*Window) Repaint ¶
func (w *Window) Repaint()
Mit dieser Methode wird ein Neuaufbau des Bildschirms angestossen. Ueber die interne Queue paintQ wird dem paintThread der Auftrag fuer den Neuaufbau gegeben. Diese Methode blockiert nie! Ist bereits ein Auftrag fuer den Neuaufbau in der Queue, dann ist soweit alles i.O. und wir sind sicher, dass auch unser Auftrag behandelt wird.
type WindowStage ¶
type WindowStage uint32
const ( StageDead WindowStage = iota StageAlive StageVisible StageFocused )
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
Enthält eine Sammlung von gebundenen Datentypen.
|
Enthält eine Sammlung von gebundenen Datentypen. |
cmd
|
|
displayTest
Module
|
|
tabPanel
Module
|
|
touchCalib
Module
|
|
touchTest
Module
|
|
examples
|
|
tabPanel
Einfachstes Beispiel eines AdaGui-Programmes.
|
Einfachstes Beispiel eines AdaGui-Programmes. |
Das Package touch enthaelt alles, um Events vom Touchscreen bequemer zu verarbeiten.
|
Das Package touch enthaelt alles, um Events vom Touchscreen bequemer zu verarbeiten. |