18 mLabAscending =
new QLabel(
"Bit order ascending: ");
31 mLayout->
addWidget(mPinConfigTable, 1, 0, 1, 2);
37 mLayout->
addWidget(btnWidget, 2, 0, 1, 2);
47 mSavedConfigs.clear();
57 bool first_ascending =
false;
59 first_ascending = configs.begin()->second.is_ascending;
62 for (
const auto& [pin, cfg] : configs)
63 mSavedConfigs.push_back({pin, cfg.init_identifier, cfg.bit_offset, cfg.bit_count});
73 const u32 maxBitCount = 1u << n;
78 const std::string pinName = pin.toStdString();
81 const SavedConfig* saved =
nullptr;
82 for (
const auto& cfg : mSavedConfigs)
84 if (cfg.pinName == pinName)
92 addTableRow(pin,
QString::fromStdString(saved->initIdentifier), saved->bitOffset, saved->bitCount, maxBitCount);
94 addTableRow(pin,
"INIT", 0, 1, maxBitCount);
98 QStringList LUTWizardPage::getLutPinsFromWizard()
const
104 for (PinItem* group : wiz->getPingroups())
106 for (
auto* child : group->getChildren())
108 auto* pin =
static_cast<PinItem*
>(child);
111 result << pin->getName();
117 void LUTWizardPage::addTableRow(
const QString& pinName,
const QString& initId,
u32 bitOffset,
u32 bitCount,
u32 maxBitCount)
119 int row = mPinConfigTable->
rowCount();
124 mPinConfigTable->
setItem(row, 0, pinItem);
128 auto* offsetSpin =
new QSpinBox(mPinConfigTable);
129 offsetSpin->setRange(0, 1 << 20);
130 offsetSpin->setValue(
static_cast<int>(bitOffset));
133 auto* countCombo =
new QComboBox(mPinConfigTable);
134 for (
u32 count = 1; count <= maxBitCount; count <<= 1)
136 countCombo->setCurrentIndex(countCombo->findData(bitCount));
144 for (
int r = 0; r < mPinConfigTable->
rowCount(); ++r)
146 auto* pinItem = mPinConfigTable->
item(r, 0);
147 auto* offsetSpin = qobject_cast<QSpinBox*>(mPinConfigTable->
cellWidget(r, 2));
148 auto* countCombo = qobject_cast<QComboBox*>(mPinConfigTable->
cellWidget(r, 3));
153 auto* idItem = mPinConfigTable->
item(r, 1);
157 static_cast<u32>(offsetSpin ? offsetSpin->value() : 0),
158 countCombo ? countCombo->currentData().toUInt() : 0});
165 for (
int row = 0; row < mPinConfigTable->
rowCount(); ++row)
167 auto* pinInitIdentifier = mPinConfigTable->
item(row, 1);
168 if (pinInitIdentifier ==
nullptr || pinInitIdentifier->text().trimmed().isEmpty())
return false;
170 auto* countCombo = qobject_cast<QComboBox*>(mPinConfigTable->
cellWidget(row, 3));
171 const u32 count = countCombo ? countCombo->currentData().toUInt() : 0;
172 if (count == 0 || count & (count - 1))
return false;
bool has_component_of_type(const GateTypeComponent::ComponentType type) const
T * get_component_as(const std::function< bool(const GateTypeComponent *)> &filter=nullptr) const
const std::unordered_map< std::string, LUTOutputConfig > & get_output_pin_configs() const
static bool is_class_of(const GateTypeComponent *component)
void initializePage() override
void setData(GateType *gate)
QVector< OutputPinEntry > getOutputPinConfigs() const
LUTWizardPage(QWidget *parent=nullptr)
bool isComplete() const override
QList< PinItem * > getInputPins()
std::vector< PinInformation > pins
void setSelectionBehavior(QAbstractItemView::SelectionBehavior behavior)
void setSelectionMode(QAbstractItemView::SelectionMode mode)
void addStretch(int stretch)
void stateChanged(int state)
void currentIndexChanged(int index)
void setContentsMargins(int left, int top, int right, int bottom)
QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
QString fromStdString(const std::string &str)
bool isEmpty() const const
QString number(int n, int base)
void push_back(const T &value)
void setSubTitle(const QString &subTitle)
void setTitle(const QString &title)
QWizard * wizard() const const