コード例 #1
1
ファイル: combobox.go プロジェクト: 2105666566/walk
func (cb ComboBox) Create(builder *Builder) error {
	if _, ok := cb.Model.([]string); ok &&
		(cb.BindingMember != "" || cb.DisplayMember != "") {

		return errors.New("ComboBox.Create: BindingMember and DisplayMember must be empty for []string models.")
	}

	var w *walk.ComboBox
	var err error
	if cb.Editable {
		w, err = walk.NewComboBox(builder.Parent())
	} else {
		w, err = walk.NewDropDownBox(builder.Parent())
	}
	if err != nil {
		return err
	}

	return builder.InitWidget(cb, w, func() error {
		w.SetFormat(cb.Format)
		w.SetPrecision(cb.Precision)
		w.SetMaxLength(cb.MaxLength)

		if err := w.SetBindingMember(cb.BindingMember); err != nil {
			return err
		}
		if err := w.SetDisplayMember(cb.DisplayMember); err != nil {
			return err
		}

		if err := w.SetModel(cb.Model); err != nil {
			return err
		}

		if cb.OnCurrentIndexChanged != nil {
			w.CurrentIndexChanged().Attach(cb.OnCurrentIndexChanged)
		}

		if cb.AssignTo != nil {
			*cb.AssignTo = w
		}

		return nil
	})
}
コード例 #2
0
ファイル: combobox.go プロジェクト: yahame/walk
func (cb ComboBox) Create(parent walk.Container) error {
	w, err := walk.NewComboBox(parent)
	if err != nil {
		return err
	}

	return InitWidget(cb, w, func() error {
		if _, ok := cb.Model.(walk.BindingValueProvider); !ok && cb.BindTo != "" {
			return errors.New("declarative.ComboBox: Data binding is only supported using a model that implements BindingValueProvider.")
		}

		if err := w.SetBindingMember(cb.BindTo); err != nil {
			return err
		}

		w.SetFormat(cb.Format)
		w.SetPrecision(cb.Precision)

		if err := w.SetModel(cb.Model); err != nil {
			return err
		}

		if cb.OnCurrentIndexChanged != nil {
			w.CurrentIndexChanged().Attach(cb.OnCurrentIndexChanged)
		}

		if cb.AssignTo != nil {
			*cb.AssignTo = w
		}

		return nil
	})
}
コード例 #3
0
ファイル: combobox.go プロジェクト: nihao/walk
func (cb ComboBox) Create(builder *Builder) error {
	w, err := walk.NewComboBox(builder.Parent())
	if err != nil {
		return err
	}

	return builder.InitWidget(cb, w, func() error {
		w.SetFormat(cb.Format)
		w.SetPrecision(cb.Precision)

		w.SetBindingMember(cb.BindingMember)
		w.SetDisplayMember(cb.DisplayMember)

		if err := w.SetModel(cb.Model); err != nil {
			return err
		}

		if cb.OnCurrentIndexChanged != nil {
			w.CurrentIndexChanged().Attach(cb.OnCurrentIndexChanged)
		}

		if cb.AssignTo != nil {
			*cb.AssignTo = w
		}

		return nil
	})
}
コード例 #4
0
ファイル: combobox.go プロジェクト: Robin3D/walk
func (cb ComboBox) Create(builder *Builder) error {
	w, err := walk.NewComboBox(builder.Parent())
	if err != nil {
		return err
	}

	return builder.InitWidget(cb, w, func() error {
		_, valueIsBindData := cb.Value.(bindData)
		if _, ok := cb.Model.(walk.BindingValueProvider); !ok && valueIsBindData {
			return errors.New("declarative.ComboBox: Data binding is only supported using a model that implements walk.BindingValueProvider.")
		}

		w.SetFormat(cb.Format)
		w.SetPrecision(cb.Precision)

		if err := w.SetModel(cb.Model); err != nil {
			return err
		}

		if cb.OnCurrentIndexChanged != nil {
			w.CurrentIndexChanged().Attach(cb.OnCurrentIndexChanged)
		}

		if cb.AssignTo != nil {
			*cb.AssignTo = w
		}

		return nil
	})
}
コード例 #5
0
ファイル: combobox.go プロジェクト: etel/walk
func (cb ComboBox) Create(parent walk.Container) error {
	w, err := walk.NewComboBox(parent)
	if err != nil {
		return err
	}

	return InitWidget(cb, w, func() error {
		w.SetFormat(cb.Format)
		w.SetPrecision(cb.Precision)

		if err := w.SetModel(cb.Model); err != nil {
			return err
		}

		if cb.OnCurrentIndexChanged != nil {
			w.CurrentIndexChanged().Attach(cb.OnCurrentIndexChanged)
		}

		if cb.AssignTo != nil {
			*cb.AssignTo = w
		}

		return nil
	})
}