USGS

Isis 3.0 Developer's Reference (API)

Home

Isis::ImageListActionWorkOrder Class Reference

Work orders that can be performed on an image list that modifies internal state. More...

#include <ImageListActionWorkOrder.h>

Inherits Isis::WorkOrder.

List of all members.

Public Types

enum  Action {
  UnknownAction = 0, ChangeTransparency, ChangeColor, RandomizeColor,
  ToggleShowLabel, ToggleShowFilled, ToggleShowCubeData, ToggleShowOutline
}
enum  WorkOrderStatus {
  WorkOrderUnknownStatus = 0, WorkOrderNotStarted, WorkOrderRedoing, WorkOrderRedone,
  WorkOrderUndoing, WorkOrderUndone, WorkOrderFinished, WorkOrderLastStatus = WorkOrderFinished
}
enum  Context { NoContext, ProjectContext }

Public Slots

virtual void redo ()
 Starts (or enqueues) a redo.
virtual void undo ()
 Starts (or enqueues) an undo.

Signals

void bringToFront ()
void creatingProgress (WorkOrder *)
void deletingProgress (WorkOrder *)
void finished (WorkOrder *)
void statusChanged (WorkOrder *)

Public Member Functions

 ImageListActionWorkOrder (Project *project)
 ImageListActionWorkOrder (Action action, Project *project)
 ImageListActionWorkOrder (const ImageListActionWorkOrder &other)
 ~ImageListActionWorkOrder ()
ImageListActionWorkOrderclone () const
 Clone the current work order.
bool isExecutable (ImageList *images)
 This work order can be run on any non-empty image list.
void setData (ImageList *images)
 When this work order is assigned an image list, update the undo command text.
bool execute ()
 Prompt the user for input, if necessary, and remember the answers.
void syncRedo ()
 Perform the action.
void syncUndo ()
 This method is designed to be implemented by children work orders.
virtual bool isExecutable (Context)
 Re-implement this method if your work order utilizes controls for data in order to operate.
virtual bool isExecutable (QList< Control * > controls)
 Re-implement this method if your work order utilizes controls for data in order to operate.
void read (XmlStackedHandlerReader *xmlReader)
 Read this work order's data from disk.
void save (QXmlStreamWriter &stream) const
 Output XML format:.
virtual void setData (Context)
virtual void setData (QList< Control * > controls)
void setNext (WorkOrder *nextWorkOrder)
void setPrevious (WorkOrder *previousWorkOrder)
QString bestText () const
bool createsCleanState () const
QDateTime executionTime () const
bool isFinished () const
bool isRedoing () const
bool isRedone () const
bool isUndoing () const
bool isUndone () const
bool modifiesDiskState () const
WorkOrdernext () const
WorkOrderprevious () const
QString statusText () const
ProgressBarprogressBar ()

Static Public Member Functions

static QString qualifyString (QString unqualifiedString, ImageList *)
static QString toString (Action)
static Action fromActionString (QString)
static WorkOrderStatus fromStatusString (QString)
static QString toString (WorkOrderStatus)

Protected Slots

void addCloneToProject ()

Protected Member Functions

ImageListimageList ()
const ImageListimageList () const
QList< Control * > controlList ()
virtual bool dependsOn (WorkOrder *other) const
Directorydirectory () const
Projectproject () const
void setCreatesCleanState (bool createsCleanState)
 Declare that this work order is saving the project.
void setModifiesDiskState (bool changesProjectOnDisk)
void setInternalData (QStringList data)
int progressMin () const
int progressMax () const
int progressValue () const
void setProgressRange (int, int)
void setProgressValue (int)
QStringList internalData () const
virtual void asyncRedo ()
 This method is designed to be implemented by children work orders.
virtual void postSyncRedo ()
 This method is designed to be implemented by children work orders.
virtual void asyncUndo ()
 This method is designed to be implemented by children work orders.
virtual void postSyncUndo ()
 This method is designed to be implemented by children work orders.

Detailed Description

Work orders that can be performed on an image list that modifies internal state.

This encapsulates the set of image list work orders that modifies internal state to the image list. This means these work orders typically modify the ImageDisplayProperties on the images.

These work orders rely on the internal data to know the action to perform and what the expected state is. The internal data is stored like this:

internalData = (ActionString, UserInputValue (optional), OriginalValue1 (optional) SPACE NewValue1 (optional), OriginalValue2 (optional) SPACE NewValue2 (optional), OriginalValue3 (optional) SPACE NewValue3 (optional), OriginalValue4 (optional) SPACE NewValue4 (optional), ... )

For example, if we're changing the colors of the images, the internal data would be: internalData = (Change Color, NewColor, File1OriginalColor, File2OriginalColor, File3OriginalColor, ... )

The original colors will let us undo this action. A second example (randomize colors): internalData = (Random Color, File1OriginalColor File1NewColor, File2OriginalColor File2NewColor, File3OriginalColor File3NewColor, ... )

See also:
ImageList::supportedActions()
Author:
2012-08-28 Steven Lambright

Member Enumeration Documentation

Enumerator:
UnknownAction 
ChangeTransparency 
ChangeColor 
RandomizeColor 
ToggleShowLabel 
ToggleShowFilled 
ToggleShowCubeData 
ToggleShowOutline 
enum Isis::WorkOrder::Context [inherited]
Enumerator:
NoContext 
ProjectContext 
Enumerator:
WorkOrderUnknownStatus 
WorkOrderNotStarted 
WorkOrderRedoing 
WorkOrderRedone 
WorkOrderUndoing 
WorkOrderUndone 
WorkOrderFinished 

This is used for work orders that will not undo or redo (See createsCleanState()).

WorkOrderLastStatus 

Constructor & Destructor Documentation

Isis::ImageListActionWorkOrder::ImageListActionWorkOrder ( Project project  ) 

Referenced by clone().

Isis::ImageListActionWorkOrder::ImageListActionWorkOrder ( Action  action,
Project project 
)
Isis::ImageListActionWorkOrder::ImageListActionWorkOrder ( const ImageListActionWorkOrder other  ) 
Isis::ImageListActionWorkOrder::~ImageListActionWorkOrder (  ) 

Member Function Documentation

void Isis::WorkOrder::addCloneToProject (  )  [protected, slot, inherited]
void Isis::WorkOrder::asyncRedo (  )  [protected, virtual, inherited]

This method is designed to be implemented by children work orders.

The order of execution for redo is: syncRedo() - GUI thread asyncRedo() - Pooled thread* postSyncRedo() - GUI thread

State can be read from the parent WorkOrder class and from state set in syncRedo() while in this method. You can set state to be used in postSyncRedo() 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(). This method is never executed in the GUI thread. You can update progress by calling setProgressRange() and setProgressValue(). Please do not manipulate any GUI objects here.

Reimplemented in Isis::ExportControlNetWorkOrder, Isis::ExportImagesWorkOrder, Isis::ImportControlNetWorkOrder, and Isis::ImportImagesWorkOrder.

Referenced by Isis::WorkOrder::redo().

void Isis::WorkOrder::asyncUndo (  )  [protected, virtual, inherited]

This method is designed to be implemented by children work orders.

The order of execution for undo is: syncUndo() - GUI thread asyncUndo() - Pooled thread* postSyncUndo() - GUI thread

State can be read from the parent WorkOrder class and from state set in syncUndo() 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(). Please do not manipulate any GUI objects here.

Reimplemented in Isis::ImportImagesWorkOrder.

Referenced by Isis::WorkOrder::undo().

QString Isis::WorkOrder::bestText (  )  const [inherited]
void Isis::ImageListActionWorkOrder::bringToFront (  )  [signal]
ImageListActionWorkOrder * Isis::ImageListActionWorkOrder::clone (  )  const [virtual]

Clone the current work order.

Implements Isis::WorkOrder.

References ImageListActionWorkOrder().

QList< Control * > Isis::WorkOrder::controlList (  )  [protected, inherited]
bool Isis::WorkOrder::createsCleanState (  )  const [inherited]
void Isis::WorkOrder::creatingProgress ( WorkOrder _t1  )  [signal, inherited]
void Isis::WorkOrder::deletingProgress ( WorkOrder _t1  )  [signal, inherited]
bool Isis::WorkOrder::dependsOn ( WorkOrder other  )  const [protected, virtual, inherited]

Referenced by Isis::WorkOrder::redo().

Directory * Isis::WorkOrder::directory (  )  const [protected, inherited]
bool Isis::ImageListActionWorkOrder::execute (  )  [virtual]
QDateTime Isis::WorkOrder::executionTime (  )  const [inherited]
void Isis::WorkOrder::finished ( WorkOrder _t1  )  [signal, inherited]
ImageListActionWorkOrder::Action Isis::ImageListActionWorkOrder::fromActionString ( QString  actionString  )  [static]
WorkOrder::WorkOrderStatus Isis::WorkOrder::fromStatusString ( QString  statusString  )  [static, inherited]
const ImageList * Isis::WorkOrder::imageList (  )  const [protected, inherited]
ImageList * Isis::WorkOrder::imageList (  )  [protected, inherited]
QStringList Isis::WorkOrder::internalData (  )  const [protected, inherited]
bool Isis::WorkOrder::isExecutable ( QList< Control * >  controls  )  [virtual, inherited]

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.

Reimplemented in Isis::CnetEditorViewWorkOrder, and Isis::ExportControlNetWorkOrder.

bool Isis::WorkOrder::isExecutable ( Context  context  )  [virtual, inherited]

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.

Reimplemented in Isis::RenameProjectWorkOrder.

Referenced by Isis::Directory::supportedActions().

bool Isis::ImageListActionWorkOrder::isExecutable ( ImageList images  )  [virtual]

This work order can be run on any non-empty image list.

Reimplemented from Isis::WorkOrder.

bool Isis::WorkOrder::isFinished (  )  const [inherited]
bool Isis::WorkOrder::isRedoing (  )  const [inherited]
bool Isis::WorkOrder::isRedone (  )  const [inherited]
bool Isis::WorkOrder::isUndoing (  )  const [inherited]
bool Isis::WorkOrder::isUndone (  )  const [inherited]
bool Isis::WorkOrder::modifiesDiskState (  )  const [inherited]

Referenced by Isis::Project::~Project().

WorkOrder * Isis::WorkOrder::next (  )  const [inherited]

Referenced by Isis::WorkOrder::undo().

void Isis::WorkOrder::postSyncRedo (  )  [protected, virtual, inherited]

This method is designed to be implemented by children work orders.

The order of execution for redo is: syncRedo() - GUI thread asyncRedo() - Pooled thread postSyncRedo() - GUI thread*

State can be read from the parent WorkOrder class and from state set in either syncRedo() 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, and Isis::ImportImagesWorkOrder.

void Isis::WorkOrder::postSyncUndo (  )  [protected, virtual, inherited]

This method is designed to be implemented by children work orders.

The order of execution for undo is: syncUndo() - GUI thread asyncUndo() - Pooled thread postSyncUndo() - GUI thread*

State can be read from the parent WorkOrder class and from state set in either syncUndo() or asyncUndo() 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.

WorkOrder * Isis::WorkOrder::previous (  )  const [inherited]
ProgressBar * Isis::WorkOrder::progressBar (  )  [inherited]
int Isis::WorkOrder::progressMax (  )  const [protected, inherited]
int Isis::WorkOrder::progressMin (  )  const [protected, inherited]
int Isis::WorkOrder::progressValue (  )  const [protected, inherited]
Project * Isis::WorkOrder::project (  )  const [protected, inherited]
QString Isis::ImageListActionWorkOrder::qualifyString ( QString  unqualifiedString,
ImageList imageList 
) [static]
void Isis::WorkOrder::read ( XmlStackedHandlerReader xmlReader  )  [inherited]

Read this work order's data from disk.

References Isis::XmlStackedHandlerReader::pushContentHandler().

void Isis::WorkOrder::redo (  )  [virtual, slot, inherited]
void Isis::WorkOrder::save ( QXmlStreamWriter &  stream  )  const [inherited]

Output XML format:.

   <workOrder actiontext="..." undotext="..." type="..." status="...">
     <images>
       <image id="...">
     </images>
     <internalDataValues>
       <dataValue value="...">
     </internalDataValues>
   </workOrder>
 

References _FILEINFO_, Isis::WorkOrder::bestText(), Isis::WorkOrder::NoContext, Isis::WorkOrder::toString(), and Isis::IException::Unknown.

void Isis::WorkOrder::setCreatesCleanState ( bool  createsCleanState  )  [protected, inherited]

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 is marked as a 'clean' state of the project. The QUndoCommand undo/redo will never be called. The default for createsCleanState is false.

Parameters:
createsCleanState True if this work order is going to save the project to disk

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

void Isis::WorkOrder::setData ( QList< Control * >  controls  )  [virtual, inherited]
void Isis::WorkOrder::setData ( Context  context  )  [virtual, inherited]
void Isis::ImageListActionWorkOrder::setData ( ImageList images  )  [virtual]

When this work order is assigned an image list, update the undo command text.

Reimplemented from Isis::WorkOrder.

References bringToFront(), Isis::Image::displayProperties(), Isis::WorkOrder::imageList(), Isis::WorkOrder::internalData(), and qualifyString().

void Isis::WorkOrder::setInternalData ( QStringList  data  )  [protected, inherited]
void Isis::WorkOrder::setModifiesDiskState ( bool  changesProjectOnDisk  )  [protected, inherited]
void Isis::WorkOrder::setNext ( WorkOrder nextWorkOrder  )  [inherited]
void Isis::WorkOrder::setPrevious ( WorkOrder previousWorkOrder  )  [inherited]
void Isis::WorkOrder::setProgressRange ( int  minValue,
int  maxValue 
) [protected, inherited]
void Isis::WorkOrder::setProgressValue ( int  value  )  [protected, inherited]
void Isis::WorkOrder::statusChanged ( WorkOrder _t1  )  [signal, inherited]
QString Isis::WorkOrder::statusText (  )  const [inherited]
void Isis::ImageListActionWorkOrder::syncRedo (  )  [virtual]
void Isis::ImageListActionWorkOrder::syncUndo (  )  [virtual]

This method is designed to be implemented by children work orders.

The order of execution for undo is: syncUndo() - GUI thread* asyncUndo() - Pooled thread postSyncUndo() - GUI thread

State should only be read from the parent WorkOrder class in this method. You can set state to be used in asyncUndo() and postSyncUndo() safely. This method is always executed in the GUI thread and has no progress.

Reimplemented from Isis::WorkOrder.

References ChangeColor, ChangeTransparency, fromActionString(), Isis::WorkOrder::imageList(), Isis::WorkOrder::internalData(), RandomizeColor, Isis::WorkOrder::setInternalData(), ToggleShowCubeData, ToggleShowFilled, ToggleShowLabel, ToggleShowOutline, and UnknownAction.

QString Isis::WorkOrder::toString ( WorkOrderStatus  status  )  [static, inherited]
QString Isis::ImageListActionWorkOrder::toString ( Action  action  )  [static]
void Isis::WorkOrder::undo (  )  [virtual, slot, inherited]

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