18 #include "karambaapp.h" 20 #include "meter_python.h" 21 #include "lineparser.h" 23 bool checkKaramba(
long widget)
34 PyErr_SetString(PyExc_ValueError,
"widget pointer was 0.");
37 if (!karambaApp->hasKaramba((karamba*)widget))
41 tmp.sprintf(
"no %x widget found.", (
unsigned int)widget);
42 PyErr_SetString(PyExc_ValueError, tmp.ascii());
48 bool checkMeter(
long widget,
long meter,
const char* type)
52 PyErr_SetString(PyExc_ValueError,
"meter pointer was 0.");
55 if (!((karamba*)widget)->hasMeter((Meter*)meter))
59 tmp.sprintf(
"widget does not have meter %x.", (
unsigned int)meter);
60 PyErr_SetString(PyExc_ValueError, tmp.ascii());
63 if (!((TQObject*)meter)->isA(type))
67 tmp.sprintf(
"meter is not type of %s.", type);
68 PyErr_SetString(PyExc_TypeError, tmp.ascii());
74 bool checkKarambaAndMeter(
long widget,
long meter,
const char* type)
76 return checkKaramba(widget) && checkMeter(widget, meter, type);
81 TQString fromUcs4(TQ_UINT32* ucs4)
86 result += TQChar((TQ_UINT16)*ucs4);
93 TQString PyString2TQString(PyObject* text)
96 if (PyBytes_CheckExact(text))
98 char* t = PyBytes_AsString(text);
101 else if (PyUnicode_CheckExact(text))
103 int uniSize = PyUnicode_KIND(text);
104 if (uniSize == PyUnicode_4BYTE_KIND)
105 qtext = fromUcs4((TQ_UINT32*)PyUnicode_4BYTE_DATA(text));
106 else if (uniSize == PyUnicode_2BYTE_KIND)
107 qtext = TQString::fromUcs2((TQ_UINT16*)PyUnicode_2BYTE_DATA(text));
108 else if (uniSize == PyUnicode_1BYTE_KIND)
109 qtext.setAscii((
char*)PyUnicode_1BYTE_DATA(text));
119 PyObject* TQString2PyString(TQString
string)
123 const unsigned short* tmp =
string.ucs2();
127 pyString = PyUnicode_FromKindAndData(PyUnicode_2BYTE_KIND, tmp,
string.length());
130 pyString = PyBytes_FromString(
"");
136 long getMeter(
long widget,
char* name)
138 karamba* theme = (karamba*)widget;
139 TQObjectListIt it( *theme->meterList );
143 if (strcmp(((Meter*) *it)->name(), name) == 0)
150 PyObject* py_getThemeMeter(PyObject *, PyObject *args, TQString type)
154 if (!PyArg_ParseTuple(args, (
char*)
"ls", &widget, &name))
156 if (!checkKaramba(widget))
160 meter = getMeter(widget, name);
161 if (!checkMeter(widget, meter, type.ascii()))
163 return (Py_BuildValue((
char*)
"l", meter));
166 PyObject* py_getSize(PyObject *, PyObject *args, TQString type)
170 if (!PyArg_ParseTuple(args, (
char*)
"ll", &widget, &meter))
172 if (!checkKarambaAndMeter(widget, meter, type.ascii()))
174 return Py_BuildValue((
char*)
"(i,i)", ((Meter*)meter)->getWidth(),
175 ((Meter*)meter)->getHeight());
178 PyObject* py_resize(PyObject *, PyObject *args, TQString type)
180 long widget, meter, x, y;
181 if (!PyArg_ParseTuple(args, (
char*)
"llll", &widget, &meter, &x, &y))
183 if (!checkKarambaAndMeter(widget, meter, type.ascii()))
185 ((Meter*)meter)->setSize(((Meter*)meter)->getX(), ((Meter*)meter)->getY(),
187 return Py_BuildValue((
char*)
"l", 1);
190 PyObject* py_getPos(PyObject *, PyObject *args, TQString type)
193 if (!PyArg_ParseTuple(args, (
char*)
"ll", &widget, &meter))
195 if (!checkKarambaAndMeter(widget, meter, type.ascii()))
197 return Py_BuildValue((
char*)
"(i,i)", ((Meter*)meter)->getX(),
198 ((Meter*)meter)->getY());
201 PyObject* py_move(PyObject *, PyObject *args, TQString type)
203 long widget, meter, x, y;
204 if (!PyArg_ParseTuple(args, (
char*)
"llll", &widget, &meter, &x, &y))
206 if (!checkKarambaAndMeter(widget, meter, type.ascii()))
208 ((Meter*)meter)->setSize(x, y,
209 ((Meter*)meter)->getWidth(),
210 ((Meter*)meter)->getHeight());
211 return Py_BuildValue((
char*)
"l", 1);
214 PyObject*
py_hide(PyObject *, PyObject *args, TQString type)
217 if (!PyArg_ParseTuple(args, (
char*)
"ll", &widget, &meter))
219 if (!checkKarambaAndMeter(widget, meter, type.ascii()))
221 ((Meter*)meter)->hide();
222 return Py_BuildValue((
char*)
"l", 1);
225 PyObject*
py_show(PyObject *, PyObject *args, TQString type)
228 if (!PyArg_ParseTuple(args, (
char*)
"ll", &widget, &meter))
230 if (!checkKarambaAndMeter(widget, meter, type.ascii()))
232 ((Meter*)meter)->show();
233 return Py_BuildValue((
char*)
"l", 1);
236 PyObject* py_getValue(PyObject *, PyObject *args, TQString type)
239 if (!PyArg_ParseTuple(args, (
char*)
"ll", &widget, &meter))
241 if (!checkKarambaAndMeter(widget, meter, type.ascii()))
243 return Py_BuildValue((
char*)
"l", ((Meter*)meter)->getValue());
246 PyObject* py_setValue(PyObject *, PyObject *args, TQString type)
248 long widget, meter, l;
249 if (!PyArg_ParseTuple(args, (
char*)
"lll", &widget, &meter, &l))
251 if (!checkKarambaAndMeter(widget, meter, type.ascii()))
253 ((Meter*)meter)->setValue(l);
254 return Py_BuildValue((
char*)
"l", ((
long)meter));
257 PyObject* py_getStringValue(PyObject *, PyObject *args, TQString type)
260 if (!PyArg_ParseTuple(args, (
char*)
"ll", &widget, &meter))
262 if (!checkKarambaAndMeter(widget, meter, type.ascii()))
264 return Py_BuildValue((
char*)
"O",
265 TQString2PyString(((Meter*)meter)->getStringValue()));
268 PyObject* py_setStringValue(PyObject *, PyObject *args, TQString type)
272 if (!PyArg_ParseTuple(args, (
char*)
"llO", &widget, &meter, &s))
276 if (!checkKarambaAndMeter(widget, meter, type.ascii()))
278 ((Meter*)meter)->setValue(PyString2TQString(s));
279 return Py_BuildValue((
char*)
"l", ((
long)meter));
282 PyObject* py_getMinMax(PyObject *, PyObject *args, TQString type)
285 if (!PyArg_ParseTuple(args, (
char*)
"ll", &widget, &meter))
287 if (!checkKarambaAndMeter(widget, meter, type.ascii()))
289 return Py_BuildValue((
char*)
"(i,i)", ((Meter*)meter)->getMin(),
290 ((Meter*)meter)->getMax());
293 PyObject* py_setMinMax(PyObject *, PyObject *args, TQString type)
295 long widget, meter, x, y;
296 if (!PyArg_ParseTuple(args, (
char*)
"llll", &widget, &meter, &x, &y))
298 if (!checkKarambaAndMeter(widget, meter, type.ascii()))
300 ((Meter*)meter)->setMin(x);
301 ((Meter*)meter)->setMax(y);
302 return Py_BuildValue((
char*)
"l", 1);
305 PyObject* py_getSensor(PyObject *, PyObject *args, TQString type)
309 if (!PyArg_ParseTuple(args, (
char*)
"ll", &widget, &meter))
311 if (!checkKarambaAndMeter(widget, meter, type.ascii()))
313 return Py_BuildValue((
char*)
"s",
314 ((karamba*)widget)->getSensor((Meter*)meter).ascii());
317 PyObject* py_setSensor(PyObject *, PyObject *args, TQString type)
322 if (!PyArg_ParseTuple(args, (
char*)
"lls", &widget, &meter, &s))
324 if (!checkKarambaAndMeter(widget, meter, type.ascii()))
326 ((karamba*)widget)->setSensor(
LineParser(s), (Meter*)meter);
327 return Py_BuildValue((
char*)
"l", 1);
330 PyObject* py_setColor(PyObject *, PyObject *args, TQString type)
334 if (!PyArg_ParseTuple(args, (
char*)
"lllll", &widget, &meter, &r, &g, &b))
336 if (!checkKarambaAndMeter(widget, meter, type.ascii()))
338 ((Meter*)meter)->setColor(TQColor(r, g, b));
339 return Py_BuildValue((
char*)
"l", 1);
342 PyObject* py_getColor(PyObject *, PyObject *args, TQString type)
345 if (!PyArg_ParseTuple(args, (
char*)
"ll", &widget, &meter))
347 if (!checkKarambaAndMeter(widget, meter, type.ascii()))
349 TQColor color = ((Meter*)meter)->getColor();
350 return Py_BuildValue((
char*)
"(i,i,i)", color.red(), color.green(), color.blue());
PyObject * py_hide(PyObject *self, PyObject *args)
Misc/hide.
PyObject * py_show(PyObject *self, PyObject *args)
Misc/show.