MCPcopy
hub / github.com/g3n/engine / buildSplitter

Function buildSplitter

gui/builder_panel.go:464–525  ·  view source on GitHub ↗

buildSplitter builds a gui object of type: HSplitterr or VSplitter

(b *Builder, am map[string]interface{})

Source from the content-addressed store, hash-verified

462
463// buildSplitter builds a gui object of type: HSplitterr or VSplitter
464func buildSplitter(b *Builder, am map[string]interface{}) (IPanel, error) {
465
466 // Builds horizontal or vertical splitter
467 var splitter *Splitter
468 if am[AttribType].(string) == TypeHSplitter {
469 splitter = NewHSplitter(0, 0)
470 } else {
471 splitter = NewVSplitter(0, 0)
472 }
473
474 // Sets common attributes
475 err := b.SetAttribs(am, splitter)
476 if err != nil {
477 return nil, err
478 }
479
480 // Sets optional split value
481 if v := am[AttribSplit]; v != nil {
482 splitter.SetSplit(v.(float32))
483 }
484
485 // Internal function to set each of the splitter's panel attributes and items
486 setpan := func(attrib string, pan *Panel) error {
487
488 // Get internal panel attributes
489 ipattribs := am[attrib]
490 if ipattribs == nil {
491 return nil
492 }
493 pattr := ipattribs.(map[string]interface{})
494 // Set panel attributes
495 err := b.SetAttribs(pattr, pan)
496 if err != nil {
497 return nil
498 }
499 // Builds panel children
500 if pattr[AttribItems] != nil {
501 items := pattr[AttribItems].([]map[string]interface{})
502 for i := 0; i < len(items); i++ {
503 item := items[i]
504 child, err := b.build(item, pan)
505 if err != nil {
506 return err
507 }
508 pan.Add(child)
509 }
510 }
511 return nil
512 }
513
514 // Set optional splitter panel's attributes
515 err = setpan(AttribPanel0, &splitter.P0)
516 if err != nil {
517 return nil, err
518 }
519 err = setpan(AttribPanel1, &splitter.P1)
520 if err != nil {
521 return nil, err

Callers

nothing calls this directly

Calls 6

SetSplitMethod · 0.95
NewHSplitterFunction · 0.85
NewVSplitterFunction · 0.85
SetAttribsMethod · 0.80
buildMethod · 0.80
AddMethod · 0.45

Tested by

no test coverage detected