File failed to load: https://isis.astrogeology.usgs.gov/6.0.0/Object/assets/jax/output/NativeMML/config.js
Isis 3 Programmer Reference
ShapeDisplayProperties.cpp
1 #include "ShapeDisplayProperties.h"
2 
3 #include <QAction>
4 #include <QBitArray>
5 #include <QBuffer>
6 #include <QColorDialog>
7 #include <QDebug>
8 #include <QInputDialog>
9 #include <QMap>
10 #include <QVariant>
11 #include <QXmlStreamWriter>
12 
13 #include "FileName.h"
14 #include "Pvl.h"
15 #include "XmlStackedHandlerReader.h"
16 
17 namespace Isis {
26  DisplayProperties(displayName, parent) {
27 
30 
31  // set all of the defaults to prevent unwanted change signals from
32  // being emitted later.
33  setShowLabel(false);
34  setSelected(false);
35 
36  setValue(Color, QVariant::fromValue(randomColor()));
37  }
38 
45  QObject *parent) : DisplayProperties("", parent) {
48 
49  xmlReader->pushContentHandler(new XmlHandler(this));
50  }
51 
52 
57  }
58 
59 
60 
61 
62 
69  if (!supports(prop)) {
71  emit supportAdded(prop);
72  }
73  }
74 
75 
82  return (m_propertiesUsed & prop) == prop;
83  }
84 
85 
93  return (*m_propertyValues)[prop];
94  }
95 
96 
103  // Gives a random number between 0 and 255
104  int red = 0;
105  int green = 0;
106  int blue = 0;
107 
108  // Generate dark
109  while (red + green + blue < 300) {
110  red = rand() % 256;
111  green = rand() % 256;
112  blue = rand() % 256;
113  }
114 
115  return QColor(red, green, blue, 60);
116  }
117 
124  void ShapeDisplayProperties::save(QXmlStreamWriter &stream, const Project *project,
125  FileName newProjectRoot) const {
126  stream.writeStartElement("displayProperties");
127 
128  stream.writeAttribute("displayName", displayName());
129 
130  // Get hex-encoded data
131  QBuffer dataBuffer;
132  dataBuffer.open(QIODevice::ReadWrite);
133  QDataStream propsStream(&dataBuffer);
134  propsStream << *m_propertyValues;
135  dataBuffer.seek(0);
136 
137  stream.writeCharacters(dataBuffer.data().toHex());
138 
139  stream.writeEndElement();
140  }
141 
142 
147  void ShapeDisplayProperties::setColor(QColor newColor) {
148  setValue(Color, QVariant::fromValue(newColor));
149  }
150 
151 
157  setValue(Selected, newValue);
158  }
159 
160 
166  setValue(ShowLabel, newValue);
167  }
168 
169 
178  QList<ShapeDisplayProperties *> displays = senderToData(sender());
179 
180  bool value = getValue(ShowLabel).toBool();
181  value = !value;
182 
183  ShapeDisplayProperties *display;
184  foreach (display, displays) {
185  display->setShowLabel(value);
186  }
187  }
188 
189 
198  m_displayProperties = displayProperties;
199  }
200 
201 
212  bool ShapeDisplayProperties::XmlHandler::startElement(const QString &namespaceURI,
213  const QString &localName, const QString &qName, const QXmlAttributes &atts) {
214  if (XmlStackedHandler::startElement(namespaceURI, localName, qName, atts)) {
215  if (localName == "displayProperties") {
216  QString displayName = atts.value("displayName");
217 
218  if (!displayName.isEmpty()) {
219  m_displayProperties->setDisplayName(displayName);
220  }
221  }
222  }
223 
224  return true;
225  }
226 
227 
241  m_hexData += ch;
242 
243  return XmlStackedHandler::characters(ch);
244  }
245 
246 
247 
259  bool ShapeDisplayProperties::XmlHandler::endElement(const QString &namespaceURI,
260  const QString &localName, const QString &qName) {
261  if (localName == "displayProperties") {
262  QByteArray hexValues(m_hexData.toLatin1());
263  QDataStream valuesStream(QByteArray::fromHex(hexValues));
264  valuesStream >> *m_displayProperties->m_propertyValues;
265  }
266 
267  return XmlStackedHandler::endElement(namespaceURI, localName, qName);
268  }
269 
270 
271 
280  void ShapeDisplayProperties::setValue(Property prop, QVariant value) {
281  if ((*m_propertyValues)[prop] != value) {
282  (*m_propertyValues)[prop] = value;
283 
284  if (supports(prop)) {
285  emit propertyChanged(this);
286  }
287  }
288  }
289 
290 
301  QObject *senderObj) {
303 
304  if (senderObj) {
305  QAction *caller = (QAction *)senderObj;
306  QVariant callerData = caller->data();
307 
308  if (callerData.canConvert< QList<ShapeDisplayProperties *> >() ) {
309  data = callerData.value< QList<ShapeDisplayProperties *> >();
310  }
311  }
312 
313  return data;
314  }
315 
316 
317 }
Isis::ShapeDisplayProperties::toggleShowLabel
void toggleShowLabel()
Change the visibility of the display name.
Definition: ShapeDisplayProperties.cpp:177
Isis::Color
This class is designed to serialize QColor in a human-readable form.
Definition: Color.h:26
Isis::ShapeDisplayProperties::None
@ None
Null display property for bit-flag purposes.
Definition: ShapeDisplayProperties.h:68
QList
This is free and unencumbered software released into the public domain.
Definition: BoxcarCachingAlgorithm.h:13
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::ShapeDisplayProperties::setValue
void setValue(Property prop, QVariant value)
This is the generic mutator for properties.
Definition: ShapeDisplayProperties.cpp:280
Isis::ShapeDisplayProperties::addSupport
void addSupport(Property prop)
Call this with every property you support, otherwise they will not communicate properly between widge...
Definition: ShapeDisplayProperties.cpp:68
Isis::DisplayProperties
Definition: DisplayProperties.h:34
Isis::ShapeDisplayProperties::setColor
void setColor(QColor newColor)
Change the color associated with this shape.
Definition: ShapeDisplayProperties.cpp:147
Isis::ShapeDisplayProperties::save
void save(QXmlStreamWriter &stream, const Project *project, FileName newProjectRoot) const
Saves this object to an XML file.
Definition: ShapeDisplayProperties.cpp:124
Isis::ShapeDisplayProperties::Property
Property
This is a list of properties and actions that are possible.
Definition: ShapeDisplayProperties.h:66
Isis::ShapeDisplayProperties::Selected
@ Selected
The selection state of this control net (bool)
Definition: ShapeDisplayProperties.h:72
Isis::ShapeDisplayProperties::ShapeDisplayProperties
ShapeDisplayProperties(QString displayName, QObject *parent=NULL)
ShapeDisplayProperties constructor.
Definition: ShapeDisplayProperties.cpp:25
Isis::XmlStackedHandlerReader
Manage a stack of content handlers for reading XML files.
Definition: XmlStackedHandlerReader.h:30
Isis::ShapeDisplayProperties
This is the GUI communication mechanism for shape objects.
Definition: ShapeDisplayProperties.h:60
Isis::Project
The main project for ipce.
Definition: Project.h:289
Isis::ShapeDisplayProperties::m_propertyValues
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...
Definition: ShapeDisplayProperties.h:152
Isis::ShapeDisplayProperties::senderToData
static QList< ShapeDisplayProperties * > senderToData(QObject *sender)
Get the display properties from a slot.
Definition: ShapeDisplayProperties.cpp:300
Isis::ShapeDisplayProperties::XmlHandler
This class is used for processing an XML file containing information about a WorkOrder.
Definition: ShapeDisplayProperties.h:115
Isis::ShapeDisplayProperties::XmlHandler::characters
virtual bool characters(const QString &ch)
This is called when the XML processor has parsed a chunk of character data.
Definition: ShapeDisplayProperties.cpp:240
Isis::ShapeDisplayProperties::~ShapeDisplayProperties
virtual ~ShapeDisplayProperties()
The destructor.
Definition: ShapeDisplayProperties.cpp:56
Isis::DisplayProperties::displayName
QString displayName() const
Returns the display name.
Definition: DisplayProperties.cpp:88
Isis::ShapeDisplayProperties::supports
bool supports(Property prop)
Support for this may come later.
Definition: ShapeDisplayProperties.cpp:81
Isis::ShapeDisplayProperties::XmlHandler::startElement
virtual bool startElement(const QString &namespaceURI, const QString &localName, const QString &qName, const QXmlAttributes &atts)
This overrides the parent startElement function in XmlStackedHandler so the parser can handle an XML ...
Definition: ShapeDisplayProperties.cpp:212
Isis::ShapeDisplayProperties::getValue
QVariant getValue(Property prop) const
Get a property's associated data.
Definition: ShapeDisplayProperties.cpp:92
Isis::ShapeDisplayProperties::m_propertiesUsed
Property m_propertiesUsed
This indicated whether any widgets with this DisplayProperties is using a particular property.
Definition: ShapeDisplayProperties.h:146
Isis::ShapeDisplayProperties::XmlHandler::XmlHandler
XmlHandler(ShapeDisplayProperties *displayProperties)
Constructor for the XmlHandler class.
Definition: ShapeDisplayProperties.cpp:197
QMap< int, QVariant >
QObject
QAction
Isis::ShapeDisplayProperties::XmlHandler::endElement
virtual bool endElement(const QString &namespaceURI, const QString &localName, const QString &qName)
The XML reader invokes this method at the end of every element in the XML document.
Definition: ShapeDisplayProperties.cpp:259
Isis::ShapeDisplayProperties::setSelected
void setSelected(bool)
Change the selected state associated with this shape.
Definition: ShapeDisplayProperties.cpp:156
Isis::ShapeDisplayProperties::randomColor
static QColor randomColor()
Creates and returns a random color for the initial color of the footprint polygon.
Definition: ShapeDisplayProperties.cpp:102
Isis
This is free and unencumbered software released into the public domain.
Definition: Apollo.h:16
Isis::ShapeDisplayProperties::setShowLabel
void setShowLabel(bool)
Change the visibility of the display name associated with this shape.
Definition: ShapeDisplayProperties.cpp:165
Isis::ShapeDisplayProperties::ShowLabel
@ ShowLabel
True if the control net should show its display name (bool)
Definition: ShapeDisplayProperties.h:74

U.S. Department of the Interior | U.S. Geological Survey
ISIS | Privacy & Disclaimers | Astrogeology Research Program
To contact us, please post comments and questions on the USGS Astrogeology Discussion Board
To report a bug, or suggest a feature go to: ISIS Github
File Modified: 07/13/2023 15:17:16