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 (PyString_CheckExact(text))
98 char* t = PyString_AsString(text);
101 else if (PyUnicode_CheckExact(text))
103 Py_UNICODE* t = PyUnicode_AsUnicode(text);
104 if(
sizeof(Py_UNICODE) == 4)
105 qtext = fromUcs4((TQ_UINT32*)t);
107 qtext = TQString::fromUcs2((TQ_UINT16*)t);
117 PyObject* TQString2PyString(TQString
string)
121 const unsigned short* tmp =
string.ucs2();
126 #if Py_UNICODE_SIZE == 4
128 Py_UNICODE* buf =
new Py_UNICODE[
string.length()];
130 for(
unsigned int i = 0; i <
string.length(); i++)
138 Py_UNICODE* buf = (Py_UNICODE*) tmp;
142 pyString = PyUnicode_FromUnicode(buf,
string.length());
151 pyString = PyString_FromString(
"");
157 long getMeter(
long widget,
char* name)
159 karamba* theme = (karamba*)widget;
160 TQObjectListIt it( *theme->meterList );
164 if (strcmp(((Meter*) *it)->name(), name) == 0)
171 PyObject* py_getThemeMeter(PyObject *, PyObject *args, TQString type)
175 if (!PyArg_ParseTuple(args, (
char*)
"ls", &widget, &name))
177 if (!checkKaramba(widget))
181 meter = getMeter(widget, name);
182 if (!checkMeter(widget, meter, type.ascii()))
184 return (Py_BuildValue((
char*)
"l", meter));
187 PyObject* py_getSize(PyObject *, PyObject *args, TQString type)
191 if (!PyArg_ParseTuple(args, (
char*)
"ll", &widget, &meter))
193 if (!checkKarambaAndMeter(widget, meter, type.ascii()))
195 return Py_BuildValue((
char*)
"(i,i)", ((Meter*)meter)->getWidth(),
196 ((Meter*)meter)->getHeight());
199 PyObject* py_resize(PyObject *, PyObject *args, TQString type)
201 long widget, meter, x, y;
202 if (!PyArg_ParseTuple(args, (
char*)
"llll", &widget, &meter, &x, &y))
204 if (!checkKarambaAndMeter(widget, meter, type.ascii()))
206 ((Meter*)meter)->setSize(((Meter*)meter)->getX(), ((Meter*)meter)->getY(),
208 return Py_BuildValue((
char*)
"l", 1);
211 PyObject* py_getPos(PyObject *, PyObject *args, TQString type)
214 if (!PyArg_ParseTuple(args, (
char*)
"ll", &widget, &meter))
216 if (!checkKarambaAndMeter(widget, meter, type.ascii()))
218 return Py_BuildValue((
char*)
"(i,i)", ((Meter*)meter)->getX(),
219 ((Meter*)meter)->getY());
222 PyObject* py_move(PyObject *, PyObject *args, TQString type)
224 long widget, meter, x, y;
225 if (!PyArg_ParseTuple(args, (
char*)
"llll", &widget, &meter, &x, &y))
227 if (!checkKarambaAndMeter(widget, meter, type.ascii()))
229 ((Meter*)meter)->setSize(x, y,
230 ((Meter*)meter)->getWidth(),
231 ((Meter*)meter)->getHeight());
232 return Py_BuildValue((
char*)
"l", 1);
235 PyObject* py_hide(PyObject *, PyObject *args, TQString type)
238 if (!PyArg_ParseTuple(args, (
char*)
"ll", &widget, &meter))
240 if (!checkKarambaAndMeter(widget, meter, type.ascii()))
242 ((Meter*)meter)->hide();
243 return Py_BuildValue((
char*)
"l", 1);
246 PyObject* py_show(PyObject *, PyObject *args, TQString type)
249 if (!PyArg_ParseTuple(args, (
char*)
"ll", &widget, &meter))
251 if (!checkKarambaAndMeter(widget, meter, type.ascii()))
253 ((Meter*)meter)->show();
254 return Py_BuildValue((
char*)
"l", 1);
257 PyObject* py_getValue(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*)
"l", ((Meter*)meter)->getValue());
267 PyObject* py_setValue(PyObject *, PyObject *args, TQString type)
269 long widget, meter, l;
270 if (!PyArg_ParseTuple(args, (
char*)
"lll", &widget, &meter, &l))
272 if (!checkKarambaAndMeter(widget, meter, type.ascii()))
274 ((Meter*)meter)->setValue(l);
275 return Py_BuildValue((
char*)
"l", ((
long)meter));
278 PyObject* py_getStringValue(PyObject *, PyObject *args, TQString type)
281 if (!PyArg_ParseTuple(args, (
char*)
"ll", &widget, &meter))
283 if (!checkKarambaAndMeter(widget, meter, type.ascii()))
285 return Py_BuildValue((
char*)
"O",
286 TQString2PyString(((Meter*)meter)->getStringValue()));
289 PyObject* py_setStringValue(PyObject *, PyObject *args, TQString type)
293 if (!PyArg_ParseTuple(args, (
char*)
"llO", &widget, &meter, &s))
297 if (!checkKarambaAndMeter(widget, meter, type.ascii()))
299 ((Meter*)meter)->setValue(PyString2TQString(s));
300 return Py_BuildValue((
char*)
"l", ((
long)meter));
303 PyObject* py_getMinMax(PyObject *, PyObject *args, TQString type)
306 if (!PyArg_ParseTuple(args, (
char*)
"ll", &widget, &meter))
308 if (!checkKarambaAndMeter(widget, meter, type.ascii()))
310 return Py_BuildValue((
char*)
"(i,i)", ((Meter*)meter)->getMin(),
311 ((Meter*)meter)->getMax());
314 PyObject* py_setMinMax(PyObject *, PyObject *args, TQString type)
316 long widget, meter, x, y;
317 if (!PyArg_ParseTuple(args, (
char*)
"llll", &widget, &meter, &x, &y))
319 if (!checkKarambaAndMeter(widget, meter, type.ascii()))
321 ((Meter*)meter)->setMin(x);
322 ((Meter*)meter)->setMax(y);
323 return Py_BuildValue((
char*)
"l", 1);
326 PyObject* py_getSensor(PyObject *, PyObject *args, TQString type)
330 if (!PyArg_ParseTuple(args, (
char*)
"ll", &widget, &meter))
332 if (!checkKarambaAndMeter(widget, meter, type.ascii()))
334 return Py_BuildValue((
char*)
"s",
335 ((karamba*)widget)->getSensor((Meter*)meter).ascii());
338 PyObject* py_setSensor(PyObject *, PyObject *args, TQString type)
343 if (!PyArg_ParseTuple(args, (
char*)
"lls", &widget, &meter, &s))
345 if (!checkKarambaAndMeter(widget, meter, type.ascii()))
347 ((karamba*)widget)->setSensor(
LineParser(s), (Meter*)meter);
348 return Py_BuildValue((
char*)
"l", 1);
351 PyObject* py_setColor(PyObject *, PyObject *args, TQString type)
355 if (!PyArg_ParseTuple(args, (
char*)
"lllll", &widget, &meter, &r, &g, &b))
357 if (!checkKarambaAndMeter(widget, meter, type.ascii()))
359 ((Meter*)meter)->setColor(TQColor(r, g, b));
360 return Py_BuildValue((
char*)
"l", 1);
363 PyObject* py_getColor(PyObject *, PyObject *args, TQString type)
366 if (!PyArg_ParseTuple(args, (
char*)
"ll", &widget, &meter))
368 if (!checkKarambaAndMeter(widget, meter, type.ascii()))
370 TQColor color = ((Meter*)meter)->getColor();
371 return Py_BuildValue((
char*)
"(i,i,i)", color.red(), color.green(), color.blue());