MCPcopy
hub / github.com/lxn/walk / SetModel

Method SetModel

combobox.go:372–415  ·  view source on GitHub ↗

SetModel sets the model of the ComboBox. It is required that mdl either implements walk.ListModel or walk.ReflectListModel or be a slice of pointers to struct or a []string.

(mdl interface{})

Source from the content-addressed store, hash-verified

370// It is required that mdl either implements walk.ListModel or
371// walk.ReflectListModel or be a slice of pointers to struct or a []string.
372func (cb *ComboBox) SetModel(mdl interface{}) error {
373 model, ok := mdl.(ListModel)
374 if !ok && mdl != nil {
375 var err error
376 if model, err = newReflectListModel(mdl); err != nil {
377 return err
378 }
379
380 if _, ok := mdl.([]string); !ok {
381 if badms, ok := model.(bindingAndDisplayMemberSetter); ok {
382 var bindingMember string
383 if cb.Editable() {
384 bindingMember = cb.displayMember
385 } else {
386 bindingMember = cb.bindingMember
387 }
388 badms.setBindingMember(bindingMember)
389 badms.setDisplayMember(cb.displayMember)
390 }
391 }
392 }
393 cb.providedModel = mdl
394
395 if cb.model != nil {
396 cb.detachModel()
397 }
398
399 cb.model = model
400 cb.bindingValueProvider, _ = model.(BindingValueProvider)
401
402 if model != nil {
403 cb.attachModel()
404 }
405
406 if err := cb.resetItems(); err != nil {
407 return err
408 }
409
410 if !cb.Editable() && model != nil && model.ItemCount() == 1 {
411 cb.SetCurrentIndex(0)
412 }
413
414 return cb.Invalidate()
415}
416
417// BindingMember returns the member from the model of the ComboBox that is bound
418// to a field of the data source managed by an associated DataBinder.

Callers 1

CreateMethod · 0.95

Calls 10

EditableMethod · 0.95
detachModelMethod · 0.95
attachModelMethod · 0.95
resetItemsMethod · 0.95
SetCurrentIndexMethod · 0.95
newReflectListModelFunction · 0.85
setBindingMemberMethod · 0.65
setDisplayMemberMethod · 0.65
ItemCountMethod · 0.65
InvalidateMethod · 0.65

Tested by

no test coverage detected