Isis 3 Programmer Reference
Isis::WorkOrder Class Referenceabstract

Provide Undo/redo abilities, serialization, and history for an operation. More...

#include <WorkOrder.h>

Inheritance diagram for Isis::WorkOrder:
Inheritance graph
Collaboration diagram for Isis::WorkOrder:
Collaboration graph

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.
 
void disableWorkOrder ()
 Disables the work order.
 
virtual bool setupExecution ()
 This sets up the state for the work order.
 
virtual void execute ()
 Execute the workorder.
 
virtual void redo ()
 Starts (or enqueues) a redo.
 
virtual void undo ()
 Starts (or enqueues) an undo.
 

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.
 
virtual ~WorkOrder ()
 The Destructor.
 
virtual WorkOrderclone () const =0
 
virtual bool isExecutable (Context)
 Re-implement this method if your work order utilizes controls for data in order to operate.
 
virtual bool isExecutable (ImageList *images)
 Re-implement this method if your work order utilizes images for data in order to operate.
 
virtual bool isExecutable (ShapeList *shapes)
 Re-implement this method if your work order utilizes shapes for data in order to operate.
 
virtual bool isExecutable (ControlList *controls)
 Re-implement this method if your work order utilizes a control for data in order to operate.
 
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.
 
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.
 
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.
 
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.
 
virtual bool isExecutable (ProjectItem *item)
 Determines if the WorkOrder is execuatable on the data stored in a ProjectItem.
 
void read (XmlStackedHandlerReader *xmlReader)
 Read this work order's data from disk.
 
void save (QXmlStreamWriter &stream) const
 : Saves a WorkOrder to a data stream.
 
virtual void setData (Context)
 Sets the context data for this WorkOrder.
 
virtual void setData (QString data)
 
virtual void setData (ImageList *images)
 Sets the ImageList data for this WorkOrder.
 
virtual void setData (ShapeList *shapes)
 Sets the ShapeList data for this WorkOrder.
 
virtual void setData (ControlList *controls)
 Sets the Control data for this WorkOrder.
 
virtual void setData (Template *currentTemplate)
 Sets the TargetBody data for this WorkOrder.
 
virtual void setData (CorrelationMatrix)
 Sets the CorrelationMatrix data for this WorkOrder.
 
virtual void setData (TargetBodyQsp targetBody)
 Sets the TargetBody data for this WorkOrder.
 
virtual void setData (GuiCameraQsp guiCamera)
 Sets the GuiCamera data for this WorkOrder.
 
virtual void setData (FileItemQsp fileItem)
 Sets the FileItem data for this WorkOrder.
 
virtual void setData (ProjectItem *item)
 Sets the internal data to the data stored in a ProjectItem.
 
void setNext (WorkOrder *nextWorkOrder)
 Sets the next WorkOrder in the sequence.
 
void setPrevious (WorkOrder *previousWorkOrder)
 Sets the previous WorkOrder in the sequence.
 
QString bestText () const
 Generate unique action names We don't use action text anymore because Directory likes to rename our actions.
 
bool isUndoable () const
 Returns true if this work order is undoable, otherwise false.
 
bool isSavedToHistory () const
 Returns true if this work order is to be shown in History, otherwise false.
 
bool isSynchronous () const
 Returns true if this work order is run synchronously, otherwise false.
 
bool createsCleanState () const
 Returns the CleanState status (whether the Project has been saved to disk or not).
 
QDateTime executionTime () const
 Gets the execution time of this WorkOrder.
 
bool isFinished () const
 Returns the finished state of this WorkOrder.
 
bool isRedoing () const
 Returns the redoing status of this WorkOrder.
 
bool isRedone () const
 Returns the WorkOrder redone status.
 
bool isUndoing () const
 Returns the WorkOrderUndoing state.
 
bool isUndone () const
 Returns the WorkOrder undo status.
 
bool modifiesDiskState () const
 Returns the modified disk state.
 
WorkOrdernext () const
 Gets the next WorkOrder.
 
WorkOrderprevious () const
 Gets the previous WorkOrder.
 
QString statusText () const
 WorkOrder::statusText.
 
ProgressBarprogressBar ()
 Returns the ProgressBar.
 

Static Public Member Functions

static WorkOrderStatus fromStatusString (QString)
 Attempts to query the current status of the WorkOrder.
 
static QString toString (WorkOrderStatus)
 Gets the current status of the WorkOrder.
 

Protected Slots

void addCloneToProject ()
 Runs a copy of the current WorkOrder and stores it in the project.
 

Protected Member Functions

 WorkOrder (const WorkOrder &other)
 Copy the work order 'other' into this (new) instance.
 
ImageListimageList ()
 Returns a pointer to the ImageList for this WorkOrder.
 
const ImageListimageList () const
 A thread-safe method for retrieving a pointer to the imageList.
 
ShapeListshapeList ()
 @briefReturns a pointer to the ShapeList for this WorkOrder.
 
const ShapeListshapeList () const
 A thread-safe method for retrieving a pointer to the shapeList.
 
CorrelationMatrix correlationMatrix ()
 Returns the CorrleationMatrix for this WorkOrder.
 
QPointer< ControlListcontrolList ()
 Returns the Control List for this WorkOrder (a list of control networks).
 
TemplategetTemplate ()
 WorkOrder::getTemplate.
 
TargetBodyQsp targetBody ()
 WorkOrder::targetBody.
 
GuiCameraQsp guiCamera ()
 WorkOrder::guiCamera.
 
FileItemQsp fileItem ()
 WorkOrder::fileItem.
 
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.
 
Directorydirectory () const
 return the workorder project directory Returns the Directory object of the Project this WorkOrder is attached to.
 
Projectproject () const
 Returns the Project this WorkOrder is attached to.
 
void setCreatesCleanState (bool createsCleanState)
 Declare that this work order is saving the project.
 
void setModifiesDiskState (bool changesProjectOnDisk)
 
void setInternalData (QStringList data)
 Sets the internal data for this WorkOrder.
 
int progressMin () const
 Gets the minimum value of the progress range of the WorkOrder.
 
int progressMax () const
 Gets the maximum value of the progress range of the WorkOrder.
 
int progressValue () const
 Gets the current progress value of the WorkOrder.
 
void setProgressRange (int, int)
 Sets the progress range of the WorkOrder.
 
void setProgressValue (int)
 Sets the current progress value for the WorkOrder.
 
QStringList internalData () const
 Gets the internal data for this WorkOrder.
 
virtual void postExecution ()
 Perform any necessary actions after execution of a workorder.
 
virtual void undoExecution ()
 Execute the steps necessary to undo this workorder.
 
virtual void postUndoExecution ()
 Perform any steps necessary after an undo of a workorder.
 

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.
 
bool m_isSynchronous
 This is defaulted to true.
 
bool m_isSavedToHistory
 Set the work order to be shown in the HistoryTreeWidget.
 
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.
 
void executionFinished ()
 Signals the Project that the WorkOrder is finished, deletes the update time for the Progress bar, and sets the finished status.
 
void clearImageList ()
 Clears the list of images.
 
void clearShapeList ()
 Clears the list of shapes.
 
void updateProgress ()
 Updates the progress bar.
 
void startRedo ()
 WorkOrder::startRedo This function is currently empty.
 

Private Member Functions

bool isInStableState () const
 Determines if the WorkOrder is in a stable state, or if it's busy doing something.
 
void listenForImageDestruction ()
 Checks to see if we have lost any images in the ImageList.
 
void listenForShapeDestruction ()
 Checks to see if we have lost any shapes in the ShapeList.
 
void resetProgressBar ()
 Resets the ProgressBar.
 
void setProgressToFinalText ()
 Sets the ProgressBar to display the final status of the operation.
 
WorkOrderoperator= (const WorkOrder &rhs)
 

Private Attributes

bool m_createsCleanState
 This is defaulted to false.
 
bool m_modifiesDiskState
 This is defaulted to false.
 
QueuedWorkOrderAction m_queuedAction
 
int m_progressRangeMinValue
 The miniumum value of the Progess Bar.
 
int m_progressRangeMaxValue
 The maximum value of the Progess Bar.
 
int m_progressValue
 The current value of the Progress Bar.
 
Context m_context
 
QString m_data
 
QPointer< ImageListm_imageList
 
QPointer< ShapeListm_shapeList
 
QPointer< ControlListm_controlList
 
CorrelationMatrix m_correlationMatrix
 
GuiCameraQsp m_guiCamera
 A QSharedPointer to the GuiCamera (the Camera object but encapsulated within a Gui framework.
 
Templatem_template
 A QSharedPointer to the Template (A Template object but encapsulated within a Gui framework.
 
TargetBodyQsp m_targetBody
 A QSharedPointer to the TargetBody (A Target object but encapsulated within a Gui framework.
 
FileItemQsp m_fileItem
 A QSharedPointer to the FileItem.
 
QStringList m_imageIds
 A QStringList of unique image identifiers for all of the images this WorkOrder is dealing with.
 
QStringList m_shapeIds
 A QStringList of unique shape identifiers for all of the shapes this WorkOrder is dealing with.
 
QStringList m_internalData
 A QStringList of internal properties for this WorkOrder.
 
QPointer< WorkOrderm_nextWorkOrder
 A pointer to the next WorkOrder in the queue.
 
QPointer< WorkOrderm_previousWorkOrder
 A pointer to the previous WorkOrder in the queue.
 
QPointer< Projectm_project
 A pointer to the Project this WorkOrder is attached to.
 
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.
 
QDateTime m_executionTime
 This is the date/time that setupExecution() was called.
 
QPointer< QFutureWatcher< void > > m_futureWatcher
 A pointer to a QFutureWatcher object which monitors a QFuture object using signals and slots.
 
QPointer< ProgressBarm_progressBar
 A pointer to the ProgressBar.
 
QPointer< QTimer > m_progressBarUpdateTimer
 A pointer to the QTimer which updates the ProgressBar.
 
QPointer< QTimer > m_progressBarDeletionTimer
 A pointer to the ProgressBar deletion timer.
 
QTime * m_elapsedTimer
 A QTime object holding the excecution time of the WorkOrder.
 
double m_secondsElapsed
 The seconds that have elapsed since the WorkOrder started executing.
 

Detailed Description

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.

See also
ImportImagesWorkOrder::execute for an example of an asynchronous WorkOrder that allocates memory. setProgressValue() can be used to update the progress bar in the GUI. Any member variables being accessed by an asynchronous workorder will need to have a QMutex locker so they can be thread safe

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

Author
2012-??-?? Steven Lambright and Stuart Sides
History

2012-08-23 Steven Lambright and Stuart Sides - Updated the class to be much more flushed out. We now have WorkOrderStatus, syncRedo(), asyncRedo(), postSyndRedo() (also undo versions), dependsOn(), full dependency analysis, full progress/status strings, no more race conditions in undo/redo, the work order list is now doubly-linked, and added the statusChanged() signal. redo() and undo() should no longer cause any bad or undesired behavior.

2012-09-19 Steven Lambright - Added QList<Control *> data support for in-memory controls. I did not yet do the serialization because we're working on a "ControlList" class that may encapsulate some of the implementation (maybe, we'll see).

2012-10-19 Steven Lambright - Removed parent argument from constructor - deleting work orders when the creator goes away doesn't make sense. Also work orders will work correctly when the associated images are freed from memory and later re-allocated (the import of the images was undone, for example). Added elapsed time value to the status text and fixed warning for work orders without undo text. Added listenForImageDestruction() and clearImageList().

2013-04-25 Jeannie Backer - Modified call to qWarning() to prevent compile warnings on MAC OS 10.8.2

2014-07-14 Kimberly Oyama - Added support for correlation matrix.

2015-06-12 Ken Edmundson - Added support for target body.

2015-10-05 Jeffrey Covington - Added support for ProjectItem. Added new methods to support the types used by ProjectItem. Marked old methods as deprecated.

2016-01-04 Jeffrey Covington - Improved support for ProjectItem.

2016-06-13 Tyler Wilson - Added documentation to many of the member functions in this class. Fixes #3956.

2016-06-22 Tyler Wilson - Removed all references to deprecated functions/member variables. Fixes #4052.

2016-07-26 Tracie Sucharski - Added functionality for ShapeList.

2017-02-06 Tracie Sucharski - Added methods to set/get whether work order is put on the QUndoStack. If it is NOT put on the stack, it will be greyed out in the HistoryTreeWidget and not undo-able. Todo: Decide whether work orders not on the QUndoStack should appear in the HistoryTreeWidget. Fixes #4598.

2017-04-04 Tracie Sucharski - Renamed the execute method to setupExecution. Fixes #4718.

2017-04-04 Tracie Sucharski - Renamed onUndoStack to isUndoable. Renamed setUndoRedo to setUndoable. Fixes #4722.

2017-04-04 JP Bonn - Updated to new design. setupExecution() used for preparation. No longer separate methods for sync/async - workorder::execute() handles both sync/async

2017-04-16 Ian Humphrey - Added enableWorkOrder and disableWorkOrder slots for enabling and disabling work orders. Copy constructor now copies what's this and tool tip (hover text) state.

2017-05-05 Tracie Sucharski - Added functionality for FileItem types and added BundleObservationViewWorkOrder. Fixes #4838, #4839, #4840.

2017-07-24 Cole Neubauer - Created isSavedToHistory() to be able to keep Views from being added to the HistoryTree Fixes #4715

2017-07-31 Cole Neubauer - Added a QTMutexLocker to every function that returns a member variable function Fixes #5082

2017-08-02 Cole Neubauer - Moved m_status to protected so children can set it if a workorder errors Fixes #5026

2017-08-11 Cole Neubauer - Updated documentation for accessor methods and when one of these accessors should be used in the workorder template #5113

2017-11-02 Tyler Wilson - Added a virtual setData method for a QString, and a private QString object called m_data. References #4492.

2017-12-05 Christopher Combs - Added support for TemplateEditorWidget and TemplateEditViewWorkOrder. Fixes #5168.

2018-06-28 Makayla Shepherd - Removed the ProgressBar cleanup because it was causing a seg fault when the ProgressBar was added to the HistoryTreeWidget. The HistoryTreeWidget will now clean up the ProgressBar. Fixes #5228.

Definition at line 311 of file WorkOrder.h.

Member Enumeration Documentation

◆ Context

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.

◆ QueuedWorkOrderAction

This enum describes the current state of a Queued WorkOrder.

Definition at line 483 of file WorkOrder.h.

◆ WorkOrderStatus

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.

Constructor & Destructor Documentation

◆ WorkOrder() [1/2]

Isis::WorkOrder::WorkOrder ( Project * project)

Create a work order that will work with the given project.

Parameters
projectThe Project that this work order should be interacting with
parentThe Qt-relationship parent
Exceptions
IException::ProgrammerThis exception is thrown if the WorkOrder is not attached to a Project.

Definition at line 39 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().

◆ ~WorkOrder()

Isis::WorkOrder::~WorkOrder ( )
virtual

◆ WorkOrder() [2/2]

Isis::WorkOrder::WorkOrder ( const WorkOrder & other)
protected

Member Function Documentation

◆ addCloneToProject

void Isis::WorkOrder::addCloneToProject ( )
protectedslot

Runs a copy of the current WorkOrder and stores it in the project.

Definition at line 1450 of file WorkOrder.cpp.

References Isis::Project::addToProject(), and project().

Referenced by WorkOrder(), and WorkOrder().

◆ attemptQueuedAction

void Isis::WorkOrder::attemptQueuedAction ( )
privateslot

Attempts to execute an action on the action queue.

Definition at line 1573 of file WorkOrder.cpp.

References redo(), and undo().

Referenced by executionFinished(), redo(), and undo().

◆ bestText()

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.

See also
Directory::restructureActions
Returns
QString A textual description of the action.

Definition at line 793 of file WorkOrder.cpp.

Referenced by save().

◆ clearImageList

void Isis::WorkOrder::clearImageList ( )
privateslot

Clears the list of images.

Definition at line 1621 of file WorkOrder.cpp.

Referenced by listenForImageDestruction().

◆ clearShapeList

void Isis::WorkOrder::clearShapeList ( )
privateslot

Clears the list of shapes.

Definition at line 1629 of file WorkOrder.cpp.

Referenced by listenForShapeDestruction().

◆ clone()

◆ controlList()

QPointer< ControlList > Isis::WorkOrder::controlList ( )
protected

◆ correlationMatrix()

CorrelationMatrix Isis::WorkOrder::correlationMatrix ( )
protected

Returns the CorrleationMatrix for this WorkOrder.

Returns
A CorrelationMatrix.

Definition at line 694 of file WorkOrder.cpp.

References project().

Referenced by Isis::MatrixViewWorkOrder::execute(), setData(), and Isis::MatrixViewWorkOrder::setupExecution().

◆ createsCleanState()

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.

Returns
Returns True if the Project has been saved to disk. False if it has not.

Definition at line 852 of file WorkOrder.cpp.

References m_createsCleanState, and project().

Referenced by setCreatesCleanState(), and setupExecution().

◆ dependsOn()

bool Isis::WorkOrder::dependsOn ( WorkOrder * other) const
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.

Parameters
WorkOrder* The WorkOrder we are checking for dependency with this one.
Returns
bool Returns True if there is a dependency, and False if there is no dependency.

Reimplemented in Isis::CnetEditorViewWorkOrder, Isis::CubeDnViewWorkOrder, Isis::JigsawWorkOrder, Isis::MatrixViewWorkOrder, Isis::RenameProjectWorkOrder, Isis::SensorGetInfoWorkOrder, Isis::TargetGetInfoWorkOrder, Isis::TemplateEditViewWorkOrder, and Isis::ViewControlNet3DWorkOrder.

Definition at line 779 of file WorkOrder.cpp.

Referenced by redo().

◆ directory()

Directory * Isis::WorkOrder::directory ( ) const
protected

return the workorder project directory Returns the Directory object of the Project this WorkOrder is attached to.

Returns
(Directory *) A pointer to the Directory.

Definition at line 1288 of file WorkOrder.cpp.

References Isis::Project::directory(), and project().

Referenced by Isis::CnetEditorViewWorkOrder::execute(), Isis::CubeDnViewWorkOrder::execute(), Isis::Footprint2DViewWorkOrder::execute(), and Isis::JigsawWorkOrder::isExecutable().

◆ disableWorkOrder

void Isis::WorkOrder::disableWorkOrder ( )
slot

Disables the work order.

Disables the work order so it cannot be triggered (grayed-out).

See also
Directory::initializeActions()

Definition at line 1228 of file WorkOrder.cpp.

◆ enableWorkOrder

void Isis::WorkOrder::enableWorkOrder ( )
slot

Enables the work order.

Enables the work order so that it can be triggered (clicked).

See also
Directory::initializeActions()

Definition at line 1216 of file WorkOrder.cpp.

◆ execute

void Isis::WorkOrder::execute ( )
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::BundleObservationViewWorkOrder, Isis::CloseProjectWorkOrder, Isis::CnetEditorViewWorkOrder, Isis::ControlHealthMonitorWorkOrder, Isis::CubeDnViewWorkOrder, Isis::ExportControlNetWorkOrder, Isis::ExportImagesWorkOrder, Isis::Footprint2DViewWorkOrder, Isis::ImageFileListViewWorkOrder, Isis::ImportControlNetWorkOrder, Isis::ImportImagesWorkOrder, Isis::ImportMapTemplateWorkOrder, Isis::ImportRegistrationTemplateWorkOrder, Isis::ImportShapesWorkOrder, Isis::JigsawWorkOrder, Isis::MatrixViewWorkOrder, Isis::OpenProjectWorkOrder, Isis::RemoveImagesWorkOrder, Isis::RenameProjectWorkOrder, Isis::SaveProjectAsWorkOrder, Isis::SensorGetInfoWorkOrder, Isis::SetActiveControlWorkOrder, Isis::SetActiveImageListWorkOrder, Isis::TargetGetInfoWorkOrder, Isis::TemplateEditViewWorkOrder, Isis::ViewControlNet3DWorkOrder, Isis::ImageListActionWorkOrder, Isis::MoveDownOneSceneWorkOrder, Isis::MoveToBottomSceneWorkOrder, Isis::MoveToTopSceneWorkOrder, and Isis::MoveUpOneSceneWorkOrder.

Definition at line 1401 of file WorkOrder.cpp.

Referenced by redo().

◆ executionFinished

void Isis::WorkOrder::executionFinished ( )
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 1590 of file WorkOrder.cpp.

References attemptQueuedAction(), isUndoing(), m_elapsedTimer, m_progressBarUpdateTimer, m_secondsElapsed, postExecution(), postUndoExecution(), and setProgressToFinalText().

Referenced by redo(), undo(), WorkOrder(), and WorkOrder().

◆ executionTime()

QDateTime Isis::WorkOrder::executionTime ( ) const

Gets the execution time of this WorkOrder.

Returns
QDateTime The execution time.

Definition at line 862 of file WorkOrder.cpp.

References m_executionTime, and project().

Referenced by Isis::WorkOrder::XmlHandler::startElement().

◆ fileItem()

FileItemQsp Isis::WorkOrder::fileItem ( )
protected

WorkOrder::fileItem.

Returns
QSharedPointer Returns a shared pointer to the fileItem.

Definition at line 764 of file WorkOrder.cpp.

References m_fileItem, and project().

Referenced by Isis::BundleObservationViewWorkOrder::execute(), Isis::BundleObservationViewWorkOrder::isExecutable(), and setData().

◆ fromStatusString()

WorkOrder::WorkOrderStatus Isis::WorkOrder::fromStatusString ( QString statusString)
static

Attempts to query the current status of the WorkOrder.

Parameters
statusStringThe status we want information about.
Returns
WorkOrderStatus Returns WorkOrderUnknownStatus if the statusString does not match the current status. If there is a result, then it returns the status which matches the statusString.

Definition at line 986 of file WorkOrder.cpp.

References toString().

Referenced by Isis::WorkOrder::XmlHandler::startElement().

◆ getTemplate()

Template * Isis::WorkOrder::getTemplate ( )
protected

WorkOrder::getTemplate.

Returns
QSharedPointer Returns a shared pointer to the Template.

Definition at line 734 of file WorkOrder.cpp.

References m_template, and project().

Referenced by Isis::TemplateEditViewWorkOrder::execute(), and Isis::TemplateEditViewWorkOrder::setupExecution().

◆ guiCamera()

GuiCameraQsp Isis::WorkOrder::guiCamera ( )
protected

◆ imageList() [1/2]

◆ imageList() [2/2]

const ImageList * Isis::WorkOrder::imageList ( ) const
protected

A thread-safe method for retrieving a pointer to the imageList.

Returns
(ImageList *) A pointer to the image list for this WorkOrder.

Definition at line 714 of file WorkOrder.cpp.

References imageList(), and m_transparentConstMutex.

◆ internalData()

QStringList Isis::WorkOrder::internalData ( ) const
protected

Gets the internal data for this WorkOrder.

Returns
QStringList Returns the internal data object.

Definition at line 1375 of file WorkOrder.cpp.

References m_internalData, and project().

Referenced by Isis::CubeDnViewWorkOrder::execute(), Isis::ExportControlNetWorkOrder::execute(), Isis::Footprint2DViewWorkOrder::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::ImageListActionWorkOrder::setData(), Isis::CubeDnViewWorkOrder::setupExecution(), Isis::ExportControlNetWorkOrder::setupExecution(), Isis::Footprint2DViewWorkOrder::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().

◆ isExecutable() [1/10]

bool Isis::WorkOrder::isExecutable ( Context context)
virtual

Re-implement this method if your work order utilizes controls for data in order to operate.

For example, "CnetEditorViewWorkOrder" works sometimes on controls

  • the logic in side of CnetEditorViewWorkOrder::isExecutable() determines whethere or not a user is prompted with this work order as a possibility.
    Parameters
    contextThis is an enum variable with two values: NoContext,ProjectContext.
    Returns
    bool Upon re-implementation, returns True if the WorkOrder is executable, and False if it is not.

Reimplemented in Isis::RenameProjectWorkOrder.

Definition at line 180 of file WorkOrder.cpp.

Referenced by isExecutable().

◆ isExecutable() [2/10]

bool Isis::WorkOrder::isExecutable ( ControlList * controls)
virtual

Re-implement this method if your work order utilizes a control for data in order to operate.

Parameters
controlA control networks.
Returns
bool Upon re-implementation, returns True if the WorkOrder is executable, and False if it is not.

Re-implement this method if your work order utilizes a control list (a list of control networks) for data in order to operate.

Parameters
controlsA list of control networks.
Returns
bool Upon re-implementation, returns True if the WorkOrder is executable, and False if it is not.

Reimplemented in Isis::CnetEditorViewWorkOrder, Isis::ControlHealthMonitorWorkOrder, Isis::ExportControlNetWorkOrder, Isis::SetActiveControlWorkOrder, and Isis::ViewControlNet3DWorkOrder.

Definition at line 232 of file WorkOrder.cpp.

◆ isExecutable() [3/10]

bool Isis::WorkOrder::isExecutable ( CorrelationMatrix correlationMatrix)
virtual

Reimplemented in Isis::MatrixViewWorkOrder.

Definition at line 237 of file WorkOrder.cpp.

◆ isExecutable() [4/10]

bool Isis::WorkOrder::isExecutable ( FileItemQsp fileItem)
virtual

Re-implement this method if your WorkOrder utilizes FileItemQsp (a QSharedPointer to a FileItem object) for data in order to operate.

Parameters
FileItemQsp
Returns
bool Upon re-implementation, returns True if the WorkOrder is executable, and False if it is not.

Reimplemented in Isis::BundleObservationViewWorkOrder.

Definition at line 444 of file WorkOrder.cpp.

◆ isExecutable() [5/10]

bool Isis::WorkOrder::isExecutable ( GuiCameraQsp guiCamera)
virtual

Re-implement this method if your WorkOrder utilizes GuiCameraQsp (a QSharedPointer to a GuiCamera object) for data in order to operate.

Parameters
GuiCameraQsp
Returns
bool Upon re-implementation, returns True if the WorkOrder is executable, and False if it is not.

Reimplemented in Isis::SensorGetInfoWorkOrder.

Definition at line 432 of file WorkOrder.cpp.

◆ isExecutable() [6/10]

bool Isis::WorkOrder::isExecutable ( ImageList * images)
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.

Parameters
imagesAn image list that this work order should execute on
Returns
bool Upon re-implementation, returns True if the WorkOrder is executable, and False if it is not.

Reimplemented in Isis::SetActiveImageListWorkOrder, Isis::CubeDnViewWorkOrder, Isis::ExportImagesWorkOrder, Isis::Footprint2DViewWorkOrder, Isis::ImageFileListViewWorkOrder, Isis::RemoveImagesWorkOrder, and Isis::ImageListActionWorkOrder.

Definition at line 194 of file WorkOrder.cpp.

◆ isExecutable() [7/10]

◆ isExecutable() [8/10]

bool Isis::WorkOrder::isExecutable ( ShapeList * shapes)
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.

Parameters
shapesA shape list that this work order should execute on
Returns
bool Upon re-implementation, returns True if the WorkOrder is executable, and False if it is not.

Reimplemented in Isis::CubeDnViewWorkOrder, and Isis::Footprint2DViewWorkOrder.

Definition at line 208 of file WorkOrder.cpp.

◆ isExecutable() [9/10]

bool Isis::WorkOrder::isExecutable ( TargetBodyQsp targetBody)
virtual

Re-implement this method if your work order utilizes a control list (a list of control networks) for data in order to operate.

Parameters
controlsA list of control networks.
Returns
bool Upon re-implementation, returns True if the WorkOrder is executable, and False if it is not.

Reimplemented in Isis::TargetGetInfoWorkOrder.

Definition at line 408 of file WorkOrder.cpp.

◆ isExecutable() [10/10]

bool Isis::WorkOrder::isExecutable ( Template * currentTemplate)
virtual

Re-implement this method if your work order utilizes a control list (a list of control networks) for data in order to operate.

Parameters
controlsA list of control networks.
Returns
bool Upon re-implementation, returns True if the WorkOrder is executable, and False if it is not.

Definition at line 420 of file WorkOrder.cpp.

◆ isFinished()

bool Isis::WorkOrder::isFinished ( ) const

Returns the finished state of this WorkOrder.

Returns
bool Returns True if the WorkOrder is finished, False otherwise.

Definition at line 872 of file WorkOrder.cpp.

References WorkOrderFinished.

◆ isInStableState()

bool Isis::WorkOrder::isInStableState ( ) const
private

Determines if the WorkOrder is in a stable state, or if it's busy doing something.

Returns
bool Returns True if the WorkOrder is in a stable state, and False if it is not.

Definition at line 1461 of file WorkOrder.cpp.

References isRedoing(), and isUndoing().

Referenced by redo(), save(), and undo().

◆ isRedoing()

bool Isis::WorkOrder::isRedoing ( ) const

Returns the redoing status of this WorkOrder.

Returns
bool Returns True if the WorkOrder is executing a redo. Returns False if it is not.

Definition at line 881 of file WorkOrder.cpp.

References project().

Referenced by isInStableState(), redo(), undo(), and updateProgress().

◆ isRedone()

bool Isis::WorkOrder::isRedone ( ) const

Returns the WorkOrder redone status.

Returns
bool Returns True if the WorkOrder has completed a Redo. False if it has not.

Definition at line 891 of file WorkOrder.cpp.

References project().

Referenced by redo(), and setProgressToFinalText().

◆ isSavedToHistory()

bool Isis::WorkOrder::isSavedToHistory ( ) const

Returns true if this work order is to be shown in History, otherwise false.

Returns
(bool) Returns True if this work order is to be shown in History

Definition at line 828 of file WorkOrder.cpp.

References m_isSavedToHistory, and project().

◆ isSynchronous()

bool Isis::WorkOrder::isSynchronous ( ) const

Returns true if this work order is run synchronously, otherwise false.

Returns
(bool) Returns True if this work order is run synchronously

Definition at line 839 of file WorkOrder.cpp.

References m_isSynchronous, and project().

Referenced by redo(), and undo().

◆ isUndoable()

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.

Returns
(bool) Returns True if this work order is undoable, false if it is not.

Definition at line 817 of file WorkOrder.cpp.

References m_isUndoable, and project().

Referenced by setupExecution().

◆ isUndoing()

bool Isis::WorkOrder::isUndoing ( ) const

Returns the WorkOrderUndoing state.

Returns
bool Returns True if the current status is WorkOrderUndoing, False otherwise.

Definition at line 901 of file WorkOrder.cpp.

References project().

Referenced by executionFinished(), isInStableState(), redo(), undo(), and updateProgress().

◆ isUndone()

bool Isis::WorkOrder::isUndone ( ) const

Returns the WorkOrder undo status.

Returns
bool Returns True if the WorkOrder has been undone. False if it has not.

Definition at line 911 of file WorkOrder.cpp.

References project().

Referenced by setProgressToFinalText(), and undo().

◆ listenForImageDestruction()

void Isis::WorkOrder::listenForImageDestruction ( )
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 1477 of file WorkOrder.cpp.

References clearImageList(), Isis::Image::id(), and m_imageIds.

Referenced by imageList(), setData(), and WorkOrder().

◆ listenForShapeDestruction()

void Isis::WorkOrder::listenForShapeDestruction ( )
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 1500 of file WorkOrder.cpp.

References clearShapeList(), Isis::Shape::id(), and m_shapeIds.

Referenced by setData(), shapeList(), and WorkOrder().

◆ modifiesDiskState()

bool Isis::WorkOrder::modifiesDiskState ( ) const

Returns the modified disk state.

Returns
Returns True if the WorkOrder has modified the Project on disk to perform it's actions. Returns False if it has not.

Definition at line 922 of file WorkOrder.cpp.

References m_modifiesDiskState, and project().

◆ next()

WorkOrder * Isis::WorkOrder::next ( ) const

Gets the next WorkOrder.

Returns
QPointer pointing to the next WorkOrder.

Definition at line 932 of file WorkOrder.cpp.

References m_nextWorkOrder, and project().

◆ postExecution()

void Isis::WorkOrder::postExecution ( )
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::ExportControlNetWorkOrder, Isis::ExportImagesWorkOrder, Isis::ImportControlNetWorkOrder, Isis::ImportImagesWorkOrder, and Isis::ImportShapesWorkOrder.

Definition at line 1412 of file WorkOrder.cpp.

Referenced by executionFinished().

◆ postUndoExecution()

void Isis::WorkOrder::postUndoExecution ( )
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::ImportImagesWorkOrder, and Isis::ImportShapesWorkOrder.

Definition at line 1443 of file WorkOrder.cpp.

Referenced by executionFinished().

◆ previous()

WorkOrder * Isis::WorkOrder::previous ( ) const

Gets the previous WorkOrder.

Returns
QPointer pointing to the previous WorkOrder.

Definition at line 942 of file WorkOrder.cpp.

References m_previousWorkOrder, and project().

Referenced by Isis::Project::lastNotUndoneWorkOrder(), Isis::Project::lastNotUndoneWorkOrder(), and redo().

◆ progressBar()

ProgressBar * Isis::WorkOrder::progressBar ( )

Returns the ProgressBar.

Returns
A QPointer to the ProgessBar.

Definition at line 973 of file WorkOrder.cpp.

References m_progressBar, and project().

Referenced by Isis::OpenProjectWorkOrder::setupExecution().

◆ progressMax()

int Isis::WorkOrder::progressMax ( ) const
protected

Gets the maximum value of the progress range of the WorkOrder.

Returns
int The maximum value.

Definition at line 1335 of file WorkOrder.cpp.

References m_progressRangeMaxValue, and project().

◆ progressMin()

int Isis::WorkOrder::progressMin ( ) const
protected

Gets the minimum value of the progress range of the WorkOrder.

Returns
int The minimum value.

Definition at line 1325 of file WorkOrder.cpp.

References m_progressRangeMinValue, and project().

◆ progressValue()

int Isis::WorkOrder::progressValue ( ) const
protected

Gets the current progress value of the WorkOrder.

Returns
int Returns the current progress value.

Definition at line 1345 of file WorkOrder.cpp.

References m_progressValue, and project().

◆ project()

Project * Isis::WorkOrder::project ( ) const
protected

Returns the Project this WorkOrder is attached to.

Returns
(Project *) A pointer to the Project.
Exceptions
IException::Programmer"This work order no longer has a project."

Definition at line 1298 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::ControlHealthMonitorWorkOrder::execute(), Isis::CubeDnViewWorkOrder::execute(), Isis::ExportControlNetWorkOrder::execute(), Isis::Footprint2DViewWorkOrder::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::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::Footprint2DViewWorkOrder::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::ImportImagesWorkOrder::undoExecution(), Isis::ImportMapTemplateWorkOrder::undoExecution(), Isis::ImportRegistrationTemplateWorkOrder::undoExecution(), Isis::ImportShapesWorkOrder::undoExecution(), Isis::MatrixViewWorkOrder::undoExecution(), Isis::RenameProjectWorkOrder::undoExecution(), and WorkOrder().

◆ read()

void Isis::WorkOrder::read ( XmlStackedHandlerReader * xmlReader)

Read this work order's data from disk.

Definition at line 518 of file WorkOrder.cpp.

◆ redo

void Isis::WorkOrder::redo ( )
virtualslot

◆ resetProgressBar()

void Isis::WorkOrder::resetProgressBar ( )
private

◆ save()

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>
Parameters

b QXmlStreamWriter stream The data stream we are saving the WorkOrder to.

Exceptions
IException::UnknownThis exception is thrown if save is called while the WorkOrder is currently running.

Definition at line 542 of file WorkOrder.cpp.

References bestText(), isInStableState(), m_executionTime, m_imageIds, m_internalData, m_shapeIds, Isis::IException::Programmer, and toString().

Referenced by Isis::CloseProjectWorkOrder::setupExecution(), and Isis::OpenProjectWorkOrder::setupExecution().

◆ setCreatesCleanState()

void Isis::WorkOrder::setCreatesCleanState ( bool createsCleanState)
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.

Parameters
createsCleanStateTrue if this work order is going to save the project to disk, False otherwise.

Definition at line 1661 of file WorkOrder.cpp.

References createsCleanState(), and m_createsCleanState.

Referenced by Isis::CloseProjectWorkOrder::CloseProjectWorkOrder(), Isis::OpenProjectWorkOrder::OpenProjectWorkOrder(), Isis::SaveProjectAsWorkOrder::SaveProjectAsWorkOrder(), and Isis::SaveProjectWorkOrder::SaveProjectWorkOrder().

◆ setData() [1/11]

void Isis::WorkOrder::setData ( Context context)
virtual

Sets the context data for this WorkOrder.

Parameters
contextThis is an enum variable with two values: NoContext,ProjectContext.

Definition at line 246 of file WorkOrder.cpp.

Referenced by Isis::ImageListActionWorkOrder::setData(), setData(), Isis::ExportControlNetWorkOrder::setupExecution(), and Isis::Directory::supportedActions().

◆ setData() [2/11]

void Isis::WorkOrder::setData ( ControlList * controls)
virtual

Sets the Control data for this WorkOrder.

Parameters
controls.A pointer to the Control

Sets the ControlList data for this WorkOrder.

Parameters
controls.A pointer to the ControlList (which is a list of control networks).

Definition at line 295 of file WorkOrder.cpp.

◆ setData() [3/11]

void Isis::WorkOrder::setData ( CorrelationMatrix correlationMatrix)
virtual

Sets the CorrelationMatrix data for this WorkOrder.

Parameters
correlationMatrixThe matrix data.

Definition at line 304 of file WorkOrder.cpp.

References correlationMatrix().

◆ setData() [4/11]

void Isis::WorkOrder::setData ( FileItemQsp fileItem)
virtual

Sets the FileItem data for this WorkOrder.

Parameters
FileItemA QSharedPointer to the FileItem.

Definition at line 342 of file WorkOrder.cpp.

References fileItem(), and m_fileItem.

◆ setData() [5/11]

void Isis::WorkOrder::setData ( GuiCameraQsp guiCamera)
virtual

Sets the GuiCamera data for this WorkOrder.

Parameters
guiCameraA QSharedPointer to the GuiCamera.

Definition at line 333 of file WorkOrder.cpp.

References guiCamera(), and m_guiCamera.

◆ setData() [6/11]

void Isis::WorkOrder::setData ( ImageList * images)
virtual

Sets the ImageList data for this WorkOrder.

Parameters
imagesA pointer to the updated ImageList.

Reimplemented in Isis::ImageListActionWorkOrder.

Definition at line 259 of file WorkOrder.cpp.

References listenForImageDestruction(), and m_imageIds.

◆ setData() [7/11]

◆ setData() [8/11]

void Isis::WorkOrder::setData ( QString data)
virtual

Definition at line 250 of file WorkOrder.cpp.

◆ setData() [9/11]

void Isis::WorkOrder::setData ( ShapeList * shapes)
virtual

Sets the ShapeList data for this WorkOrder.

Parameters
imagesA pointer to the updated ShapeList.

Definition at line 272 of file WorkOrder.cpp.

References listenForShapeDestruction(), and m_shapeIds.

◆ setData() [10/11]

void Isis::WorkOrder::setData ( TargetBodyQsp targetBody)
virtual

Sets the TargetBody data for this WorkOrder.

Parameters
targetBodyA QSharedPointer to the TargetBody.

Definition at line 315 of file WorkOrder.cpp.

References m_targetBody, and targetBody().

◆ setData() [11/11]

void Isis::WorkOrder::setData ( Template * currentTemplate)
virtual

Sets the TargetBody data for this WorkOrder.

Parameters
targetBodyA QSharedPointer to the TargetBody.

Definition at line 324 of file WorkOrder.cpp.

References m_template.

◆ setInternalData()

void Isis::WorkOrder::setInternalData ( QStringList data)
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.

Parameters
dataThe data to set the internal data to.

Definition at line 1316 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::Footprint2DViewWorkOrder::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().

◆ setModifiesDiskState()

void Isis::WorkOrder::setModifiesDiskState ( bool changesProjectOnDisk)
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.

Parameters
changesProjectOnDiskTrue if this WorkOrder modifies the Project on disk. False if it does not.

Definition at line 1672 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().

◆ setNext()

void Isis::WorkOrder::setNext ( WorkOrder * nextWorkOrder)

Sets the next WorkOrder in the sequence.

Parameters
nextWorkOrderThe next WorkOrder.

Definition at line 611 of file WorkOrder.cpp.

References m_nextWorkOrder.

◆ setPrevious()

void Isis::WorkOrder::setPrevious ( WorkOrder * previousWorkOrder)

Sets the previous WorkOrder in the sequence.

Parameters
previousWorkOrderThe previous WorkOrder.

Definition at line 620 of file WorkOrder.cpp.

References m_previousWorkOrder.

◆ setProgressRange()

void Isis::WorkOrder::setProgressRange ( int minValue,
int maxValue )
protected

Sets the progress range of the WorkOrder.

Parameters
minValueThe progress range minimum value.
maxValueThe progress range maximum value.

Definition at line 1356 of file WorkOrder.cpp.

References m_progressRangeMaxValue, and m_progressRangeMinValue.

Referenced by Isis::ImportControlNetWorkOrder::execute(), Isis::ImportImagesWorkOrder::importConfirmedImages(), and Isis::ImportShapesWorkOrder::importConfirmedShapes().

◆ setProgressToFinalText()

void Isis::WorkOrder::setProgressToFinalText ( )
private

Sets the ProgressBar to display the final status of the operation.

Definition at line 1542 of file WorkOrder.cpp.

References isRedone(), isUndone(), m_progressBar, and m_progressBarDeletionTimer.

Referenced by executionFinished(), redo(), setupExecution(), and undo().

◆ setProgressValue()

void Isis::WorkOrder::setProgressValue ( int value)
protected

Sets the current progress value for the WorkOrder.

Parameters
intvalue The value to set the current progress to.

Definition at line 1366 of file WorkOrder.cpp.

References m_progressValue.

Referenced by Isis::ImportControlNetWorkOrder::execute(), Isis::ImportImagesWorkOrder::importConfirmedImages(), and Isis::ImportShapesWorkOrder::importConfirmedShapes().

◆ setupExecution

bool Isis::WorkOrder::setupExecution ( )
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.

Returns
bool Returns True upon successful preparation of the WorkOrder, False if this operation should be cancelled (the user clicked cancel, the operation turns out to be impossible, etc). This prevents the work order from executing and it will not be entered into the history.

Reimplemented in Isis::BundleObservationViewWorkOrder, Isis::CloseProjectWorkOrder, Isis::CnetEditorViewWorkOrder, Isis::ControlHealthMonitorWorkOrder, Isis::CubeDnViewWorkOrder, Isis::ExportControlNetWorkOrder, Isis::ExportImagesWorkOrder, Isis::Footprint2DViewWorkOrder, Isis::ImageFileListViewWorkOrder, Isis::ImportControlNetWorkOrder, Isis::ImportImagesWorkOrder, Isis::ImportMapTemplateWorkOrder, Isis::ImportRegistrationTemplateWorkOrder, Isis::ImportShapesWorkOrder, Isis::MatrixViewWorkOrder, Isis::OpenProjectWorkOrder, Isis::RemoveImagesWorkOrder, Isis::RenameProjectWorkOrder, Isis::SaveProjectAsWorkOrder, Isis::SaveProjectWorkOrder, Isis::SensorGetInfoWorkOrder, Isis::SetActiveControlWorkOrder, Isis::SetActiveImageListWorkOrder, Isis::TargetGetInfoWorkOrder, Isis::TemplateEditViewWorkOrder, Isis::ViewControlNet3DWorkOrder, and Isis::ImageListActionWorkOrder.

Definition at line 1259 of file WorkOrder.cpp.

References createsCleanState(), isUndoable(), m_executionTime, m_progressBar, resetProgressBar(), setProgressToFinalText(), and WorkOrderFinished.

Referenced by Isis::BundleObservationViewWorkOrder::setupExecution(), Isis::CloseProjectWorkOrder::setupExecution(), Isis::ControlHealthMonitorWorkOrder::setupExecution(), Isis::CubeDnViewWorkOrder::setupExecution(), Isis::ExportControlNetWorkOrder::setupExecution(), Isis::Footprint2DViewWorkOrder::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().

◆ shapeList() [1/2]

ShapeList * Isis::WorkOrder::shapeList ( )
protected

@briefReturns a pointer to the ShapeList for this WorkOrder.

Returns
(ShapeList*) A pointer to the ShapeList.

Definition at line 661 of file WorkOrder.cpp.

References listenForShapeDestruction(), m_shapeIds, project(), and Isis::Project::shape().

Referenced by isExecutable(), redo(), setData(), and shapeList().

◆ shapeList() [2/2]

const ShapeList * Isis::WorkOrder::shapeList ( ) const
protected

A thread-safe method for retrieving a pointer to the shapeList.

Returns
(ShapeList *) A pointer to the shape list for this WorkOrder.

Definition at line 724 of file WorkOrder.cpp.

References m_transparentConstMutex, and shapeList().

◆ startRedo

void Isis::WorkOrder::startRedo ( )
privateslot

WorkOrder::startRedo This function is currently empty.

Definition at line 1648 of file WorkOrder.cpp.

◆ statusText()

QString Isis::WorkOrder::statusText ( ) const

WorkOrder::statusText.

Returns
QString A string representation of the current WorkOrder status.

Definition at line 952 of file WorkOrder.cpp.

References m_secondsElapsed, project(), and toString().

◆ targetBody()

TargetBodyQsp Isis::WorkOrder::targetBody ( )
protected

◆ toString()

QString Isis::WorkOrder::toString ( WorkOrderStatus status)
static

Gets the current status of the WorkOrder.

Parameters
statusAn enumeration of all possible WorkOrder states.
Returns
QString Returns a string representation of the current status of the WorkOrder.

Definition at line 1007 of file WorkOrder.cpp.

References WorkOrderFinished.

Referenced by fromStatusString(), save(), and statusText().

◆ undo

void Isis::WorkOrder::undo ( )
virtualslot

Starts (or enqueues) an undo.

This should not be re-implemented by children.

Definition at line 1144 of file WorkOrder.cpp.

References attemptQueuedAction(), executionFinished(), isInStableState(), isRedoing(), isSynchronous(), isUndoing(), isUndone(), m_elapsedTimer, m_futureWatcher, m_progressBar, resetProgressBar(), setProgressToFinalText(), and undoExecution().

Referenced by attemptQueuedAction().

◆ undoExecution()

void Isis::WorkOrder::undoExecution ( )
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::CnetEditorViewWorkOrder, Isis::ImportImagesWorkOrder, Isis::ImportMapTemplateWorkOrder, Isis::ImportRegistrationTemplateWorkOrder, Isis::ImportShapesWorkOrder, Isis::MatrixViewWorkOrder, Isis::RenameProjectWorkOrder, Isis::SensorGetInfoWorkOrder, Isis::ViewControlNet3DWorkOrder, Isis::ImageListActionWorkOrder, Isis::MoveDownOneSceneWorkOrder, Isis::MoveToBottomSceneWorkOrder, Isis::MoveToTopSceneWorkOrder, and Isis::MoveUpOneSceneWorkOrder.

Definition at line 1432 of file WorkOrder.cpp.

Referenced by undo().

◆ updateProgress

void Isis::WorkOrder::updateProgress ( )
privateslot

Updates the progress bar.

Definition at line 1637 of file WorkOrder.cpp.

References isRedoing(), isUndoing(), m_progressBar, m_progressRangeMaxValue, m_progressRangeMinValue, and m_progressValue.

Referenced by resetProgressBar().

Member Data Documentation

◆ m_context

Context Isis::WorkOrder::m_context
private

Definition at line 573 of file WorkOrder.h.

◆ m_controlList

QPointer<ControlList> Isis::WorkOrder::m_controlList
private

Definition at line 577 of file WorkOrder.h.

◆ m_correlationMatrix

CorrelationMatrix Isis::WorkOrder::m_correlationMatrix
private

Definition at line 578 of file WorkOrder.h.

◆ m_createsCleanState

bool Isis::WorkOrder::m_createsCleanState
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(), WorkOrder(), and WorkOrder().

◆ m_data

QString Isis::WorkOrder::m_data
private

Definition at line 574 of file WorkOrder.h.

◆ m_elapsedTimer

QTime* Isis::WorkOrder::m_elapsedTimer
private

A QTime object holding the excecution time of the WorkOrder.

Definition at line 677 of file WorkOrder.h.

Referenced by executionFinished(), redo(), undo(), WorkOrder(), and WorkOrder().

◆ m_executionTime

QDateTime Isis::WorkOrder::m_executionTime
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().

◆ m_fileItem

FileItemQsp Isis::WorkOrder::m_fileItem
private

A QSharedPointer to the FileItem.

Definition at line 603 of file WorkOrder.h.

Referenced by fileItem(), setData(), WorkOrder(), and WorkOrder().

◆ m_futureWatcher

QPointer< QFutureWatcher<void> > Isis::WorkOrder::m_futureWatcher
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(), WorkOrder(), and ~WorkOrder().

◆ m_guiCamera

GuiCameraQsp Isis::WorkOrder::m_guiCamera
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(), WorkOrder(), and WorkOrder().

◆ m_imageIds

QStringList Isis::WorkOrder::m_imageIds
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().

◆ m_imageList

QPointer<ImageList> Isis::WorkOrder::m_imageList
private

Definition at line 575 of file WorkOrder.h.

◆ m_internalData

QStringList Isis::WorkOrder::m_internalData
private

A QStringList of internal properties for this WorkOrder.

Definition at line 621 of file WorkOrder.h.

Referenced by internalData(), save(), setInternalData(), and WorkOrder().

◆ m_isSavedToHistory

◆ m_isSynchronous

bool Isis::WorkOrder::m_isSynchronous
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(), WorkOrder(), and WorkOrder().

◆ m_isUndoable

bool Isis::WorkOrder::m_isUndoable
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::BundleObservationViewWorkOrder::BundleObservationViewWorkOrder(), Isis::CloseProjectWorkOrder::CloseProjectWorkOrder(), Isis::ControlHealthMonitorWorkOrder::ControlHealthMonitorWorkOrder(), Isis::CubeDnViewWorkOrder::CubeDnViewWorkOrder(), Isis::ExportControlNetWorkOrder::ExportControlNetWorkOrder(), Isis::Footprint2DViewWorkOrder::Footprint2DViewWorkOrder(), 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::RenameProjectWorkOrder::RenameProjectWorkOrder(), Isis::RenameProjectWorkOrder::RenameProjectWorkOrder(), Isis::SaveProjectAsWorkOrder::SaveProjectAsWorkOrder(), Isis::SensorGetInfoWorkOrder::SensorGetInfoWorkOrder(), Isis::SetActiveControlWorkOrder::SetActiveControlWorkOrder(), Isis::SetActiveImageListWorkOrder::SetActiveImageListWorkOrder(), Isis::TargetGetInfoWorkOrder::TargetGetInfoWorkOrder(), Isis::TemplateEditViewWorkOrder::TemplateEditViewWorkOrder(), WorkOrder(), and WorkOrder().

◆ m_modifiesDiskState

bool Isis::WorkOrder::m_modifiesDiskState
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(), WorkOrder(), and WorkOrder().

◆ m_nextWorkOrder

QPointer<WorkOrder> Isis::WorkOrder::m_nextWorkOrder
private

A pointer to the next WorkOrder in the queue.

Definition at line 626 of file WorkOrder.h.

Referenced by next(), setNext(), and ~WorkOrder().

◆ m_previousWorkOrder

QPointer<WorkOrder> Isis::WorkOrder::m_previousWorkOrder
private

A pointer to the previous WorkOrder in the queue.

Definition at line 631 of file WorkOrder.h.

Referenced by previous(), setPrevious(), and ~WorkOrder().

◆ m_progressBar

QPointer<ProgressBar> Isis::WorkOrder::m_progressBar
private

◆ m_progressBarDeletionTimer

QPointer<QTimer> Isis::WorkOrder::m_progressBarDeletionTimer
private

A pointer to the ProgressBar deletion timer.

Definition at line 671 of file WorkOrder.h.

Referenced by resetProgressBar(), setProgressToFinalText(), and ~WorkOrder().

◆ m_progressBarUpdateTimer

QPointer<QTimer> Isis::WorkOrder::m_progressBarUpdateTimer
private

A pointer to the QTimer which updates the ProgressBar.

Definition at line 666 of file WorkOrder.h.

Referenced by executionFinished(), resetProgressBar(), and ~WorkOrder().

◆ m_progressRangeMaxValue

int Isis::WorkOrder::m_progressRangeMaxValue
private

The maximum value of the Progess Bar.

Definition at line 567 of file WorkOrder.h.

Referenced by progressMax(), resetProgressBar(), setProgressRange(), updateProgress(), WorkOrder(), and WorkOrder().

◆ m_progressRangeMinValue

int Isis::WorkOrder::m_progressRangeMinValue
private

The miniumum value of the Progess Bar.

Definition at line 563 of file WorkOrder.h.

Referenced by progressMin(), resetProgressBar(), setProgressRange(), updateProgress(), WorkOrder(), and WorkOrder().

◆ m_progressValue

int Isis::WorkOrder::m_progressValue
private

The current value of the Progress Bar.

Definition at line 571 of file WorkOrder.h.

Referenced by progressValue(), resetProgressBar(), setProgressValue(), updateProgress(), WorkOrder(), and WorkOrder().

◆ m_project

QPointer<Project> Isis::WorkOrder::m_project
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(), WorkOrder(), and ~WorkOrder().

◆ m_queuedAction

QueuedWorkOrderAction Isis::WorkOrder::m_queuedAction
private

Definition at line 558 of file WorkOrder.h.

◆ m_secondsElapsed

double Isis::WorkOrder::m_secondsElapsed
private

The seconds that have elapsed since the WorkOrder started executing.

Definition at line 682 of file WorkOrder.h.

Referenced by executionFinished(), statusText(), WorkOrder(), and WorkOrder().

◆ m_shapeIds

QStringList Isis::WorkOrder::m_shapeIds
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().

◆ m_shapeList

QPointer<ShapeList> Isis::WorkOrder::m_shapeList
private

Definition at line 576 of file WorkOrder.h.

◆ m_status

WorkOrderStatus Isis::WorkOrder::m_status
protected

Definition at line 539 of file WorkOrder.h.

◆ m_targetBody

TargetBodyQsp Isis::WorkOrder::m_targetBody
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(), WorkOrder(), and WorkOrder().

◆ m_template

Template* Isis::WorkOrder::m_template
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(), WorkOrder(), and WorkOrder().

◆ m_transparentConstMutex

QMutex* Isis::WorkOrder::m_transparentConstMutex
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(), WorkOrder(), and ~WorkOrder().


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