Isis 3 Programmer Reference
ControlDisplayProperties.h
1#ifndef ControlDisplayProperties_H
2#define ControlDisplayProperties_H
3
10/* SPDX-License-Identifier: CC0-1.0 */
11
12#include <QObject>
13#include <QMetaType> // required since we're adding to QVariant
14#include <QColor> // This is required since QColor is in a slot
15
16#include "DisplayProperties.h"
17#include "XmlStackedHandler.h"
18
19class QAction;
20class QXmlStreamWriter;
21
22namespace Isis {
23 class FileName;
24 class Project;
25 class Pvl;
26 class PvlObject;
27 class XmlStackedHandlerReader;
28
60 Q_OBJECT
61 public:
65 enum Property {
67 None = 0,
69 Color = 1,
74 };
75
76
77 ControlDisplayProperties(QString displayName, QObject *parent = NULL);
80
81// void fromPvl(const PvlObject &pvl);
82// PvlObject toPvl() const;
83
84 void addSupport(Property prop);
85 bool supports(Property prop);
86
87 QVariant getValue(Property prop) const;
88
89 static QColor randomColor();
90
91 void save(QXmlStreamWriter &stream, const Project *project, FileName newProjectRoot) const;
92
93 signals:
94 void propertyChanged(ControlDisplayProperties *);
95 void supportAdded(Property);
96
97 public slots:
98 void setColor(QColor newColor);
99 void setShowLabel(bool);
100 void setSelected(bool);
101
102 private slots:
103 void toggleShowLabel();
104
105 private:
112 public:
113 XmlHandler(ControlDisplayProperties *displayProperties);
114
115 virtual bool startElement(const QString &namespaceURI, const QString &localName,
116 const QString &qName, const QXmlAttributes &atts);
117
118 virtual bool characters(const QString &ch);
119
120 virtual bool endElement(const QString &namespaceURI, const QString &localName,
121 const QString &qName);
122
123 private:
124 Q_DISABLE_COPY(XmlHandler);
125
126 ControlDisplayProperties *m_displayProperties;
127 QString m_hexData;
128 };
129
130 private:
133
134 void setValue(Property prop, QVariant value);
135 static QList<ControlDisplayProperties *> senderToData(QObject *sender);
136
143
148 QMap<int, QVariant> *m_propertyValues;
149 };
150}
151
152Q_DECLARE_METATYPE(QList<Isis::ControlDisplayProperties *>);
153
154#endif
This class is designed to serialize QColor in a human-readable form.
Definition Color.h:26
This is the GUI communication mechanism for cubes.
Property m_propertiesUsed
This indicated whether any widgets with this DisplayProperties is using a particular property.
void setColor(QColor newColor)
Change the color associated with this cube.
static QColor randomColor()
Creates and returns a random color for the intial color of the footprint polygon.
ControlDisplayProperties(QString displayName, QObject *parent=NULL)
ControlDisplayProperties constructor.
void setValue(Property prop, QVariant value)
This is the generic mutator for properties.
QVariant getValue(Property prop) const
Get a property's associated data.
bool supports(Property prop)
Support may come later, please make sure you are connected to the supportAdded signal.
void toggleShowLabel()
Change the visibility of the display name.
void addSupport(Property prop)
Call this with every property you support, otherwise they will not communicate properly between widge...
static QList< ControlDisplayProperties * > senderToData(QObject *sender)
This is for the slots that have a list of display properties as associated data.
Property
This is a list of properties and actions that are possible.
@ None
Null display property for bit-flag purposes.
@ ShowLabel
True if the control net should show its display name (bool)
@ Selected
The selection state of this control net (bool)
QMap< int, QVariant > * m_propertyValues
This is a map from Property to value – the reason I use an int is so Qt knows how to serialize this Q...
void setShowLabel(bool)
Change the visibility of the display name associated with this cube.
void setSelected(bool)
Change the selected state associated with this cube.
QString displayName() const
Returns the display name.
File name manipulation and expansion.
Definition FileName.h:100
The main project for ipce.
Definition Project.h:289
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.
Definition Apollo.h:16