cctw  0.2.1
cctwunitcellproperty.cpp
Go to the documentation of this file.
1 #include "cctwunitcellproperty.h"
2 #include "qcepmutexlocker.h"
3 #include "qcepdebug.h"
4 #include "qcepsettingssaver.h"
5 #include <QScriptEngine>
6 
7 CctwUnitCellProperty::CctwUnitCellProperty(QcepSettingsSaverWPtr saver,
8  QObject *parent,
9  const char *name,
10  CctwUnitCell value,
11  QString toolTip) :
12  QcepProperty(saver, parent, name, toolTip),
13  m_Default(value),
14  m_Value(value)
15 {
16 }
17 
19  QcepSettingsSaverWPtr saver,
20  QObject *parent,
21  const char *name,
22  double a, double b, double c,
23  double alpha, double beta, double gamma,
24  QString toolTip) :
25  QcepProperty(saver, parent, name, toolTip),
26  m_Default(CctwUnitCell(a,b,c,alpha,beta,gamma)),
27  m_Value(CctwUnitCell(a,b,c,alpha,beta,gamma))
28 {
29 }
30 
32 {
33  qRegisterMetaType< CctwUnitCell >("CctwUnitCell");
34 
35  qRegisterMetaTypeStreamOperators< CctwUnitCell >("CctwUnitCell");
36 
37  registerCustomSaver("CctwUnitCell", CctwUnitCell::customSaver);
38 }
39 
41 {
42  QcepMutexLocker lock(__FILE__, __LINE__, &m_Mutex);
43 
44  return m_Value;
45 }
46 
48 {
49  QcepMutexLocker lock(__FILE__, __LINE__, &m_Mutex);
50 
51  return m_Default;
52 }
53 
55 {
56  if (debug()) {
57  printMessage(tr("%1 CctwqtUnitCellProperty::setValue(CctwUnitCell %2, int %3) [%4]")
58  .arg(name()).arg(toString(val)).arg(index).arg(this->index()));
59  }
60 
61  if (index == this->index()) {
62  setValue(val);
63  }
64 }
65 
67 {
68  QcepMutexLocker lock(__FILE__, __LINE__, &m_Mutex);
69 
70  QString res = tr("[ %1 %2 %3 %4 %5 %6 ]").arg(val.a()).arg(val.b()).arg(val.c())
71  .arg(val.alpha()).arg(val.beta()).arg(val.gamma());
72 
73  return res;
74 }
75 
77 {
78  QcepMutexLocker lock(__FILE__, __LINE__, &m_Mutex);
79 
80  if (qcepDebug(DEBUG_PROPERTIES)) {
81  printMessage(tr("%1 CctwqtUnitCellProperty::setValue(CctwUnitCell %2)")
82  .arg(name()).arg(toString(val)));
83  }
84 
85  if (val != m_Value) {
86  if (debug()) {
87  printMessage(tr("%1: CctwqtUnitCellProperty::setValue(CctwUnitCell %2) [%3]")
88  .arg(name()).arg(toString(val)).arg(index()));
89  }
90 
91  m_Value = val;
92 
93  QcepSettingsSaverPtr saver(m_Saver);
94 
95  if (saver) {
96  saver->changed(this);
97  }
98 
99  emit valueChanged(m_Value, incIndex(1));
100  }
101 }
102 
104 {
105  QcepMutexLocker lock(__FILE__, __LINE__, &m_Mutex);
106 
107  m_Default = val;
108 }
109 
111 {
112  if (qcepDebug(DEBUG_PROPERTIES)) {
113  printMessage(tr("%1: CctwqtUnitCellProperty::resetValue").arg(name()));
114  }
115 
117 }
118 
119 #ifndef QT_NO_DATASTREAM
120 
121 QDataStream &operator<<(QDataStream &stream, const CctwUnitCell &cell)
122 {
123  stream << cell.a();
124  stream << cell.b();
125  stream << cell.c();
126  stream << cell.alpha();
127  stream << cell.beta();
128  stream << cell.gamma();
129 
130  return stream;
131 }
132 
133 QDataStream &operator>>(QDataStream &stream, CctwUnitCell &cell)
134 {
135  stream >> cell.a();
136  stream >> cell.b();
137  stream >> cell.c();
138  stream >> cell.alpha();
139  stream >> cell.beta();
140  stream >> cell.gamma();
141 
142  return stream;
143 }
144 
145 #endif
146 
147 QScriptValue CctwUnitCellProperty::toScriptValue(QScriptEngine *engine, const CctwUnitCell &cell)
148 {
149  QScriptValue obj = engine->newArray(6);
150 
151  obj.setProperty(0, cell.a());
152  obj.setProperty(1, cell.b());
153  obj.setProperty(2, cell.c());
154  obj.setProperty(3, cell.alpha());
155  obj.setProperty(4, cell.beta());
156  obj.setProperty(5, cell.gamma());
157 
158  return obj;
159 }
160 
161 void CctwUnitCellProperty::fromScriptValue(const QScriptValue &obj, CctwUnitCell &cell)
162 {
163  cell.a() = obj.property(0).toNumber();
164  cell.b() = obj.property(1).toNumber();
165  cell.c() = obj.property(2).toNumber();
166  cell.alpha() = obj.property(3).toNumber();
167  cell.beta() = obj.property(4).toNumber();
168  cell.gamma() = obj.property(5).toNumber();
169 }
void setDefaultValue(CctwUnitCell val)
double beta() const
double b() const
QDataStream & operator<<(QDataStream &stream, const CctwUnitCell &cell)
CctwUnitCellProperty(QcepSettingsSaverWPtr saver, QObject *parent, const char *name, CctwUnitCell value, QString toolTip)
double a() const
QString toString(const CctwUnitCell &mat)
double alpha() const
void valueChanged(CctwUnitCell val, int index)
static QScriptValue toScriptValue(QScriptEngine *engine, const CctwUnitCell &cell)
CctwUnitCell defaultValue() const
void setValue(CctwUnitCell val, int index)
QDataStream & operator>>(QDataStream &stream, CctwUnitCell &cell)
double gamma() const
static void customSaver(const QVariant &val, QSettings *settings, QString name)
CctwUnitCell value() const
static void fromScriptValue(const QScriptValue &obj, CctwUnitCell &cell)
double c() const