7 #include <QActionGroup>
9 #include <QDialogButtonBox>
16 mArray =
new int[mRows];
17 for (
int i=0; i<mRows; i++)
19 mArray[i] = values.
at(i);
25 for (
int irow : sortRows)
27 if (mArray[irow] < other.mArray[irow])
return true;
28 if (mArray[irow] > other.mArray[irow])
return false;
45 : mDisplayFormat(MAXFORMAT),
46 mInputList(inpList), mOutputList(outList), mInputSize(inpList.
size()), mOutputSize(outList.
size())
57 mColumnList.append(letc);
82 switch (mDisplayFormat) {
86 return val ?
"H" :
"L";
113 if (section < mInputSize)
121 return mInputSize + mOutputSize;
127 return (1 << mInputList.size());
135 const char* ordinal[] = {
"st",
"nd",
"th"};
136 for (
int i=0; i<5; i++)
138 if (i)
layout->addStretch();
141 mSortKey[i]->
addItem(
"--not used--", (
const void*)
nullptr);
142 for (
const Net* n : mNets)
157 for (
int i=0; i<5; i++)
162 const Net* n = mNets.at(inx);
174 : mModel(model), mColumnDubbleClicked(-1)
181 const char* displayFormatLabel[] = {
"0 / 1",
"L / H",
"blue / red"};
185 mActionDisplayFormat[i] = displForm->
addAction(displayFormatLabel[i]);
187 actGroup->
addAction(mActionDisplayFormat[i]);
199 for (
int icol=0; icol<mModel->
columnCount(); icol++)
209 if (df == mDisplayFormat)
return;
214 void LogicEvaluatorTruthtable::handleSortTriggered()
224 void LogicEvaluatorTruthtable::handleColumnDubbleClicked(
int icol)
226 mColumnDubbleClicked = icol;
233 if (icol < 0 || icol >= mColumnList.size())
return retval;
236 for (
const Net* n : mInputList)
237 retval[n] = letc->
data(irow++);
246 void LogicEvaluatorTruthtable::handleDisplayFormatChanged(
QAction* act)
249 if (mActionDisplayFormat[i] == act)
~LogicEvaluatorTruthtableColumn()
LogicEvaluatorTruthtableColumn(int nrows, QList< int > values)
bool lessThan(const LogicEvaluatorTruthtableColumn &other, const QList< int > &sortRows) const
LogicEvaluatorTruthtable(LogicEvaluatorTruthtableModel *model, QWidget *parent=nullptr)
QMap< const Net *, int > selectedColumn() const
void sortModelRow(int irow)
int rowCount(const QModelIndex &parent=QModelIndex()) const override
LogicEvaluatorTruthtableModel(const QList< const Net * > &inpList, const QList< const Net * > &outList, QObject *parent=nullptr)
void sortModelRows(const QList< int > &sortRows)
int columnCount(const QModelIndex &parent=QModelIndex()) const override
QVariant headerData(int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const override
QMap< const Net *, int > selectedColumn(int icol) const
void setDisplayFormat(DisplayFormat df)
QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const override
~LogicEvaluatorTruthtableModel()
QList< const Net * > getNets() const
void addColumn(LogicEvaluatorTruthtableColumn *letc)
QList< int > sortOrder() const
LogicEvaluatorTruthtableSort(QList< const Net * > &nets, QWidget *parent=nullptr)
void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector< int > &roles)
virtual QModelIndex index(int row, int column, const QModelIndex &parent) const const override
void triggered(bool checked)
QAction * addAction(QAction *action)
void triggered(QAction *action)
void addItem(const QString &text, const QVariant &userData)
void append(const T &value)
const T & at(int i) const const
bool isEmpty() const const
QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
QObject * parent() const const
bool contains(const T &value) const const
QSet::iterator insert(const T &value)
QString fromStdString(const std::string &str)
QString number(int n, int base)
void setColumnWidth(int column, int width)
virtual void setModel(QAbstractItemModel *model) override