Isis 3 Programmer Reference
|
Provides access to data stored in a Project through Qt's model-view framework. More...
#include <ProjectItemModel.h>
Signals | |
void | itemAdded (ProjectItem *) |
This signal is emitted when a ProjectItem is added to the model. More... | |
void | itemRemoved (ProjectItem *) |
This signal is emitted when a ProjectItem is removed to the model. More... | |
void | cleanProject (bool) |
This signal is emitted whrn a ProjectItem's name is changed. More... | |
void | projectNameEdited (QString) |
This signal is emitted when the project name is edited. More... | |
Public Member Functions | |
ProjectItemModel (QObject *parent=0) | |
Constructs an empty model. More... | |
~ProjectItemModel () | |
Destructs the model. More... | |
QItemSelectionModel * | selectionModel () |
Returns the internal selection model. More... | |
ProjectItem * | addProject (Project *project) |
Adds a Project to the model. More... | |
ProjectItem * | findItemData (const QVariant &data, int role=Qt::UserRole+1) |
Returns the first item found that contains the given data in the given role or a null pointer if no item is found. More... | |
virtual bool | canDropMimeData (const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) const |
You cannot drop mime data into the ProjectItemModel. More... | |
virtual void | removeItem (ProjectItem *item) |
Removes an item and its children from the model. More... | |
virtual void | removeItems (QList< ProjectItem * > items) |
Removes a list of items and their children from the model. More... | |
ProjectItem * | currentItem () |
Returns the current item of the internal selection model. More... | |
QList< ProjectItem * > | selectedItems () |
Returns a list of the selected items of the internal selection model. More... | |
QList< ProjectItem * > | selectedBOSSImages () |
ProjectItemModel::selectedBOSSImages. More... | |
void | appendRow (ProjectItem *item) |
Appends a top-level item to the model. More... | |
void | clean () |
Used to clean the ProjectItemModel of everything but the headers. More... | |
QModelIndex | indexFromItem (const ProjectItem *item) |
Returns the QModelIndex corresponding to a given ProjectItem. More... | |
void | insertRow (int row, ProjectItem *item) |
Inserts a top-level item at the given row. More... | |
ProjectItem * | item (int row) |
Returns the top-level item at the given row. More... | |
ProjectItem * | itemFromIndex (const QModelIndex &index) |
Returns the ProjectItem corresponding to a given QModelIndex. More... | |
void | setItem (int row, ProjectItem *item) |
Sets the item at the top-level row. More... | |
ProjectItem * | takeItem (int row) |
Removes the top-level row and returns the removed item. More... | |
bool | setData (const QModelIndex &index, const QVariant &value, int role) |
This virtual method was added to handle changing the project name by double-clicking the project name on the project tree. More... | |
Qt::ItemFlags | flags (const QModelIndex &index) const |
This virtual method was added to handle changing the project name by double-clicking the project name on the project tree. More... | |
Protected Slots | |
void | onSelectionChanged (const QItemSelection &selected, const QItemSelection &deselected) |
Slot to connect to the selectionChanged() signal from a selection model. More... | |
Private Slots | |
void | onNameChanged (QString newName) |
Slot to connect to the nameChanged() signal from a Project. More... | |
void | onBundleSolutionInfoAdded (BundleSolutionInfo *bundleSolutionInfo) |
Slot to connect to the bundleSolutionInfoAdded() signal from a project. More... | |
void | onImagesAdded (ImageList *images) |
Slot to connect to the imagesAdded() signal from a Project. More... | |
void | onShapesAdded (ShapeList *shapes) |
Slot to connect to the shapesAdded() signal from a Project. More... | |
void | onControlAdded (Control *control) |
Slot to connect to the controlAdded() signal from a project. More... | |
void | onControlListAdded (ControlList *controlList) |
Slot to connect to the controlListAdded() signal from a Project. More... | |
void | onTargetsAdded (TargetBodyList *targets) |
Slot to connect to the targetsAdded() signal from a Project. More... | |
void | onTemplatesAdded (TemplateList *templateList) |
Slot connected to the templatesAdded() signal from a project. More... | |
void | onGuiCamerasAdded (GuiCameraList *cameras) |
Slot to connect to the guiCamerasAdded() signal from a Project. More... | |
void | onRowsInserted (const QModelIndex &parent, int start, int end) |
Slot to connect to the rowsInserted() signal from QAbstractItemModel. More... | |
void | onRowsRemoved (const QModelIndex &parent, int start, int end) |
Slot to connect to the rowsAboutToBeRemoved() signal from QAbstractItemModel. More... | |
Private Member Functions | |
bool | rejectName (QStringList &reserved, QString target) |
Checks to see if we are adding a reserved name to the project (ex. More... | |
Private Attributes | |
QItemSelectionModel * | m_selectionModel |
The internal selection model. More... | |
QStringList | m_reservedNames |
Provides access to data stored in a Project through Qt's model-view framework.
Items corresponding to data are organized in a tree structure. Data can be accessed through a ProjectItem or through a QModelIndex. Views associated with the model can access it either through the model directly or through a ProjectItemProxyModel.
Top-level items can be accessed through the item() method using the row where the item is stored. Children of items can be accessed through the child() method on the parent item. The data stored in an item can be accessed as a QVariant using the data() method of the item or through the various convenience methods in ProjectItem. Alternatively, the data in an item can be accessed with its corresponding QModelIndex and the model's data() method. It should be noted that the data() method in the model and the data() method of ProjectItem require a Qt::ItemDataRole interpreted as an int. Data stored in the model that correspond to Isis classes are stored as Qt::UserRole + 1.
Top-level items should be added to the model using the appendRow() or the insertRow() method. To add child items to a parent item the appendRow() or insertRow() methods of the parent item should be used.
The model keeps track of selected items and the current item using an internal QItemSelectionModel.
Views that only need access to a subset of the items or the items organized in a different way should use a ProjectItemProxyModel.
Definition at line 132 of file ProjectItemModel.h.
Isis::ProjectItemModel::ProjectItemModel | ( | QObject * | parent = 0 | ) |
Constructs an empty model.
parent | (QObject *) The parent. |
Definition at line 44 of file ProjectItemModel.cpp.
References m_selectionModel, onRowsInserted(), onRowsRemoved(), and onSelectionChanged().
Isis::ProjectItemModel::~ProjectItemModel | ( | ) |
Destructs the model.
Definition at line 62 of file ProjectItemModel.cpp.
ProjectItem * Isis::ProjectItemModel::addProject | ( | Project * | project | ) |
Adds a Project to the model.
An item is created that corresponds to the Project as well as children items that correspond to various parts of the Project.
Definition at line 107 of file ProjectItemModel.cpp.
References appendRow(), onBundleSolutionInfoAdded(), onControlAdded(), onControlListAdded(), onGuiCamerasAdded(), onImagesAdded(), onNameChanged(), onShapesAdded(), onTargetsAdded(), and onTemplatesAdded().
void Isis::ProjectItemModel::appendRow | ( | ProjectItem * | item | ) |
Appends a top-level item to the model.
item | (ProjectItem *) The item to append. |
Definition at line 354 of file ProjectItemModel.cpp.
References item().
Referenced by Isis::ProjectItemProxyModel::addChild(), and addProject().
|
virtual |
You cannot drop mime data into the ProjectItemModel.
data | (const QMimeData *) The data to drop |
action | (Qt::DropAction) The drop action |
row | (int) ??? |
column | (int) ??? |
parent | (const QModelIndex &) The index of the data's parent |
Reimplemented in Isis::ProjectItemProxyModel.
Definition at line 80 of file ProjectItemModel.cpp.
void Isis::ProjectItemModel::clean | ( | ) |
Used to clean the ProjectItemModel of everything but the headers.
Definition at line 952 of file ProjectItemModel.cpp.
References Isis::ProjectItem::child(), item(), Isis::ProjectItem::project(), and removeItem().
|
signal |
This signal is emitted whrn a ProjectItem's name is changed.
Referenced by setData().
ProjectItem * Isis::ProjectItemModel::currentItem | ( | ) |
Returns the current item of the internal selection model.
Definition at line 139 of file ProjectItemModel.cpp.
References item(), itemFromIndex(), selectedItems(), and selectionModel().
Referenced by Isis::AbstractProjectItemView::currentItem().
ProjectItem * Isis::ProjectItemModel::findItemData | ( | const QVariant & | data, |
int | role = Qt::UserRole+1 |
||
) |
Returns the first item found that contains the given data in the given role or a null pointer if no item is found.
data | (const QVariant &) The data contained in the item. |
role | (int) The role of the data (see Qt::ItemDataRole). |
Definition at line 290 of file ProjectItemModel.cpp.
References Isis::ProjectItem::findItemData(), and item().
Referenced by Isis::ControlHealthMonitorView::openImageEditor(), selectedBOSSImages(), Isis::Project::setActiveControl(), Isis::Project::setActiveImageList(), Isis::ImportImagesWorkOrder::undoExecution(), Isis::ImportMapTemplateWorkOrder::undoExecution(), Isis::ImportRegistrationTemplateWorkOrder::undoExecution(), and Isis::ImportShapesWorkOrder::undoExecution().
Qt::ItemFlags Isis::ProjectItemModel::flags | ( | const QModelIndex & | index | ) | const |
This virtual method was added to handle changing the project name by double-clicking the project name on the project tree.
It was required by Qt in order to allow editing capabilities.
index | (const QModelIndex &) Field which has been edited |
Definition at line 914 of file ProjectItemModel.cpp.
QModelIndex Isis::ProjectItemModel::indexFromItem | ( | const ProjectItem * | item | ) |
Returns the QModelIndex corresponding to a given ProjectItem.
item | (const ProjectItem *) The item. |
Definition at line 366 of file ProjectItemModel.cpp.
References item().
void Isis::ProjectItemModel::insertRow | ( | int | row, |
ProjectItem * | item | ||
) |
Inserts a top-level item at the given row.
row | (int) The row where the item will be inserted. |
item | (ProjectItem *) The item to insert. |
Definition at line 377 of file ProjectItemModel.cpp.
References item().
ProjectItem * Isis::ProjectItemModel::item | ( | int | row | ) |
Returns the top-level item at the given row.
row | (int) The row of the item. |
Definition at line 389 of file ProjectItemModel.cpp.
Referenced by Isis::ProjectItemProxyModel::addItems(), appendRow(), clean(), currentItem(), findItemData(), indexFromItem(), insertRow(), onBundleSolutionInfoAdded(), onControlAdded(), onControlListAdded(), onGuiCamerasAdded(), onImagesAdded(), Isis::ProjectItemProxyModel::onItemChanged(), onNameChanged(), onRowsInserted(), onRowsRemoved(), onSelectionChanged(), onShapesAdded(), onTargetsAdded(), onTemplatesAdded(), removeItem(), Isis::ProjectItemProxyModel::removeItem(), removeItems(), selectedBOSSImages(), setData(), and setItem().
|
signal |
This signal is emitted when a ProjectItem is added to the model.
Referenced by onRowsInserted().
ProjectItem * Isis::ProjectItemModel::itemFromIndex | ( | const QModelIndex & | index | ) |
Returns the ProjectItem corresponding to a given QModelIndex.
index | (const QModelIndex &) The index of the item. |
Definition at line 401 of file ProjectItemModel.cpp.
Referenced by currentItem(), Isis::ProjectItemProxyModel::mapIndexFromSource(), Isis::ProjectItemProxyModel::mapIndexToSource(), Isis::JigsawSetupDialog::on_applySettingsPushButton_clicked(), Isis::CubeDnView::onCurrentChanged(), onRowsInserted(), onRowsRemoved(), onSelectionChanged(), selectedBOSSImages(), selectedItems(), setData(), and Isis::JigsawSetupDialog::updateBundleObservationSolveSettings().
|
signal |
This signal is emitted when a ProjectItem is removed to the model.
Referenced by onRowsRemoved().
|
privateslot |
Slot to connect to the bundleSolutionInfoAdded() signal from a project.
Adds a ProjectItem that corresponds to the BundleSolutionInfo to the model. The item is added to the item named "Results" of the item that corresponds to the Project that sent the signal.
bundleSolutionInfo | (BundleSolutionInfo *) The BundleSolutionInfo added to the Project. |
Definition at line 468 of file ProjectItemModel.cpp.
References Isis::ProjectItem::appendRow(), Isis::ProjectItem::child(), item(), Isis::BundleSolutionInfo::name(), Isis::ProjectItem::project(), Isis::BundleSolutionInfo::savedBundleOutputFilename(), Isis::BundleSolutionInfo::savedImagesFilename(), Isis::BundleSolutionInfo::savedPointsFilename(), and Isis::BundleSolutionInfo::savedResidualsFilename().
Referenced by addProject().
|
privateslot |
Slot to connect to the controlAdded() signal from a project.
Adds a ProjectItem that corresponds to the Control to the model. The item is added to the item that corresponds to the control's ControlList.
Definition at line 563 of file ProjectItemModel.cpp.
References Isis::ProjectItem::appendRow(), Isis::ProjectItem::child(), Isis::ProjectItem::controlList(), Isis::Control::id(), item(), and Isis::ProjectItem::project().
Referenced by addProject().
|
privateslot |
Slot to connect to the controlListAdded() signal from a Project.
Adds a ProjectItem that corresponds to the ControlList to the model. The item is added to the item named "Control Networks" of the item that corresponds to the Project that sent the signal.
controlList | (ControlList *) The ControlList added to the Project. |
Definition at line 602 of file ProjectItemModel.cpp.
References Isis::ProjectItem::appendRow(), Isis::ProjectItem::child(), item(), Isis::ControlList::name(), and Isis::ProjectItem::project().
Referenced by addProject().
|
privateslot |
Slot to connect to the guiCamerasAdded() signal from a Project.
Adds items that correspond to the cameras to the model. The items are added to the item named "Sensors" of the item that corresponds to the Project that sent the signal.
cameras | (GuiCameraList *) The GuiCameraList of the Project. |
Definition at line 732 of file ProjectItemModel.cpp.
References Isis::ProjectItem::appendRow(), Isis::ProjectItem::child(), Isis::ProjectItem::guiCamera(), item(), Isis::GuiCameraList::name(), and Isis::ProjectItem::project().
Referenced by addProject().
|
privateslot |
Slot to connect to the imagesAdded() signal from a Project.
Adds a ProjectItem that corresponds to the ImageList to the model. The item is added to the item named "Images" of the item that corresponds to the Project that sent the signal.
Definition at line 632 of file ProjectItemModel.cpp.
References Isis::ProjectItem::appendRow(), Isis::ProjectItem::child(), item(), Isis::ImageList::name(), and Isis::ProjectItem::project().
Referenced by addProject().
|
privateslot |
Slot to connect to the nameChanged() signal from a Project.
Sets the name of the ProjectItem that corresponds with the Project.
newName | (QString) The new name of the project |
Definition at line 441 of file ProjectItemModel.cpp.
References item(), Isis::ProjectItem::project(), and Isis::Project::setClean().
Referenced by addProject().
|
privateslot |
Slot to connect to the rowsInserted() signal from QAbstractItemModel.
Emits a corresponding itemAdded() signal for each row inserted.
parent | (const QModelIndex &) The parent index where rows were inserted. |
start | (int) The first row inserted (inclusive). |
end | (int) The last row inserted (inclusive). |
Definition at line 812 of file ProjectItemModel.cpp.
References item(), itemAdded(), and itemFromIndex().
Referenced by ProjectItemModel().
|
privateslot |
Slot to connect to the rowsAboutToBeRemoved() signal from QAbstractItemModel.
Emits a corresponding itemRemoved() signal for each row inserted.
parent | (const QModelIndex &) The parent index where rows are to be removed. |
start | (int) The first row to be removed (inclusive). |
end | (int) The last row to be removed (inclusive). |
Definition at line 830 of file ProjectItemModel.cpp.
References item(), itemFromIndex(), and itemRemoved().
Referenced by ProjectItemModel().
|
protectedslot |
Slot to connect to the selectionChanged() signal from a selection model.
Updates other factors in the model that rely on selected items but do not directly correspond with the selection model. Currently changes the selected property of Images that correspond with selected or deselected items.
selected | (const QItemSelection &) The selected items. |
deselected | (const QItemSelection &) The deselected items. |
Definition at line 775 of file ProjectItemModel.cpp.
References Isis::Image::displayProperties(), Isis::ProjectItem::image(), Isis::ProjectItem::isImage(), item(), itemFromIndex(), selectedItems(), and Isis::ImageDisplayProperties::setSelected().
Referenced by ProjectItemModel().
|
privateslot |
Slot to connect to the shapesAdded() signal from a Project.
Adds a ProjectItem that corresponds to the ShapeList to the model. The item is added to the item named "Shape Models" of the item that corresponds to the Project that sent the signal.
Definition at line 662 of file ProjectItemModel.cpp.
References Isis::ProjectItem::appendRow(), Isis::ProjectItem::child(), item(), Isis::ShapeList::name(), and Isis::ProjectItem::project().
Referenced by addProject().
|
privateslot |
Slot to connect to the targetsAdded() signal from a Project.
Adds items that correspond to the target bodies to the model. The items are added to the item named "Target Body" of the item that corresponds to the Project that sent the signal.
targets | (TargetBodyList *) The TargetBodyList of the Project. |
Definition at line 691 of file ProjectItemModel.cpp.
References Isis::ProjectItem::appendRow(), Isis::ProjectItem::child(), item(), Isis::TargetBodyList::name(), Isis::ProjectItem::project(), and Isis::ProjectItem::targetBody().
Referenced by addProject().
|
privateslot |
Slot connected to the templatesAdded() signal from a project.
Adds a ProjectItem for each newly added template FileName to the model. The Item is added to the corresponding ProjectItem under "Templates" (currently only "Maps" and "Registrations" ) and the name of the TemplateList (import1, import2, etc...).
templateList | TemplateList of Templates being added to the project. |
Definition at line 525 of file ProjectItemModel.cpp.
References Isis::ProjectItem::appendRow(), Isis::ProjectItem::child(), item(), Isis::ProjectItem::project(), and Isis::TemplateList::type().
Referenced by addProject().
|
signal |
This signal is emitted when the project name is edited.
Referenced by setData().
|
private |
Checks to see if we are adding a reserved name to the project (ex.
If we are adding an ImageList, and giving it the same name as another ImageList, or ShapesList, or something else).
reserved | The list of reserved names we cannot use. |
target | The name we are querying to see if it is in the reserved list. |
Definition at line 929 of file ProjectItemModel.cpp.
Referenced by setData().
|
virtual |
Removes an item and its children from the model.
item | (ProjectItem *) The item to be removed. |
Reimplemented in Isis::ProjectItemProxyModel.
Definition at line 315 of file ProjectItemModel.cpp.
References Isis::ProjectItem::child(), item(), and Isis::ProjectItem::parent().
Referenced by clean(), Isis::RemoveImagesWorkOrder::execute(), Isis::ProjectItemProxyModel::removeItem(), removeItems(), Isis::ImportImagesWorkOrder::undoExecution(), Isis::ImportMapTemplateWorkOrder::undoExecution(), Isis::ImportRegistrationTemplateWorkOrder::undoExecution(), and Isis::ImportShapesWorkOrder::undoExecution().
|
virtual |
Removes a list of items and their children from the model.
items | (ProjectItem *) The items to be removed. |
Definition at line 342 of file ProjectItemModel.cpp.
References item(), and removeItem().
Referenced by Isis::RemoveImagesWorkOrder::execute().
QList< ProjectItem * > Isis::ProjectItemModel::selectedBOSSImages | ( | ) |
ProjectItemModel::selectedBOSSImages.
Definition at line 177 of file ProjectItemModel.cpp.
References Isis::ProjectItem::child(), findItemData(), Isis::ProjectItem::isImage(), Isis::ProjectItem::isImageList(), item(), itemFromIndex(), Isis::ProjectItem::parent(), and selectionModel().
QList< ProjectItem * > Isis::ProjectItemModel::selectedItems | ( | ) |
Returns a list of the selected items of the internal selection model.
Definition at line 158 of file ProjectItemModel.cpp.
References itemFromIndex(), and selectionModel().
Referenced by currentItem(), Isis::ProjectItemProxyModel::dropMimeData(), Isis::CubeDnViewWorkOrder::execute(), Isis::Footprint2DViewWorkOrder::execute(), Isis::RemoveImagesWorkOrder::execute(), onSelectionChanged(), Isis::AbstractProjectItemView::selectedItems(), and Isis::RemoveImagesWorkOrder::setupExecution().
QItemSelectionModel * Isis::ProjectItemModel::selectionModel | ( | ) |
Returns the internal selection model.
Definition at line 93 of file ProjectItemModel.cpp.
References m_selectionModel.
Referenced by currentItem(), Isis::CubeDnView::onCubeViewportActivated(), Isis::Footprint2DView::onQueueSelectionChanged(), selectedBOSSImages(), selectedItems(), Isis::ProjectItemTreeView::setInternalModel(), Isis::ProjectItemProxyModel::setSourceModel(), Isis::ProjectItemProxyModel::updateProxyCurrent(), Isis::ProjectItemProxyModel::updateProxySelection(), Isis::ProjectItemProxyModel::updateSourceCurrent(), and Isis::ProjectItemProxyModel::updateSourceSelection().
bool Isis::ProjectItemModel::setData | ( | const QModelIndex & | index, |
const QVariant & | value, | ||
int | role | ||
) |
This virtual method was added to handle changing the project name by double-clicking the project name on the project tree.
It was required by Qt in order to allow editing capabilities.
index | (const QModelIndex &) Field which has been edited |
value | (const QVariant &) Value contained in the field |
role | (int) Will always be EditRole since field only contains text |
Definition at line 854 of file ProjectItemModel.cpp.
References Isis::ProjectItem::bundleSolutionInfo(), cleanProject(), Isis::ProjectItem::controlList(), Isis::ProjectItem::imageList(), Isis::ProjectItem::isBundleSolutionInfo(), Isis::ProjectItem::isControlList(), Isis::ProjectItem::isImageList(), Isis::ProjectItem::isProject(), Isis::ProjectItem::isShapeList(), item(), itemFromIndex(), projectNameEdited(), rejectName(), Isis::BundleSolutionInfo::setName(), Isis::ControlList::setName(), Isis::ImageList::setName(), Isis::ShapeList::setName(), and Isis::ProjectItem::shapeList().
void Isis::ProjectItemModel::setItem | ( | int | row, |
ProjectItem * | item | ||
) |
Sets the item at the top-level row.
row | (int) The row where the item will be set. |
item | (ProjectItem *) The item to set the row to. |
Definition at line 412 of file ProjectItemModel.cpp.
References item().
Referenced by Isis::BundleObservationView::displayCsvFile().
ProjectItem * Isis::ProjectItemModel::takeItem | ( | int | row | ) |
Removes the top-level row and returns the removed item.
row | (int) The row of the item to remove. |
Definition at line 424 of file ProjectItemModel.cpp.
|
private |
The internal selection model.
Definition at line 212 of file ProjectItemModel.h.
Referenced by ProjectItemModel(), and selectionModel().