Skip to content

Commit

Permalink
Completed the GUI support for moving classes up/down.
Browse files Browse the repository at this point in the history
  • Loading branch information
adeas31 committed Nov 10, 2015
1 parent e8b4275 commit 952e5a4
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 2 deletions.
54 changes: 52 additions & 2 deletions OMEdit/OMEditGUI/Modeling/LibraryTreeWidget.cpp
Expand Up @@ -488,6 +488,11 @@ LibraryTreeItem* LibraryTreeItem::child(int row)
return mChildren.value(row);
}

void LibraryTreeItem::swapChildren(int i, int j)
{
mChildren.swap(i, j);
}

/*!
* \brief LibraryTreeItem::addInheritedClass
* Adds the inherited class and connects to its signals for notifications.
Expand Down Expand Up @@ -1671,6 +1676,45 @@ bool LibraryTreeModel::unloadTLMOrTextFile(LibraryTreeItem *pLibraryTreeItem, bo
return true;
}

void LibraryTreeModel::moveClass(LibraryTreeItem *pLibraryTreeItem, bool up)
{
LibraryTreeItem *pParentLibraryTreeItem = pLibraryTreeItem->parent();
QModelIndex parentIndex = libraryTreeItemIndex(pParentLibraryTreeItem);
int row = pLibraryTreeItem->row();
bool update = false;
if (up && row > 0) {
if (beginMoveRows(parentIndex, row, row, parentIndex, row - 1)) {
pParentLibraryTreeItem->swapChildren(row, row - 1);
endMoveRows();
update = true;
}
} else if (!up && row < pParentLibraryTreeItem->getChildren().size() - 1) {
if (beginMoveRows(parentIndex, row, row, parentIndex, row + 2)) {
pParentLibraryTreeItem->swapChildren(row, row + 1);
endMoveRows();
update = true;
}
}
if (update) {
LibraryTreeItem *pContainingFileParentLibraryTreeItem = getContainingFileParentLibraryTreeItem(pLibraryTreeItem);
// if we order in a package saved in one file strucutre then we should update its containing file item text.
if (pContainingFileParentLibraryTreeItem != pLibraryTreeItem) {
if (pLibraryTreeItem->getModelWidget()) {
pLibraryTreeItem->getModelWidget()->updateModelicaText();
} else {
updateLibraryTreeItemClassText(pLibraryTreeItem);
}
} else {
// if we order in a package saved in folder strucutre then we should mark its parent unsaved so new package.order can be saved.
pParentLibraryTreeItem->setIsSaved(false);
updateLibraryTreeItem(pParentLibraryTreeItem);
if (pParentLibraryTreeItem->getModelWidget()) {
pParentLibraryTreeItem->getModelWidget()->setWindowTitle(QString(pParentLibraryTreeItem->getNameStructure()).append("*"));
}
}
}
}

/*!
* \brief LibraryTreeModel::getUniqueTopLevelItemName
* Finds the unique name for a new top level LibraryTreeItem based on the suggested name.
Expand Down Expand Up @@ -2097,7 +2141,10 @@ void LibraryTreeView::createNewModelicaClass()
*/
void LibraryTreeView::moveClassUp()
{

LibraryTreeItem *pLibraryTreeItem = getSelectedLibraryTreeItem();
if (pLibraryTreeItem) {
mpLibraryWidget->getLibraryTreeModel()->moveClass(pLibraryTreeItem, true);
}
}

/*!
Expand All @@ -2106,7 +2153,10 @@ void LibraryTreeView::moveClassUp()
*/
void LibraryTreeView::moveClassDown()
{

LibraryTreeItem *pLibraryTreeItem = getSelectedLibraryTreeItem();
if (pLibraryTreeItem) {
mpLibraryWidget->getLibraryTreeModel()->moveClass(pLibraryTreeItem, false);
}
}

/*!
Expand Down
2 changes: 2 additions & 0 deletions OMEdit/OMEditGUI/Modeling/LibraryTreeWidget.h
Expand Up @@ -131,6 +131,7 @@ class LibraryTreeItem : public QObject
bool isInPackageOneFile();
void insertChild(int position, LibraryTreeItem *pLibraryTreeItem);
LibraryTreeItem* child(int row);
void swapChildren(int i, int j);
void addInheritedClass(LibraryTreeItem *pLibraryTreeItem);
void removeInheritedClasses();
QList<LibraryTreeItem*> getInheritedClasses() const {return mInheritedClasses;}
Expand Down Expand Up @@ -241,6 +242,7 @@ class LibraryTreeModel : public QAbstractItemModel
void showHideProtectedClasses();
bool unloadClass(LibraryTreeItem *pLibraryTreeItem, bool askQuestion = true);
bool unloadTLMOrTextFile(LibraryTreeItem *pLibraryTreeItem, bool askQuestion = true);
void moveClass(LibraryTreeItem *pLibraryTreeItem, bool up);
QString getUniqueTopLevelItemName(QString name, int number = 1);
void emitDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight) {emit dataChanged(topLeft, bottomRight);}
private:
Expand Down

0 comments on commit 952e5a4

Please sign in to comment.