buildSplitter builds a gui object of type: HSplitterr or VSplitter
(b *Builder, am map[string]interface{})
| 462 | |
| 463 | // buildSplitter builds a gui object of type: HSplitterr or VSplitter |
| 464 | func 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 |
nothing calls this directly
no test coverage detected