34 #include <tdeglobal.h> 35 #include <tdelocale.h> 39 #include "karambaapp.h" 40 #include "themefile.h" 41 #include "themelocale.h" 43 #include "meter_python.h" 47 long acceptDrops(
long widget)
49 karamba* currTheme = (karamba*)widget;
51 currTheme->setAcceptDrops(
true);
60 if (!PyArg_ParseTuple(args, (
char*)
"l", &widget))
62 if (!checkKaramba(widget))
64 return Py_BuildValue((
char*)
"l", acceptDrops(widget));
74 if (!PyArg_ParseTuple(args, (
char*)
"sssO:run", &name, &command, &icon, &lst) ||
75 lst == NULL || !PyList_Check(lst))
86 KService svc(n, c, i);
89 for (
int i = 0; i < PyList_Size(lst); i++)
91 l.append(PyString2TQString(PyList_GetItem(lst, i)));
94 return Py_BuildValue(
"l", 1);
102 if (!PyArg_ParseTuple(args, (
char*)
"O:execute", &s))
104 return Py_BuildValue((
char*)
"l", KRun::runCommand(PyString2TQString(s)));
122 if (! PyArg_ParseTuple(args, (
char*)
"lO!", &widget, &PyList_Type, &listObj))
124 if (!checkKaramba(widget))
127 karamba* currTheme = (karamba*)widget;
129 currTheme->currProcess =
new TDEProcess;
132 numLines = PyList_Size(listObj);
135 if (numLines < 0)
return NULL;
139 for (
int i=0; i<numLines; i++){
142 strObj = PyList_GetItem(listObj, i);
145 line = PyString2TQString(strObj);
148 *(currTheme->currProcess) << line;
151 TQApplication::connect(currTheme->currProcess,
152 TQ_SIGNAL(processExited(TDEProcess *)),
154 TQ_SLOT(processExited(TDEProcess *)));
155 TQApplication::connect(currTheme->currProcess,
156 TQ_SIGNAL(receivedStdout(TDEProcess *,
char *,
int)),
158 TQ_SLOT(receivedStdout(TDEProcess *,
char *,
int)));
159 currTheme->currProcess->start(TDEProcess::NotifyOnExit, TDEProcess::Stdout);
161 return Py_BuildValue((
char*)
"l", (
int)(currTheme->currProcess->pid()));
164 long attachClickArea(
long widget,
long meter, TQString LeftButton, TQString MiddleButton, TQString RightButton)
166 karamba* currTheme = (karamba*) widget;
167 Meter* currMeter = (Meter*) meter;
170 bool meterAlreadyClickable = currTheme->clickList->containsRef(currMeter);
173 if (ImageLabel* image = dynamic_cast<ImageLabel*>(currMeter))
175 image -> attachClickArea(LeftButton, MiddleButton, RightButton);
176 if (!meterAlreadyClickable)
179 currTheme -> clickList -> append(image);
183 else if (TextLabel* text = dynamic_cast<TextLabel*>(currMeter))
185 text -> attachClickArea(LeftButton, MiddleButton, RightButton);
186 if (!meterAlreadyClickable)
189 currTheme -> clickList -> append(text);
195 tqWarning(
"The given meter is not of type image or text");
205 char* LeftButton = NULL;
206 char* MiddleButton = NULL;
207 char* RightButton = NULL;
208 const char* mouseButtons[] = {
"Widget",
"Meter",
"LeftButton",
"MiddleButton",
209 "RightButton", NULL};
210 if (!PyArg_ParseTupleAndKeywords(args, dict, (
char*)
"ll|sss:attachClickArea",
211 (
char**)mouseButtons, &widget, &meter, &LeftButton, &MiddleButton, &RightButton))
213 if (!checkKaramba(widget))
216 if (LeftButton != NULL)
218 lB.setAscii(LeftButton);
224 if (MiddleButton != NULL)
226 mB.setAscii(MiddleButton);
232 if (RightButton != NULL)
234 rB.setAscii(RightButton);
240 return Py_BuildValue((
char*)
"l", attachClickArea(widget, meter, lB, mB, rB));
244 long toggleShowDesktop(
long)
254 if (!PyArg_ParseTuple(args, (
char*)
"l:toggleShowDesktop", &widget))
256 if (!checkKaramba(widget))
258 return Py_BuildValue((
char*)
"l", toggleShowDesktop(widget));
262 const char* getPrettyName(
long widget) {
263 karamba* currTheme = (karamba*)widget;
265 return currTheme->prettyName.ascii();
271 if (!PyArg_ParseTuple(args, (
char*)
"l:getPrettyThemeName", &widget))
273 return Py_BuildValue((
char*)
"s", getPrettyName(widget));
277 const char* getThemePath(
long widget) {
278 karamba* currTheme = (karamba*)widget;
280 return currTheme->theme().path().ascii();
286 if (!PyArg_ParseTuple(args, (
char*)
"l:getThemePath", &widget))
288 if (!checkKaramba(widget))
290 return Py_BuildValue((
char*)
"s", getThemePath(widget));
296 if (!PyArg_ParseTuple(args, (
char*)
"l:language", &widget))
298 if (!checkKaramba(widget))
300 return Py_BuildValue((
char*)
"s",
301 ((karamba*)widget)->theme().locale()->language().ascii());
307 if (!PyArg_ParseTuple(args, (
char*)
"l:language", &widget))
309 if (!checkKaramba(widget))
311 return Py_BuildValue((
char*)
"s", TDEGlobal::locale()->language().ascii());
317 if (!PyArg_ParseTuple(args, (
char*)
"l:language", &widget))
319 if (!checkKaramba(widget))
322 unsigned int noOfLangs = TDEGlobal::locale()->languageList().count();
324 PyObject *list, *item;
325 list = PyList_New(noOfLangs);
327 for(
unsigned int i = 0; i < noOfLangs; i++)
329 item = Py_BuildValue((
char*)
"s", TDEGlobal::locale()->languageList()[i].ascii());
330 PyList_SetItem(list, i, item);
340 if (!PyArg_ParseTuple(args, (
char*)
"ls:readThemeFile", &widget, &file))
342 if (!checkKaramba(widget))
344 karamba* k = (karamba*)widget;
345 TQByteArray ba = k->theme().readThemeFile(file);
346 return PyBytes_FromStringAndSize(ba.data(), ba.size());
350 long removeClickArea(
long widget,
long click) {
352 karamba* currTheme = (karamba*)widget;
355 currTheme -> clickList ->
remove(tmp);
362 long createServiceClickArea(
long widget,
long x,
long y,
long w,
long h,
char *name,
char* exec,
char *icon) {
364 karamba* currTheme = (karamba*)widget;
374 tmp->setServiceOnClick(n, e, i);
376 currTheme -> clickList -> append(tmp);
380 long createClickArea(
long widget,
long x,
long y,
long w,
long h,
char* text) {
382 karamba* currTheme = (karamba*)widget;
386 onclick.setAscii(text);
388 tmp->setOnClick(onclick );
390 currTheme -> clickList -> append(tmp);
397 if (!PyArg_ParseTuple(args, (
char*)
"ll:removeClickArea", &widget, &click))
399 return Py_BuildValue((
char*)
"l", removeClickArea(widget, click));
404 long widget, x, y, w, h;
408 if (!PyArg_ParseTuple(args, (
char*)
"lllllsss:createServiceClickArea", &widget, &x, &y,
409 &w, &h, &name, &exec, &icon))
411 return Py_BuildValue((
char*)
"l", createServiceClickArea(widget, x, y, w, h, name, exec, icon));
416 long widget, x, y, w, h;
418 if (!PyArg_ParseTuple(args, (
char*)
"llllls:createClickArea", &widget, &x, &y,
421 if (!checkKaramba(widget))
423 return Py_BuildValue((
char*)
"l", createClickArea(widget, x, y, w, h, text));
426 static long callTheme(
long widget,
char* path,
char *str)
428 karamba* currTheme = (karamba*) widget;
431 currTheme->callTheme(TQString(path), TQString(str));
433 return (
long)currTheme;
436 static long setIncomingData(
long widget,
char* path,
char *obj)
438 karamba* currTheme = (karamba*) widget;
441 currTheme->setIncomingData(TQString(path), TQString(obj));
443 return (
long)currTheme;
446 static TQString getIncomingData(
long widget)
448 karamba* currTheme = (karamba*) widget;
451 return currTheme->getIncomingData();
462 long openNamedTheme(
char* path,
char *name,
bool is_sub_theme) {
465 karamba* currTheme = 0;
467 filename.setAscii(path);
469 TQFileInfo file( filename );
473 TQCString prettyName(name);
474 KarambaApplication* app = (KarambaApplication*)tqApp;
475 if (!app->themeExists(prettyName))
477 currTheme =
new karamba( filename, prettyName,
false ,
482 return (
long)currTheme;
486 long openTheme(
char* path)
490 karamba* currTheme = 0;
492 filename.setAscii(path);
494 TQFileInfo file( filename );
498 currTheme =
new karamba( filename, TQString() );
502 return (
long)currTheme;
508 if (!PyArg_ParseTuple(args, (
char*)
"l:getIncomingData", &widget))
510 return Py_BuildValue((
char*)
"O", TQString2PyString(getIncomingData(widget)));
518 if (!PyArg_ParseTuple(args, (
char*)
"lss:setIncomingData", &widget, &themePath, &obj))
520 return Py_BuildValue((
char*)
"l", setIncomingData(widget, themePath, obj));
528 if (!PyArg_ParseTuple(args, (
char*)
"lss:callTheme", &widget, &themePath, &str))
530 return Py_BuildValue((
char*)
"l", callTheme(widget, themePath, str));
538 if (!PyArg_ParseTuple(args, (
char*)
"ssl:openNamedTheme", &themePath, &themeName, &is_sub_theme))
540 return Py_BuildValue((
char*)
"l", openNamedTheme(themePath, themeName, is_sub_theme ?
true :
false));
546 if (!PyArg_ParseTuple(args, (
char*)
"s:openTheme", &themePath))
548 return Py_BuildValue((
char*)
"l", openTheme(themePath));
554 if (!PyArg_ParseTuple(args, (
char*)
"l:reloadTheme", &widget))
556 if (!checkKaramba(widget))
558 ((karamba*)widget)->reloadConfig();
559 return Py_BuildValue((
char*)
"l", 1);
563 int getNumberOfDesktops(
long widget)
565 karamba* currTheme = (karamba*)widget;
567 return currTheme->kWinModule->numberOfDesktops();
573 if (!PyArg_ParseTuple(args, (
char*)
"l:getNumberOfDesktops", &widget))
575 if (!checkKaramba(widget))
577 return Py_BuildValue((
char*)
"l", getNumberOfDesktops(widget));
581 int translateAll(
long widget,
int x,
int y)
583 karamba* currTheme = (karamba*)widget;
585 TQObjectListIt it2( *currTheme->meterList );
589 ((Meter*) *it2)->setSize(((Meter*) *it2)->getX()+x,
590 ((Meter*) *it2)->getY()+y,
591 ((Meter*) *it2)->getWidth(),
592 ((Meter*) *it2)->getHeight());
596 if (currTheme->systray != 0)
598 currTheme->systray->move(currTheme->systray->x()+x,
599 currTheme->systray->y()+y);
608 if (!PyArg_ParseTuple(args, (
char*)
"lii:translateAll", &widget, &x, &y))
610 if (!checkKaramba(widget))
612 return Py_BuildValue((
char*)
"lii", translateAll(widget, x, y));
616 int show(
long widget)
618 karamba* currTheme = (karamba*)widget;
626 if (!PyArg_ParseTuple(args, (
char*)
"l:show", &widget))
628 if (!checkKaramba(widget))
630 return Py_BuildValue((
char*)
"l", show(widget));
634 int hide(
long widget)
636 karamba* currTheme = (karamba*)widget;
644 if (!PyArg_ParseTuple(args, (
char*)
"l:hide", &widget))
646 if (!checkKaramba(widget))
648 return Py_BuildValue((
char*)
"l", hide(widget));
652 #include <sys/socket.h> 653 #include <sys/ioctl.h> 655 #include <arpa/inet.h> 656 #if defined(__FreeBSD__) || defined(__DragonFly__) 657 #include <netinet/in.h> 659 #if defined(Q_OS_SOLARIS) 660 #include <sys/sockio.h> 663 TQString getIp(
char *device_name)
666 struct ifconf ifc_conf;
667 char ifc_conf_buf[
sizeof (
struct ifreq ) * 32];
668 struct ifreq *devptr;
669 int ifc_conf_buf_size;
670 static struct in_addr host;
673 retval =
"Disconnected";
679 if ((sd = socket(AF_INET,SOCK_DGRAM,0)) < 0)
681 tqWarning(
"Error: Unable to create socket (socket)");
689 ifc_conf_buf_size =
sizeof ifc_conf_buf;
690 ifc_conf.ifc_len = ifc_conf_buf_size;
691 ifc_conf.ifc_buf = ifc_conf_buf;
692 if (ioctl(sd,SIOCGIFCONF,&ifc_conf) < 0)
694 tqWarning(
"Error: Unable to get network interface conf (ioctl)");
703 numdevs = ifc_conf.ifc_len /
sizeof (
struct ifreq);
705 for (i = 0; i < numdevs; i++)
709 devptr = &ifc_conf.ifc_req[i];
711 if (ioctl(sd, SIOCGIFADDR, devptr) < 0 || devptr->ifr_addr.sa_family != AF_INET)
714 if (ioctl(sd,SIOCGIFFLAGS,devptr) < 0)
716 tqWarning(
"Error: Unable to get device interface flags (ioctl).");
722 if ((devptr->ifr_flags & IFF_LOOPBACK) != 0)
725 if ((devptr->ifr_flags & IFF_UP) == 0)
728 if ((devptr->ifr_flags & IFF_BROADCAST) == 0)
732 if (ioctl(sd,SIOCGIFFLAGS,devptr) < 0)
734 tqWarning(
"Error: Unable to get device interface flags (ioctl).");
740 if (!strcmp((
char*)devptr->ifr_name, device_name))
742 host.s_addr = ((
struct sockaddr_in*)&devptr->ifr_addr)->sin_addr.s_addr;
743 retval = inet_ntoa(host);
756 if (!PyArg_ParseTuple(args, (
char*)
"ld:setUpdateTime", &widget, &time))
758 karamba* currTheme = (karamba*)widget;
759 currTheme->setUpdateTime(time);
760 return Py_BuildValue((
char*)
"l", 1);
767 if (!PyArg_ParseTuple(args, (
char*)
"l:getUpdateTime", &widget, &time))
769 karamba* currTheme = (karamba*)widget;
770 return Py_BuildValue((
char*)
"d", currTheme->getUpdateTime());
777 if (!PyArg_ParseTuple(args, (
char*)
"ls:getIp", &widget, &interface))
779 if (!checkKaramba(widget))
781 return Py_BuildValue((
char*)
"O", TQString2PyString(getIp(interface)));
784 static void management_popup(
long widget)
786 karamba* currTheme = (karamba*)widget;
787 currTheme->management_popup();
793 if (!PyArg_ParseTuple(args, (
char*)
"l:managementPopup", &widget))
795 if (!checkKaramba(widget))
797 management_popup(widget);
798 return Py_BuildValue((
char*)
"l", 1);
801 static void set_want_right_button(
long widget,
long yesno)
803 karamba* currTheme = (karamba*)widget;
804 currTheme->setWantRightButton(yesno);
810 if (!PyArg_ParseTuple(args, (
char*)
"ll:setWantRightButton", &widget, &i))
812 if (!checkKaramba(widget))
814 set_want_right_button(widget, i);
815 return Py_BuildValue((
char*)
"l", 1);
818 static void set_want_wheel_event(
long widget,
long yesno)
820 karamba* currTheme = (karamba*)widget;
821 currTheme->setWantMeterWheelEvent(yesno);
827 if (!PyArg_ParseTuple(args, (
char*)
"ll:setWantMeterWheelEvent", &widget, &i))
829 if (!checkKaramba(widget))
831 set_want_wheel_event(widget, i);
832 return Py_BuildValue((
char*)
"l", 1);
835 static void changeInterval(
long widget,
long interval)
837 karamba* currTheme = (karamba*)widget;
838 currTheme->changeInterval(interval);
844 if (!PyArg_ParseTuple(args, (
char*)
"ll:changeInterval", &widget, &i))
846 if (!checkKaramba(widget))
848 changeInterval(widget, i);
849 return Py_BuildValue((
char*)
"l", 1);
PyObject * py_hide(PyObject *self, PyObject *args)
Misc/hide.
PyObject * py_reload_theme(PyObject *self, PyObject *args)
Misc/reloadTheme.
PyObject * py_get_theme_path(PyObject *self, PyObject *args)
Misc/getThemePath.
PyObject * py_show(PyObject *self, PyObject *args)
Misc/show.
PyObject * py_execute_command_interactive(PyObject *self, PyObject *args)
Misc/executeInteractive.
PyObject * py_attach_clickArea(PyObject *self, PyObject *args, PyObject *dict)
Misc/attachClickArea.
PyObject * py_management_popup(PyObject *self, PyObject *args)
Misc/managementPopup.
PyObject * py_remove_click_area(PyObject *self, PyObject *args)
Misc/removeClickArea.
PyObject * py_toggle_show_desktop(PyObject *self, PyObject *args)
Misc/toggleShowDesktop.
PyObject * py_get_ip(PyObject *self, PyObject *args)
Misc/getIp.
PyObject * py_get_update_time(PyObject *self, PyObject *args)
Misc/getUpdateTime.
PyObject * py_create_click_area(PyObject *self, PyObject *args)
Misc/createClickArea.
PyObject * py_set_incoming_data(PyObject *self, PyObject *args)
Misc/setIncomingData.
PyObject * py_userLanguages(PyObject *self, PyObject *args)
Misc/userLanguages.
PyObject * py_userLanguage(PyObject *self, PyObject *args)
Misc/userLanguage.
PyObject * py_change_interval(PyObject *self, PyObject *args)
Misc/changeInterval.
PyObject * py_set_update_time(PyObject *self, PyObject *args)
Misc/setUpdateTime.
These are global functions that are used to interpret certain Python calls.
PyObject * py_execute_command(PyObject *self, PyObject *args)
Misc/execute.
PyObject * py_run_command(PyObject *self, PyObject *args)
Misc/run.
PyObject * py_open_named_theme(PyObject *self, PyObject *args)
Misc/openNamedTheme.
Singleton class that handles desktop access (minimizing all windows)
PyObject * py_get_number_of_desktops(PyObject *self, PyObject *args)
Misc/getNumberOfDesktop.
PyObject * py_accept_drops(PyObject *self, PyObject *args)
Misc/acceptDrops.
PyObject * py_get_pretty_name(PyObject *self, PyObject *args)
Misc/getPrettyThemeName.
PyObject * py_want_right_button(PyObject *self, PyObject *args)
Misc/setWantRightButton.
PyObject * py_want_wheel_event(PyObject *, PyObject *args)
Misc/setWantMeterWheelEvent.
PyObject * py_open_theme(PyObject *self, PyObject *args)
Misc/openTheme.
PyObject * py_read_theme_file(PyObject *self, PyObject *args)
Misc/readThemeFile.
PyObject * py_create_service_click_area(PyObject *self, PyObject *args)
Misc/createServiceClickArea.
PyObject * py_language(PyObject *self, PyObject *args)
Misc/language.
PyObject * py_get_incoming_data(PyObject *self, PyObject *args)
Misc/getIncomingData.
PyObject * py_translate_all(PyObject *self, PyObject *args)
Misc/translateAll.
PyObject * py_call_theme(PyObject *self, PyObject *args)
Misc/callTheme.