25#include <Inventor/nodes/SoMaterial.h>
35#include <QDoubleSpinBox>
39#include <QRadioButton>
57 theclass->messageDebug(
"VP1Serialize::handle() - Returning...");
62 theclass->message(
"ERROR: Handled widget more than once: Type="
63 +QString(w->metaObject()->className())
64 +
", name="+w->objectName());
91 m_d->byteArray.clear();
92 m_d->buffer =
new QBuffer(&
m_d->byteArray);
93 m_d->buffer->open(QIODevice::WriteOnly);
94 m_d->state =
new QDataStream(
m_d->buffer);
102 if (!
m_d->checkedUnused)
103 message(
"WARNING: warnUnsaved(..) was never called!");
105 m_d->buffer->close();
130 return m_d->byteArray;
137 messageDebug(
"VP1Serialise::save(QCheckBox) - name: " + cb->objectName());
140 save(cb->isChecked());
147 messageDebug(
"VP1Serialise::save(QGroupBox) - name: " + gb->objectName());
149 if (!gb->isCheckable())
150 message(
"WARNING: Asked to handled GroupBox which is not checkable: "+gb->objectName());
152 save(gb->isChecked());
159 messageDebug(
"VP1Serialise::save(QComboBox) - name: " + cb->objectName());
162 save( cb->count() > 0 ? cb->currentText() : QString() );
169 messageDebug(
"\nVP1Serialise::save(QLineEdit) - name: " + le->objectName());
179 messageDebug(
"\nVP1Serialise::save(QDoubleSpinBox) - name: " + sb->objectName());
189 messageDebug(
"\nVP1Serialise::save(QSpinBox) - name: " + sb->objectName());
199 messageDebug(
"\nVP1Serialise::save(QSlider) - name: " + s->objectName());
229 (*(
m_d->state)) << dbl;
238 (*(
m_d->state)) << s;
245 messageVerbose(
"Saving byte array (length = "+QString::number(ba.count())+
")");
247 (*(
m_d->state)) << ba;
254 messageDebug(
"\nVP1Serialise::save(QToolBox) - name: " + tb->objectName());
257 save( tb && tb->count() > 0 ? tb->currentIndex() : -1 );
264 messageDebug(
"\nVP1Serialise::save(QToolBox) - name: " + tb->objectName());
267 int i = tb ? tb->currentIndex() : -1;
268 save( i>=0 && i<tb->
count() ? tb->itemText(i) : QString() );
290 messageDebug(
"\nVP1Serialise::save(VP1MaterialButton) - name: " + mb->objectName());
293 QList<SoMaterial*> mats = mb ? mb->handledMaterials() : QList<SoMaterial*>();
294 save(mats.isEmpty() ? 0 : mats.at(0));
301 messageDebug(
"\nVP1Serialise::save(QColor) - name: " + c.name());
313 messageDebug(
"\nVP1Serialise::save(VP1ColorSelectButton) - name: " + cb->objectName());
323 messageDebug(
"\nVP1Serialise::save(PhiSectionWidget) - name: " +
phi->objectName());
329 (*(
m_d->state)) << (
phi ?
phi->state() : QByteArray());
344 QList<QRadioButton *> l;
345 l << rb0 << rb1 << rb2 << rb3 << rb4 << rb5 << rb6 << rb7 << rb8 << rb9;
346 for (qint32 i = 0; i < l.count(); ++i) {
349 messageDebug(
"\nVP1Serialise::save(QRadioButton) - name: " + l.at(i)->objectName());
351 m_d->handle(l.at(i));
355 for (qint32 i = 0; i < l.count(); ++i) {
356 if (l.at(i)&&l.at(i)->isChecked()) {
368 messageDebug(
"\nVP1Serialise::save(VP1CollectionWidget) - name: " + cw->objectName());
369 messageDebug(
"VP1Serialise::save(VP1CollectionWidget)- start...");
375 buffer.open(QIODevice::WriteOnly);
376 QDataStream out(&buffer);
382 messageDebug(
"VP1Serialise::save(VP1CollectionWidget)- end.");
397 messageDebug(
"\nVP1Serialise::save(VP1CollectionSettingsButtonBase) - name: " + jcb->objectName());
398 messageDebug(
"VP1Serialise::save(VP1CollectionSettingsButtonBase)- start...");
404 messageDebug(
"VP1Serialise::save(VP1CollectionSettingsButtonBase)- end.");
413 messageDebug(
"\nVP1Serialise::save(VP1EtaPhiCutWidget) - name: " + w->objectName());
417 save(w ? w->saveState() : QByteArray());
424 messageDebug(
"\nVP1Serialise::save(VP1DrawOptionsWidget) - name: " + w->objectName());
428 save(w ? w->state() : QByteArray());
435 messageDebug(
"\nVP1Serialise::ignoreWidget(QWidget) - name: " + w->objectName());
438 m_d->ignoredWidgets.insert(w);
456 if (w->inherits(
"QGroupBox"))
457 return static_cast<const QGroupBox*
>(w)->isCheckable();
459 return w->inherits(
"QCheckBox")
460 || w->inherits(
"QRadioButton")
461 || w->inherits(
"QComboBox")
462 || w->inherits(
"QAbstractSpinBox")
463 || w->inherits(
"QSlider")
464 || w->inherits(
"QToolBox")
465 || w->inherits(
"PhiSectionWidget")
466 || w->inherits(
"VP1EtaPhiCutWidget")
467 || w->inherits(
"VP1DrawOptionsWidget")
468 || w->inherits(
"QLineEdit")
469 || w->inherits(
"VP1ColorSelectButton")
470 || w->inherits(
"VP1MaterialButton");
476 m_d->checkedUnused =
true;
484 if (!
m_d->checkedUnused)
485 m_d->checkedUnused =
true;
490 if (
object->isWidgetType()&&
m_d->ignoredWidgets.contains(
static_cast<const QWidget*
>(
object)))
493 if (
object->isWidgetType()&&!
object->objectName().startsWith(
"qt_")) {
494 const QWidget * wid =
static_cast<const QWidget*
>(
object);
495 if (!
m_d->handledWidgets.contains(wid)&&
m_d->expectsPersistification(wid)) {
496 QString s(
"WARNING Unsaved widget of type: "+QString(wid->metaObject()->className())+
" and object name = "+wid->objectName());
506 for (
const QObject* o :
object->children())
Scalar phi() const
phi method
const PlainObject unit() const
This is a plugin that makes Eigen look like CLHEP & defines some convenience methods.
VP1HelperClassBase(IVP1System *sys=0, QString helpername="")
void messageVerbose(const QString &) const
void message(const QString &) const
void messageDebug(const QString &) const
static QByteArray serialiseSoMaterial(SoMaterial *)
QSet< const QWidget * > handledWidgets
bool expectsPersistification(const QWidget *w)
QSet< const QWidget * > ignoredWidgets
void handle(const QWidget *w)
static unsigned numberOfInstantiations
void saveByTitle(QToolBox *)
void disableUnsavedChecks()
static unsigned numberOfInstantiations()
void ignoreWidget(const QWidget *)
VP1Serialise(qint32 version, IVP1System *sys=0)
static void decrementNumberOfInstantiations()
void warnUnsaved(const QObject *)
void widgetHandled(const QWidget *)
const QByteArray & result()
int count(std::string s, const std::string ®x)
count how many occurances of a regx are in a string