MCPcopy Create free account
hub / github.com/MiniZinc/MiniZincIDE / createEditor

Method createEditor

MiniZincIDE/configwindow.cpp:777–843  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

775}
776
777QWidget* ExtraOptionDelegate::createEditor(QWidget* parent, const QStyleOptionViewItem& option, const QModelIndex& index) const
778{
779 if (index.data(Qt::UserRole).canConvert<SolverFlag>()) {
780 auto f = qvariant_cast<SolverFlag>(index.data(Qt::UserRole));
781 switch (f.t) {
782 case SolverFlag::T_INT:
783 {
784 auto field = new QLineEdit(parent);
785 field->setAlignment(Qt::AlignRight);
786 field->setValidator(new LongLongValidator());
787 return field;
788 }
789 case SolverFlag::T_INT_RANGE:
790 {
791 if (f.min_ll < std::numeric_limits<int>::min() || f.max_ll > std::numeric_limits<int>::max()) {
792 auto field = new QLineEdit(parent);
793 field->setAlignment(Qt::AlignRight);
794 field->setValidator(new LongLongValidator(f.min_ll, f.max_ll));
795 return field;
796 } else {
797 auto field = new QSpinBox(parent);
798 field->setRange(static_cast<int>(f.min_ll), static_cast<int>(f.max_ll));
799 return field;
800 }
801 }
802 case SolverFlag::T_FLOAT:
803 {
804 auto field = new QLineEdit(parent);
805 field->setAlignment(Qt::AlignRight);
806 field->setValidator(new QDoubleValidator());
807 return field;
808 }
809 case SolverFlag::T_FLOAT_RANGE:
810 {
811 auto field = new QDoubleSpinBox(parent);
812 field->setDecimals(DBL_MAX_10_EXP + DBL_DIG);
813 field->setRange(f.min, f.max);
814 return field;
815 }
816 case SolverFlag::T_OPT:
817 {
818 auto field = new QComboBox(parent);
819 field->addItems(f.options);
820 return field;
821 }
822 case SolverFlag::T_SOLVER:
823 {
824 auto field = new QComboBox(parent);
825 for (auto* solver : MznDriver::get().solvers()) {
826 field->addItem(solver->name);
827 }
828 return field;
829 }
830 case SolverFlag::T_BOOL:
831 case SolverFlag::T_BOOL_ONOFF:
832 case SolverFlag::T_STRING:
833 return QStyledItemDelegate::createEditor(parent, option, index);
834 }

Callers

nothing calls this directly

Calls 2

setRangeMethod · 0.80
typeMethod · 0.80

Tested by

no test coverage detected