11#include <QWeakPointer> 
   13#include "AdvancedTrackTool.h" 
   17#include "CubeAttribute.h" 
   19#include "FeatureNomenclatureTool.h" 
   24#include "HistogramTool.h" 
   29#include "MdiCubeViewport.h" 
   30#include "MeasureTool.h" 
   32#include "RubberBandTool.h" 
   33#include "QnetFileTool.h" 
   34#include "QnetNavTool.h" 
   36#include "ScatterPlotTool.h" 
   37#include "SpatialPlotTool.h" 
   38#include "SpecialPixelTool.h" 
   39#include "SpectralPlotTool.h" 
   40#include "StatisticsTool.h" 
   41#include "StereoTool.h" 
   42#include "StretchTool.h" 
   43#include "SunShadowTool.h" 
   47#include "ViewportMdiSubWindow.h" 
   48#include "WindowTool.h" 
   65    m_mdi = 
new QMdiArea(
this);
 
   67    QGridLayout *layout = 
new QGridLayout;
 
   71      layout->setContentsMargins(0, 0, 0, 0);
 
   72      layout->addWidget(
m_mdi, 0, 0);
 
   95      QMenuBar *menuBar = 
new QMenuBar;
 
   96      layout->addWidget(menuBar, row, 0, 1, 2);
 
   99      QHBoxLayout *permActiveToolBarLayout = 
new QHBoxLayout;
 
  102      permToolBar->setObjectName(
"permToolBar");
 
  103      permToolBar->setIconSize(QSize(22, 22));
 
  104      permActiveToolBarLayout->addWidget(permToolBar);
 
  107      activeToolBar->setObjectName(
"activeToolBar");
 
  108      activeToolBar->setIconSize(QSize(22, 22));
 
  109      permActiveToolBarLayout->addWidget(activeToolBar);
 
  111      layout->addLayout(permActiveToolBarLayout, row, 0, 1, 2);
 
  114      layout->addWidget(
m_mdi, row, 0, 1, 1);
 
  117      toolPad->setObjectName(
"toolPad");
 
  118      toolPad->setOrientation(Qt::Vertical);
 
  119      layout->addWidget(toolPad, row, 1, 1, 1);
 
  122      QStatusBar *statusBar = 
new QStatusBar(
this);
 
  123      layout->addWidget(statusBar, row, 0, 1, 2);
 
  127      Tool *defaultActiveTool = NULL;
 
  136      defaultActiveTool = 
new ZoomTool(
this);
 
  137      m_tools->append(defaultActiveTool);
 
  163      QMap<QString, QMenu *> subMenus;
 
  165      for (
int i = 0; i < 
m_tools->count(); i++) {
 
  166        Tool *tool = (*m_tools)[i];
 
  170          tool->addToPermanent(permToolBar);
 
  171          tool->addToActive(activeToolBar);
 
  172          tool->addTo(toolPad);
 
  174          if (!tool->menuName().isEmpty()) {
 
  175            QString menuName = tool->menuName();
 
  177            QMenu *subMenu = subMenus[menuName];
 
  180              subMenus[menuName] = menuBar->addMenu(menuName);
 
  181              subMenu = subMenus[menuName];
 
  184            tool->addTo(subMenu);
 
  188          permToolBar->addSeparator();
 
  192      permToolBar->addSeparator();
 
  193      defaultActiveTool->activate(
true);
 
  198    m_mdi->setActivationOrder(QMdiArea::ActivationHistoryOrder);
 
 
  204      new QVector< MdiCubeViewport * >(*other.m_cubeViewportList);
 
 
  227    else if(!
m_mdi->currentSubWindow()) {
 
 
  241    for(
int i = 0; i < 
m_mdi->subWindowList().size(); i++) {
 
 
  261    foreach (
Image *image, *images) {
 
 
  270    bool confirmed = 
true;
 
  272    for (
int viewportIndex = 0; confirmed && viewportIndex < viewports.count(); viewportIndex++) {
 
  273      confirmed = viewports[viewportIndex]->confirmClose();
 
 
  286      if (viewport->
cube() == cube) {
 
  287        result = qobject_cast<QWidget *>(viewport->parent());
 
 
  341    QFileInfo cubeFileName(filename);
 
  343    QString cubename = cubeFileName.filePath();
 
  350      std::vector<QString> bands = inAtt.bands();
 
  354      cube->
open(cubename);
 
  359      if(bands.size() == 3) {
 
  361        int index_red = st.ToInteger();
 
  363        int index_green = st.ToInteger();
 
  365        int index_blue = st.ToInteger();
 
  366        cvp->viewRGB(index_red, index_green, index_blue);
 
  372      QString message(
"Error opening cube [" + cubename + 
"]...\n");
 
  373      message += 
"Attempting to open [" + cubename + 
"] as a cube list...\n";
 
  379        message += e.toString();
 
 
  393    QFileInfo cubeFileName(cubelist);
 
  395    QList<QString> cubesToOpen;
 
  397    QFile file(cubeFileName.filePath());
 
  398    file.open(QIODevice::ReadOnly);
 
  400    QTextStream in(&file);
 
  403    while ( !file.atEnd() ) {
 
  404      QString line = file.readLine().replace(
"\n", 
"");
 
  405      cubesToOpen.append(line);
 
  410    for (
int i = 0; i < cubesToOpen.size(); i++) {
 
  415        cubename = cubesToOpen.at(i);
 
  419        std::vector<QString> bands = inAtt.bands();
 
  423        cube->
open(cubename);
 
  428        if(bands.size() == 3) {
 
  430          int index_red = st.ToInteger();
 
  432          int index_green = st.ToInteger();
 
  434          int index_blue = st.ToInteger();
 
  435          cvp->viewRGB(index_red, index_green, index_blue);
 
  439               QString message(
"Error attempting to open [" + cubename + 
"] from list [" + cubelist + 
"]...\n");
 
 
  469      window->setAttribute(Qt::WA_DeleteOnClose);
 
  471      m_mdi->addSubWindow(window);
 
  475      result = window->viewport();
 
  481                       tr(
"Error when attempting to show cube [%1]")
 
 
  492    if (
m_mdi->subWindowList().size()) {
 
  493      QPointer<QMdiSubWindow> windowToRemove =
 
  494          m_mdi->subWindowList().last();
 
  496      m_mdi->removeSubWindow(windowToRemove.data());
 
  498      delete windowToRemove.data();
 
 
IO Handler for Isis Cubes.
 
void open(const QString &cfile, QString access="r")
This method will open an existing isis cube for reading or reading/writing.
 
void setVirtualBands(const QList< QString > &vbands)
This allows the programmer to specify a subset of bands to work with.
 
virtual QString fileName() const
Returns the opened cube's filename.
 
@ User
A type of error that could only have occurred due to a mistake on the user's part (e....
 
@ Programmer
This error is for when a programmer made an API call that was illegal.
 
Adds specific functionality to C++ strings.
 
This represents a cube in a project-based GUI interface.
 
Cube * cube()
Get the Cube pointer associated with this display property.
 
Internalizes a list of images and allows for operations on the entire list.
 
Cube display widget for certain Isis MDI applications.
 
This is an actual viewport window in qview/qnet/etc.
 
Workspace & operator=(Workspace other)
Is equal to comparsion.
 
virtual ~Workspace()
Deconstructor.
 
QMdiArea * mdiArea()
This method returns the QMdiArea.
 
QPointer< QMdiArea > m_mdi
The mdi area.
 
void cubeViewportActivated(MdiCubeViewport *)
Signal triggered when a Cube is activated in the Workspace.
 
void addCubeViewport(QString cubename)
Method adds the name of a cube into Workspace as a CubeViewport.
 
QWidget * cubeToMdiWidget(Cube *cube)
Converts a cube to an MdiWidget.
 
bool confirmClose()
Confirms that the user wishes toc lose the Workspace.
 
void cubeViewportAdded(MdiCubeViewport *)
Signal triggered when a Cube is added to the Workspace.
 
void addCubeViewportFromList(QString cubelist)
Method adds cubes into Workspace as a CubeViewport from a list of cubes.
 
void addBrowseView(QString cube)
Method is called to add a Cube from BrowseView.
 
ToolList * m_tools
List of all of the tools.
 
QVector< MdiCubeViewport * > * m_cubeViewportList
List of cube viewports.
 
Workspace(bool selfContained, QWidget *parent=0)
Constructor for Workspace.
 
void addImages(ImageList *images)
Adds a list of Images to a viewport.
 
QVector< MdiCubeViewport * > * cubeViewportList()
This method returns a Vector of MdiCubeViewports.
 
void activateViewport(QMdiSubWindow *w)
This method activates the Viewport.
 
This is free and unencumbered software released into the public domain.