11 #include <QtCore/QString>
61 return Qt::ItemIsEnabled;
64 return QAbstractItemModel::flags(index) | Qt::ItemIsEditable;
68 return QAbstractItemModel::flags(index) & ~Qt::ItemIsEnabled;
70 return QAbstractItemModel::flags(index) | Qt::ItemIsEditable | Qt::ItemIsEnabled;
73 return QAbstractItemModel::flags(index);
84 if (index.column() > 0 && role == Qt::ForegroundRole && !(
flags(index) & Qt::ItemIsEditable))
85 return QColor(Qt::darkGray);
87 if (role == Qt::DisplayRole || role == Qt::EditRole)
91 switch (index.column())
94 return QVariant(QString(
""));
97 return QVariant(QString(
"New Compartment"));
103 return QVariant(QString::number(1.0,
'g', 10));
106 return QVariant(QString(
""));
114 switch (index.column())
117 return QVariant(index.row() + 1);
127 if (role == Qt::EditRole)
136 return QVariant(pComp->
getRate());
142 if (pExpression != NULL)
152 if (pExpression != NULL)
167 if (role != Qt::DisplayRole)
170 if (orientation == Qt::Horizontal)
172 QString ValueUnits, RateUnits, ExpressionUnits;
180 if (!ValueUnits.isEmpty())
181 ValueUnits =
"\n(" + ValueUnits +
")";
185 if (!RateUnits.isEmpty())
186 RateUnits =
"\n(" + RateUnits +
")";
188 if (!ValueUnits.isEmpty() && !RateUnits.isEmpty())
190 if (ValueUnits == RateUnits)
191 ExpressionUnits = ValueUnits;
195 else if (!ValueUnits.isEmpty())
197 else if (!RateUnits.isEmpty())
204 return QVariant(QString(
"#"));
207 return QVariant(QString(
"Name"));
210 return QVariant(QString(
" Type "));
213 return QVariant(
"Initial Volume" + ValueUnits);
216 return QVariant(
"Volume" + ValueUnits);
219 return QVariant(
"Rate" + RateUnits);
222 return QVariant(
"Initial Expression" + ValueUnits);
225 return QVariant(
"Expression" + ExpressionUnits);
232 return QString(
"%1").arg(section + 1);
238 if (index.isValid() && role == Qt::EditRole)
251 else if (index.data() != value)
270 emit dataChanged(index, index);
279 beginInsertRows(QModelIndex(), position, position + rows - 1);
281 for (
int row = 0; row < rows; ++row)
297 beginRemoveRows(QModelIndex(), position, position + rows - 1);
301 std::vector< std::string > DeletedKeys;
302 DeletedKeys.resize(rows);
304 std::vector< std::string >::iterator itDeletedKey;
305 std::vector< std::string >::iterator endDeletedKey = DeletedKeys.end();
309 for (itDeletedKey = DeletedKeys.begin(); itDeletedKey != endDeletedKey; ++itDeletedKey, ++itRow)
311 *itDeletedKey = (*itRow)->getKey();
314 for (itDeletedKey = DeletedKeys.begin(); itDeletedKey != endDeletedKey; ++itDeletedKey)
334 assert(pDataModel != NULL);
342 QList <CCompartment *> pCompartments;
343 QModelIndexList::const_iterator i;
345 for (i = rows.begin(); i != rows.end(); ++i)
351 QList <CCompartment *>::const_iterator j;
353 for (j = pCompartments.begin(); j != pCompartments.end(); ++j)
358 pModel->
getCompartments().CCopasiVector< CCompartment >::getIndex(pCompartment);
362 QMessageBox::StandardButton choice =
367 if (choice == QMessageBox::Ok)
const CExpression * getExpressionPtr() const
Header file of class CExpression.
virtual Qt::ItemFlags flags(const QModelIndex &index) const
bool removeRows(QModelIndexList rows, const QModelIndex &index=QModelIndex())
#define COL_NAME_COMPARTMENTS
#define COL_TYPE_COMPARTMENTS
static const std::string StatusName[]
const C_FLOAT64 & getRate() const
void notifyGUI(ListViews::ObjectType objectType, ListViews::Action action, const std::string &key="")
const std::string & getObjectName() const
bool insertRows(int position, int rows, const QModelIndex &index=QModelIndex())
std::vector< unsigned C_INT32 > mItemToType
virtual QVariant data(const QModelIndex &index, int role) const
const std::vector< unsigned C_INT32 > & getItemToType()
std::string getVolumeRateUnitsDisplayString() const
const std::string & getDisplayString() const
#define COL_IEXPRESSION_COMPARTMENTS
virtual std::set< const CCopasiObject * > getDeletedObjects() const
bool removeRow(int position)
const C_FLOAT64 & getInitialValue() const
std::vector< CType * >::const_iterator const_iterator
virtual QVariant headerData(int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const
std::string getVolumeUnitsDisplayString() const
const QStringList & getTypes()
virtual const std::string & getKey() const
virtual void setStatus(const CModelEntity::Status &status)
static StandardButton confirmDelete(QWidget *parent, const QString &objectType, const QString &objects, const std::set< const CCopasiObject * > &deletedObjects)
#define COL_EXPRESSION_COMPARTMENTS
static CCopasiVector< CCopasiDataModel > * getDatamodelList()
QString createNewName(const QString name, const int nameCol)
#define TOTAL_COLS_COMPARTMENTS
CCopasiVectorNS< CCompartment > & getCompartments()
const C_FLOAT64 & getValue() const
CQCompartmentDM(QObject *parent=0)
virtual int rowCount(const QModelIndex &parent=QModelIndex()) const
#define COL_RATE_COMPARTMENTS
virtual bool setData(const QModelIndex &index, const QVariant &value, int role=Qt::EditRole)
virtual void setInitialValue(const C_FLOAT64 &initialValue)
const CModelEntity::Status & getStatus() const
virtual bool isDefaultRow(const QModelIndex &i) const
bool setObjectName(const std::string &name)
virtual int columnCount(const QModelIndex &parent=QModelIndex()) const
const CExpression * getInitialExpressionPtr() const