Skip to content

Commit

Permalink
List all the expandable connectors including the inherited ones (Open…
Browse files Browse the repository at this point in the history
…Modelica#12579)

OpenModelica#12548
List all the elements of the expandable connector
  • Loading branch information
adeas31 committed Jun 14, 2024
1 parent 0051418 commit 5cb4181
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 17 deletions.
39 changes: 24 additions & 15 deletions OMEdit/OMEditLIB/Annotations/LineAnnotation.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1708,6 +1708,7 @@ ExpandableConnectorTreeItem::ExpandableConnectorTreeItem()
setArrayIndexes(QStringList());
setRestriction(StringHandler::Model);
setNewVariable(false);
setInherited(false);
}

/*!
Expand All @@ -1718,10 +1719,11 @@ ExpandableConnectorTreeItem::ExpandableConnectorTreeItem()
* \param arrayIndex
* \param restriction
* \param newVariable
* \param inherited
* \param pParentExpandableConnectorTreeItem
*/
ExpandableConnectorTreeItem::ExpandableConnectorTreeItem(QString name, bool array, QStringList arrayIndexes, StringHandler::ModelicaClasses restriction, bool newVariable,
ExpandableConnectorTreeItem *pParentExpandableConnectorTreeItem)
bool inherited, ExpandableConnectorTreeItem *pParentExpandableConnectorTreeItem)
{
mIsRootItem = false;
mpParentExpandableConnectorTreeItem = pParentExpandableConnectorTreeItem;
Expand All @@ -1730,6 +1732,7 @@ ExpandableConnectorTreeItem::ExpandableConnectorTreeItem(QString name, bool arra
setArrayIndexes(arrayIndexes);
setRestriction(restriction);
setNewVariable(newVariable);
setInherited(inherited);
}

/*!
Expand Down Expand Up @@ -1932,7 +1935,6 @@ QVariant ExpandableConnectorTreeModel::data(const QModelIndex &index, int role)
return QVariant();
}


ExpandableConnectorTreeItem *pExpandableConnectorTreeItem = static_cast<ExpandableConnectorTreeItem*>(index.internalPointer());
return pExpandableConnectorTreeItem->data(index.column(), role);
}
Expand All @@ -1946,9 +1948,10 @@ QVariant ExpandableConnectorTreeModel::data(const QModelIndex &index, int role)
Qt::ItemFlags ExpandableConnectorTreeModel::flags(const QModelIndex &index) const
{
ExpandableConnectorTreeItem *pExpandableConnectorTreeItem = static_cast<ExpandableConnectorTreeItem*>(index.internalPointer());
if (pExpandableConnectorTreeItem &&
((pExpandableConnectorTreeItem->getRestriction() == StringHandler::ExpandableConnector) ||
(pExpandableConnectorTreeItem->parent() && pExpandableConnectorTreeItem->parent()->getRestriction() == StringHandler::ExpandableConnector))) {
if (pExpandableConnectorTreeItem
&& !pExpandableConnectorTreeItem->isInherited()
&& ((pExpandableConnectorTreeItem->getRestriction() == StringHandler::ExpandableConnector)
|| (pExpandableConnectorTreeItem->parent() && pExpandableConnectorTreeItem->parent()->getRestriction() == StringHandler::ExpandableConnector))) {
return Qt::ItemIsEnabled | Qt::ItemIsSelectable;
} else {
return Qt::ItemFlags();
Expand Down Expand Up @@ -1992,8 +1995,10 @@ QModelIndex ExpandableConnectorTreeModel::expandableConnectorTreeItemIndex(const
* Creates the ExpandableConnectorTreeItem
* \param pModelElement
* \param pParentExpandableConnectorTreeItem
* \param inherited
*/
void ExpandableConnectorTreeModel::createExpandableConnectorTreeItem(ModelInstance::Element *pModelElement, ExpandableConnectorTreeItem *pParentExpandableConnectorTreeItem)
void ExpandableConnectorTreeModel::createExpandableConnectorTreeItem(ModelInstance::Element *pModelElement, bool inherited,
ExpandableConnectorTreeItem *pParentExpandableConnectorTreeItem)
{
StringHandler::ModelicaClasses restriction = StringHandler::Model;
if (pModelElement->getModel()) {
Expand All @@ -2002,7 +2007,8 @@ void ExpandableConnectorTreeModel::createExpandableConnectorTreeItem(ModelInstan
ExpandableConnectorTreeItem *pExpandableConnectorTreeItem = 0;
if (pModelElement->isComponent()) {
pExpandableConnectorTreeItem = new ExpandableConnectorTreeItem(pModelElement->getName(), pModelElement->getDimensions().isArray(),
pModelElement->getDimensions().getTypedDimensions(), restriction, false, pParentExpandableConnectorTreeItem);
pModelElement->getDimensions().getTypedDimensions(), restriction, false, inherited,
pParentExpandableConnectorTreeItem);
int row = pParentExpandableConnectorTreeItem->getChildren().size();
QModelIndex index = expandableConnectorTreeItemIndex(pParentExpandableConnectorTreeItem);
beginInsertRows(index, row, row);
Expand All @@ -2012,15 +2018,18 @@ void ExpandableConnectorTreeModel::createExpandableConnectorTreeItem(ModelInstan
if (pModelElement->getModel()) {
QList<ModelInstance::Element*> elements = pModelElement->getModel()->getElements();
foreach (auto pChildModelElement, elements) {
if (pChildModelElement->isPublic()) {
createExpandableConnectorTreeItem(pChildModelElement, pExpandableConnectorTreeItem ? pExpandableConnectorTreeItem : pParentExpandableConnectorTreeItem);
// Issue #12548. List the elements of expandable connector class and all the expandable connectors of the class including the inherited ones.
if (pModelElement->getModel()->isExpandableConnector() || pChildModelElement->isExtend()
|| (pChildModelElement->getModel() && pChildModelElement->getModel()->isExpandableConnector())) {
createExpandableConnectorTreeItem(pChildModelElement, inherited || pChildModelElement->isExtend(),
pExpandableConnectorTreeItem ? pExpandableConnectorTreeItem : pParentExpandableConnectorTreeItem);
}
}
}
// create add variable item only if item is expandable connector
if (pExpandableConnectorTreeItem && pExpandableConnectorTreeItem->getRestriction() == StringHandler::ExpandableConnector) {
if (pExpandableConnectorTreeItem && !pExpandableConnectorTreeItem->isInherited() && pExpandableConnectorTreeItem->getRestriction() == StringHandler::ExpandableConnector) {
ExpandableConnectorTreeItem *pNewVariableExpandableConnectorTreeItem = new ExpandableConnectorTreeItem(Helper::newVariable, false, QStringList(), StringHandler::Model,
true, pExpandableConnectorTreeItem);
true, false, pExpandableConnectorTreeItem);
int row = pExpandableConnectorTreeItem->getChildren().size();
QModelIndex index = expandableConnectorTreeItemIndex(pExpandableConnectorTreeItem);
beginInsertRows(index, row, row);
Expand All @@ -2042,7 +2051,7 @@ void ExpandableConnectorTreeModel::createExpandableConnectorTreeItem(Element *pE
restriction = pElement->getLibraryTreeItem()->getRestriction();
}
ExpandableConnectorTreeItem *pExpandableConnectorTreeItem = new ExpandableConnectorTreeItem(pElement->getName(), pElement->isArray(), pElement->getTypedArrayIndexes(), restriction,
false, pParentExpandableConnectorTreeItem);
false, false, pParentExpandableConnectorTreeItem);
int row = pParentExpandableConnectorTreeItem->getChildren().size();
QModelIndex index = expandableConnectorTreeItemIndex(pParentExpandableConnectorTreeItem);
beginInsertRows(index, row, row);
Expand All @@ -2056,7 +2065,7 @@ void ExpandableConnectorTreeModel::createExpandableConnectorTreeItem(Element *pE
// create add variable item only if item is expandable connector
if (pExpandableConnectorTreeItem->getRestriction() == StringHandler::ExpandableConnector) {
ExpandableConnectorTreeItem *pNewVariableExpandableConnectorTreeItem = new ExpandableConnectorTreeItem(Helper::newVariable, false, QStringList(), StringHandler::Model,
true, pExpandableConnectorTreeItem);
true, false, pExpandableConnectorTreeItem);
int row = pExpandableConnectorTreeItem->getChildren().size();
QModelIndex index = expandableConnectorTreeItemIndex(pExpandableConnectorTreeItem);
beginInsertRows(index, row, row);
Expand Down Expand Up @@ -2139,7 +2148,7 @@ CreateConnectionDialog::CreateConnectionDialog(GraphicsView *pGraphicsView, Line
mpStartExpandableConnectorTreeView = new ExpandableConnectorTreeView(this);
mpStartExpandableConnectorTreeView->setModel(mpStartExpandableConnectorTreeProxyModel);
if (mpGraphicsView->getModelWidget()->isNewApi()) {
mpStartExpandableConnectorTreeModel->createExpandableConnectorTreeItem(mpStartElement->getRootParentElement()->getModelComponent(),
mpStartExpandableConnectorTreeModel->createExpandableConnectorTreeItem(mpStartElement->getRootParentElement()->getModelComponent(), false,
mpStartExpandableConnectorTreeModel->getRootExpandableConnectorTreeItem());
} else {
mpStartExpandableConnectorTreeModel->createExpandableConnectorTreeItem(mpStartElement->getRootParentElement(),
Expand All @@ -2162,7 +2171,7 @@ CreateConnectionDialog::CreateConnectionDialog(GraphicsView *pGraphicsView, Line
mpEndExpandableConnectorTreeView = new ExpandableConnectorTreeView(this);
mpEndExpandableConnectorTreeView->setModel(mpEndExpandableConnectorTreeProxyModel);
if (mpGraphicsView->getModelWidget()->isNewApi()) {
mpEndExpandableConnectorTreeModel->createExpandableConnectorTreeItem(mpEndElement->getRootParentElement()->getModelComponent(),
mpEndExpandableConnectorTreeModel->createExpandableConnectorTreeItem(mpEndElement->getRootParentElement()->getModelComponent(), false,
mpEndExpandableConnectorTreeModel->getRootExpandableConnectorTreeItem());
} else {
mpEndExpandableConnectorTreeModel->createExpandableConnectorTreeItem(mpEndElement->getRootParentElement(),
Expand Down
7 changes: 5 additions & 2 deletions OMEdit/OMEditLIB/Annotations/LineAnnotation.h
Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,7 @@ class ExpandableConnectorTreeItem : public QObject
Q_OBJECT
public:
ExpandableConnectorTreeItem();
ExpandableConnectorTreeItem(QString name, bool array, QStringList arrayIndexes, StringHandler::ModelicaClasses restriction, bool newVariable,
ExpandableConnectorTreeItem(QString name, bool array, QStringList arrayIndexes, StringHandler::ModelicaClasses restriction, bool newVariable, bool inherited,
ExpandableConnectorTreeItem *pParentExpandableConnectorTreeItem);
~ExpandableConnectorTreeItem();
bool isRootItem() {return mIsRootItem;}
Expand All @@ -218,6 +218,8 @@ class ExpandableConnectorTreeItem : public QObject
StringHandler::ModelicaClasses getRestriction() {return mRestriction;}
void setNewVariable(bool newVariable) {mNewVariable = newVariable;}
bool isNewVariable() {return mNewVariable;}
void setInherited(bool inherited) {mInherited = inherited;}
bool isInherited() {return mInherited;}
void insertChild(int position, ExpandableConnectorTreeItem *pExpandableConnectorTreeItem) {mChildren.insert(position, pExpandableConnectorTreeItem);}
ExpandableConnectorTreeItem* child(int row) {return mChildren.value(row);}
QVariant data(int column, int role = Qt::DisplayRole) const;
Expand All @@ -232,6 +234,7 @@ class ExpandableConnectorTreeItem : public QObject
QStringList mArrayIndexes;
StringHandler::ModelicaClasses mRestriction;
bool mNewVariable;
bool mInherited;
};

class CreateConnectionDialog;
Expand Down Expand Up @@ -260,7 +263,7 @@ class ExpandableConnectorTreeModel : public QAbstractItemModel
Qt::ItemFlags flags(const QModelIndex &index) const override;
QModelIndex findFirstEnabledItem(ExpandableConnectorTreeItem *pExpandableConnectorTreeItem);
QModelIndex expandableConnectorTreeItemIndex(const ExpandableConnectorTreeItem *pExpandableConnectorTreeItem) const;
void createExpandableConnectorTreeItem(ModelInstance::Element *pModelElement, ExpandableConnectorTreeItem *pParentExpandableConnectorTreeItem);
void createExpandableConnectorTreeItem(ModelInstance::Element *pModelElement, bool inherited, ExpandableConnectorTreeItem *pParentExpandableConnectorTreeItem);
void createExpandableConnectorTreeItem(Element *pElement, ExpandableConnectorTreeItem *pParentExpandableConnectorTreeItem);
private:
CreateConnectionDialog *mpCreateConnectionDialog;
Expand Down

0 comments on commit 5cb4181

Please sign in to comment.