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"
12#include "ImageListActionWorkOrder.h"
13#include "SerialNumberList.h"
14#include "WorkOrder.h"
15#include "XmlStackedHandler.h"
16
17class QStringList;
18class QXmlStreamWriter;
19
20namespace 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);
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:
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::function<void *(Image * const &)> {
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
259Q_DECLARE_METATYPE(Isis::ImageList *);
260
261#endif
File name manipulation and expansion.
Definition FileName.h:100
Property
This is a list of properties and actions that are possible.
This represents a cube in a project-based GUI interface.
Definition Image.h:107
This functor is used for copying the images between two projects quickly.
Definition ImageList.h:170
const Project * m_project
This stores the name of the project that is going to be copied to.
Definition ImageList.h:184
FileName m_newProjectRoot
This stores the path to the root of the project that is going to be copied to.
Definition ImageList.h:188
CopyImageDataFunctor & operator=(const CopyImageDataFunctor &rhs)
Assignment operator for CopyImageDataFunctor.
CopyImageDataFunctor(const Project *project, FileName newProjectRoot)
Constructor for CopyImageDataFunctor.
void * operator()(Image *const &imageToCopy)
Copies the cub/ecub files for an image into m_project.
~CopyImageDataFunctor()
Destructor for CopyImageDataFunctor.
This class is used to read an images.xml file into an image list.
Definition ImageList.h:133
ImageList * m_imageList
This stores a pointer to the image list that will be read into.
Definition ImageList.h:148
XmlHandler(ImageList *imageList, Project *project, QString dataRoot="")
Create an XML Handler (reader) that can populate the Image list class data.
QString m_imageDataRoot
This is a relative path to the image data.
Definition ImageList.h:157
virtual bool startElement(const QString &namespaceURI, const QString &localName, const QString &qName, const QXmlAttributes &atts)
Handle an XML start element.
virtual bool endElement(const QString &namespaceURI, const QString &localName, const QString &qName)
Handle an XML end element.
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
Work orders that can be performed on an image list that modifies internal state.
static QString toString(Action)
Convert an action to a string.
static QString qualifyString(QString unqualifiedString, ImageList *)
Determine whether a toggle action should show or hide.
Action
Type of action to be performed by the work order.
Internalizes a list of images and allows for operations on the entire list.
Definition ImageList.h:55
void applyShowOutline(QStringList showOutlineValues)
Sets the visibility of the outlines of the images in the image list based on a list of values.
Image * takeLast()
Removes and returns the last image.
void applyShowDNs(QStringList showDNsValues)
Sets the visibility of the DNs of the images in the image list based on a list of values.
void deleteFromDisk(Project *project)
Delete all of the contained Images from disk.
int removeAll(Image *const &value)
Removes all occurances of an image.
QStringList saveAndToggleShowDNs()
Changes the visibility of the DNs of the first image in the image list and synchronizes the visibilit...
QString path() const
Get the path to the images in the image list (relative to project root).
~ImageList()
Destructor.
ImageList & operator+=(const QList< Image * > &other)
Appends a list of images to the end of the image list.
void applyAlphas(QStringList alphaValues)
Sets the alpha values of the images based on a list of values.
ImageList & operator<<(const QList< Image * > &other)
Appends a list of images to the end of the image list.
void applyShowLabel(QStringList showLabelValues)
Sets the visibility of the display names of the images in the image list based on a list of values.
void setPath(QString newPath)
Set the relative path (from the project root) to this image list's folder.
void insert(int i, Image *const &value)
Inserts an image into the image list at an index.
void showRandomColor()
This applies a new semi-random color to every image's display property for every image in this image ...
void save(QXmlStreamWriter &stream, const Project *project, FileName newProjectRoot) const
Convert this image list into XML format for saving/restoring capabilities.
bool removeOne(Image *const &value)
Removes the first occurance of an image.
Image * takeAt(int i)
Removes the image at an index and returns it.
void push_front(Image *const &value)
Prepends an image to the beginning of the image list.
void applyColors(QStringList colorValues, int column=0)
Sets the colors values of the images based on a list of values.
Image * takeFirst()
Removes and returns the first image.
ImageList & operator=(const QList< Image * > &rhs)
Assigns another list of images to the image list.
void prepend(Image *const &value)
Inserts an image at the beginning of the image list.
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
bool askAlpha(int *alphaResult) const
Prompts the user for an alpha value.
QStringList saveAndToggleShowOutline()
Changes the visibility of the outline of the first image in the image list and synchronizes the visib...
iterator erase(iterator pos)
Erases a single image from the image list.
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
void askAndUpdateAlpha()
Prompt the user for a new alpha value.
SerialNumberList * serialNumberList()
Creates a SerialNumberList from the image list.
void askAndUpdateColor()
Prompt the user for a new color.
void removeAt(int i)
Removes the image at an index.
bool askNewColor(QColor *colorResult) const
Prompts the user for color values.
void push_back(Image *const &value)
Appends an image to the end of the image list.
QString m_name
This stores the image list's name.
Definition ImageList.h:242
bool allSupport(ImageDisplayProperties::Property prop)
Check if all images in the image list support a display property.
QStringList saveAndToggleShowLabel()
Changes the visibility of the display name of the first image in the image list and synchronizes the ...
void append(Image *const &value)
Appends an image to the image list.
QStringList saveAndApplyColor(QColor newColor)
Sets the color values of every image to a specificed set of values.
QStringList saveAndApplyAlpha(int newAlpha)
Sets the alpha value of every image in the image list to a specificed value.
void applyShowFill(QStringList showFillValues)
Sets the visibility of the fill areas of the images in the image list based on a list of values.
QList< QAction * > supportedActions(Project *project=NULL)
Gets a list of pre-connected actions that have to do with display.
QString m_path
This stores the directory name that contains the images in this image list.
Definition ImageList.h:254
void swap(QList< Image * > &other)
Swaps the image list with another list of images.
void setName(QString newName)
Set the human-readable name of this image list.
QStringList saveAndToggleShowFill()
Changes the visibility of the fill area of the first image in the image list and synchronizes the vis...
QString name() const
Get the human-readable name of this image list.
void clear()
Clears the image list.
void removeFirst()
Removes the image at the front of the image list.
void removeLast()
Removes the image at the end of the image list.
QStringList saveAndApplyRandomColor()
Sets the color values of every image to a random color.
The main project for ipce.
Definition Project.h:289
Serial Number list generator.
XML Handler that parses XMLs in a stack-oriented way.
Manage a stack of content handlers for reading XML files.
This is free and unencumbered software released into the public domain.
This is free and unencumbered software released into the public domain.
Definition Apollo.h:16