| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200 |
- // Copyright 2016 The G3N Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
- package gui
- //
- // BuilderLayoutHBox is builder for HBox layout
- //
- type BuilderLayoutHBox struct{}
- // BuildLayout builds and returns an HBoxLayout with the specified attributes
- func (bl *BuilderLayoutHBox) BuildLayout(b *Builder, am map[string]interface{}) (ILayout, error) {
- // Creates layout and sets optional spacing
- l := NewHBoxLayout()
- var spacing float32
- if sp := am[AttribSpacing]; sp != nil {
- spacing = sp.(float32)
- }
- l.SetSpacing(spacing)
- // Sets optional horizontal alignment
- if ah := am[AttribAlignh]; ah != nil {
- l.SetAlignH(ah.(Align))
- }
- // Sets optional minheight flag
- if mh := am[AttribAutoHeight]; mh != nil {
- l.SetAutoHeight(mh.(bool))
- }
- // Sets optional minwidth flag
- if mw := am[AttribAutoWidth]; mw != nil {
- l.SetAutoWidth(mw.(bool))
- }
- return l, nil
- }
- // BuildParams builds and returns a pointer to HBoxLayoutParams with the specified attributes
- func (bl *BuilderLayoutHBox) BuildParams(b *Builder, am map[string]interface{}) (interface{}, error) {
- // Creates layout parameters with default values
- params := HBoxLayoutParams{Expand: 0, AlignV: AlignNone}
- // Sets optional expand parameter
- if expand := am[AttribExpand]; expand != nil {
- params.Expand = expand.(float32)
- }
- // Sets optional align parameter
- if alignv := am[AttribAlignv]; alignv != nil {
- params.AlignV = alignv.(Align)
- }
- return ¶ms, nil
- }
- //
- // BuilderLayoutVBox is builder for VBox layout
- //
- type BuilderLayoutVBox struct{}
- // BuildLayout builds and returns an VBoxLayout with the specified attributes
- func (bl *BuilderLayoutVBox) BuildLayout(b *Builder, am map[string]interface{}) (ILayout, error) {
- // Creates layout and sets optional spacing
- l := NewVBoxLayout()
- var spacing float32
- if sp := am[AttribSpacing]; sp != nil {
- spacing = sp.(float32)
- }
- l.SetSpacing(spacing)
- // Sets optional vertical alignment
- if av := am[AttribAlignh]; av != nil {
- l.SetAlignV(av.(Align))
- }
- // Sets optional minheight flag
- if mh := am[AttribAutoHeight]; mh != nil {
- l.SetAutoHeight(mh.(bool))
- }
- // Sets optional minwidth flag
- if mw := am[AttribAutoWidth]; mw != nil {
- l.SetAutoWidth(mw.(bool))
- }
- return l, nil
- }
- // BuildParams builds and returns a pointer to VBoxLayoutParams with the specified attributes
- func (bl *BuilderLayoutVBox) BuildParams(b *Builder, am map[string]interface{}) (interface{}, error) {
- // Creates layout parameters with default values
- params := VBoxLayoutParams{Expand: 0, AlignH: AlignNone}
- // Sets optional expand parameter
- if expand := am[AttribExpand]; expand != nil {
- params.Expand = expand.(float32)
- }
- // Sets optional align parameter
- if alignh := am[AttribAlignh]; alignh != nil {
- params.AlignH = alignh.(Align)
- }
- return ¶ms, nil
- }
- //
- // BuilderLayoutGrid is builder for Grid layout
- //
- type BuilderLayoutGrid struct{}
- // BuildLayout builds and returns a GridLayout with the specified attributes
- func (bl *BuilderLayoutGrid) BuildLayout(b *Builder, am map[string]interface{}) (ILayout, error) {
- // Get number of columns
- v := am[AttribCols]
- if v == nil {
- return nil, b.err(am, AttribCols, "Number of columns must be supplied")
- }
- cols := v.(int)
- if cols <= 0 {
- return nil, b.err(am, AttribCols, "Invalid number of columns")
- }
- // Creates layout
- l := NewGridLayout(cols)
- // Sets optional horizontal alignment
- if ah := am[AttribAlignh]; ah != nil {
- l.SetAlignH(ah.(Align))
- }
- // Sets optional vertical alignment
- if av := am[AttribAlignv]; av != nil {
- l.SetAlignV(av.(Align))
- }
- // Sets optional horizontal expand flag
- if eh := am[AttribExpandh]; eh != nil {
- l.SetExpandH(eh.(bool))
- }
- // Sets optional vertical expand flag
- if ev := am[AttribExpandv]; ev != nil {
- l.SetExpandV(ev.(bool))
- }
- return l, nil
- }
- // BuildParams builds and returns a pointer to GridLayoutParams with the specified attributes
- func (bl *BuilderLayoutGrid) BuildParams(b *Builder, am map[string]interface{}) (interface{}, error) {
- // Creates layout parameters with default values
- params := GridLayoutParams{
- ColSpan: 0,
- AlignH: AlignNone,
- AlignV: AlignNone,
- }
- // Sets optional colspan
- if cs := am[AttribColSpan]; cs != nil {
- params.ColSpan = cs.(int)
- }
- // Sets optional alignh parameter
- if align := am[AttribAlignh]; align != nil {
- params.AlignH = align.(Align)
- }
- // Sets optional alignv parameter
- if align := am[AttribAlignv]; align != nil {
- params.AlignV = align.(Align)
- }
- return ¶ms, nil
- }
- //
- // BuilderLayoutDock is builder for Dock layout
- //
- type BuilderLayoutDock struct{}
- // BuildLayout builds and returns a DockLayout with the specified attributes
- func (bl *BuilderLayoutDock) BuildLayout(b *Builder, am map[string]interface{}) (ILayout, error) {
- return NewDockLayout(), nil
- }
- // BuildParams builds and returns a pointer to DockLayoutParams with the specified attributes
- func (bl *BuilderLayoutDock) BuildParams(b *Builder, am map[string]interface{}) (interface{}, error) {
- edge := am[AttribEdge]
- if edge == nil {
- return nil, b.err(am, AttribEdge, "Edge name not found")
- }
- params := DockLayoutParams{Edge: edge.(int)}
- return ¶ms, nil
- }
|