Isis 3 Programmer Reference
ImageList.h
1 #ifndef ImageList_H
2 #define ImageList_H
3 
4 #include <QDebug>
5 #include <QObject>
6 #include <QList>
7 #include <QMetaType>
8 #include <QSharedPointer>
9 
10 #include "Image.h"
11 #include "ImageDisplayProperties.h"
12 #include "ImageListActionWorkOrder.h"
13 #include "SerialNumberList.h"
14 #include "WorkOrder.h"
15 #include "XmlStackedHandler.h"
16 
17 class QStringList;
18 class QXmlStreamWriter;
19 
20 namespace Isis {
21  class FileName;
22  class XmlStackedHandlerReader;
23 
55  class ImageList : public QObject, public QList<Image *> {
56  Q_OBJECT
57 
58  public:
59  friend class ImageListActionWorkOrder;
60 
61  ImageList(QString name, QString path, QObject *parent = NULL);
62  explicit ImageList(QObject *parent = NULL);
63  explicit ImageList(QList<Image *>, QObject *parent = NULL);
64  explicit ImageList(Project *project,
65  XmlStackedHandlerReader *xmlReader, QObject *parent = NULL);
66  explicit ImageList(QStringList &);
67  ImageList(const ImageList &);
68  ~ImageList();
69 
70 // QSharedPointer<SerialNumberList> serialNumberList();
72 
73  // These are overridden (-ish) in order to add notifications to the list changing
74  void append(Image * const & value);
75  void append(const QList<Image *> &value);
76 
77  void clear();
78 
79  iterator erase(iterator pos);
80  iterator erase(iterator begin, iterator end);
81 
82  void insert(int i, Image * const & value);
83  iterator insert(iterator before, Image * const & value);
84 
85  void prepend(Image * const & value);
86  void push_back(Image * const & value);
87  void push_front(Image * const & value);
88  int removeAll(Image * const & value);
89  void removeAt(int i);
90  void removeFirst();
91  void removeLast();
92  bool removeOne(Image * const & value);
93  void swap(QList<Image *> &other);
94  Image *takeAt(int i);
95  Image *takeFirst();
96  Image *takeLast();
97 
98  ImageList &operator+=(const QList<Image *> &other);
99  ImageList &operator+=(Image * const &other);
100  ImageList &operator<<(const QList<Image *> &other);
101  ImageList &operator<<(Image * const &other);
102  ImageList &operator=(const QList<Image *> &rhs);
103 
104  // This is our own assignment, but it needs to notify just like the operator=(QList)
105  ImageList &operator=(const ImageList &rhs);
106 
107  // Done overriding (-ish)
108 
109 
110  QList<QAction *> supportedActions(Project *project = NULL);
112 
113  void setName(QString newName);
114  void setPath(QString newPath);
115 
116  QString name() const;
117  QString path() const;
118 
119  void deleteFromDisk(Project *project);
120  void save(QXmlStreamWriter &stream, const Project *project, FileName newProjectRoot) const;
121 
122  signals:
123  void countChanged(int newCount);
124 
125  private:
133  class XmlHandler : public XmlStackedHandler {
134  public:
135  XmlHandler(ImageList *imageList, Project *project, QString dataRoot="");
136 
137  virtual bool startElement(const QString &namespaceURI, const QString &localName,
138  const QString &qName, const QXmlAttributes &atts);
139  virtual bool endElement(const QString &namespaceURI, const QString &localName,
140  const QString &qName);
141 
142  private:
143  Q_DISABLE_COPY(XmlHandler);
144 
158  };
159 
160 
170  class CopyImageDataFunctor : public std::unary_function<Image * const &, void *> {
171  public:
172  CopyImageDataFunctor(const Project *project, FileName newProjectRoot);
175 
176  void *operator()(Image * const &imageToCopy);
177 
179 
180  private:
189  };
190 
191  private:
201  QAction *result = NULL;
202 
203  if (project) {
204  result = new ImageListActionWorkOrder(action, project);
205  ((ImageListActionWorkOrder *)result)->setData(this);
206  }
207  else {
208  result = new QAction(
210  this),
211  this);
212  }
213 
214  return result;
215  }
216 
217  void applyAlphas(QStringList alphaValues);
218  void applyColors(QStringList colorValues, int column = 0);
219  void applyShowLabel(QStringList showLabelValues);
220  void applyShowFill(QStringList showFillValues);
221  void applyShowDNs(QStringList showDNsValues);
222  void applyShowOutline(QStringList showOutlineValues);
223  bool askAlpha(int *alphaResult) const;
224  bool askNewColor(QColor *colorResult) const;
225  QStringList saveAndApplyAlpha(int newAlpha);
226  QStringList saveAndApplyColor(QColor newColor);
228 
229  private slots:
230  void askAndUpdateAlpha();
231  void askAndUpdateColor();
232  void showRandomColor();
237 
238  private:
242  QString m_name;
243 
254  QString m_path;
255  };
256 
257 }
258 
260 
261 #endif
Image * takeLast()
Removes and returns the last image.
Definition: ImageList.cpp:422
QStringList saveAndToggleShowDNs()
Changes the visibility of the DNs of the first image in the image list and synchronizes the visibilit...
Definition: ImageList.cpp:1245
void push_back(Image *const &value)
Appends an image to the end of the image list.
Definition: ImageList.cpp:274
QString name() const
Get the human-readable name of this image list.
Definition: ImageList.cpp:724
CopyImageDataFunctor(const Project *project, FileName newProjectRoot)
Constructor for CopyImageDataFunctor.
Definition: ImageList.cpp:881
Internalizes a list of images and allows for operations on the entire list.
Definition: ImageList.h:55
The main project for ipce.
Definition: Project.h:289
void save(QXmlStreamWriter &stream, const Project *project, FileName newProjectRoot) const
Convert this image list into XML format for saving/restoring capabilities.
Definition: ImageList.cpp:785
virtual bool endElement(const QString &namespaceURI, const QString &localName, const QString &qName)
Handle an XML end element.
Definition: ImageList.cpp:1406
int removeAll(Image *const &value)
Removes all occurances of an image.
Definition: ImageList.cpp:303
QStringList saveAndApplyRandomColor()
Sets the color values of every image to a random color.
Definition: ImageList.cpp:1177
void showRandomColor()
This applies a new semi-random color to every image&#39;s display property for every image in this image ...
Definition: ImageList.cpp:1231
This functor is used for copying the images between two projects quickly.
Definition: ImageList.h:170
File name manipulation and expansion.
Definition: FileName.h:116
ImageList & operator+=(const QList< Image *> &other)
Appends a list of images to the end of the image list.
Definition: ImageList.cpp:439
Work orders that can be performed on an image list that modifies internal state.
void deleteFromDisk(Project *project)
Delete all of the contained Images from disk.
Definition: ImageList.cpp:747
Action
Type of action to be performed by the work order.
void applyShowLabel(QStringList showLabelValues)
Sets the visibility of the display names of the images in the image list based on a list of values...
Definition: ImageList.cpp:991
QStringList saveAndToggleShowOutline()
Changes the visibility of the outline of the first image in the image list and synchronizes the visib...
Definition: ImageList.cpp:1329
void applyColors(QStringList colorValues, int column=0)
Sets the colors values of the images based on a list of values.
Definition: ImageList.cpp:971
SerialNumberList * serialNumberList()
Creates a SerialNumberList from the image list.
Definition: ImageList.cpp:135
void swap(QList< Image *> &other)
Swaps the image list with another list of images.
Definition: ImageList.cpp:376
ImageList * m_imageList
This stores a pointer to the image list that will be read into.
Definition: ImageList.h:148
~CopyImageDataFunctor()
Destructor for CopyImageDataFunctor.
Definition: ImageList.cpp:902
Q_DECLARE_METATYPE(Isis::Cube *)
This allows Cube *&#39;s to be stored in a QVariant.
bool removeOne(Image *const &value)
Removes the first occurance of an image.
Definition: ImageList.cpp:358
bool askNewColor(QColor *colorResult) const
Prompts the user for color values.
Definition: ImageList.cpp:1100
virtual bool startElement(const QString &namespaceURI, const QString &localName, const QString &qName, const QXmlAttributes &atts)
Handle an XML start element.
Definition: ImageList.cpp:1371
void removeAt(int i)
Removes the image at an index.
Definition: ImageList.cpp:321
QString m_path
This stores the directory name that contains the images in this image list.
Definition: ImageList.h:254
QAction * createWorkOrder(Project *project, ImageListActionWorkOrder::Action action)
Creates an ImageListActionWorkOrder and sets the image list as the data for the work order...
Definition: ImageList.h:200
QString m_name
This stores the image list&#39;s name.
Definition: ImageList.h:242
CopyImageDataFunctor & operator=(const CopyImageDataFunctor &rhs)
Assignment operator for CopyImageDataFunctor.
Definition: ImageList.cpp:934
XmlHandler(ImageList *imageList, Project *project, QString dataRoot="")
Create an XML Handler (reader) that can populate the Image list class data.
Definition: ImageList.cpp:1358
~ImageList()
Destructor.
Definition: ImageList.cpp:126
void prepend(Image *const &value)
Inserts an image at the beginning of the image list.
Definition: ImageList.cpp:260
static QString qualifyString(QString unqualifiedString, ImageList *)
Determine whether a toggle action should show or hide.
QList< QAction * > supportedActions(Project *project=NULL)
Gets a list of pre-connected actions that have to do with display.
Definition: ImageList.cpp:565
ImageList & operator=(const QList< Image *> &rhs)
Assigns another list of images to the image list.
Definition: ImageList.cpp:514
Unless noted otherwise, the portions of Isis written by the USGS are public domain.
void push_front(Image *const &value)
Prepends an image to the beginning of the image list.
Definition: ImageList.cpp:288
const Project * m_project
This stores the name of the project that is going to be copied to.
Definition: ImageList.h:184
void applyShowFill(QStringList showFillValues)
Sets the visibility of the fill areas of the images in the image list based on a list of values...
Definition: ImageList.cpp:1011
XML Handler that parses XMLs in a stack-oriented way.
void clear()
Clears the image list.
Definition: ImageList.cpp:177
This represents a cube in a project-based GUI interface.
Definition: Image.h:107
void removeFirst()
Removes the image at the front of the image list.
Definition: ImageList.cpp:332
void applyShowOutline(QStringList showOutlineValues)
Sets the visibility of the outlines of the images in the image list based on a list of values...
Definition: ImageList.cpp:1049
void setPath(QString newPath)
Set the relative path (from the project root) to this image list&#39;s folder.
Definition: ImageList.cpp:714
QStringList saveAndApplyAlpha(int newAlpha)
Sets the alpha value of every image in the image list to a specificed value.
Definition: ImageList.cpp:1123
Image * takeAt(int i)
Removes the image at an index and returns it.
Definition: ImageList.cpp:394
void applyAlphas(QStringList alphaValues)
Sets the alpha values of the images based on a list of values.
Definition: ImageList.cpp:950
void append(Image *const &value)
Appends an image to the image list.
Definition: ImageList.cpp:153
Property
This is a list of properties and actions that are possible.
void askAndUpdateColor()
Prompt the user for a new color.
Definition: ImageList.cpp:1220
void insert(int i, Image *const &value)
Inserts an image into the image list at an index.
Definition: ImageList.cpp:229
Image * takeFirst()
Removes and returns the first image.
Definition: ImageList.cpp:408
QString path() const
Get the path to the images in the image list (relative to project root).
Definition: ImageList.cpp:735
void applyShowDNs(QStringList showDNsValues)
Sets the visibility of the DNs of the images in the image list based on a list of values...
Definition: ImageList.cpp:1030
iterator erase(iterator pos)
Erases a single image from the image list.
Definition: ImageList.cpp:195
This class is used to read an images.xml file into an image list.
Definition: ImageList.h:133
QStringList saveAndToggleShowLabel()
Changes the visibility of the display name of the first image in the image list and synchronizes the ...
Definition: ImageList.cpp:1301
Namespace for ISIS/Bullet specific routines.
Definition: Apollo.h:31
static QString toString(Action)
Convert an action to a string.
FileName m_newProjectRoot
This stores the path to the root of the project that is going to be copied to.
Definition: ImageList.h:188
bool allSupport(ImageDisplayProperties::Property prop)
Check if all images in the image list support a display property.
Definition: ImageList.cpp:684
void askAndUpdateAlpha()
Prompt the user for a new alpha value.
Definition: ImageList.cpp:1207
void removeLast()
Removes the image at the end of the image list.
Definition: ImageList.cpp:343
ImageList(QString name, QString path, QObject *parent=NULL)
Creates an image list from an image list name and path (does not read Images).
Definition: ImageList.cpp:54
Serial Number list generator.
ImageList & operator<<(const QList< Image *> &other)
Appends a list of images to the end of the image list.
Definition: ImageList.cpp:477
void setName(QString newName)
Set the human-readable name of this image list.
Definition: ImageList.cpp:703
QString m_imageDataRoot
This is a relative path to the image data.
Definition: ImageList.h:157
Manage a stack of content handlers for reading XML files.
QStringList saveAndToggleShowFill()
Changes the visibility of the fill area of the first image in the image list and synchronizes the vis...
Definition: ImageList.cpp:1273
Project * m_project
This stores a pointer to the project that the images in the image list will be a part of...
Definition: ImageList.h:152
void * operator()(Image *const &imageToCopy)
Copies the cub/ecub files for an image into m_project.
Definition: ImageList.cpp:914
QStringList saveAndApplyColor(QColor newColor)
Sets the color values of every image to a specificed set of values.
Definition: ImageList.cpp:1150
bool askAlpha(int *alphaResult) const
Prompts the user for an alpha value.
Definition: ImageList.cpp:1072