Isis Developer Reference
ShapeList.h
Go to the documentation of this file.
1 #ifndef ShapeList_H
2 #define ShapeList_H
3 
4 #include <QDebug>
5 #include <QObject>
6 #include <QList>
7 #include <QMetaType>
8 
9 #include "Shape.h"
10 #include "ShapeDisplayProperties.h"
11 #include "SerialNumberList.h"
12 #include "WorkOrder.h"
13 #include "XmlStackedHandler.h"
14 
15 class QStringList;
16 class QXmlStreamWriter;
17 
18 namespace Isis {
19  class FileName;
20  class XmlStackedHandlerReader;
21 
33  class ShapeList : public QObject, public QList<Shape *> {
34  Q_OBJECT
35 
36  public:
37  ShapeList(QString name, QString path, QObject *parent = NULL);
38  explicit ShapeList(QObject *parent = NULL);
39  explicit ShapeList(QList<Shape *>, QObject *parent = NULL);
40  explicit ShapeList(Project *project,
41  XmlStackedHandlerReader *xmlReader, QObject *parent = NULL);
42  explicit ShapeList(QStringList &);
43  ShapeList(const ShapeList &);
44  ~ShapeList();
45 
47 
48  // These are overridden (-ish) in order to add notifications to the list changing
49  void append(Shape * const & value);
50  void append(const QList<Shape *> &value);
51 
52  void clear();
53 
54  iterator erase(iterator pos);
55  iterator erase(iterator begin, iterator end);
56 
57  void insert(int i, Shape * const & value);
58  iterator insert(iterator before, Shape * const & value);
59 
60  void prepend(Shape * const & value);
61  void push_back(Shape * const & value);
62  void push_front(Shape * const & value);
63  int removeAll(Shape * const & value);
64  void removeAt(int i);
65  void removeFirst();
66  void removeLast();
67  bool removeOne(Shape * const & value);
68  void swap(QList<Shape *> &other);
69  Shape *takeAt(int i);
70  Shape *takeFirst();
71  Shape *takeLast();
72 
73  ShapeList &operator+=(const QList<Shape *> &other);
74  ShapeList &operator+=(Shape * const &other);
75  ShapeList &operator<<(const QList<Shape *> &other);
76  ShapeList &operator<<(Shape * const &other);
77  ShapeList &operator=(const QList<Shape *> &rhs);
78 
79  // This is our own assignment, but it needs to notify just like the operator=(QList)
80  ShapeList &operator=(const ShapeList &rhs);
81 
82  // Done overriding (-ish)
83 
84  void setName(QString newName);
85  void setPath(QString newPath);
86 
87  QString name() const;
88  QString path() const;
89 
90  void deleteFromDisk(Project *project);
91  void save(QXmlStreamWriter &stream, const Project *project, FileName newProjectRoot) const;
92 
93 
94  signals:
95  void countChanged(int newCount);
96 
97  private:
105  class XmlHandler : public XmlStackedHandler {
106  public:
107  XmlHandler(ShapeList *shapeList, Project *project);
108 
109  virtual bool startElement(const QString &namespaceURI, const QString &localName,
110  const QString &qName, const QXmlAttributes &atts);
111  virtual bool endElement(const QString &namespaceURI, const QString &localName,
112  const QString &qName);
113 
114  private:
115  Q_DISABLE_COPY(XmlHandler);
116 
120  ShapeList *m_shapeList;
124  Project *m_project;
125  };
126 
127 
137  class CopyShapeDataFunctor : public std::unary_function<Shape * const &, void *> {
138  public:
139  CopyShapeDataFunctor(const Project *project, FileName newProjectRoot);
140  CopyShapeDataFunctor(const CopyShapeDataFunctor &other);
141  ~CopyShapeDataFunctor();
142 
143  void *operator()(Shape * const &shapeToCopy);
144 
145  CopyShapeDataFunctor &operator=(const CopyShapeDataFunctor &rhs);
146 
147  private:
151  const Project *m_project;
155  FileName m_newProjectRoot;
156  };
157 
158  private slots:
159 
160  private:
164  QString m_name;
165 
176  QString m_path;
177  };
178 
179 }
180 
182 
183 #endif
Isis::ShapeList::countChanged
void countChanged(int newCount)
operator<<
QDebug operator<<(QDebug dbg, const Isis::Angle &angleToPrint)
Display an Angle for a debugging statement.
Definition: Angle.cpp:368
FileName.h
Isis::IException::Io
@ Io
A type of error that occurred when performing an actual I/O operation.
Definition: IException.h:155
Isis::ShapeList::insert
void insert(int i, Shape *const &value)
Inserts an shape into the shape list at an index.
Definition: ShapeList.cpp:209
Isis::Shape::deleteFromDisk
void deleteFromDisk()
Delete the shape data from disk.
Definition: Shape.cpp:591
Isis::ShapeList::takeLast
Shape * takeLast()
Removes and returns the last shape.
Definition: ShapeList.cpp:402
QList< Shape * >
Project.h
Isis::ShapeList::operator<<
ShapeList & operator<<(const QList< Shape * > &other)
Appends a list of shapes to the end of the shape list.
Definition: ShapeList.cpp:457
Isis::FileName
File name manipulation and expansion.
Definition: FileName.h:100
Isis::XmlStackedHandlerReader::pushContentHandler
virtual void pushContentHandler(XmlStackedHandler *newHandler)
Push a contentHandler and maybe continue parsing...
Definition: XmlStackedHandlerReader.cpp:55
Isis::ShapeList::takeFirst
Shape * takeFirst()
Removes and returns the first shape.
Definition: ShapeList.cpp:388
Isis::ShapeList::setName
void setName(QString newName)
Set the human-readable name of this shape list.
Definition: ShapeList.cpp:534
Isis::ShapeList::~ShapeList
~ShapeList()
Destructor.
Definition: ShapeList.cpp:106
Isis::ShapeList::clear
void clear()
Clears the shape list.
Definition: ShapeList.cpp:157
Isis::Project::shapeDataRoot
static QString shapeDataRoot(QString projectRoot)
Appends the root directory name 'shapes' to the project .
Definition: Project.cpp:2087
Q_DECLARE_METATYPE
Q_DECLARE_METATYPE(Isis::ShapeList *)
Isis::XmlStackedHandler::startElement
virtual bool startElement(const QString &namespaceURI, const QString &localName, const QString &qName, const QXmlAttributes &atts)
Definition: XmlStackedHandler.cpp:44
Isis::ShapeList::push_front
void push_front(Shape *const &value)
Prepends an shape to the beginning of the shape list.
Definition: ShapeList.cpp:268
Isis::ShapeList::operator+=
ShapeList & operator+=(const QList< Shape * > &other)
Appends a list of shapes to the end of the shape list.
Definition: ShapeList.cpp:419
Isis::ShapeList::erase
iterator erase(iterator pos)
Erases a single shape from the shape list.
Definition: ShapeList.cpp:175
ShapeDisplayProperties.h
QStringList
Isis::SerialNumberList
Serial Number list generator.
Definition: SerialNumberList.h:64
Isis::XmlStackedHandlerReader
Manage a stack of content handlers for reading XML files.
Definition: XmlStackedHandlerReader.h:30
Isis::ShapeList::operator=
ShapeList & operator=(const QList< Shape * > &rhs)
Assigns another list of shapes to the shape list.
Definition: ShapeList.cpp:494
IString.h
Shape.h
Isis::ShapeList::setPath
void setPath(QString newPath)
Set the relative path (from the project root) to this shape list's folder.
Definition: ShapeList.cpp:545
Isis::ShapeList::takeAt
Shape * takeAt(int i)
Removes the shape at an index and returns it.
Definition: ShapeList.cpp:374
Isis::ShapeList::deleteFromDisk
void deleteFromDisk(Project *project)
Delete all of the contained Shapes from disk.
Definition: ShapeList.cpp:578
Isis::Project
The main project for ipce.
Definition: Project.h:289
WorkOrder.h
ShapeList.h
Isis::ReadWrite
const int ReadWrite
Definition: Process.h:24
Isis::ShapeList::removeOne
bool removeOne(Shape *const &value)
Removes the first occurance of an shape.
Definition: ShapeList.cpp:338
_FILEINFO_
#define _FILEINFO_
Macro for the filename and line number.
Definition: IException.h:24
Isis::ShapeList::serialNumberList
SerialNumberList serialNumberList()
Creates a SerialNumberList from the shape list.
Definition: ShapeList.cpp:115
Isis::FileName::dir
QDir dir() const
Returns the path of the file's parent directory as a QDir object.
Definition: FileName.cpp:465
Isis::ShapeList::removeFirst
void removeFirst()
Removes the shape at the front of the shape list.
Definition: ShapeList.cpp:312
Isis::Project::shapeDataRoot
QString shapeDataRoot() const
Accessor for the root directory of the shape model data.
Definition: Project.cpp:2097
SerialNumberList.h
Isis::SerialNumberList::add
void add(const QString &filename, bool def2filename=false)
Adds a new filename / serial number pair to the SerialNumberList.
Definition: SerialNumberList.cpp:121
Isis::Shape
This represents a shape in a project-based GUI interface.
Definition: Shape.h:68
Isis::ShapeList::swap
void swap(QList< Shape * > &other)
Swaps the shape list with another list of shapes.
Definition: ShapeList.cpp:356
Isis::ShapeList::push_back
void push_back(Shape *const &value)
Appends an shape to the end of the shape list.
Definition: ShapeList.cpp:254
Isis::ShapeList
Internalizes a list of shapes and allows for operations on the entire list.
Definition: ShapeList.h:33
Isis::XmlStackedHandler::endElement
virtual bool endElement(const QString &namespaceURI, const QString &localName, const QString &qName)
Definition: XmlStackedHandler.cpp:55
Isis::IException
Isis exception class.
Definition: IException.h:91
Isis::ShapeList::removeAt
void removeAt(int i)
Removes the shape at an index.
Definition: ShapeList.cpp:301
Isis::ShapeList::prepend
void prepend(Shape *const &value)
Inserts an shape at the beginning of the shape list.
Definition: ShapeList.cpp:240
Isis::FileName::toString
QString toString() const
Returns a QString of the full file name including the file path, excluding the attributes with any Is...
Definition: FileName.cpp:515
Isis::ShapeList::save
void save(QXmlStreamWriter &stream, const Project *project, FileName newProjectRoot) const
Convert this shape list into XML format for saving/restoring capabilities.
Definition: ShapeList.cpp:615
IException.h
Isis::ShapeList::name
QString name() const
Get the human-readable name of this shape list.
Definition: ShapeList.cpp:555
Isis::ShapeList::ShapeList
ShapeList(QString name, QString path, QObject *parent=NULL)
Creates an shape list from an shape list name and path (does not read Shapes).
Definition: ShapeList.cpp:35
Isis::XmlStackedHandler
XML Handler that parses XMLs in a stack-oriented way.
Definition: XmlStackedHandler.h:118
Isis::ShapeList::append
void append(Shape *const &value)
Appends an shape to the shape list.
Definition: ShapeList.cpp:133
Isis::Shape::save
void save(QXmlStreamWriter &stream, const Project *project, FileName newProjectRoot) const
Output format:
Definition: Shape.cpp:844
QObject
Isis::FileName::original
QString original() const
Returns the full file name including the file path.
Definition: FileName.cpp:212
Isis::ShapeList::removeAll
int removeAll(Shape *const &value)
Removes all occurances of an shape.
Definition: ShapeList.cpp:283
XmlStackedHandlerReader.h
XmlStackedHandler.h
Isis::ShapeList::removeLast
void removeLast()
Removes the shape at the end of the shape list.
Definition: ShapeList.cpp:323
Isis::FileName::path
QString path() const
Returns the path of the file name.
Definition: FileName.cpp:103
Isis
This is free and unencumbered software released into the public domain.
Definition: Apollo.h:16
Isis::ShapeList::path
QString path() const
Get the path to the shapes in the shape list (relative to project root).
Definition: ShapeList.cpp:566