Isis 3 Programmer Reference
TargetBodyList.h
1#ifndef TargetBodyList_H
2#define TargetBodyList_H
3
4#include <QDebug>
5#include <QObject>
6#include <QList>
7#include <QMetaType>
8
9#include "TargetBody.h"
10#include "TargetBodyDisplayProperties.h"
11//#include "TargetBodyListActionWorkOrder.h" TODO - will we need this?
12#include "WorkOrder.h"
13#include "XmlStackedHandler.h"
14
15class QStringList;
16class QXmlStreamWriter;
17
18namespace Isis {
19 class FileName;
20 class XmlStackedHandlerReader;
21
33 class TargetBodyList : public QObject, public QList<TargetBodyQsp> {
34 Q_OBJECT
35
36 public:
37// friend class TargetBodyListActionWorkOrder;
38
39 TargetBodyList(QString name, QString path, QObject *parent = NULL);
40 explicit TargetBodyList(QObject *parent = NULL);
41 explicit TargetBodyList(QList<TargetBodyQsp>, QObject *parent = NULL);
42 explicit TargetBodyList(Project *project,
43 XmlStackedHandlerReader *xmlReader, QObject *parent = NULL);
44// explicit TargetBodyList(QStringList &);
47
48 // These are overridden (-ish) in order to add notifications to the list changing
49 void append(TargetBodyQsp const &value);
50 void append(const QList<TargetBodyQsp> &value);
51
52 void clear();
53
54 iterator erase(iterator pos);
55 iterator erase(iterator begin, iterator end);
56
57 void insert(int i, TargetBodyQsp const &value);
58 iterator insert(iterator before, TargetBodyQsp const &value);
59
60 void prepend(TargetBodyQsp const &value);
61 void push_back(TargetBodyQsp const &value);
62 void push_front(TargetBodyQsp const &value);
63 int removeAll(TargetBodyQsp const &value);
64 void removeAt(int i);
65 void removeFirst();
66 void removeLast();
67 bool removeOne(TargetBodyQsp const &value);
68 void swap(QList<TargetBodyQsp> &other);
69 TargetBodyQsp takeAt(int i);
72
73 TargetBodyList &operator+=(const QList<TargetBodyQsp> &other);
75 TargetBodyList &operator<<(const QList<TargetBodyQsp> &other);
77 TargetBodyList &operator=(const QList<TargetBodyQsp> &rhs);
78
79 // This is our own assignment, but it needs to notify just like the operator=(QList)
81
82 // Done overriding (-ish)
83
84
85 QList<QAction *> supportedActions(Project *project = NULL);
86 bool allSupport(TargetBodyDisplayProperties::Property prop);
87
88 void setName(QString newName);
89 void setPath(QString newPath);
90
91 QString name() const;
92 QString path() const;
93
94// void deleteFromDisk(Project *project);
95 void save(QXmlStreamWriter &stream, const Project *project, FileName newProjectRoot) const;
96
97
98 signals:
99 void countChanged(int newCount);
100
101 private:
110 public:
112
113 virtual bool startElement(const QString &namespaceURI, const QString &localName,
114 const QString &qName, const QXmlAttributes &atts);
115 virtual bool endElement(const QString &namespaceURI, const QString &localName,
116 const QString &qName);
117
118 private:
119 Q_DISABLE_COPY(XmlHandler);
120
123 };
124
125
135// class CopyTargetBodyDataFunctor : public std::unary_function<TargetBodyQsp const &, void *> {
136// public:
137// CopyTargetBodyDataFunctor(const Project *project, FileName newProjectRoot);
138// CopyTargetBodyDataFunctor(const CopyTargetBodyDataFunctor &other);
139// ~CopyTargetBodyDataFunctor();
140
141// void *operator()(TargetBodyQsp const &imageToCopy);
142
143// CopyTargetBodyDataFunctor &operator=(const CopyTargetBodyDataFunctor &rhs);
144
145// private:
146// const Project *m_project;
147// FileName m_newProjectRoot;
148// };
149
150 private:
151// QAction *createWorkOrder(Project *project, TargetBodyListActionWorkOrder::Action action) {
152// QAction *result = NULL;
153
154// if (project) {
155// result = new TargetBodyListActionWorkOrder(action, project);
156// ((TargetBodyListActionWorkOrder *)result)->setData(this);
157// }
158// else {
159// result = new QAction(
160// TargetBodyListActionWorkOrder::qualifyString(TargetBodyListActionWorkOrder::toString(action),
161// this),
162// this);
163// }
164
165// return result;
166// }
167
168// void applyAlphas(QStringList alphaValues);
169// void applyColors(QStringList colorValues, int column = 0);
170// void applyShowLabel(QStringList showLabelValues);
171// void applyShowFill(QStringList showFillValues);
172// void applyShowDNs(QStringList showDNsValues);
173// void applyShowOutline(QStringList showOutlineValues);
174// bool askAlpha(int *alphaResult) const;
175// bool askNewColor(QColor *colorResult) const;
176// QStringList saveAndApplyAlpha(int newAlpha);
177// QStringList saveAndApplyColor(QColor newColor);
178// QStringList saveAndApplyRandomColor();
179
180 private slots:
181// void askAndUpdateAlpha();
182// void askAndUpdateColor();
183// void showRandomColor();
184// QStringList saveAndToggleShowDNs();
185// QStringList saveAndToggleShowFill();
186// QStringList saveAndToggleShowLabel();
187// QStringList saveAndToggleShowOutline();
188
189 private:
190 QString m_name;
191
202 QString m_path;
203 };
204
205}
206
207Q_DECLARE_METATYPE(Isis::TargetBodyList *);
208
209#endif
File name manipulation and expansion.
Definition FileName.h:100
The main project for ipce.
Definition Project.h:289
Property
This is a list of properties and actions that are possible.
XmlReader for working with TargetBody XML files.
Project * m_project
The project that contains the TargetBodies.
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.
TargetBodyList * m_TargetBodyList
The TargetBodyList to read into/save from.
XmlHandler(TargetBodyList *TargetBodyList, Project *project)
Change the visibility of the display name.
List for holding TargetBodies.
TargetBodyList & operator<<(const QList< TargetBodyQsp > &other)
Appends another TargetBodyList to the list.
QString m_name
This functor is used for copying the TargetBody objects between two projects quickly.
TargetBodyList & operator=(const QList< TargetBodyQsp > &rhs)
Assignment operator for a QList of TargetBodyQsp.
void setPath(QString newPath)
Set the relative path (from the project root) to this target body list's folder.
void removeLast()
Removes the last TargetBody from the list.
void save(QXmlStreamWriter &stream, const Project *project, FileName newProjectRoot) const
Delete all of the contained TargetBody objects from disk (see TargetBody::deleteFromDisk())
iterator erase(iterator pos)
Erases the TargetBody associated with an iterator.
QString path() const
Get the path to these target body objects in the list (relative to project root).
void swap(QList< TargetBodyQsp > &other)
Swaps the list with another TargetBodyList.
TargetBodyQsp takeLast()
Removes and returns the last TargetBody in the list.
void insert(int i, TargetBodyQsp const &value)
Inserts a TargetBody at a specific index.
void append(TargetBodyQsp const &value)
Appends a TargetBody to the list.
bool removeOne(TargetBodyQsp const &value)
Removes the first occurrence of a TargetBody from the list.
void push_front(TargetBodyQsp const &value)
Insertes a TargetBody at the front of the list.
TargetBodyList & operator+=(const QList< TargetBodyQsp > &other)
Appends another TargetBodyList to the list.
TargetBodyList(QString name, QString path, QObject *parent=NULL)
Create an target body list from an target body list name and path (does not read TargetBody objects).
QString name() const
Get the human-readable name of this target body list.
void removeFirst()
Removes the first TargetBody from the list.
int removeAll(TargetBodyQsp const &value)
Removes all occurrences of a TargetBody and returns the number removed.
void prepend(TargetBodyQsp const &value)
Inserts a TargetBody at the front of the list.
void push_back(TargetBodyQsp const &value)
Appends a TargetBody to the end of the list.
TargetBodyQsp takeFirst()
Removes and returns the first TargetBody in the list.
QString m_path
This stores the directory name that contains the TargetBody objects in this list.
~TargetBodyList()
Create an target body list from a list of target body file names.
void setName(QString newName)
Gets a list of pre-connected actions that have to do with display, such as color, alpha,...
void removeAt(int i)
Removes the TargetBody at a specific index.
void clear()
clears the list.
TargetBodyQsp takeAt(int i)
Removes and returns the TargetBody at a specific index.
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