![]() |
Isis 3 Programmer Reference
|
Provide Undo/redo abilities, serialization, and history for an operation. More...
#include <WorkOrder.h>
Classes | |
class | XmlHandler |
This class is used for processing an XML file containing information about a WorkOrder. More... | |
Public Types | |
enum | WorkOrderStatus { WorkOrderUnknownStatus = 0, WorkOrderNotStarted, WorkOrderRedoing, WorkOrderRedone, WorkOrderUndoing, WorkOrderUndone, WorkOrderFinished, WorkOrderLastStatus = WorkOrderFinished } |
This enumeration is used by other functions to set and retrieve the current state of the WorkOrder. More... | |
enum | Context { NoContext, ProjectContext } |
This enumeration is for recording the context of the current Workorder (whether it is part of a project or not). More... | |
Public Slots | |
void | enableWorkOrder () |
Enables the work order. More... | |
void | disableWorkOrder () |
Disables the work order. More... | |
virtual bool | setupExecution () |
This sets up the state for the work order. More... | |
virtual void | execute () |
Execute the workorder. More... | |
virtual void | redo () |
Starts (or enqueues) a redo. More... | |
virtual void | undo () |
Starts (or enqueues) an undo. More... | |
Signals | |
void | creatingProgress (WorkOrder *) |
void | deletingProgress (WorkOrder *) |
void | finished (WorkOrder *) |
void | statusChanged (WorkOrder *) |
Public Member Functions | |
WorkOrder (Project *project) | |
Create a work order that will work with the given project. More... | |
virtual | ~WorkOrder () |
The Destructor. More... | |
virtual WorkOrder * | clone () const =0 |
virtual bool | isExecutable (Context) |
Re-implement this method if your work order utilizes controls for data in order to operate. More... | |
virtual bool | isExecutable (ImageList *images) |
Re-implement this method if your work order utilizes images for data in order to operate. More... | |
virtual bool | isExecutable (ShapeList *shapes) |
Re-implement this method if your work order utilizes shapes for data in order to operate. More... | |
virtual bool | isExecutable (ControlList *controls) |
Re-implement this method if your work order utilizes a control for data in order to operate. More... | |
virtual bool | isExecutable (CorrelationMatrix) |
virtual bool | isExecutable (TargetBodyQsp targetBody) |
Re-implement this method if your work order utilizes a control list (a list of control networks) for data in order to operate. More... | |
virtual bool | isExecutable (Template *currentTemplate) |
Re-implement this method if your work order utilizes a control list (a list of control networks) for data in order to operate. More... | |
virtual bool | isExecutable (GuiCameraQsp guiCamera) |
Re-implement this method if your WorkOrder utilizes GuiCameraQsp (a QSharedPointer to a GuiCamera object) for data in order to operate. More... | |
virtual bool | isExecutable (FileItemQsp fileItem) |
Re-implement this method if your WorkOrder utilizes FileItemQsp (a QSharedPointer to a FileItem object) for data in order to operate. More... | |
virtual bool | isExecutable (ProjectItem *item) |
Determines if the WorkOrder is execuatable on the data stored in a ProjectItem. More... | |
void | read (XmlStackedHandlerReader *xmlReader) |
Read this work order's data from disk. More... | |
void | save (QXmlStreamWriter &stream) const |
: Saves a WorkOrder to a data stream. More... | |
virtual void | setData (Context) |
Sets the context data for this WorkOrder. More... | |
virtual void | setData (QString data) |
virtual void | setData (ImageList *images) |
Sets the ImageList data for this WorkOrder. More... | |
virtual void | setData (ShapeList *shapes) |
Sets the ShapeList data for this WorkOrder. More... | |
virtual void | setData (ControlList *controls) |
Sets the Control data for this WorkOrder. More... | |
virtual void | setData (Template *currentTemplate) |
Sets the TargetBody data for this WorkOrder. More... | |
virtual void | setData (CorrelationMatrix) |
Sets the CorrelationMatrix data for this WorkOrder. More... | |
virtual void | setData (TargetBodyQsp targetBody) |
Sets the TargetBody data for this WorkOrder. More... | |
virtual void | setData (GuiCameraQsp guiCamera) |
Sets the GuiCamera data for this WorkOrder. More... | |
virtual void | setData (FileItemQsp fileItem) |
Sets the FileItem data for this WorkOrder. More... | |
virtual void | setData (ProjectItem *item) |
Sets the internal data to the data stored in a ProjectItem. More... | |
void | setNext (WorkOrder *nextWorkOrder) |
Sets the next WorkOrder in the sequence. More... | |
void | setPrevious (WorkOrder *previousWorkOrder) |
Sets the previous WorkOrder in the sequence. More... | |
QString | bestText () const |
Generate unique action names We don't use action text anymore because Directory likes to rename our actions. More... | |
bool | isUndoable () const |
Returns true if this work order is undoable, otherwise false. More... | |
bool | isSavedToHistory () const |
Returns true if this work order is to be shown in History, otherwise false. More... | |
bool | isSynchronous () const |
Returns true if this work order is run synchronously, otherwise false. More... | |
bool | createsCleanState () const |
Returns the CleanState status (whether the Project has been saved to disk or not). More... | |
QDateTime | executionTime () const |
Gets the execution time of this WorkOrder. More... | |
bool | isFinished () const |
Returns the finished state of this WorkOrder. More... | |
bool | isRedoing () const |
Returns the redoing status of this WorkOrder. More... | |
bool | isRedone () const |
Returns the WorkOrder redone status. More... | |
bool | isUndoing () const |
Returns the WorkOrderUndoing state. More... | |
bool | isUndone () const |
Returns the WorkOrder undo status. More... | |
bool | modifiesDiskState () const |
Returns the modified disk state. More... | |
WorkOrder * | next () const |
Gets the next WorkOrder. More... | |
WorkOrder * | previous () const |
Gets the previous WorkOrder. More... | |
QString | statusText () const |
WorkOrder::statusText. More... | |
ProgressBar * | progressBar () |
Returns the ProgressBar. More... | |
Static Public Member Functions | |
static WorkOrderStatus | fromStatusString (QString) |
Attempts to query the current status of the WorkOrder. More... | |
static QString | toString (WorkOrderStatus) |
Gets the current status of the WorkOrder. More... | |
Protected Slots | |
void | addCloneToProject () |
Runs a copy of the current WorkOrder and stores it in the project. More... | |
Protected Member Functions | |
WorkOrder (const WorkOrder &other) | |
Copy the work order 'other' into this (new) instance. More... | |
ImageList * | imageList () |
Returns a pointer to the ImageList for this WorkOrder. More... | |
const ImageList * | imageList () const |
A thread-safe method for retrieving a pointer to the imageList. More... | |
ShapeList * | shapeList () |
@briefReturns a pointer to the ShapeList for this WorkOrder. More... | |
const ShapeList * | shapeList () const |
A thread-safe method for retrieving a pointer to the shapeList. More... | |
CorrelationMatrix | correlationMatrix () |
Returns the CorrleationMatrix for this WorkOrder. More... | |
QPointer< ControlList > | controlList () |
Returns the Control List for this WorkOrder (a list of control networks). More... | |
Template * | getTemplate () |
WorkOrder::getTemplate. More... | |
TargetBodyQsp | targetBody () |
WorkOrder::targetBody. More... | |
GuiCameraQsp | guiCamera () |
WorkOrder::guiCamera. More... | |
FileItemQsp | fileItem () |
WorkOrder::fileItem. More... | |
virtual bool | dependsOn (WorkOrder *other) const |
Indicate workorder dependency This is a virtual function whose role in child classes is to determine if this WorkOrder depends on the WorkOrder passed in as an argument. More... | |
Directory * | directory () const |
return the workorder project directory Returns the Directory object of the Project this WorkOrder is attached to. More... | |
Project * | project () const |
Returns the Project this WorkOrder is attached to. More... | |
void | setCreatesCleanState (bool createsCleanState) |
Declare that this work order is saving the project. More... | |
void | setModifiesDiskState (bool changesProjectOnDisk) |
void | setInternalData (QStringList data) |
Sets the internal data for this WorkOrder. More... | |
int | progressMin () const |
Gets the minimum value of the progress range of the WorkOrder. More... | |
int | progressMax () const |
Gets the maximum value of the progress range of the WorkOrder. More... | |
int | progressValue () const |
Gets the current progress value of the WorkOrder. More... | |
void | setProgressRange (int, int) |
Sets the progress range of the WorkOrder. More... | |
void | setProgressValue (int) |
Sets the current progress value for the WorkOrder. More... | |
QStringList | internalData () const |
Gets the internal data for this WorkOrder. More... | |
virtual void | postExecution () |
Perform any necessary actions after execution of a workorder. More... | |
virtual void | undoExecution () |
Execute the steps necessary to undo this workorder. More... | |
virtual void | postUndoExecution () |
Perform any steps necessary after an undo of a workorder. More... | |
Protected Attributes | |
bool | m_isUndoable |
Set the workorder to be undoable/redoable This is defaulted to true - his will allow the workorder to be redone. More... | |
bool | m_isSynchronous |
This is defaulted to true. More... | |
bool | m_isSavedToHistory |
Set the work order to be shown in the HistoryTreeWidget. More... | |
WorkOrderStatus | m_status |
Private Types | |
enum | QueuedWorkOrderAction { NoQueuedAction, RedoQueuedAction, UndoQueuedAction } |
This enum describes the current state of a Queued WorkOrder. More... | |
Private Slots | |
void | attemptQueuedAction () |
Attempts to execute an action on the action queue. More... | |
void | executionFinished () |
Signals the Project that the WorkOrder is finished, deletes the update time for the Progress bar, and sets the finished status. More... | |
void | clearImageList () |
Clears the list of images. More... | |
void | clearShapeList () |
Clears the list of shapes. More... | |
void | updateProgress () |
Updates the progress bar. More... | |
void | startRedo () |
WorkOrder::startRedo This function is currently empty. More... | |
Private Member Functions | |
bool | isInStableState () const |
Determines if the WorkOrder is in a stable state, or if it's busy doing something. More... | |
void | listenForImageDestruction () |
Checks to see if we have lost any images in the ImageList. More... | |
void | listenForShapeDestruction () |
Checks to see if we have lost any shapes in the ShapeList. More... | |
void | resetProgressBar () |
Resets the ProgressBar. More... | |
void | setProgressToFinalText () |
Sets the ProgressBar to display the final status of the operation. More... | |
WorkOrder & | operator= (const WorkOrder &rhs) |
Private Attributes | |
bool | m_createsCleanState |
This is defaulted to false. More... | |
bool | m_modifiesDiskState |
This is defaulted to false. More... | |
QueuedWorkOrderAction | m_queuedAction |
int | m_progressRangeMinValue |
The miniumum value of the Progess Bar. More... | |
int | m_progressRangeMaxValue |
The maximum value of the Progess Bar. More... | |
int | m_progressValue |
The current value of the Progress Bar. More... | |
Context | m_context |
QString | m_data |
QPointer< ImageList > | m_imageList |
QPointer< ShapeList > | m_shapeList |
QPointer< ControlList > | m_controlList |
CorrelationMatrix | m_correlationMatrix |
GuiCameraQsp | m_guiCamera |
A QSharedPointer to the GuiCamera (the Camera object but encapsulated within a Gui framework. More... | |
Template * | m_template |
A QSharedPointer to the Template (A Template object but encapsulated within a Gui framework. More... | |
TargetBodyQsp | m_targetBody |
A QSharedPointer to the TargetBody (A Target object but encapsulated within a Gui framework. More... | |
FileItemQsp | m_fileItem |
A QSharedPointer to the FileItem. More... | |
QStringList | m_imageIds |
A QStringList of unique image identifiers for all of the images this WorkOrder is dealing with. More... | |
QStringList | m_shapeIds |
A QStringList of unique shape identifiers for all of the shapes this WorkOrder is dealing with. More... | |
QStringList | m_internalData |
A QStringList of internal properties for this WorkOrder. More... | |
QPointer< WorkOrder > | m_nextWorkOrder |
A pointer to the next WorkOrder in the queue. More... | |
QPointer< WorkOrder > | m_previousWorkOrder |
A pointer to the previous WorkOrder in the queue. More... | |
QPointer< Project > | m_project |
A pointer to the Project this WorkOrder is attached to. More... | |
QMutex * | m_transparentConstMutex |
This is used to protect the integrity of data the WorkOrder is working on so that only one thread at a time cann access it. More... | |
QDateTime | m_executionTime |
This is the date/time that setupExecution() was called. More... | |
QPointer< QFutureWatcher< void > > | m_futureWatcher |
A pointer to a QFutureWatcher object which monitors a QFuture object using signals and slots. More... | |
QPointer< ProgressBar > | m_progressBar |
A pointer to the ProgressBar. More... | |
QPointer< QTimer > | m_progressBarUpdateTimer |
A pointer to the QTimer which updates the ProgressBar. More... | |
QPointer< QTimer > | m_progressBarDeletionTimer |
A pointer to the ProgressBar deletion timer. More... | |
QTime * | m_elapsedTimer |
A QTime object holding the excecution time of the WorkOrder. More... | |
double | m_secondsElapsed |
The seconds that have elapsed since the WorkOrder started executing. More... | |
Provide Undo/redo abilities, serialization, and history for an operation.
This class should be used for operations that affect a Project and need to provide history and/or undo/redo capabilities, and the ability for the project to guarantee a good state on disk. It follows the Command Pattern using Qt's QUndoCommand framework. Not all actions require WorkOrders - many of the actions performed in the various widgets may not use WorkOrders.
The order of execution for work orders is: setupExecution() - GUI thread, can ask user for input execute() - run on either the GUI thread or a non-GUI thread as specified by the m_isSynchronous flag postExecution() - perform any cleanup after execute.
undoExecution() - run on either the GUI thread or a non-GUI thread as specified by the m_isSynchronous flag postUndoExecution() - perform any cleanup after undoExecution()
** Adding a new Workorder **
The WorkOrder will need to be determined to be either synchronous/asynchronous and whether it is undoable. These are decisions determined by the use case. Asynchronous WorkOrders will not block the GUI thread while running and are typically used for long-running operations. Note that WorkOrders are not reentrant - a new one is created for each action.
The constructor for the WorkOrder must set m_isUndoable and m_isSynchronous to the appropriate values. The constructor must call the base WorkOrder constructor. The default is synchronous and undoable. If an import WorkOrder is being implemented the import must be some type of object and implement certain slots.
All information required to execute the WorkOrder should be saved in the WorkOrder in the setupExecution() method. Since WorkOrders may be serialized and may run on non-GUI threads there are restrictions on how the WorkOrder may save state. To allow serialization the WorkOrders must save state to the base WorkOrder class using WorkOrder::setInternalData() in the following calls: setupExecution(), postExecution(), postUndoExecution(). Workorders may use member variables to pass data between the execute() and postExecution() methods and also between the undoExecution() and undoPostExecution() methods since serialization can not happen between these calls. For asynchronous WorkOrders the execute()/postExecution() and undoExecution()/undoPostExecution() methods are on different threads so any allocated memory moved between the non-GUI and GUI threads between methods.
Serialization is handled by the base WorkOrder class. Since all state is saved into the base class using setInternalData() the derived WorkOrders do not contain any data that needs to be serialized. The times when WorkOrders are allowed to use member variables are periods when the WorkOrder can not be serialized.
There are 5 key methods in the flow of the WorkOrder as shown in the WorkOrder Flow diagram below.
setupExecution The setupExecution() method gathers all required information to run the WorkOrder but does not execute it. The gathered information is stored in the WorkOrder. SetupExecution() is optional but typically required. It can bring up GUI elements to prompt the user for any necessary information. SetupExecution() is not called when a WorkOrder is redone.
execute execute() needs to be implemented perform the WorkOrder. All information neccessary to run the WorkOrder should already be stored in the WorkOrder. The data necessary for the WorkOrder can be retrieved via internalData() Execute() can not use any GUI elements. Each time a WorkOrder is redone execute() is called to redo the WorkOrder.
For synchronous WorkOrders the execute() method runs on the GUI thread and there are no special requirements on object ownership.
For asynchronous WorkOrders any memory allocations that aren't deallocated within execute() will need to be moved to the GUI thread.
postExecution postExecution() runs on the GUI thread so it should not perform any long running operations. It is intended for any cleanup or GUI updates after execute(). Typically it would only be needed for asynchronous WorkOrders where they need to update the GUI and do cleanup. It is not required to implement this method.
undoExecution undoExecution() is only required for undoable WorkOrders. undoExecution() should undo the effects of the execute() only using state stored in the WorkOrder. It will run on the GUI thread if synchronous or a non-GUI thread if asynchronous. The same restrictions as execute() apply to this method.
postUndoExecution() This is not required. If needed, it should perform any cleanup after undoExecution(). postUndoExecution() has the same restrictions as postExecution().
Other methods the WorkOrder may need to implement are:
isExecutable(<various type>) IsExecutable() determines if the WorkOrder should show up in the context menus (this has no bearing on how the main menu is populated). Note that isExecutable will need to be implemented for each type of parameter this WorkOrder should show in the context menu.
dependsOn This is currently not implemented properly for most WorkOrders. In theory this should determine if the workOrder parameter passed in must be completed prior to this workOrder completing. Most current WorkOrders just check if the WorkOrder parameter is the same type.
setCreatesCleanState This is used to indicate the WorkOrder has set the state back to an unchanged state from which the project was originally opened. This is used by open, save, and close project WorkOrders. Unlikely to be needed by other WorkOrders. This can needs to be set to false to be able to have an undoable workorder
setModifiesDiskState WorkOrders should call this to indicate they modify the disk state, this should be set to true to be able to have an undoable workorder. The WorkOrder should implement the undoExecution method if this is set to true.
WorkOrder Diagrams
Definition at line 311 of file WorkOrder.h.
This enumeration is for recording the context of the current Workorder (whether it is part of a project or not).
Definition at line 339 of file WorkOrder.h.
|
private |
This enum describes the current state of a Queued WorkOrder.
Definition at line 483 of file WorkOrder.h.
This enumeration is used by other functions to set and retrieve the current state of the WorkOrder.
Enumerator | |
---|---|
WorkOrderFinished | This is used for work orders that will not undo or redo (See createsCleanState()) |
Definition at line 321 of file WorkOrder.h.
Isis::WorkOrder::WorkOrder | ( | Project * | project | ) |
Create a work order that will work with the given project.
project | The Project that this work order should be interacting with |
parent | The Qt-relationship parent |
IException::Programmer | This exception is thrown if the WorkOrder is not attached to a Project. |
Definition at line 41 of file WorkOrder.cpp.
References addCloneToProject(), executionFinished(), m_createsCleanState, m_elapsedTimer, m_fileItem, m_futureWatcher, m_guiCamera, m_isSavedToHistory, m_isSynchronous, m_isUndoable, m_modifiesDiskState, m_progressRangeMaxValue, m_progressRangeMinValue, m_progressValue, m_project, m_secondsElapsed, m_targetBody, m_template, m_transparentConstMutex, Isis::IException::Programmer, and project().
|
virtual |
The Destructor.
Definition at line 157 of file WorkOrder.cpp.
References m_futureWatcher, m_nextWorkOrder, m_previousWorkOrder, m_progressBarDeletionTimer, m_progressBarUpdateTimer, m_project, and m_transparentConstMutex.
|
protected |
Copy the work order 'other' into this (new) instance.
other | The work order being copied. |
IException::Unknown | This Excecption is thrown if the WorkOrder being copies is currently running. |
Definition at line 93 of file WorkOrder.cpp.
References addCloneToProject(), executionFinished(), isInStableState(), listenForImageDestruction(), listenForShapeDestruction(), m_createsCleanState, m_elapsedTimer, m_executionTime, m_fileItem, m_futureWatcher, m_guiCamera, m_imageIds, m_internalData, m_isSavedToHistory, m_isSynchronous, m_isUndoable, m_modifiesDiskState, m_progressRangeMaxValue, m_progressRangeMinValue, m_progressValue, m_project, m_secondsElapsed, m_shapeIds, m_targetBody, m_template, m_transparentConstMutex, project(), and Isis::IException::Unknown.
|
protectedslot |
Runs a copy of the current WorkOrder and stores it in the project.
Definition at line 1452 of file WorkOrder.cpp.
References Isis::Project::addToProject(), and project().
Referenced by WorkOrder().
|
privateslot |
Attempts to execute an action on the action queue.
Definition at line 1575 of file WorkOrder.cpp.
References redo(), and undo().
Referenced by executionFinished(), redo(), and undo().
QString Isis::WorkOrder::bestText | ( | ) | const |
Generate unique action names We don't use action text anymore because Directory likes to rename our actions.
It converts a set of actions that have the same text, like Zoom Fit, to be in a menu named Zoom Fit with items that name their widgets. Widget names are unhelpful as a description of the action.
Definition at line 795 of file WorkOrder.cpp.
Referenced by Isis::HistoryTreeWidget::addToHistory(), redo(), save(), and undo().
|
privateslot |
Clears the list of images.
Definition at line 1623 of file WorkOrder.cpp.
Referenced by listenForImageDestruction().
|
privateslot |
Clears the list of shapes.
Definition at line 1631 of file WorkOrder.cpp.
Referenced by listenForShapeDestruction().
|
protected |
Returns the Control List for this WorkOrder (a list of control networks).
Definition at line 706 of file WorkOrder.cpp.
References project().
Referenced by Isis::CnetEditorViewWorkOrder::execute(), Isis::ExportControlNetWorkOrder::execute(), Isis::SetActiveControlWorkOrder::execute(), isExecutable(), setData(), Isis::CnetEditorViewWorkOrder::setupExecution(), Isis::ControlHealthMonitorWorkOrder::setupExecution(), Isis::ExportControlNetWorkOrder::setupExecution(), and Isis::SetActiveControlWorkOrder::setupExecution().
|
protected |
Returns the CorrleationMatrix for this WorkOrder.
Definition at line 696 of file WorkOrder.cpp.
References project().
Referenced by Isis::MatrixViewWorkOrder::execute(), setData(), and Isis::MatrixViewWorkOrder::setupExecution().
bool Isis::WorkOrder::createsCleanState | ( | ) | const |
Returns the CleanState status (whether the Project has been saved to disk or not).
If this is set to true the work order will avoid being put on the undo stack, meaning it will not be undoable. It will also set the undo stack to a clean state, by doing this it makes all previous workorders done before the save to be no longer undoable.
Definition at line 854 of file WorkOrder.cpp.
References m_createsCleanState, and project().
Referenced by Isis::HistoryTreeWidget::addToHistory(), Isis::Project::addToProject(), setCreatesCleanState(), and setupExecution().
|
protectedvirtual |
Indicate workorder dependency This is a virtual function whose role in child classes is to determine if this WorkOrder depends on the WorkOrder passed in as an argument.
Reimplemented in Isis::ViewControlNet3DWorkOrder, Isis::TemplateEditViewWorkOrder, Isis::TargetGetInfoWorkOrder, Isis::SensorGetInfoWorkOrder, Isis::RenameProjectWorkOrder, Isis::MatrixViewWorkOrder, Isis::JigsawWorkOrder, Isis::CubeDnViewWorkOrder, and Isis::CnetEditorViewWorkOrder.
Definition at line 781 of file WorkOrder.cpp.
Referenced by redo().
|
protected |
return the workorder project directory Returns the Directory object of the Project this WorkOrder is attached to.
Definition at line 1290 of file WorkOrder.cpp.
References Isis::Project::directory(), and project().
Referenced by Isis::CubeDnViewWorkOrder::execute(), Isis::Footprint2DViewWorkOrder::execute(), Isis::ImageFileListViewWorkOrder::execute(), Isis::JigsawWorkOrder::isExecutable(), and Isis::MosaicSceneWorkOrder::scene().
|
slot |
Disables the work order.
Disables the work order so it cannot be triggered (grayed-out).
Definition at line 1230 of file WorkOrder.cpp.
|
slot |
Enables the work order.
Enables the work order so that it can be triggered (clicked).
Definition at line 1218 of file WorkOrder.cpp.
|
virtualslot |
Execute the workorder.
Execute() does the actual work in the work order. All necessary data for the execution (and undo) of the workorder should have been saved in the workorder prior to execute(). Execute() is also called to redo a workorder for redoable workorders. If the workorder is a synchrounous workorder the workorder will be run on the GUI thread, otherwise it will be queued and run on a separate thread.
For Synchronous workorders: State should only be read from the parent WorkOrder class in this method. You can set state to postExecution() safely. This method is always executed in the GUI thread.
For asynchronous workorders: State can be read from the parent WorkOrder class while in this method. You can set state to be used in postExecution() safely. Please be wary of creating QObjects inside of this method because they will associated with the pooled thread and must be moved back to the GUI thread with QObject::moveToThread(). You can update progress by calling setProgressRange() and setProgressValue(). Do not manipulate any GUI objects here.
Reimplemented in Isis::MoveUpOneSceneWorkOrder, Isis::MoveToTopSceneWorkOrder, Isis::MoveToBottomSceneWorkOrder, Isis::MoveDownOneSceneWorkOrder, Isis::ImageListActionWorkOrder, Isis::ViewControlNet3DWorkOrder, Isis::TemplateEditViewWorkOrder, Isis::TargetGetInfoWorkOrder, Isis::SetActiveImageListWorkOrder, Isis::SetActiveControlWorkOrder, Isis::SensorGetInfoWorkOrder, Isis::SaveProjectAsWorkOrder, Isis::RenameProjectWorkOrder, Isis::RemoveImagesWorkOrder, Isis::OpenProjectWorkOrder, Isis::MatrixViewWorkOrder, Isis::JigsawWorkOrder, Isis::ImportShapesWorkOrder, Isis::ImportRegistrationTemplateWorkOrder, Isis::ImportMapTemplateWorkOrder, Isis::ImportImagesWorkOrder, Isis::ImportControlNetWorkOrder, Isis::ImageFileListViewWorkOrder, Isis::Footprint2DViewWorkOrder, Isis::ExportImagesWorkOrder, Isis::ExportControlNetWorkOrder, Isis::CubeDnViewWorkOrder, Isis::ControlHealthMonitorWorkOrder, Isis::CnetEditorViewWorkOrder, Isis::CloseProjectWorkOrder, and Isis::BundleObservationViewWorkOrder.
Definition at line 1403 of file WorkOrder.cpp.
Referenced by Isis::Project::addToProject(), and redo().
|
privateslot |
Signals the Project that the WorkOrder is finished, deletes the update time for the Progress bar, and sets the finished status.
Definition at line 1592 of file WorkOrder.cpp.
References attemptQueuedAction(), isUndoing(), m_elapsedTimer, m_progressBarUpdateTimer, m_secondsElapsed, postExecution(), postUndoExecution(), and setProgressToFinalText().
Referenced by redo(), undo(), and WorkOrder().
QDateTime Isis::WorkOrder::executionTime | ( | ) | const |
Gets the execution time of this WorkOrder.
Definition at line 864 of file WorkOrder.cpp.
References m_executionTime, and project().
Referenced by Isis::HistoryTreeWidget::addToHistory(), and Isis::WorkOrder::XmlHandler::startElement().
|
protected |
Definition at line 766 of file WorkOrder.cpp.
References m_fileItem, and project().
Referenced by Isis::BundleObservationViewWorkOrder::execute(), Isis::BundleObservationViewWorkOrder::isExecutable(), and setData().
|
static |
Attempts to query the current status of the WorkOrder.
statusString | The status we want information about. |
Definition at line 988 of file WorkOrder.cpp.
References toString().
Referenced by Isis::WorkOrder::XmlHandler::startElement().
|
protected |
Definition at line 736 of file WorkOrder.cpp.
References m_template, and project().
Referenced by Isis::TemplateEditViewWorkOrder::execute(), and Isis::TemplateEditViewWorkOrder::setupExecution().
|
protected |
Definition at line 756 of file WorkOrder.cpp.
References m_guiCamera, and project().
Referenced by Isis::SensorGetInfoWorkOrder::execute(), Isis::SensorGetInfoWorkOrder::isExecutable(), setData(), and Isis::SensorGetInfoWorkOrder::setupExecution().
|
protected |
Returns a pointer to the ImageList for this WorkOrder.
Definition at line 631 of file WorkOrder.cpp.
References Isis::Project::image(), listenForImageDestruction(), m_imageIds, and project().
Referenced by Isis::ExportImagesWorkOrder::execute(), Isis::ImageFileListViewWorkOrder::execute(), Isis::RemoveImagesWorkOrder::execute(), Isis::SetActiveImageListWorkOrder::execute(), Isis::ImageListActionWorkOrder::execute(), Isis::MoveDownOneSceneWorkOrder::execute(), Isis::MoveToBottomSceneWorkOrder::execute(), Isis::MoveToTopSceneWorkOrder::execute(), Isis::MoveUpOneSceneWorkOrder::execute(), imageList(), Isis::ImageListActionWorkOrder::ImageListActionWorkOrder(), Isis::SetActiveImageListWorkOrder::isExecutable(), isExecutable(), Isis::ImageListActionWorkOrder::qualifyString(), redo(), Isis::MosaicSceneWorkOrder::restoreZPositions(), Isis::ImageListActionWorkOrder::setData(), setData(), Isis::ExportImagesWorkOrder::setupExecution(), Isis::Footprint2DViewWorkOrder::setupExecution(), Isis::ImageFileListViewWorkOrder::setupExecution(), Isis::RemoveImagesWorkOrder::setupExecution(), Isis::ImageListActionWorkOrder::setupExecution(), and Isis::ImageListActionWorkOrder::undoExecution().
|
protected |
A thread-safe method for retrieving a pointer to the imageList.
Definition at line 716 of file WorkOrder.cpp.
References imageList(), and m_transparentConstMutex.
|
protected |
Gets the internal data for this WorkOrder.
Definition at line 1377 of file WorkOrder.cpp.
References m_internalData, and project().
Referenced by Isis::CubeDnViewWorkOrder::execute(), Isis::ExportControlNetWorkOrder::execute(), Isis::ExportImagesWorkOrder::execute(), Isis::Footprint2DViewWorkOrder::execute(), Isis::ImageFileListViewWorkOrder::execute(), Isis::ImportControlNetWorkOrder::execute(), Isis::ImportImagesWorkOrder::execute(), Isis::ImportMapTemplateWorkOrder::execute(), Isis::ImportRegistrationTemplateWorkOrder::execute(), Isis::ImportShapesWorkOrder::execute(), Isis::RenameProjectWorkOrder::execute(), Isis::SaveProjectAsWorkOrder::execute(), Isis::ImageListActionWorkOrder::execute(), Isis::ImageListActionWorkOrder::ImageListActionWorkOrder(), Isis::ImportImagesWorkOrder::importConfirmedImages(), Isis::ImportShapesWorkOrder::importConfirmedShapes(), Isis::RenameProjectWorkOrder::RenameProjectWorkOrder(), Isis::MosaicSceneWorkOrder::restoreZPositions(), Isis::MosaicSceneWorkOrder::scene(), Isis::ImageListActionWorkOrder::setData(), Isis::CubeDnViewWorkOrder::setupExecution(), Isis::ExportControlNetWorkOrder::setupExecution(), Isis::ExportImagesWorkOrder::setupExecution(), Isis::Footprint2DViewWorkOrder::setupExecution(), Isis::ImageFileListViewWorkOrder::setupExecution(), Isis::ImportControlNetWorkOrder::setupExecution(), Isis::MatrixViewWorkOrder::setupExecution(), Isis::RenameProjectWorkOrder::setupExecution(), Isis::SensorGetInfoWorkOrder::setupExecution(), Isis::TargetGetInfoWorkOrder::setupExecution(), Isis::TemplateEditViewWorkOrder::setupExecution(), Isis::ImageListActionWorkOrder::setupExecution(), Isis::MatrixViewWorkOrder::undoExecution(), Isis::RenameProjectWorkOrder::undoExecution(), and Isis::ImageListActionWorkOrder::undoExecution().
|
virtual |
Re-implement this method if your work order utilizes controls for data in order to operate.
For example, "CnetEditorViewWorkOrder" works sometimes on controls
context | This is an enum variable with two values: NoContext,ProjectContext. |
Reimplemented in Isis::RenameProjectWorkOrder.
Definition at line 182 of file WorkOrder.cpp.
Referenced by isExecutable(), and Isis::Directory::supportedActions().
|
virtual |
Re-implement this method if your work order utilizes a control for data in order to operate.
control | A control networks. |
Re-implement this method if your work order utilizes a control list (a list of control networks) for data in order to operate.
controls | A list of control networks. |
Reimplemented in Isis::ViewControlNet3DWorkOrder, Isis::SetActiveControlWorkOrder, Isis::ExportControlNetWorkOrder, Isis::ControlHealthMonitorWorkOrder, and Isis::CnetEditorViewWorkOrder.
Definition at line 234 of file WorkOrder.cpp.
|
virtual |
Re-implement this method if your WorkOrder utilizes FileItemQsp (a QSharedPointer to a FileItem object) for data in order to operate.
FileItemQsp |
Reimplemented in Isis::BundleObservationViewWorkOrder.
Definition at line 446 of file WorkOrder.cpp.
|
virtual |
Re-implement this method if your WorkOrder utilizes GuiCameraQsp (a QSharedPointer to a GuiCamera object) for data in order to operate.
GuiCameraQsp |
Reimplemented in Isis::SensorGetInfoWorkOrder.
Definition at line 434 of file WorkOrder.cpp.
|
virtual |
Re-implement this method if your work order utilizes images for data in order to operate.
For example, "Footprint2DViewWorkOrder" works sometimes on images - the logic in side of Footprint2DViewWorkOrder::isExecutable(ImageList) determines whethere or not a user is prompted with this work order as a possibility.
images | An image list that this work order should execute on |
Reimplemented in Isis::ImageListActionWorkOrder, Isis::RemoveImagesWorkOrder, Isis::ImageFileListViewWorkOrder, Isis::Footprint2DViewWorkOrder, Isis::ExportImagesWorkOrder, Isis::CubeDnViewWorkOrder, and Isis::SetActiveImageListWorkOrder.
Definition at line 196 of file WorkOrder.cpp.
|
virtual |
Determines if the WorkOrder is execuatable on the data stored in a ProjectItem.
item | (ProjectItem *) The item containing the data. |
Reimplemented in Isis::TemplateEditViewWorkOrder, Isis::ImportShapesWorkOrder, Isis::ImportRegistrationTemplateWorkOrder, Isis::ImportMapTemplateWorkOrder, Isis::ImportImagesWorkOrder, and Isis::ImportControlNetWorkOrder.
Definition at line 458 of file WorkOrder.cpp.
References Isis::ImageList::append(), Isis::ShapeList::append(), Isis::ProjectItem::control(), controlList(), Isis::ProjectItem::correlationMatrix(), Isis::ProjectItem::fileItem(), Isis::ProjectItem::getTemplate(), Isis::ProjectItem::guiCamera(), Isis::ProjectItem::image(), imageList(), Isis::ProjectItem::imageList(), Isis::ProjectItem::isControl(), Isis::ProjectItem::isControlList(), Isis::ProjectItem::isCorrelationMatrix(), isExecutable(), Isis::ProjectItem::isFileItem(), Isis::ProjectItem::isGuiCamera(), Isis::ProjectItem::isImage(), Isis::ProjectItem::isImageList(), Isis::ProjectItem::isProject(), Isis::ProjectItem::isShape(), Isis::ProjectItem::isShapeList(), Isis::ProjectItem::isTargetBody(), Isis::ProjectItem::shape(), shapeList(), Isis::ProjectItem::shapeList(), and Isis::ProjectItem::targetBody().
|
virtual |
Re-implement this method if your work order utilizes shapes for data in order to operate.
For example, "ImportShapeWorkOrder" works on shapes - the logic in side of ImportShapeWorkOrder::isExecutable(ShapeList) determines whethere or not a user is prompted with this work order as a possibility.
shapes | A shape list that this work order should execute on |
Reimplemented in Isis::Footprint2DViewWorkOrder, and Isis::CubeDnViewWorkOrder.
Definition at line 210 of file WorkOrder.cpp.
|
virtual |
Re-implement this method if your work order utilizes a control list (a list of control networks) for data in order to operate.
controls | A list of control networks. |
Reimplemented in Isis::TargetGetInfoWorkOrder.
Definition at line 410 of file WorkOrder.cpp.
|
virtual |
Re-implement this method if your work order utilizes a control list (a list of control networks) for data in order to operate.
controls | A list of control networks. |
Definition at line 422 of file WorkOrder.cpp.
bool Isis::WorkOrder::isFinished | ( | ) | const |
Returns the finished state of this WorkOrder.
Definition at line 874 of file WorkOrder.cpp.
References WorkOrderFinished.
|
private |
Determines if the WorkOrder is in a stable state, or if it's busy doing something.
Definition at line 1463 of file WorkOrder.cpp.
References isRedoing(), and isUndoing().
Referenced by redo(), save(), undo(), and WorkOrder().
bool Isis::WorkOrder::isRedoing | ( | ) | const |
Returns the redoing status of this WorkOrder.
Definition at line 883 of file WorkOrder.cpp.
References project().
Referenced by isInStableState(), redo(), undo(), and updateProgress().
bool Isis::WorkOrder::isRedone | ( | ) | const |
Returns the WorkOrder redone status.
Definition at line 893 of file WorkOrder.cpp.
References project().
Referenced by redo(), and setProgressToFinalText().
bool Isis::WorkOrder::isSavedToHistory | ( | ) | const |
Returns true if this work order is to be shown in History, otherwise false.
Definition at line 830 of file WorkOrder.cpp.
References m_isSavedToHistory, and project().
Referenced by Isis::Project::addToProject().
bool Isis::WorkOrder::isSynchronous | ( | ) | const |
Returns true if this work order is run synchronously, otherwise false.
Definition at line 841 of file WorkOrder.cpp.
References m_isSynchronous, and project().
bool Isis::WorkOrder::isUndoable | ( | ) | const |
Returns true if this work order is undoable, otherwise false.
This needs to be set to true and createsCleanState needs to be set to false in order for a WorkOrder to appear on the undoStack. This should be done by setting the member variable and should not be overloading this function.
Definition at line 819 of file WorkOrder.cpp.
References m_isUndoable, and project().
Referenced by Isis::HistoryTreeWidget::addToHistory(), Isis::Project::addToProject(), and setupExecution().
bool Isis::WorkOrder::isUndoing | ( | ) | const |
Returns the WorkOrderUndoing state.
Definition at line 903 of file WorkOrder.cpp.
References project().
Referenced by executionFinished(), isInStableState(), Isis::Project::lastNotUndoneWorkOrder(), redo(), undo(), and updateProgress().
bool Isis::WorkOrder::isUndone | ( | ) | const |
Returns the WorkOrder undo status.
Definition at line 913 of file WorkOrder.cpp.
References project().
Referenced by Isis::Project::lastNotUndoneWorkOrder(), setProgressToFinalText(), and undo().
|
private |
Checks to see if we have lost any images in the ImageList.
If we have, then destroy the entire list. This will send a signal that the list needs to be rebuilt if requested.
Definition at line 1479 of file WorkOrder.cpp.
References clearImageList(), Isis::Image::id(), and m_imageIds.
Referenced by imageList(), setData(), and WorkOrder().
|
private |
Checks to see if we have lost any shapes in the ShapeList.
If we have, then destroy the entire list. This will send a signal that the list needs to be rebuilt if requested.
TODO 2016-07-26 TLS Combine this with listenForImageDestruction() - Basically duplicate code.
Definition at line 1502 of file WorkOrder.cpp.
References clearShapeList(), Isis::Shape::id(), and m_shapeIds.
Referenced by setData(), shapeList(), and WorkOrder().
bool Isis::WorkOrder::modifiesDiskState | ( | ) | const |
Returns the modified disk state.
Definition at line 924 of file WorkOrder.cpp.
References m_modifiesDiskState, and project().
WorkOrder * Isis::WorkOrder::next | ( | ) | const |
Gets the next WorkOrder.
Definition at line 934 of file WorkOrder.cpp.
References m_nextWorkOrder, and project().
Referenced by undo().
|
protectedvirtual |
Perform any necessary actions after execution of a workorder.
State can be read from the parent WorkOrder class and from state set in either synchronous() or asyncRedo() while in this method. You can not set state to be used in any of the undo code safely. This method is always executed in the GUI thread and has no progress.
Reimplemented in Isis::ImportShapesWorkOrder, Isis::ImportImagesWorkOrder, Isis::ImportControlNetWorkOrder, Isis::ExportImagesWorkOrder, and Isis::ExportControlNetWorkOrder.
Definition at line 1414 of file WorkOrder.cpp.
Referenced by executionFinished().
|
protectedvirtual |
Perform any steps necessary after an undo of a workorder.
State can be read from the parent WorkOrder class and from state set undoExecution() while in this method. You can not set state to be used in any of the redo code safely. This method is always executed in the GUI thread and has no progress.
Reimplemented in Isis::ImportShapesWorkOrder, and Isis::ImportImagesWorkOrder.
Definition at line 1445 of file WorkOrder.cpp.
Referenced by executionFinished().
WorkOrder * Isis::WorkOrder::previous | ( | ) | const |
Gets the previous WorkOrder.
Definition at line 944 of file WorkOrder.cpp.
References m_previousWorkOrder, and project().
Referenced by Isis::Project::addToProject(), Isis::Project::lastNotUndoneWorkOrder(), and redo().
ProgressBar * Isis::WorkOrder::progressBar | ( | ) |
Returns the ProgressBar.
Definition at line 975 of file WorkOrder.cpp.
References m_progressBar, and project().
Referenced by Isis::HistoryTreeWidget::addToHistory(), Isis::OpenProjectWorkOrder::setupExecution(), and Isis::HistoryTreeWidget::updateProgressWidgets().
|
protected |
Gets the maximum value of the progress range of the WorkOrder.
Definition at line 1337 of file WorkOrder.cpp.
References m_progressRangeMaxValue, and project().
|
protected |
Gets the minimum value of the progress range of the WorkOrder.
Definition at line 1327 of file WorkOrder.cpp.
References m_progressRangeMinValue, and project().
|
protected |
Gets the current progress value of the WorkOrder.
Definition at line 1347 of file WorkOrder.cpp.
References m_progressValue, and project().
|
protected |
Returns the Project this WorkOrder is attached to.
IException::Programmer | "This work order no longer has a project." |
Definition at line 1300 of file WorkOrder.cpp.
References m_project, and Isis::IException::Programmer.
Referenced by addCloneToProject(), Isis::ImportControlNetWorkOrder::cnetReady(), controlList(), correlationMatrix(), Isis::ImportControlNetWorkOrder::CreateControlsFunctor::CreateControlsFunctor(), createsCleanState(), directory(), Isis::BundleObservationViewWorkOrder::execute(), Isis::CloseProjectWorkOrder::execute(), Isis::CnetEditorViewWorkOrder::execute(), Isis::ControlHealthMonitorWorkOrder::execute(), Isis::CubeDnViewWorkOrder::execute(), Isis::ExportControlNetWorkOrder::execute(), Isis::ExportImagesWorkOrder::execute(), Isis::Footprint2DViewWorkOrder::execute(), Isis::ImageFileListViewWorkOrder::execute(), Isis::ImportControlNetWorkOrder::execute(), Isis::ImportImagesWorkOrder::execute(), Isis::ImportMapTemplateWorkOrder::execute(), Isis::ImportRegistrationTemplateWorkOrder::execute(), Isis::ImportShapesWorkOrder::execute(), Isis::JigsawWorkOrder::execute(), Isis::MatrixViewWorkOrder::execute(), Isis::OpenProjectWorkOrder::execute(), Isis::RemoveImagesWorkOrder::execute(), Isis::RenameProjectWorkOrder::execute(), Isis::SaveProjectAsWorkOrder::execute(), Isis::SensorGetInfoWorkOrder::execute(), Isis::SetActiveControlWorkOrder::execute(), Isis::SetActiveImageListWorkOrder::execute(), Isis::TargetGetInfoWorkOrder::execute(), Isis::TemplateEditViewWorkOrder::execute(), executionTime(), fileItem(), getTemplate(), guiCamera(), imageList(), Isis::ImportImagesWorkOrder::importConfirmedImages(), Isis::ImportShapesWorkOrder::importConfirmedShapes(), internalData(), Isis::JigsawWorkOrder::isExecutable(), Isis::SetActiveControlWorkOrder::isExecutable(), Isis::SensorGetInfoWorkOrder::isExecutable(), Isis::SetActiveImageListWorkOrder::isExecutable(), Isis::TemplateEditViewWorkOrder::isExecutable(), Isis::TargetGetInfoWorkOrder::isExecutable(), isRedoing(), isRedone(), isSavedToHistory(), isSynchronous(), isUndoable(), isUndoing(), isUndone(), modifiesDiskState(), next(), Isis::ExportControlNetWorkOrder::postExecution(), Isis::ExportImagesWorkOrder::postExecution(), Isis::ImportControlNetWorkOrder::postExecution(), Isis::ImportImagesWorkOrder::postExecution(), Isis::ImportShapesWorkOrder::postExecution(), Isis::ImportImagesWorkOrder::postUndoExecution(), Isis::ImportShapesWorkOrder::postUndoExecution(), previous(), progressBar(), progressMax(), progressMin(), progressValue(), redo(), Isis::RenameProjectWorkOrder::RenameProjectWorkOrder(), Isis::CloseProjectWorkOrder::setupExecution(), Isis::CubeDnViewWorkOrder::setupExecution(), Isis::ExportControlNetWorkOrder::setupExecution(), Isis::ExportImagesWorkOrder::setupExecution(), Isis::Footprint2DViewWorkOrder::setupExecution(), Isis::ImageFileListViewWorkOrder::setupExecution(), Isis::ImportImagesWorkOrder::setupExecution(), Isis::MatrixViewWorkOrder::setupExecution(), Isis::OpenProjectWorkOrder::setupExecution(), Isis::RemoveImagesWorkOrder::setupExecution(), Isis::RenameProjectWorkOrder::setupExecution(), Isis::SaveProjectWorkOrder::setupExecution(), Isis::SetActiveControlWorkOrder::setupExecution(), shapeList(), statusText(), targetBody(), Isis::CnetEditorViewWorkOrder::undoExecution(), Isis::ImportImagesWorkOrder::undoExecution(), Isis::ImportMapTemplateWorkOrder::undoExecution(), Isis::ImportRegistrationTemplateWorkOrder::undoExecution(), Isis::ImportShapesWorkOrder::undoExecution(), Isis::MatrixViewWorkOrder::undoExecution(), Isis::RenameProjectWorkOrder::undoExecution(), and WorkOrder().
void Isis::WorkOrder::read | ( | XmlStackedHandlerReader * | xmlReader | ) |
Read this work order's data from disk.
Definition at line 520 of file WorkOrder.cpp.
References Isis::XmlStackedHandlerReader::pushContentHandler().
|
virtualslot |
Starts (or enqueues) a redo.
This should not be re-implemented by children.
Definition at line 1043 of file WorkOrder.cpp.
References attemptQueuedAction(), bestText(), dependsOn(), execute(), executionFinished(), imageList(), isFinished(), isInStableState(), isRedoing(), isRedone(), isSynchronous(), isUndoing(), m_elapsedTimer, m_futureWatcher, m_progressBar, previous(), project(), resetProgressBar(), setProgressToFinalText(), and shapeList().
Referenced by Isis::Project::addToProject(), and attemptQueuedAction().
|
private |
Resets the ProgressBar.
Definition at line 1520 of file WorkOrder.cpp.
References m_progressBar, m_progressBarDeletionTimer, m_progressBarUpdateTimer, m_progressRangeMaxValue, m_progressRangeMinValue, m_progressValue, and updateProgress().
Referenced by redo(), setupExecution(), and undo().
void Isis::WorkOrder::save | ( | QXmlStreamWriter & | stream | ) | const |
: Saves a WorkOrder to a data stream.
The XML output format looks like this:
<workOrder actionText="..." undoText="..." type="..." status="..."> <images> <image id="..." > </images>
<internalDataValues> <dataValue value="..." > </internalDataValues> </workOrder>
Definition at line 544 of file WorkOrder.cpp.
References bestText(), isInStableState(), m_executionTime, m_imageIds, m_internalData, m_shapeIds, Isis::IException::Programmer, and toString().
Referenced by Isis::Project::saveHistory(), Isis::CloseProjectWorkOrder::setupExecution(), and Isis::OpenProjectWorkOrder::setupExecution().
|
protected |
Declare that this work order is saving the project.
This makes the work order not appear in the undo stack (cannot undo/redo), and instead it is marked as a 'clean' state of the project. The QUndoCommand undo/redo will never be called. The default for createsCleanState is false. If this is set to true all wrokorders before this call will be locked.
createsCleanState | True if this work order is going to save the project to disk, False otherwise. |
Definition at line 1663 of file WorkOrder.cpp.
References createsCleanState(), and m_createsCleanState.
Referenced by Isis::CloseProjectWorkOrder::CloseProjectWorkOrder(), Isis::OpenProjectWorkOrder::OpenProjectWorkOrder(), Isis::SaveProjectAsWorkOrder::SaveProjectAsWorkOrder(), and Isis::SaveProjectWorkOrder::SaveProjectWorkOrder().
|
virtual |
Sets the context data for this WorkOrder.
context | This is an enum variable with two values: NoContext,ProjectContext. |
Definition at line 248 of file WorkOrder.cpp.
Referenced by Isis::ImageListActionWorkOrder::setData(), setData(), Isis::ExportControlNetWorkOrder::setupExecution(), Isis::Directory::supportedActions(), and Isis::MosaicSceneWidget::supportedActions().
|
virtual |
Sets the Control data for this WorkOrder.
controls. | A pointer to the Control |
Sets the ControlList data for this WorkOrder.
controls. | A pointer to the ControlList (which is a list of control networks). |
Definition at line 297 of file WorkOrder.cpp.
|
virtual |
Sets the CorrelationMatrix data for this WorkOrder.
correlationMatrix | The matrix data. |
Definition at line 306 of file WorkOrder.cpp.
References correlationMatrix().
|
virtual |
Sets the FileItem data for this WorkOrder.
FileItem | A QSharedPointer to the FileItem. |
Definition at line 344 of file WorkOrder.cpp.
References fileItem(), and m_fileItem.
|
virtual |
Sets the GuiCamera data for this WorkOrder.
guiCamera | A QSharedPointer to the GuiCamera. |
Definition at line 335 of file WorkOrder.cpp.
References guiCamera(), and m_guiCamera.
|
virtual |
Sets the ImageList data for this WorkOrder.
images | A pointer to the updated ImageList. |
Reimplemented in Isis::ImageListActionWorkOrder.
Definition at line 261 of file WorkOrder.cpp.
References listenForImageDestruction(), and m_imageIds.
|
virtual |
Sets the internal data to the data stored in a ProjectItem.
item | The item containing the data. |
Definition at line 353 of file WorkOrder.cpp.
References Isis::ImageList::append(), Isis::ShapeList::append(), Isis::ProjectItem::control(), controlList(), Isis::ProjectItem::controlList(), Isis::ProjectItem::correlationMatrix(), Isis::ProjectItem::fileItem(), Isis::ProjectItem::getTemplate(), Isis::ProjectItem::guiCamera(), Isis::ProjectItem::image(), imageList(), Isis::ProjectItem::imageList(), Isis::ProjectItem::isControl(), Isis::ProjectItem::isControlList(), Isis::ProjectItem::isCorrelationMatrix(), Isis::ProjectItem::isFileItem(), Isis::ProjectItem::isGuiCamera(), Isis::ProjectItem::isImage(), Isis::ProjectItem::isImageList(), Isis::ProjectItem::isProject(), Isis::ProjectItem::isShape(), Isis::ProjectItem::isShapeList(), Isis::ProjectItem::isTargetBody(), setData(), Isis::ProjectItem::shape(), shapeList(), Isis::ProjectItem::shapeList(), and Isis::ProjectItem::targetBody().
|
virtual |
Sets the ShapeList data for this WorkOrder.
images | A pointer to the updated ShapeList. |
Definition at line 274 of file WorkOrder.cpp.
References listenForShapeDestruction(), and m_shapeIds.
|
virtual |
Sets the TargetBody data for this WorkOrder.
targetBody | A QSharedPointer to the TargetBody. |
Definition at line 317 of file WorkOrder.cpp.
References m_targetBody, and targetBody().
|
virtual |
Sets the TargetBody data for this WorkOrder.
targetBody | A QSharedPointer to the TargetBody. |
Definition at line 326 of file WorkOrder.cpp.
References m_template.
|
protected |
Sets the internal data for this WorkOrder.
WorkOrders may not use member variables to store data. Any data needed for the workorder should be saved in to the base WorkOrder using setInternalData.
data | The data to set the internal data to. |
Definition at line 1318 of file WorkOrder.cpp.
References m_internalData.
Referenced by Isis::ImageListActionWorkOrder::execute(), Isis::ImageListActionWorkOrder::ImageListActionWorkOrder(), Isis::ImportImagesWorkOrder::importConfirmedImages(), Isis::ImportShapesWorkOrder::importConfirmedShapes(), Isis::ImportMapTemplateWorkOrder::isExecutable(), Isis::ImportRegistrationTemplateWorkOrder::isExecutable(), Isis::RenameProjectWorkOrder::RenameProjectWorkOrder(), Isis::CubeDnViewWorkOrder::setupExecution(), Isis::ExportControlNetWorkOrder::setupExecution(), Isis::ExportImagesWorkOrder::setupExecution(), Isis::Footprint2DViewWorkOrder::setupExecution(), Isis::ImageFileListViewWorkOrder::setupExecution(), Isis::ImportControlNetWorkOrder::setupExecution(), Isis::ImportImagesWorkOrder::setupExecution(), Isis::ImportMapTemplateWorkOrder::setupExecution(), Isis::ImportRegistrationTemplateWorkOrder::setupExecution(), Isis::ImportShapesWorkOrder::setupExecution(), Isis::MatrixViewWorkOrder::setupExecution(), Isis::RenameProjectWorkOrder::setupExecution(), Isis::SaveProjectAsWorkOrder::setupExecution(), Isis::SensorGetInfoWorkOrder::setupExecution(), Isis::TargetGetInfoWorkOrder::setupExecution(), Isis::TemplateEditViewWorkOrder::setupExecution(), Isis::ImageListActionWorkOrder::setupExecution(), and Isis::ImageListActionWorkOrder::undoExecution().
|
protected |
By default, m_modifiesDiskState is False. If a WorkOrder modifies the Project on disk as a result of it's action, this should be set to true.
changesProjectOnDisk | True if this WorkOrder modifies the Project on disk. False if it does not. |
Definition at line 1674 of file WorkOrder.cpp.
References m_modifiesDiskState.
Referenced by Isis::ImportControlNetWorkOrder::ImportControlNetWorkOrder(), Isis::ImportImagesWorkOrder::ImportImagesWorkOrder(), Isis::ImportMapTemplateWorkOrder::ImportMapTemplateWorkOrder(), Isis::ImportRegistrationTemplateWorkOrder::ImportRegistrationTemplateWorkOrder(), and Isis::ImportShapesWorkOrder::ImportShapesWorkOrder().
void Isis::WorkOrder::setNext | ( | WorkOrder * | nextWorkOrder | ) |
Sets the next WorkOrder in the sequence.
nextWorkOrder | The next WorkOrder. |
Definition at line 613 of file WorkOrder.cpp.
References m_nextWorkOrder.
Referenced by Isis::Project::addToProject().
void Isis::WorkOrder::setPrevious | ( | WorkOrder * | previousWorkOrder | ) |
Sets the previous WorkOrder in the sequence.
previousWorkOrder | The previous WorkOrder. |
Definition at line 622 of file WorkOrder.cpp.
References m_previousWorkOrder.
Referenced by Isis::Project::addToProject().
|
protected |
Sets the progress range of the WorkOrder.
minValue | The progress range minimum value. |
maxValue | The progress range maximum value. |
Definition at line 1358 of file WorkOrder.cpp.
References m_progressRangeMaxValue, and m_progressRangeMinValue.
Referenced by Isis::ExportImagesWorkOrder::execute(), Isis::ImportControlNetWorkOrder::execute(), Isis::ImportImagesWorkOrder::importConfirmedImages(), and Isis::ImportShapesWorkOrder::importConfirmedShapes().
|
private |
Sets the ProgressBar to display the final status of the operation.
Definition at line 1544 of file WorkOrder.cpp.
References isRedone(), isUndone(), m_progressBar, and m_progressBarDeletionTimer.
Referenced by executionFinished(), redo(), setupExecution(), and undo().
|
protected |
Sets the current progress value for the WorkOrder.
int | value The value to set the current progress to. |
Definition at line 1368 of file WorkOrder.cpp.
References m_progressValue.
Referenced by Isis::ExportImagesWorkOrder::execute(), Isis::ImportControlNetWorkOrder::execute(), Isis::ImportImagesWorkOrder::importConfirmedImages(), and Isis::ImportShapesWorkOrder::importConfirmedShapes().
|
virtualslot |
This sets up the state for the work order.
Child should implement this to get user input.
This method is designed to be implemented by children work orders, but they need to call the base class setupExecution (at the beginning).
State should only be set in the WorkOrder class in this method. You can set arbitrary state using setInternalData(). Call setData(ImageList), setInternalData(QStringList), etc... with all of the data/state necessary to perform the work order. This could be a list of file names, an ImageList of images you're viewing, or really anything else. This method is always executed in the GUI thread and is the only place to ask the user questions.
The actual work is done in execute(), using only state (data) stored in the WorkOrder class. You do not have to call execute() - this is done for you by WorkOrder::redo(). WorkOrder::redo() is called from Project::addToProject() when the workOrder is pushed onto the undo stack.
If this method returns false the workorder will be cancelled and will not be executed.
Reimplemented in Isis::ImageListActionWorkOrder, Isis::ViewControlNet3DWorkOrder, Isis::TemplateEditViewWorkOrder, Isis::TargetGetInfoWorkOrder, Isis::SetActiveImageListWorkOrder, Isis::SetActiveControlWorkOrder, Isis::SensorGetInfoWorkOrder, Isis::SaveProjectWorkOrder, Isis::SaveProjectAsWorkOrder, Isis::RenameProjectWorkOrder, Isis::RemoveImagesWorkOrder, Isis::OpenProjectWorkOrder, Isis::MatrixViewWorkOrder, Isis::ImportShapesWorkOrder, Isis::ImportRegistrationTemplateWorkOrder, Isis::ImportMapTemplateWorkOrder, Isis::ImportImagesWorkOrder, Isis::ImportControlNetWorkOrder, Isis::ImageFileListViewWorkOrder, Isis::Footprint2DViewWorkOrder, Isis::ExportImagesWorkOrder, Isis::ExportControlNetWorkOrder, Isis::CubeDnViewWorkOrder, Isis::ControlHealthMonitorWorkOrder, Isis::CnetEditorViewWorkOrder, Isis::CloseProjectWorkOrder, and Isis::BundleObservationViewWorkOrder.
Definition at line 1261 of file WorkOrder.cpp.
References createsCleanState(), isUndoable(), m_executionTime, m_progressBar, resetProgressBar(), setProgressToFinalText(), and WorkOrderFinished.
Referenced by Isis::Project::addToProject(), Isis::BundleObservationViewWorkOrder::setupExecution(), Isis::CloseProjectWorkOrder::setupExecution(), Isis::CnetEditorViewWorkOrder::setupExecution(), Isis::ControlHealthMonitorWorkOrder::setupExecution(), Isis::CubeDnViewWorkOrder::setupExecution(), Isis::ExportControlNetWorkOrder::setupExecution(), Isis::ExportImagesWorkOrder::setupExecution(), Isis::Footprint2DViewWorkOrder::setupExecution(), Isis::ImageFileListViewWorkOrder::setupExecution(), Isis::ImportControlNetWorkOrder::setupExecution(), Isis::ImportImagesWorkOrder::setupExecution(), Isis::ImportMapTemplateWorkOrder::setupExecution(), Isis::ImportRegistrationTemplateWorkOrder::setupExecution(), Isis::ImportShapesWorkOrder::setupExecution(), Isis::MatrixViewWorkOrder::setupExecution(), Isis::OpenProjectWorkOrder::setupExecution(), Isis::RemoveImagesWorkOrder::setupExecution(), Isis::RenameProjectWorkOrder::setupExecution(), Isis::SaveProjectAsWorkOrder::setupExecution(), Isis::SaveProjectWorkOrder::setupExecution(), Isis::SensorGetInfoWorkOrder::setupExecution(), Isis::SetActiveControlWorkOrder::setupExecution(), Isis::SetActiveImageListWorkOrder::setupExecution(), Isis::TargetGetInfoWorkOrder::setupExecution(), Isis::TemplateEditViewWorkOrder::setupExecution(), Isis::ViewControlNet3DWorkOrder::setupExecution(), and Isis::ImageListActionWorkOrder::setupExecution().
|
protected |
@briefReturns a pointer to the ShapeList for this WorkOrder.
Definition at line 663 of file WorkOrder.cpp.
References listenForShapeDestruction(), m_shapeIds, project(), and Isis::Project::shape().
Referenced by isExecutable(), redo(), setData(), and shapeList().
|
protected |
A thread-safe method for retrieving a pointer to the shapeList.
Definition at line 726 of file WorkOrder.cpp.
References m_transparentConstMutex, and shapeList().
|
privateslot |
WorkOrder::startRedo This function is currently empty.
Definition at line 1650 of file WorkOrder.cpp.
QString Isis::WorkOrder::statusText | ( | ) | const |
Definition at line 954 of file WorkOrder.cpp.
References m_secondsElapsed, project(), and toString().
|
protected |
Definition at line 746 of file WorkOrder.cpp.
References m_targetBody, and project().
Referenced by Isis::TargetGetInfoWorkOrder::execute(), Isis::TargetGetInfoWorkOrder::isExecutable(), setData(), and Isis::TargetGetInfoWorkOrder::setupExecution().
|
static |
Gets the current status of the WorkOrder.
status | An enumeration of all possible WorkOrder states. |
Definition at line 1009 of file WorkOrder.cpp.
References WorkOrderFinished.
Referenced by fromStatusString(), save(), and statusText().
|
virtualslot |
Starts (or enqueues) an undo.
This should not be re-implemented by children.
Definition at line 1146 of file WorkOrder.cpp.
References attemptQueuedAction(), bestText(), executionFinished(), isFinished(), isInStableState(), isRedoing(), isSynchronous(), isUndoing(), isUndone(), m_elapsedTimer, m_futureWatcher, m_progressBar, next(), resetProgressBar(), setProgressToFinalText(), and undoExecution().
Referenced by attemptQueuedAction().
|
protectedvirtual |
Execute the steps necessary to undo this workorder.
The workorder should have all state necessary to undo itself stored in the workorder.
For synchronous workorders: State should only be read from the parent WorkOrder class in this method. You can set state to be used in postUndoExecution() safely. This method is always executed in the GUI thread and has no progress.
For Asynchronous workorders: State can be read from the parent WorkOrder class while in this method. You can set state to be used in postSyncUndo() safely. Please be wary of deleting QObjects inside of this method because they will cause unpredictable crashes. This method is never executed in the GUI thread. You can update progress by calling setProgressRange() and setProgressValue(). Do not manipulate any GUI objects here.
Reimplemented in Isis::MoveUpOneSceneWorkOrder, Isis::MoveToTopSceneWorkOrder, Isis::MoveToBottomSceneWorkOrder, Isis::MoveDownOneSceneWorkOrder, Isis::ImageListActionWorkOrder, Isis::ViewControlNet3DWorkOrder, Isis::SensorGetInfoWorkOrder, Isis::RenameProjectWorkOrder, Isis::MatrixViewWorkOrder, Isis::ImportShapesWorkOrder, Isis::ImportRegistrationTemplateWorkOrder, Isis::ImportMapTemplateWorkOrder, Isis::ImportImagesWorkOrder, and Isis::CnetEditorViewWorkOrder.
Definition at line 1434 of file WorkOrder.cpp.
Referenced by undo().
|
privateslot |
Updates the progress bar.
Definition at line 1639 of file WorkOrder.cpp.
References isRedoing(), isUndoing(), m_progressBar, m_progressRangeMaxValue, m_progressRangeMinValue, and m_progressValue.
Referenced by resetProgressBar().
|
private |
This is defaulted to false.
If a work order saves the project to disk, this causes a 'clean' (non-dirty) state. These work orders should call setCreatesCleanState(true) in their constructor.
Definition at line 549 of file WorkOrder.h.
Referenced by createsCleanState(), setCreatesCleanState(), and WorkOrder().
|
private |
A QTime object holding the excecution time of the WorkOrder.
Definition at line 677 of file WorkOrder.h.
Referenced by executionFinished(), redo(), undo(), and WorkOrder().
|
private |
This is the date/time that setupExecution() was called.
Definition at line 647 of file WorkOrder.h.
Referenced by executionTime(), save(), setupExecution(), and WorkOrder().
|
private |
A QSharedPointer to the FileItem.
Definition at line 603 of file WorkOrder.h.
Referenced by fileItem(), setData(), and WorkOrder().
|
private |
A pointer to a QFutureWatcher object which monitors a QFuture object using signals and slots.
A QFuture object represents the results of an asynchrounous operation.
Definition at line 654 of file WorkOrder.h.
Referenced by redo(), undo(), WorkOrder(), and ~WorkOrder().
|
private |
A QSharedPointer to the GuiCamera (the Camera object but encapsulated within a Gui framework.
Definition at line 583 of file WorkOrder.h.
Referenced by guiCamera(), setData(), and WorkOrder().
|
private |
A QStringList of unique image identifiers for all of the images this WorkOrder is dealing with.
Definition at line 610 of file WorkOrder.h.
Referenced by imageList(), listenForImageDestruction(), save(), setData(), and WorkOrder().
|
private |
A QStringList of internal properties for this WorkOrder.
Definition at line 621 of file WorkOrder.h.
Referenced by internalData(), save(), setInternalData(), and WorkOrder().
|
protected |
Set the work order to be shown in the HistoryTreeWidget.
This is defaulted to true. If true the work order will be shown in the HistoryTreeWidget if false it will not be shown.
Definition at line 537 of file WorkOrder.h.
Referenced by Isis::BundleObservationViewWorkOrder::BundleObservationViewWorkOrder(), Isis::CloseProjectWorkOrder::CloseProjectWorkOrder(), Isis::CubeDnViewWorkOrder::CubeDnViewWorkOrder(), Isis::Footprint2DViewWorkOrder::Footprint2DViewWorkOrder(), Isis::ImageListActionWorkOrder::ImageListActionWorkOrder(), isSavedToHistory(), Isis::MatrixViewWorkOrder::MatrixViewWorkOrder(), Isis::SensorGetInfoWorkOrder::SensorGetInfoWorkOrder(), Isis::TargetGetInfoWorkOrder::TargetGetInfoWorkOrder(), Isis::TemplateEditViewWorkOrder::TemplateEditViewWorkOrder(), Isis::ViewControlNet3DWorkOrder::ViewControlNet3DWorkOrder(), and WorkOrder().
|
protected |
This is defaulted to true.
If true, the work order will be executed on the GUI thread synchronously. If false, then the work order will be queued for execution on a non-GUI thread and will not block the GUI.
Definition at line 530 of file WorkOrder.h.
Referenced by Isis::ExportControlNetWorkOrder::ExportControlNetWorkOrder(), Isis::ImportControlNetWorkOrder::ImportControlNetWorkOrder(), Isis::ImportImagesWorkOrder::ImportImagesWorkOrder(), Isis::ImportShapesWorkOrder::ImportShapesWorkOrder(), isSynchronous(), and WorkOrder().
|
protected |
Set the workorder to be undoable/redoable This is defaulted to true - his will allow the workorder to be redone.
Note the workorder undoExecution() method must be implemented. This will result on the workorder being placed on the QUndoStack and being displayed in the history as being undoable. If set to false, the work order will not be put on the QUndoStack and the workorder will not be able to be undone.
Definition at line 523 of file WorkOrder.h.
Referenced by Isis::BundleObservationViewWorkOrder::BundleObservationViewWorkOrder(), Isis::CloseProjectWorkOrder::CloseProjectWorkOrder(), Isis::ControlHealthMonitorWorkOrder::ControlHealthMonitorWorkOrder(), Isis::CubeDnViewWorkOrder::CubeDnViewWorkOrder(), Isis::ExportControlNetWorkOrder::ExportControlNetWorkOrder(), Isis::Footprint2DViewWorkOrder::Footprint2DViewWorkOrder(), Isis::ImportControlNetWorkOrder::ImportControlNetWorkOrder(), Isis::ImportMapTemplateWorkOrder::ImportMapTemplateWorkOrder(), Isis::ImportRegistrationTemplateWorkOrder::ImportRegistrationTemplateWorkOrder(), Isis::ImportShapesWorkOrder::ImportShapesWorkOrder(), isUndoable(), Isis::JigsawWorkOrder::JigsawWorkOrder(), Isis::OpenProjectWorkOrder::OpenProjectWorkOrder(), Isis::RenameProjectWorkOrder::RenameProjectWorkOrder(), Isis::SaveProjectAsWorkOrder::SaveProjectAsWorkOrder(), Isis::SensorGetInfoWorkOrder::SensorGetInfoWorkOrder(), Isis::SetActiveControlWorkOrder::SetActiveControlWorkOrder(), Isis::SetActiveImageListWorkOrder::SetActiveImageListWorkOrder(), Isis::TargetGetInfoWorkOrder::TargetGetInfoWorkOrder(), Isis::TemplateEditViewWorkOrder::TemplateEditViewWorkOrder(), and WorkOrder().
|
private |
This is defaulted to false.
If a WorkOrder modifies the project on disk to perform its actions (for example, an import WorkOrder), the WorkOrder should call setModifiesDiskState(true) in its constructor.
Definition at line 556 of file WorkOrder.h.
Referenced by modifiesDiskState(), setModifiesDiskState(), and WorkOrder().
|
private |
A pointer to the next WorkOrder in the queue.
Definition at line 626 of file WorkOrder.h.
Referenced by next(), setNext(), and ~WorkOrder().
|
private |
A pointer to the previous WorkOrder in the queue.
Definition at line 631 of file WorkOrder.h.
Referenced by previous(), setPrevious(), and ~WorkOrder().
|
private |
A pointer to the ProgressBar.
Definition at line 661 of file WorkOrder.h.
Referenced by progressBar(), redo(), resetProgressBar(), setProgressToFinalText(), setupExecution(), undo(), and updateProgress().
|
private |
A pointer to the ProgressBar deletion timer.
Definition at line 671 of file WorkOrder.h.
Referenced by resetProgressBar(), setProgressToFinalText(), and ~WorkOrder().
|
private |
A pointer to the QTimer which updates the ProgressBar.
Definition at line 666 of file WorkOrder.h.
Referenced by executionFinished(), resetProgressBar(), and ~WorkOrder().
|
private |
The maximum value of the Progess Bar.
Definition at line 567 of file WorkOrder.h.
Referenced by progressMax(), resetProgressBar(), setProgressRange(), updateProgress(), and WorkOrder().
|
private |
The miniumum value of the Progess Bar.
Definition at line 563 of file WorkOrder.h.
Referenced by progressMin(), resetProgressBar(), setProgressRange(), updateProgress(), and WorkOrder().
|
private |
The current value of the Progress Bar.
Definition at line 571 of file WorkOrder.h.
Referenced by progressValue(), resetProgressBar(), setProgressValue(), updateProgress(), and WorkOrder().
|
private |
A pointer to the Project this WorkOrder is attached to.
Definition at line 636 of file WorkOrder.h.
Referenced by Isis::ImportControlNetWorkOrder::CreateControlsFunctor::operator()(), project(), WorkOrder(), and ~WorkOrder().
|
private |
The seconds that have elapsed since the WorkOrder started executing.
Definition at line 682 of file WorkOrder.h.
Referenced by executionFinished(), statusText(), and WorkOrder().
|
private |
A QStringList of unique shape identifiers for all of the shapes this WorkOrder is dealing with.
Definition at line 616 of file WorkOrder.h.
Referenced by listenForShapeDestruction(), save(), setData(), shapeList(), and WorkOrder().
|
private |
A QSharedPointer to the TargetBody (A Target object but encapsulated within a Gui framework.
Definition at line 597 of file WorkOrder.h.
Referenced by setData(), targetBody(), and WorkOrder().
|
private |
A QSharedPointer to the Template (A Template object but encapsulated within a Gui framework.
Definition at line 590 of file WorkOrder.h.
Referenced by getTemplate(), setData(), and WorkOrder().
|
private |
This is used to protect the integrity of data the WorkOrder is working on so that only one thread at a time cann access it.
Definition at line 642 of file WorkOrder.h.
Referenced by imageList(), shapeList(), WorkOrder(), and ~WorkOrder().
U.S. Department of the Interior | U.S. Geological Survey ISIS | Privacy & Disclaimers | Astrogeology Research Program To contact us, please post comments and questions on the USGS Astrogeology Discussion Board To report a bug, or suggest a feature go to: ISIS Github File Modified: 07/13/2023 15:24:10 |