18#include <QUndoCommand>
19#include <QXmlStreamReader>
21#include <QElapsedTimer>
31class QXmlStreamWriter;
360 void save(QXmlStreamWriter &stream)
const;
363 virtual void setData(QString data);
464 bool isInStableState()
const;
465 void listenForImageDestruction();
466 void listenForShapeDestruction();
467 void resetProgressBar();
468 void setProgressToFinalText();
471 void attemptQueuedAction();
472 void executionFinished();
473 void clearImageList();
474 void clearShapeList();
475 void updateProgress();
482 enum QueuedWorkOrderAction {
523 bool m_createsCleanState;
530 bool m_modifiesDiskState;
532 QueuedWorkOrderAction m_queuedAction;
537 int m_progressRangeMinValue;
541 int m_progressRangeMaxValue;
549 QPointer<ImageList> m_imageList;
550 QPointer<ShapeList> m_shapeList;
551 QPointer<ControlList> m_controlList;
600 QPointer<WorkOrder> m_nextWorkOrder;
605 QPointer<WorkOrder> m_previousWorkOrder;
610 QPointer<Project> m_project;
616 QMutex *m_transparentConstMutex;
621 QDateTime m_executionTime;
628 QPointer< QFutureWatcher<void> > m_futureWatcher;
635 QPointer<ProgressBar> m_progressBar;
640 QPointer<QTimer> m_progressBarUpdateTimer;
645 QPointer<QTimer> m_progressBarDeletionTimer;
651 QElapsedTimer *m_elapsedTimer;
656 double m_secondsElapsed;
Q_DECLARE_METATYPE(Isis::WorkOrder *)
This allows WorkOrder *'s to be stored in a QVariant.
Maintains a list of Controls so that control nets can easily be copied from one Project to another,...
Definition ControlList.h:42
This is a container for the correlation matrix that comes from a bundle adjust.
Definition CorrelationMatrix.h:61
Definition Directory.h:271
Internalizes a list of images and allows for operations on the entire list.
Definition ImageList.h:53
Definition ProgressBar.h:15
The main project for ipce.
Definition Project.h:287
Represents an item of a ProjectItemModel in Qt's model-view framework.
Definition ProjectItem.h:134
Internalizes a list of shapes and allows for operations on the entire list.
Definition ShapeList.h:31
Provide Undo/redo abilities, serialization, and history for an operation.
Definition WorkOrder.h:311
void creatingProgress(WorkOrder *)
void enableWorkOrder()
Enables the work order.
Definition WorkOrder.cpp:1206
void setNext(WorkOrder *nextWorkOrder)
Sets the next WorkOrder in the sequence.
Definition WorkOrder.cpp:601
void finished(WorkOrder *)
ShapeList * shapeList()
@briefReturns a pointer to the ShapeList for this WorkOrder.
Definition WorkOrder.cpp:651
bool m_isSavedToHistory
Set the work order to be shown in the HistoryTreeWidget.
Definition WorkOrder.h:511
void setProgressRange(int, int)
Sets the progress range of the WorkOrder.
Definition WorkOrder.cpp:1346
int progressMax() const
Gets the maximum value of the progress range of the WorkOrder.
Definition WorkOrder.cpp:1325
virtual void setData(Context)
Sets the context data for this WorkOrder.
Definition WorkOrder.cpp:245
WorkOrder * next() const
Gets the next WorkOrder.
Definition WorkOrder.cpp:922
bool modifiesDiskState() const
Returns the modified disk state.
Definition WorkOrder.cpp:912
bool m_isSynchronous
This is defaulted to true.
Definition WorkOrder.h:504
bool isUndoing() const
Returns the WorkOrderUndoing state.
Definition WorkOrder.cpp:891
virtual void undoExecution()
Execute the steps necessary to undo this workorder.
Definition WorkOrder.cpp:1422
virtual void postUndoExecution()
Perform any steps necessary after an undo of a workorder.
Definition WorkOrder.cpp:1433
Template * getTemplate()
WorkOrder::getTemplate.
Definition WorkOrder.cpp:724
void save(QXmlStreamWriter &stream) const
: Saves a WorkOrder to a data stream.
Definition WorkOrder.cpp:532
bool isRedone() const
Returns the WorkOrder redone status.
Definition WorkOrder.cpp:881
virtual void redo()
Starts (or enqueues) a redo.
Definition WorkOrder.cpp:1031
WorkOrderStatus
This enumeration is used by other functions to set and retrieve the current state of the WorkOrder.
Definition WorkOrder.h:321
@ WorkOrderUnknownStatus
Definition WorkOrder.h:322
@ WorkOrderNotStarted
Definition WorkOrder.h:323
@ WorkOrderUndone
Definition WorkOrder.h:327
@ WorkOrderRedoing
Definition WorkOrder.h:324
@ WorkOrderUndoing
Definition WorkOrder.h:326
@ WorkOrderFinished
This is used for work orders that will not undo or redo (See createsCleanState())
Definition WorkOrder.h:331
@ WorkOrderLastStatus
Definition WorkOrder.h:332
@ WorkOrderRedone
Definition WorkOrder.h:325
WorkOrderStatus m_status
Definition WorkOrder.h:513
virtual void undo()
Starts (or enqueues) an undo.
Definition WorkOrder.cpp:1134
int progressMin() const
Gets the minimum value of the progress range of the WorkOrder.
Definition WorkOrder.cpp:1315
bool isUndoable() const
Returns true if this work order is undoable, otherwise false.
Definition WorkOrder.cpp:807
WorkOrder * previous() const
Gets the previous WorkOrder.
Definition WorkOrder.cpp:932
bool m_isUndoable
Set the workorder to be undoable/redoable This is defaulted to true - his will allow the workorder to...
Definition WorkOrder.h:497
void setProgressValue(int)
Sets the current progress value for the WorkOrder.
Definition WorkOrder.cpp:1356
static QString toString(WorkOrderStatus)
Gets the current status of the WorkOrder.
Definition WorkOrder.cpp:997
bool isUndone() const
Returns the WorkOrder undo status.
Definition WorkOrder.cpp:901
virtual bool setupExecution()
This sets up the state for the work order.
Definition WorkOrder.cpp:1249
void statusChanged(WorkOrder *)
bool isSavedToHistory() const
Returns true if this work order is to be shown in History, otherwise false.
Definition WorkOrder.cpp:818
static WorkOrderStatus fromStatusString(QString)
Attempts to query the current status of the WorkOrder.
Definition WorkOrder.cpp:976
bool isRedoing() const
Returns the redoing status of this WorkOrder.
Definition WorkOrder.cpp:871
QStringList internalData() const
Gets the internal data for this WorkOrder.
Definition WorkOrder.cpp:1365
QPointer< ControlList > controlList()
Returns the Control List for this WorkOrder (a list of control networks).
Definition WorkOrder.cpp:694
Directory * directory() const
return the workorder project directory Returns the Directory object of the Project this WorkOrder is ...
Definition WorkOrder.cpp:1278
virtual WorkOrder * clone() const =0
GuiCameraQsp guiCamera()
WorkOrder::guiCamera.
Definition WorkOrder.cpp:744
void setCreatesCleanState(bool createsCleanState)
Declare that this work order is saving the project.
Definition WorkOrder.cpp:1651
QString statusText() const
WorkOrder::statusText.
Definition WorkOrder.cpp:942
QDateTime executionTime() const
Gets the execution time of this WorkOrder.
Definition WorkOrder.cpp:852
virtual void execute()
Execute the workorder.
Definition WorkOrder.cpp:1391
void setModifiesDiskState(bool changesProjectOnDisk)
Definition WorkOrder.cpp:1662
void setPrevious(WorkOrder *previousWorkOrder)
Sets the previous WorkOrder in the sequence.
Definition WorkOrder.cpp:610
virtual bool isExecutable(Context)
Re-implement this method if your work order utilizes controls for data in order to operate.
Definition WorkOrder.cpp:179
void disableWorkOrder()
Disables the work order.
Definition WorkOrder.cpp:1218
bool createsCleanState() const
Returns the CleanState status (whether the Project has been saved to disk or not).
Definition WorkOrder.cpp:842
TargetBodyQsp targetBody()
WorkOrder::targetBody.
Definition WorkOrder.cpp:734
void setInternalData(QStringList data)
Sets the internal data for this WorkOrder.
Definition WorkOrder.cpp:1306
virtual bool dependsOn(WorkOrder *other) const
Indicate workorder dependency This is a virtual function whose role in child classes is to determine ...
Definition WorkOrder.cpp:769
Project * project() const
Returns the Project this WorkOrder is attached to.
Definition WorkOrder.cpp:1288
virtual ~WorkOrder()
The Destructor.
Definition WorkOrder.cpp:154
ProgressBar * progressBar()
Returns the ProgressBar.
Definition WorkOrder.cpp:963
void addCloneToProject()
Runs a copy of the current WorkOrder and stores it in the project.
Definition WorkOrder.cpp:1440
ImageList * imageList()
Returns a pointer to the ImageList for this WorkOrder.
Definition WorkOrder.cpp:619
bool isSynchronous() const
Returns true if this work order is run synchronously, otherwise false.
Definition WorkOrder.cpp:829
Context
This enumeration is for recording the context of the current Workorder (whether it is part of a proje...
Definition WorkOrder.h:339
@ NoContext
Definition WorkOrder.h:340
@ ProjectContext
Definition WorkOrder.h:341
QString bestText() const
Generate unique action names We don't use action text anymore because Directory likes to rename our a...
Definition WorkOrder.cpp:783
int progressValue() const
Gets the current progress value of the WorkOrder.
Definition WorkOrder.cpp:1335
bool isFinished() const
Returns the finished state of this WorkOrder.
Definition WorkOrder.cpp:862
void deletingProgress(WorkOrder *)
virtual void postExecution()
Perform any necessary actions after execution of a workorder.
Definition WorkOrder.cpp:1402
CorrelationMatrix correlationMatrix()
Returns the CorrleationMatrix for this WorkOrder.
Definition WorkOrder.cpp:684
FileItemQsp fileItem()
WorkOrder::fileItem.
Definition WorkOrder.cpp:754
WorkOrder(Project *project)
Create a work order that will work with the given project.
Definition WorkOrder.cpp:38
This is free and unencumbered software released into the public domain.
Definition AbstractTableModel.h:24
This is free and unencumbered software released into the public domain.
Definition Apollo.h:16