Isis 3 Programmer Reference
Isis::CubeDnView Class Reference

View that displays cubes in a QView-like way. More...

#include <CubeDnView.h>

Inheritance diagram for Isis::CubeDnView:
Inheritance graph
Collaboration diagram for Isis::CubeDnView:
Collaboration graph

Classes

class  XmlHandler
 

Public Slots

void addItem (ProjectItem *item)
 Adds an item to the view.
 
void enableControlNetTool (bool value)
 A slot function that is called when directory emits a signal that an active control network is set.
 
virtual void addItems (QList< ProjectItem * > items)
 Adds several items to the view.
 
virtual void removeItem (ProjectItem *item)
 Removes an item to the view.
 
virtual void removeItems (QList< ProjectItem * > items)
 Removes several items from the view.
 

Signals

void modifyControlPoint (ControlPoint *controlPoint, QString serialNumber)
 
void deleteControlPoint (ControlPoint *controlPoint)
 
void createControlPoint (double latitude, double longitude, Cube *cube, bool isGroundSource=false)
 
void controlPointAdded (QString newPointId)
 
void redrawMeasures ()
 
void windowChangeEvent (bool event)
 

Public Member Functions

 CubeDnView (Directory *directory, QWidget *parent=0)
 Constructs the view, initializing the tools.
 
 ~CubeDnView ()
 Destructor.
 
bool viewportContainsShape (MdiCubeViewport *viewport)
 
void load (XmlStackedHandlerReader *xmlReader, Project *project)
 
void save (QXmlStreamWriter &stream, Project *project, FileName newProjectRoot) const
 
virtual QSize sizeHint () const
 Returns the suggested size.
 
virtual void setModel (ProjectItemModel *model)
 Sets the model used by the view.
 
virtual ProjectItemModelmodel ()
 Returns the model used by the view.
 
virtual void dragEnterEvent (QDragEnterEvent *event)
 Accepts the drag enter event if the internal model can accept the mime data.
 
virtual void dragMoveEvent (QDragMoveEvent *event)
 Accepts the drag event if the internal model can accept the mime data.
 
virtual void dropEvent (QDropEvent *event)
 Drops the data into the internal model if it can accept the data.
 
virtual void moveEvent (QMoveEvent *event)
 
virtual void resizeEvent (QResizeEvent *event)
 
virtual void enterEvent (QEvent *event)
 Enables actions when cursor enters the view.
 
virtual QList< QAction * > contextMenuActions ()
 Returns a list of actions appropriate for a context menu.
 
virtual ProjectItemcurrentItem ()
 Returns the current item of the model.
 
virtual QList< ProjectItem * > selectedItems ()
 Return the selected items of the model.
 
virtual ProjectItemModelinternalModel ()
 Returns the internal model of the view.
 
virtual void setInternalModel (ProjectItemModel *model)
 Sets the internal model of the view.
 

Private Slots

void createActions (Directory *directory)
 
void onCurrentChanged (const QModelIndex &current)
 Slot to connect to the currentChanged() signal from a selection model.
 
void onCubeViewportActivated (MdiCubeViewport *)
 Slot to connect to the cubeViewportActivated signal from the Workspace.
 
void onItemAdded (ProjectItem *item)
 Slot to connect to the itemAdded signal from a ProjectItemModel.
 
void onCubeViewportAdded (MdiCubeViewport *viewport)
 Slot to connect to the viewportAdded signal from a Workspace.
 
void onCubeViewportDeleted (QObject *obj)
 Slot to connect to the destroyed signal from a viewport.
 
void disableActions ()
 Disables toolbars and toolpad actions/widgets.
 

Private Member Functions

CubeworkspaceActiveCube ()
 Returns the cube of the active viewport in the Workspace, or a null pointer if no viewports are active.
 
void setWorkspaceActiveCube (Image *image)
 Raises the subwindow corresponding with an image to the top.
 
void leaveEvent (QEvent *event)
 Disables actions when the cursor leaves the view.
 
void enableActions ()
 Enables toolbars and toolpad actions/widgets.
 

Private Attributes

QMap< Cube *, ProjectItem * > m_cubeItemMap
 Maps cubes to their items.
 
Workspacem_workspace
 The workspace.
 
Directorym_directory
 The directory.
 
ProjectItemViewMenum_viewMenu
 View menu for storing actions.
 
ProjectItemViewMenum_optionsMenu
 Options menu for storing actions.
 
ProjectItemViewMenum_windowMenu
 Window menu for storing actions.
 
QActionm_separatorAction
 A separator action that is reused.
 
QToolBarm_permToolBar
 A tool bar for storing actions.
 
QToolBarm_activeToolBar
 A tool bar for storing actions.
 
ToolPadm_toolPad
 A tool bar for storing actions.
 
QList< QWidget * > m_childWidgets
 Child widgets of the active toolbar.
 
ProjectItemModelm_internalModel
 The internal model used by the view.
 

Detailed Description

View that displays cubes in a QView-like way.

Author
2016-01-13 Jeffrey Covington
History

2016-01-13 Jeffrey Covington - Original version.

2016-06-27 Ian Humphrey - Minor updates to documentation and coding standards. Fixes #4004.

2016-08-25 Adam Paquette - Updated documentation. Fixes #4299.

2016-09-14 Tracie Sucharski - Replaced QnetTool with IpceTool.Added signals for mouse clicks for modifying, deleting and creating control points. These are passed on to Directory slots.

2016-10-18 Tracie Sucharski - Added the status bar back in in order to display cube positional information (sample, line, latitude, longitude).

2016-10-18 Tracie Sucharski - Add method to return whether the viewport contains a Shape.

2016-11-10 Tracie Sucharski - Added functionality to save/restore CubeDnViews when opening projects.

2017-01-02 Tracie Sucharski - Moved IpceTool to first tool on tool bar, change icon to match the Footprint2DView.

2017-05-18 Tracie Sucharski - Added serialNumber to the modifyControlPoint signal.

2017-07-27 Tyler Wilson - Added a slot function (enableIPCETool) which is called when a control network (or list of control networks) is added to the active project. Fixes #4994.

2017-08-02 Tracie Sucharski - Added redrawMeasures signal which calls a slot in ipce tool to redraw control measures on cube viewports. Fixes #5007, #5008.

2017-08-03 Cole Neubauer - Changed all references from IpceTool to ControlNetTool Fixes #5090.

2018-05-30 Tracie Sucharski - Refactored for new docked interface. Views are now responsible for creating their menus and toolbars. AbstractProjectItemView now inherits from QMainWindow, so the Workspace of this view is the centralWidget. This needs further work to cleanup and fit in with the new docked view interface.git

2018-06-12 Kaitlyn Lee - Removed help menu and the "What's This?" action because the ipce help menu has this action.

2018-06-13 Kaitlyn Lee - Since views now inherit from QMainWindow, each individual view has its own toolbar, so having getters that return toolbar actions to fill the toolbar of the IpceMainWindow are unnecessary. Removed methods that returned menu and toolbar actions. Removed connections that connected the project and CubeDnView and called enableControlNetTool() because Directory now does this.

2018-06-25 Kaitlyn Lee - When multiple views are open, there is a possibility of getting ambiguous shortcut errors. To counter this, we enable/disable actions. Overrode leaveEvent() to handle open menus causing a leave event. Overrode enable/disableActions() because we need to disable the active toolbar's widgets. On default, a view's actions are disabled. To enable the actions, move the cursor over the view. When a user moves the cursor outside of a view, the actions are disabled.

2018-07-05 Tracie Sucharski - Moved sizeHint and sizePolicy to AbstractProjectItemView. References #5433.

2018-07-09 Tracie Sucharski - Serialize the objectName for this view so that the view can be re-created with the same objectName for restoring the project state. Qt's save/restoreState use the objectName.

Definition at line 97 of file CubeDnView.h.

Constructor & Destructor Documentation

◆ CubeDnView()

Isis::CubeDnView::CubeDnView ( Directory * directory,
QWidget * parent = 0 )

Constructs the view, initializing the tools.

Parameters
parent(QWidget *) Pointer to parent widget

Definition at line 81 of file CubeDnView.cpp.

References Isis::AbstractProjectItemView::internalModel(), m_cubeItemMap, m_directory, m_workspace, Isis::Workspace::mdiArea(), onCubeViewportActivated(), onCubeViewportAdded(), onCurrentChanged(), and onItemAdded().

◆ ~CubeDnView()

Isis::CubeDnView::~CubeDnView ( )

Destructor.

Definition at line 332 of file CubeDnView.cpp.

References m_activeToolBar, m_optionsMenu, m_permToolBar, m_toolPad, m_viewMenu, and m_windowMenu.

Member Function Documentation

◆ addItem

void Isis::CubeDnView::addItem ( ProjectItem * item)
slot

Adds an item to the view.

Filters out items that are not Images or Shapes or ImageLists.

Parameters
[in]item(ProjectItem *) The item to add.

Definition at line 356 of file CubeDnView.cpp.

References Isis::AbstractProjectItemView::addItem(), Isis::ProjectItem::isImage(), Isis::ProjectItem::isImageList(), Isis::ProjectItem::isShape(), and Isis::ProjectItem::isShapeList().

◆ addItems

void Isis::AbstractProjectItemView::addItems ( QList< ProjectItem * > items)
virtualslotinherited

Adds several items to the view.

The items must be a part of the view's model. This method can be overridden in a subclass to filter out unneeded items.

Parameters
[in]items(QList<ProjectItem *>) The items to add.

Definition at line 264 of file AbstractProjectItemView.cpp.

References Isis::AbstractProjectItemView::internalModel().

◆ contextMenuActions()

QList< QAction * > Isis::AbstractProjectItemView::contextMenuActions ( )
virtualinherited

Returns a list of actions appropriate for a context menu.

Returns
QList<QAction *> The actions

Definition at line 218 of file AbstractProjectItemView.cpp.

◆ createActions

void Isis::CubeDnView::createActions ( Directory * directory)
privateslot

Definition at line 110 of file CubeDnView.cpp.

◆ currentItem()

ProjectItem * Isis::AbstractProjectItemView::currentItem ( )
virtualinherited

Returns the current item of the model.

Returns
ProjectItem * The item

Definition at line 228 of file AbstractProjectItemView.cpp.

References Isis::AbstractProjectItemView::model().

◆ disableActions

void Isis::CubeDnView::disableActions ( )
privateslot

Disables toolbars and toolpad actions/widgets.

Overriden method.

Definition at line 283 of file CubeDnView.cpp.

References m_childWidgets.

Referenced by leaveEvent().

◆ dragEnterEvent()

void Isis::AbstractProjectItemView::dragEnterEvent ( QDragEnterEvent * event)
virtualinherited

Accepts the drag enter event if the internal model can accept the mime data.

Parameters
[in]event(QDragEnterEvent *) The drag event

Definition at line 119 of file AbstractProjectItemView.cpp.

References Isis::AbstractProjectItemView::internalModel().

Referenced by Isis::Footprint2DView::eventFilter().

◆ dragMoveEvent()

void Isis::AbstractProjectItemView::dragMoveEvent ( QDragMoveEvent * event)
virtualinherited

Accepts the drag event if the internal model can accept the mime data.

Parameters
[in]event(QDragMoveEvent *) The drag event

Definition at line 134 of file AbstractProjectItemView.cpp.

References Isis::AbstractProjectItemView::internalModel().

Referenced by Isis::Footprint2DView::eventFilter().

◆ dropEvent()

void Isis::AbstractProjectItemView::dropEvent ( QDropEvent * event)
virtualinherited

Drops the data into the internal model if it can accept the data.

Parameters
[in]event(QDropEvent *) The drop event

Definition at line 148 of file AbstractProjectItemView.cpp.

References Isis::AbstractProjectItemView::internalModel().

Referenced by Isis::Footprint2DView::eventFilter().

◆ enableActions()

void Isis::CubeDnView::enableActions ( )
privatevirtual

Enables toolbars and toolpad actions/widgets.

Overriden method. If an active control network has not been set, do not enable the cnet tool.

Reimplemented from Isis::AbstractProjectItemView.

Definition at line 297 of file CubeDnView.cpp.

References Isis::Project::activeControl(), m_childWidgets, m_directory, and Isis::Directory::project().

◆ enableControlNetTool

void Isis::CubeDnView::enableControlNetTool ( bool value)
slot

A slot function that is called when directory emits a signal that an active control network is set.

It enables the control network editor tool in the toolpad and loads the network.

Parameters
valueThe boolean that holds if a control network has been set.

Definition at line 317 of file CubeDnView.cpp.

References m_toolPad.

◆ enterEvent()

void Isis::AbstractProjectItemView::enterEvent ( QEvent * event)
virtualinherited

Enables actions when cursor enters the view.

Parameters
eventThe enter event

Definition at line 178 of file AbstractProjectItemView.cpp.

References Isis::AbstractProjectItemView::enableActions().

◆ internalModel()

◆ leaveEvent()

void Isis::CubeDnView::leaveEvent ( QEvent * event)
privatevirtual

Disables actions when the cursor leaves the view.

Overriden method If a project item view menu or toolpad action menu is visible, i.e. clicked on, this causes a leave event. We want the actions to still be enabled when a menu is visible.

Parameters
eventThe leave event

Reimplemented from Isis::AbstractProjectItemView.

Definition at line 266 of file CubeDnView.cpp.

References disableActions(), m_optionsMenu, m_viewMenu, and m_windowMenu.

◆ load()

void Isis::CubeDnView::load ( XmlStackedHandlerReader * xmlReader,
Project * project )

Definition at line 533 of file CubeDnView.cpp.

◆ model()

ProjectItemModel * Isis::AbstractProjectItemView::model ( )
virtualinherited

◆ moveEvent()

void Isis::AbstractProjectItemView::moveEvent ( QMoveEvent * event)
virtualinherited

Definition at line 159 of file AbstractProjectItemView.cpp.

◆ onCubeViewportActivated

void Isis::CubeDnView::onCubeViewportActivated ( MdiCubeViewport * viewport)
privateslot

Slot to connect to the cubeViewportActivated signal from the Workspace.

Updates the selection model to reflect the activated viewport.

Parameters
[in]viewport(MdiCubeViewport *) The viewport

Definition at line 406 of file CubeDnView.cpp.

References Isis::CubeViewport::cube(), Isis::AbstractProjectItemView::internalModel(), and m_cubeItemMap.

Referenced by CubeDnView().

◆ onCubeViewportAdded

void Isis::CubeDnView::onCubeViewportAdded ( MdiCubeViewport * viewport)
privateslot

Slot to connect to the viewportAdded signal from a Workspace.

Removes the corresponding item from the model when its viewport is closed.

Parameters
[in]viewport(MdiCubeViewport *) The added viewport

Definition at line 433 of file CubeDnView.cpp.

References onCubeViewportDeleted().

Referenced by CubeDnView().

◆ onCubeViewportDeleted

void Isis::CubeDnView::onCubeViewportDeleted ( QObject * obj)
privateslot

Slot to connect to the destroyed signal from a viewport.

Removes the viewports corresponding item from the internal model.

Parameters
[in]obj(QObject *) The deleted viewport

Definition at line 445 of file CubeDnView.cpp.

References Isis::CubeViewport::cube(), Isis::AbstractProjectItemView::internalModel(), and m_cubeItemMap.

Referenced by onCubeViewportAdded().

◆ onCurrentChanged

void Isis::CubeDnView::onCurrentChanged ( const QModelIndex & current)
privateslot

Slot to connect to the currentChanged() signal from a selection model.

If the new current item is an image the corresponding subwindow is activated.

Parameters
[in]current(const QModelIndex &) The new current index

Definition at line 383 of file CubeDnView.cpp.

References Isis::ProjectItem::image(), Isis::AbstractProjectItemView::internalModel(), Isis::ProjectItem::isImage(), and setWorkspaceActiveCube().

Referenced by CubeDnView().

◆ onItemAdded

void Isis::CubeDnView::onItemAdded ( ProjectItem * item)
privateslot

Slot to connect to the itemAdded signal from a ProjectItemModel.

Adds the image or shape to the Workspace and the item to an internal map.

Parameters
[in]item(ProjectItem *) The added item

Definition at line 466 of file CubeDnView.cpp.

References Isis::Workspace::addCubeViewport(), Isis::Image::cube(), Isis::Shape::cube(), Isis::Workspace::cubeToMdiWidget(), Isis::ProjectItem::image(), Isis::ProjectItem::isImage(), Isis::ProjectItem::isShape(), m_cubeItemMap, m_workspace, and Isis::ProjectItem::shape().

Referenced by CubeDnView().

◆ removeItem

void Isis::AbstractProjectItemView::removeItem ( ProjectItem * item)
virtualslotinherited

Removes an item to the view.

The item must be part of the view's model. This method can be overriden in a subclass to filter out unneeded items.

Parameters
[in]item(ProjectItem *) The item to remove.

Definition at line 278 of file AbstractProjectItemView.cpp.

References Isis::AbstractProjectItemView::internalModel().

Referenced by Isis::AbstractProjectItemView::removeItems().

◆ removeItems

void Isis::AbstractProjectItemView::removeItems ( QList< ProjectItem * > items)
virtualslotinherited

Removes several items from the view.

The items must be a part of the view's model.

Parameters
[in]items(QList<ProjectItem *>) The items to remove.

Definition at line 292 of file AbstractProjectItemView.cpp.

References Isis::AbstractProjectItemView::removeItem().

◆ resizeEvent()

void Isis::AbstractProjectItemView::resizeEvent ( QResizeEvent * event)
virtualinherited

Definition at line 166 of file AbstractProjectItemView.cpp.

◆ save()

void Isis::CubeDnView::save ( QXmlStreamWriter & stream,
Project * project,
FileName newProjectRoot ) const

Definition at line 538 of file CubeDnView.cpp.

◆ selectedItems()

QList< ProjectItem * > Isis::AbstractProjectItemView::selectedItems ( )
virtualinherited

Return the selected items of the model.

Returns
QList<ProjectItem *> The items

Definition at line 238 of file AbstractProjectItemView.cpp.

References Isis::AbstractProjectItemView::model().

◆ setInternalModel()

void Isis::AbstractProjectItemView::setInternalModel ( ProjectItemModel * model)
virtualinherited

Sets the internal model of the view.

Parameters
[in]model(ProjectItemModel *) The new internal model

Reimplemented in Isis::ProjectItemTreeView.

Definition at line 97 of file AbstractProjectItemView.cpp.

References Isis::AbstractProjectItemView::m_internalModel, and Isis::AbstractProjectItemView::model().

Referenced by Isis::ProjectItemTreeView::setInternalModel().

◆ setModel()

void Isis::AbstractProjectItemView::setModel ( ProjectItemModel * model)
virtualinherited

Sets the model used by the view.

If the internal model is a proxy model, it sets the source model.

Parameters
[in]model(ProjectItemModel *) The new model

Definition at line 69 of file AbstractProjectItemView.cpp.

References Isis::AbstractProjectItemView::internalModel(), and Isis::AbstractProjectItemView::model().

Referenced by Isis::Directory::addCubeDnView(), Isis::Directory::addFootprint2DView(), and Isis::Directory::addProjectItemTreeView().

◆ setWorkspaceActiveCube()

void Isis::CubeDnView::setWorkspaceActiveCube ( Image * image)
private

Raises the subwindow corresponding with an image to the top.

Definition at line 509 of file CubeDnView.cpp.

References Isis::Image::cube(), Isis::Workspace::cubeToMdiWidget(), and m_workspace.

Referenced by onCurrentChanged().

◆ sizeHint()

QSize Isis::AbstractProjectItemView::sizeHint ( ) const
virtualinherited

Returns the suggested size.

Returns
QSize The size hint

Reimplemented in Isis::ControlHealthMonitorView, and Isis::ProjectItemTreeView.

Definition at line 53 of file AbstractProjectItemView.cpp.

◆ viewportContainsShape()

bool Isis::CubeDnView::viewportContainsShape ( MdiCubeViewport * viewport)

Definition at line 365 of file CubeDnView.cpp.

◆ workspaceActiveCube()

Cube * Isis::CubeDnView::workspaceActiveCube ( )
private

Returns the cube of the active viewport in the Workspace, or a null pointer if no viewports are active.

Returns
Cube* The active cube

Definition at line 495 of file CubeDnView.cpp.

References Isis::CubeViewport::cube(), m_workspace, and Isis::Workspace::mdiArea().

Member Data Documentation

◆ m_activeToolBar

QToolBar* Isis::CubeDnView::m_activeToolBar
private

A tool bar for storing actions.

Definition at line 175 of file CubeDnView.h.

Referenced by ~CubeDnView().

◆ m_childWidgets

QList<QWidget *> Isis::CubeDnView::m_childWidgets
private

Child widgets of the active toolbar.

Definition at line 177 of file CubeDnView.h.

Referenced by disableActions(), and enableActions().

◆ m_cubeItemMap

QMap<Cube *, ProjectItem *> Isis::CubeDnView::m_cubeItemMap
private

Maps cubes to their items.

Definition at line 164 of file CubeDnView.h.

Referenced by CubeDnView(), onCubeViewportActivated(), onCubeViewportDeleted(), and onItemAdded().

◆ m_directory

Directory* Isis::CubeDnView::m_directory
private

The directory.

Definition at line 166 of file CubeDnView.h.

Referenced by CubeDnView(), and enableActions().

◆ m_internalModel

ProjectItemModel* Isis::AbstractProjectItemView::m_internalModel
privateinherited

◆ m_optionsMenu

ProjectItemViewMenu* Isis::CubeDnView::m_optionsMenu
private

Options menu for storing actions.

Definition at line 169 of file CubeDnView.h.

Referenced by leaveEvent(), and ~CubeDnView().

◆ m_permToolBar

QToolBar* Isis::CubeDnView::m_permToolBar
private

A tool bar for storing actions.

Definition at line 174 of file CubeDnView.h.

Referenced by ~CubeDnView().

◆ m_separatorAction

QAction* Isis::CubeDnView::m_separatorAction
private

A separator action that is reused.

Definition at line 172 of file CubeDnView.h.

◆ m_toolPad

ToolPad* Isis::CubeDnView::m_toolPad
private

A tool bar for storing actions.

Definition at line 176 of file CubeDnView.h.

Referenced by enableControlNetTool(), and ~CubeDnView().

◆ m_viewMenu

ProjectItemViewMenu* Isis::CubeDnView::m_viewMenu
private

View menu for storing actions.

Definition at line 168 of file CubeDnView.h.

Referenced by leaveEvent(), and ~CubeDnView().

◆ m_windowMenu

ProjectItemViewMenu* Isis::CubeDnView::m_windowMenu
private

Window menu for storing actions.

Definition at line 170 of file CubeDnView.h.

Referenced by leaveEvent(), and ~CubeDnView().

◆ m_workspace

Workspace* Isis::CubeDnView::m_workspace
private

The workspace.

Definition at line 165 of file CubeDnView.h.

Referenced by CubeDnView(), onItemAdded(), setWorkspaceActiveCube(), and workspaceActiveCube().


The documentation for this class was generated from the following files: