23 #ifndef MCR_EXTRAS_SIGNAL_FUNCTIONS_H_ 24 #define MCR_EXTRAS_SIGNAL_FUNCTIONS_H_ 37 class SignalFunctionsPrivate;
42 friend class SignalFunctionsPrivate;
55 Q_INVOKABLE QVariant id(
const QString &name)
const;
57 Q_INVOKABLE QString name(
const QVariant &
id)
const;
59 Q_INVOKABLE
int modifierCount()
const;
60 Q_INVOKABLE
unsigned int modifier(
const QString &name)
const;
61 Q_INVOKABLE QString modifierName(
unsigned int mod)
const;
62 Q_INVOKABLE QStringList modifierNames()
const;
64 Q_INVOKABLE
int echoCount()
const;
65 Q_INVOKABLE
int echo(
const QString &name)
const;
66 Q_INVOKABLE QString echoName(
int echo)
const;
67 Q_INVOKABLE QStringList echoNames()
const;
69 Q_INVOKABLE
int keyCount()
const;
70 Q_INVOKABLE
int key(
const QString &name)
const;
71 Q_INVOKABLE QString keyName(
int code)
const;
72 Q_INVOKABLE QStringList keyNames()
const;
73 Q_INVOKABLE
unsigned int keyMod(
int code)
const;
78 return serializer(
id.value<size_t>());
80 void setSerializer(
size_t id,
SerSignal *(*serFnc)());
84 SignalFunctionsPrivate *_private;
87 class SerSignalPrivate;
90 friend class SerSignalPrivate;
98 typedef QVariant (*
get)(
const SerSignal &container);
99 typedef void (*
set)(
SerSignal &container,
const QVariant &value);
106 virtual size_t keyCount(
bool canonical)
const override;
107 virtual QString *keysArray(
bool canonical)
const override;
108 virtual QVariant value(
const QString &name)
const override;
109 virtual void setValue(
const QString &name,
const QVariant &val)
override;
111 virtual inline void setValueInterface(
mcr_ISignal *isigPt)
114 _valueInterface = isigPt;
117 virtual void setMaps(
const QString &key,
get fnGet,
set fnSet);
119 virtual void setMapsCanonical(
const QString &key,
get fnGet,
set fnSet);
121 virtual void setMapsGeneric(
const QString &key,
get fnGet,
set fnSet)
123 setMaps(key, fnGet, fnSet);
124 setMapsCanonical(key, fnGet, fnSet);
129 SerSignalPrivate *_private;
137 static QVariant echo(
const SerSignal &container)
139 return QVariant::fromValue<size_t>(container.empty() ? 0 :
142 static void setEcho(
SerSignal &container,
const QVariant &val)
144 container.mkdata().data<
mcr_HidEcho>()->echo = val.value<
size_t>();
146 static QVariant echoName(
const SerSignal &container);
147 static void setEchoName(
SerSignal &container,
const QVariant &val);
155 static QVariant key(
const SerSignal &container)
157 return container.empty() ? 0 : container.data<
mcr_Key>()->key;
159 static void setKey(
SerSignal &container,
const QVariant &val)
161 container.mkdata().data<
mcr_Key>()->key = val.toInt();
163 static QVariant applyType(
const SerSignal &container)
165 return container.empty() ? 0 : container.data<
mcr_Key>()->apply;
167 static void setApplyType(
SerSignal &container,
const QVariant &val)
169 container.mkdata().data<
mcr_Key>()->apply = static_cast<mcr_ApplyType>
172 static QVariant keyName(
const SerSignal &container);
173 static void setKeyName(
SerSignal &container,
const QVariant &val);
181 static QVariant modifiers(
const SerSignal &container)
183 return container.empty() ? 0 : container.data<
mcr_Modifier>()->modifiers;
185 static void setModifiers(
SerSignal &container,
const QVariant &val)
187 container.mkdata().data<
mcr_Modifier>()->modifiers = val.toUInt();
189 static QVariant applyType(
const SerSignal &container)
191 return container.empty() ? 0 : container.data<
mcr_Modifier>()->apply;
193 static void setApplyType(
SerSignal &container,
const QVariant &val)
195 container.mkdata().data<
mcr_Modifier>()->apply = static_cast<mcr_ApplyType>
205 static QVariant justify(
const SerSignal &container)
207 return container.empty() ?
false :
210 static void setJustify(
SerSignal &container,
const QVariant &val)
212 container.mkdata().data<
mcr_MoveCursor>()->justify_flag = val.toBool();
214 static QVariant x(
const SerSignal &container)
216 return container.empty() ? 0 : container.data<
mcr_MoveCursor>()->position[MCR_X];
218 static void setX(
SerSignal &container,
const QVariant &val)
220 container.mkdata().data<
mcr_MoveCursor>()->position[MCR_X] = val.toLongLong();
222 static QVariant y(
const SerSignal &container)
224 return container.empty() ? 0 : container.data<
mcr_MoveCursor>()->position[MCR_Y];
226 static void setY(
SerSignal &container,
const QVariant &val)
228 container.mkdata().data<
mcr_MoveCursor>()->position[MCR_Y] = val.toLongLong();
230 static QVariant z(
const SerSignal &container)
232 return container.empty() ? 0 : container.data<
mcr_MoveCursor>()->position[MCR_Z];
234 static void setZ(
SerSignal &container,
const QVariant &val)
236 container.mkdata().data<
mcr_MoveCursor>()->position[MCR_Z] = val.toLongLong();
245 static QVariant sec(
const SerSignal &container)
247 return container.empty() ? 0 : container.data<
mcr_NoOp>()->seconds;
249 static void setSec(
SerSignal &container,
const QVariant &val)
251 container.mkdata().data<
mcr_NoOp>()->seconds = val.toInt();
253 static QVariant msec(
const SerSignal &container)
255 return container.empty() ? 0 : container.data<
mcr_NoOp>()->milliseconds;
257 static void setMsec(
SerSignal &container,
const QVariant &val)
259 container.mkdata().data<
mcr_NoOp>()->milliseconds = val.toInt();
268 static QVariant x(
const SerSignal &container)
270 return container.empty() ? 0 : container.data<
mcr_Scroll>()->dimensions[MCR_X];
272 static void setX(
SerSignal &container,
const QVariant &val)
274 container.mkdata().data<
mcr_Scroll>()->dimensions[MCR_X] = val.toLongLong();
276 static QVariant y(
const SerSignal &container)
278 return container.empty() ? 0 : container.data<
mcr_Scroll>()->dimensions[MCR_Y];
280 static void setY(
SerSignal &container,
const QVariant &val)
282 container.mkdata().data<
mcr_Scroll>()->dimensions[MCR_Y] = val.toLongLong();
284 static QVariant z(
const SerSignal &container)
286 return container.empty() ? 0 : container.data<
mcr_Scroll>()->dimensions[MCR_Z];
288 static void setZ(
SerSignal &container,
const QVariant &val)
290 container.mkdata().data<
mcr_Scroll>()->dimensions[MCR_Z] = val.toLongLong();
299 static QVariant cryptic(
const SerSignal &container)
301 return container.empty() ?
false : container.data<
ICommand>()->cryptic();
303 static void setCryptic(
SerSignal &container,
const QVariant &val)
305 container.mkdata().data<
ICommand>()->setCryptic(val.toBool());
307 static QVariant file(
const SerSignal &container)
309 return QString::fromStdString(container.empty() ?
"" :
310 *container.data<
ICommand>()->file());
312 static void setFile(
SerSignal &container,
const QVariant &val)
314 QString f = val.toString();
315 container.mkdata().data<
ICommand>()->setFile(f.toUtf8().constData());
317 static QVariant args(
const SerSignal &container);
318 static void setArgs(
SerSignal &container,
const QVariant &val);
326 static QVariant type(
const SerSignal &container)
328 return container.empty() ? 0 : container.data<
IInterrupt>()->type();
330 static void setType(
SerSignal &container,
const QVariant &val)
332 container.mkdata().data<
IInterrupt>()->setType(val.toInt());
334 static QVariant target(
const SerSignal &container)
336 return container.empty() ?
"" : container.data<
IInterrupt>()->target();
338 static void setTarget(
SerSignal &container,
const QVariant &val)
340 QString t = val.toString();
341 container.mkdata().data<
IInterrupt>()->setTarget(t.toUtf8().constData());
350 static QVariant cryptic(
const SerSignal &container)
352 return container.empty() ?
false : container.data<
IStringKey>()->cryptic();
354 static void setCryptic(
SerSignal &container,
const QVariant &val)
356 container.mkdata().data<
IStringKey>()->setCryptic(val.toBool());
358 static QVariant sec(
const SerSignal &container)
360 return container.empty() ? 0 : container.data<
IStringKey>()->seconds();
362 static void setSec(
SerSignal &container,
const QVariant &val)
364 container.mkdata().data<
IStringKey>()->setSeconds(val.toInt());
366 static QVariant msec(
const SerSignal &container)
368 return container.empty() ? 0 : container.data<
IStringKey>()->milliseconds();
370 static void setMsec(
SerSignal &container,
const QVariant &val)
372 container.mkdata().data<
IStringKey>()->setMilliseconds(val.toInt());
374 static QVariant text(
const SerSignal &container)
376 return QString::fromStdString(container.empty() ?
"" :
379 static void setText(
SerSignal &container,
const QVariant &val)
381 QString f = val.toString();
382 container.mkdata().data<
IStringKey>()->setText(f.toUtf8().constData());
#define mcr_throwif(condition, errorNumber)
Command - Execute a shell command, similar to execvp, with restrictions and without closing current p...
StringKey - Turn a text string into a set of signals, such as a key press
Libmacro, by Jonathan Pelletier, New Paradigm Software. Alpha version.
Get/Set all values of an object.