USGS

Isis 3.0 Object Programmers' Reference

Home

MosaicSceneWorkOrder.cpp
1 #include "IsisDebug.h"
2 #include "MosaicSceneWorkOrder.h"
3 
4 #include <QProgressDialog>
5 
6 #include "Directory.h"
7 #include "MosaicSceneWidget.h"
8 
9 namespace Isis {
10 
11  MosaicSceneWorkOrder::MosaicSceneWorkOrder(QString actionText, MosaicSceneWidget *scene,
12  Project *project) : WorkOrder(project) {
13 
14  QAction::setText(actionText);
15  QUndoCommand::setText(tr("%1 on [%2]").arg(actionText).arg(scene->windowTitle()));
16 
17  QStringList data;
18  data.append(scene->windowTitle());
19  setInternalData(data);
20  }
21 
22 
23  MosaicSceneWorkOrder::MosaicSceneWorkOrder(Project *project) :
24  WorkOrder(project) {
25  }
26 
27 
28  MosaicSceneWorkOrder::MosaicSceneWorkOrder(const MosaicSceneWorkOrder &other) :
29  WorkOrder(other) {
30  }
31 
32 
33  MosaicSceneWorkOrder::~MosaicSceneWorkOrder() {
34  }
35 
36 
37  MosaicSceneWidget *MosaicSceneWorkOrder::scene() {
38  MosaicSceneWidget *result = NULL;
39 
40  foreach (MosaicSceneWidget *scene, directory()->footprint2DViews()) {
41  if (internalData().first() == scene->windowTitle()) {
42  result = scene;
43  }
44  }
45 
46  return result;
47  }
48 
49 
54  void MosaicSceneWorkOrder::restoreZPositions(bool zValuesMightBeInUse) {
55  QStringList zPositions = internalData().mid(1);
56 
57  ASSERT(zPositions.count() == imageList()->count());
58 
59  MosaicSceneWidget *sceneWidget = scene();
60 
61  QProgressDialog progress(tr("Restoring Z Values"), "", 0, imageList()->count());
62  progress.setCancelButton(NULL);
63  for (int i = imageList()->count() - 1; i >= 0; i--) {
64  int originalZ = qRound(zPositions[i].toDouble());
65  sceneWidget->moveZ(imageList()->at(i), originalZ, zValuesMightBeInUse);
66  progress.setValue(progress.value() + 1);
67  }
68  }
69 
70 
71  void MosaicSceneWorkOrder::storeZPositions(QList<double> zPositions) {
72  QStringList data;
73  data.append(internalData().first());
74 
75  foreach (double zPosition, zPositions) {
76  data.append(QString::number(qRound(zPosition)));
77  }
78 
79  setInternalData(data);
80  }
81 }