26 #if defined(_XOPEN_SOURCE) && !defined(__SUNPRO_CC)
54 #include "../karamba.h"
55 #include "../systemtray.h"
62 currTheme->setAcceptDrops(
true);
71 if (!PyArg_ParseTuple(args, (
char*)
"l", &widget))
75 return Py_BuildValue((
char*)
"l",
acceptDrops(widget));
85 if (!PyArg_ParseTuple(args, (
char*)
"sssO:run", &name, &command, &icon, &lst) ||
86 lst == NULL || !PyList_Check(lst))
93 n = QString::fromAscii(name);
94 c = QString::fromAscii(command);
95 i = QString::fromAscii(icon);
97 KService svc(n, c, i);
100 for (
int i = 0; i < PyList_Size(lst); i++) {
103 KRun::run(svc, l, 0);
104 return Py_BuildValue(
"l", 1);
112 if (!PyArg_ParseTuple(args, (
char*)
"O:execute", &s))
132 if (! PyArg_ParseTuple(args, (
char*)
"lO!", &widget, &PyList_Type, &listObj))
139 K3Process *currProcess =
new K3Process;
143 numLines = PyList_Size(listObj);
146 if (numLines < 0)
return NULL;
150 for (
int i = 0; i < numLines; i++) {
153 strObj = PyList_GetItem(listObj, i);
159 *(currProcess) << line;
162 QApplication::connect(currProcess,
163 SIGNAL(processExited(K3Process*)),
165 SLOT(processExited(K3Process*)));
166 QApplication::connect(currProcess,
167 SIGNAL(receivedStdout(K3Process*,
char*,
int)),
169 SLOT(receivedStdout(K3Process*,
char*,
int)));
170 currProcess->start(K3Process::NotifyOnExit, K3Process::Stdout);
172 return Py_BuildValue((
char*)
"l", (
int)(currProcess->pid()));
175 long attachClickArea(
long widget,
long meter, QString LeftButton, QString MiddleButton, QString RightButton)
182 if (
ImageLabel* image = dynamic_cast<ImageLabel*>(currMeter)) {
183 image->attachClickArea(LeftButton, MiddleButton, RightButton);
184 image->allowClick(
true);
187 else if (
TextLabel* text = dynamic_cast<TextLabel*>(currMeter)) {
188 text->attachClickArea(LeftButton, MiddleButton, RightButton);
189 text->allowClick(
true);
192 qWarning(
"The given meter is not of type image or text");
202 char* LeftButton = NULL;
203 char* MiddleButton = NULL;
204 char* RightButton = NULL;
205 const char*
const mouseButtons[] = {
"Widget",
"Meter",
"LeftButton",
"MiddleButton",
208 if (!PyArg_ParseTupleAndKeywords(args, dict, (
char*)
"ll|sss:attachClickArea",
209 (
char**)mouseButtons, &widget, &meter, &LeftButton, &MiddleButton, &RightButton))
214 if (LeftButton != NULL) {
215 lB = QString::fromAscii(LeftButton);
217 lB = QString::fromAscii(
"");
219 if (MiddleButton != NULL) {
220 mB = QString::fromAscii(MiddleButton);
222 mB = QString::fromAscii(
"");
224 if (RightButton != NULL) {
225 rB = QString::fromAscii(RightButton);
227 rB = QString::fromAscii(
"");
229 return Py_BuildValue((
char*)
"l",
attachClickArea(widget, meter, lB, mB, rB));
243 if (!PyArg_ParseTuple(args, (
char*)
"l:toggleShowDesktop", &widget))
255 return currTheme->
prettyName().toAscii().constData();
261 if (!PyArg_ParseTuple(args, (
char*)
"l:getPrettyThemeName", &widget))
270 return currTheme->
theme().
path().toAscii().constData();
276 if (!PyArg_ParseTuple(args, (
char*)
"l:getThemePath", &widget))
286 if (!PyArg_ParseTuple(args, (
char*)
"l:language", &widget))
290 return Py_BuildValue((
char*)
"s",
291 ((
Karamba*)widget)->theme().locale()->language().toAscii().constData());
297 if (!PyArg_ParseTuple(args, (
char*)
"l:language", &widget))
301 return Py_BuildValue((
char*)
"s", KGlobal::locale()->language().toAscii().constData());
307 if (!PyArg_ParseTuple(args, (
char*)
"l:language", &widget))
312 unsigned int noOfLangs = KGlobal::locale()->languageList().count();
315 list = PyList_New(noOfLangs);
317 for (
unsigned int i = 0; i < noOfLangs; i++) {
318 item = Py_BuildValue((
char*)
"s", KGlobal::locale()->languageList()[i].toAscii().constData());
319 PyList_SetItem(list, i, item);
329 if (!PyArg_ParseTuple(args, (
char*)
"ls:readThemeFile", &widget, &file))
335 return PyString_FromStringAndSize(ba.data(), ba.size());
346 return (
long)currMeter;
358 n = QString::fromAscii(name);
359 e = QString::fromAscii(exec);
360 i = QString::fromAscii(icon);
373 onclick = QString::fromAscii(text);
383 if (!PyArg_ParseTuple(args, (
char*)
"ll:removeClickArea", &widget, &click))
390 long widget, x, y, w, h;
394 if (!PyArg_ParseTuple(args, (
char*)
"lllllsss:createServiceClickArea", &widget, &x, &y,
395 &w, &h, &name, &exec, &icon))
402 long widget, x, y, w, h;
404 if (!PyArg_ParseTuple(args, (
char*)
"llllls:createClickArea", &widget, &x, &y,
409 return Py_BuildValue((
char*)
"l",
createClickArea(widget, x, y, w, h, text));
412 static long callTheme(
long widget,
char* path,
char *str)
419 return (
long)currTheme;
426 currTheme->
sendData(QString(path), QString(obj));
428 return (
long)currTheme;
453 filename = QString::fromAscii(path);
455 QFileInfo file(filename);
461 newTheme =
new Karamba(KUrl(filename), 0, -1, is_sub_theme);
466 return (
long)newTheme;
476 filename = QString::fromAscii(path);
478 QFileInfo file(filename);
481 newTheme =
new Karamba(KUrl(filename));
485 return (
long)newTheme;
491 if (!PyArg_ParseTuple(args, (
char*)
"l:getIncomingData", &widget))
501 if (!PyArg_ParseTuple(args, (
char*)
"lss:setIncomingData", &widget, &themePath, &obj))
503 return Py_BuildValue((
char*)
"l",
setIncomingData(widget, themePath, obj));
511 if (!PyArg_ParseTuple(args, (
char*)
"lss:callTheme", &widget, &themePath, &str))
513 return Py_BuildValue((
char*)
"l",
callTheme(widget, themePath, str));
521 if (!PyArg_ParseTuple(args, (
char*)
"ssl:openNamedTheme", &themePath, &themeName, &is_sub_theme))
523 return Py_BuildValue((
char*)
"l",
openNamedTheme(themePath, themeName, is_sub_theme ?
true :
false));
529 if (!PyArg_ParseTuple(args, (
char*)
"s:openTheme", &themePath))
531 return Py_BuildValue((
char*)
"l",
openTheme(themePath));
537 if (!PyArg_ParseTuple(args, (
char*)
"l:reloadTheme", &widget))
541 ((
Karamba*)widget)->reloadConfig();
542 return Py_BuildValue((
char*)
"l", 1);
556 if (!PyArg_ParseTuple(args, (
char*)
"l:getNumberOfDesktops", &widget))
592 if (!PyArg_ParseTuple(args, (
char*)
"lii:translateAll", &widget, &x, &y))
596 return Py_BuildValue((
char*)
"lii",
translateAll(widget, x, y));
610 if (!PyArg_ParseTuple(args, (
char*)
"l:show", &widget))
614 return Py_BuildValue((
char*)
"l",
show(widget));
628 if (!PyArg_ParseTuple(args, (
char*)
"l:hide", &widget))
632 return Py_BuildValue((
char*)
"l",
hide(widget));
636 #include <sys/socket.h>
637 #include <sys/ioctl.h>
639 #include <arpa/inet.h>
640 #if defined(__FreeBSD__) || defined(__DragonFly__)
641 #include <netinet/in.h>
644 #include <sys/types.h>
645 #include <netinet/in.h>
647 #if defined(Q_OS_SOLARIS)
648 #include <sys/sockio.h>
654 struct ifconf ifc_conf;
655 char ifc_conf_buf[
sizeof(
struct ifreq) * 32];
656 struct ifreq *devptr;
657 int ifc_conf_buf_size;
658 static struct in_addr host;
661 retval =
"Disconnected";
667 if ((sd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
668 qWarning(
"Error: Unable to create socket (socket)");
676 ifc_conf_buf_size =
sizeof ifc_conf_buf;
677 ifc_conf.ifc_len = ifc_conf_buf_size;
678 ifc_conf.ifc_buf = ifc_conf_buf;
679 if (ioctl(sd, SIOCGIFCONF, &ifc_conf) < 0) {
680 qWarning(
"Error: Unable to get network interface conf (ioctl)");
689 numdevs = ifc_conf.ifc_len /
sizeof(
struct ifreq);
691 for (i = 0; i < numdevs; i++) {
694 devptr = &ifc_conf.ifc_req[i];
696 if (ioctl(sd, SIOCGIFADDR, devptr) < 0 || devptr->ifr_addr.sa_family != AF_INET)
699 if (ioctl(sd, SIOCGIFFLAGS, devptr) < 0) {
700 qWarning(
"Error: Unable to get device interface flags (ioctl).");
706 if ((devptr->ifr_flags & IFF_LOOPBACK) != 0)
709 if ((devptr->ifr_flags & IFF_UP) == 0)
712 if ((devptr->ifr_flags & IFF_BROADCAST) == 0)
716 if (ioctl(sd, SIOCGIFFLAGS, devptr) < 0) {
717 qWarning(
"Error: Unable to get device interface flags (ioctl).");
721 if (!strcmp((
char*)devptr->ifr_name, device_name)) {
722 host.s_addr = ((
struct sockaddr_in*) & devptr->ifr_addr)->sin_addr.s_addr;
723 retval = inet_ntoa(host);
736 if (!PyArg_ParseTuple(args, (
char*)
"ld:setUpdateTime", &widget, &time))
740 return Py_BuildValue((
char*)
"l", 1);
747 if (!PyArg_ParseTuple(args, (
char*)
"l:getUpdateTime", &widget, &time))
750 return Py_BuildValue((
char*)
"d", currTheme->
getUpdateTime());
757 if (!PyArg_ParseTuple(args, (
char*)
"ls:getIp", &widget, &interface))
773 if (!PyArg_ParseTuple(args, (
char*)
"l:managementPopup", &widget))
778 return Py_BuildValue((
char*)
"l", 1);
790 if (!PyArg_ParseTuple(args, (
char*)
"ll:wantRightButton", &widget, &i))
795 return Py_BuildValue((
char*)
"l", 1);
808 if (!PyArg_ParseTuple(args, (
char*)
"ll:changeInterval", &widget, &i))
813 return Py_BuildValue((
char*)
"l", 1);
PyObject * py_reload_theme(PyObject *, PyObject *args)
Misc/reloadTheme.
static long callTheme(long widget, char *path, char *str)
static ShowDesktop * self()
PyObject * py_execute_command_interactive(PyObject *, PyObject *args)
Misc/executeInteractive.
These are global functions that are used to interpret certain Python calls.
PyObject * py_open_theme(PyObject *, PyObject *args)
Misc/openTheme.
QString PyString2QString(PyObject *text)
long createServiceClickArea(long widget, long x, long y, long w, long h, char *name, char *exec, char *icon)
PyObject * py_userLanguages(PyObject *, PyObject *args)
Misc/userLanguages.
void popupGlobalMenu() const
PyObject * py_userLanguage(PyObject *, PyObject *args)
Misc/language.
QString prettyName() const
static void management_popup(long widget)
PyObject * py_set_update_time(PyObject *, PyObject *args)
Misc/setUpdateTime.
long openNamedTheme(char *path, char *name, bool is_sub_theme)
PyObject * py_hide(PyObject *, PyObject *args)
Misc/hide.
PyObject * py_management_popup(PyObject *, PyObject *args)
Misc/managementPopup.
long createClickArea(long widget, long x, long y, long w, long h, char *text)
PyObject * py_get_number_of_desktops(PyObject *, PyObject *args)
Misc/getNumberOfDesktop.
QString getIp(char *device_name)
PyObject * py_accept_drops(PyObject *, PyObject *args)
Misc/acceptDrops.
long openTheme(char *path)
PyObject * py_get_theme_path(PyObject *, PyObject *args)
Misc/getThemePath.
const ThemeFile & theme() const
PyObject * py_translate_all(PyObject *, PyObject *args)
Misc/translateAll.
void setOnClick(const QString &)
void setProcess(K3Process *process)
PyObject * py_language(PyObject *, PyObject *args)
Misc/language.
PyObject * py_get_pretty_name(PyObject *, PyObject *args)
Misc/getPrettyName.
PyObject * QString2PyString(QString string)
long toggleShowDesktop(long)
long acceptDrops(long widget)
void changeInterval(u_int newInterval)
void setWantRightButton(bool enable)
QString retrieveReceivedData() const
PyObject * py_toggle_show_desktop(PyObject *, PyObject *args)
Misc/toggleShowDesktop.
PyObject * py_change_interval(PyObject *, PyObject *args)
Misc/changeInterval.
PyObject * py_get_incoming_data(PyObject *, PyObject *args)
Misc/getIncomingData.
int getNumberOfDesktops() const
const char * getThemePath(long widget)
PyObject * py_create_click_area(PyObject *, PyObject *args)
Misc/createClickArea.
PyObject * py_run_command(PyObject *, PyObject *args)
Misc/run.
const char * getPrettyName(long widget)
PyObject * py_set_incoming_data(PyObject *, PyObject *args)
Misc/setIncomingData.
PyObject * py_execute_command(PyObject *, PyObject *args)
Misc/execute.
PyObject * py_get_ip(PyObject *, PyObject *args)
Misc/getIp.
static QString getIncomingData(long widget)
bool checkKaramba(long widget)
PyObject * py_attach_clickArea(PyObject *, PyObject *args, PyObject *dict)
Misc/attachClickArea.
static void set_want_right_button(long widget, long yesno)
double getUpdateTime() const
PyObject * py_show(PyObject *, PyObject *args)
Misc/show.
PyObject * py_call_theme(PyObject *, PyObject *args)
Misc/callTheme.
Singleton class that handles desktop access (minimizing all windows)
void setUpdateTime(double newTime)
static void changeInterval(long widget, long interval)
PyObject * py_remove_click_area(PyObject *, PyObject *args)
Misc/removeClickArea.
long removeClickArea(long widget, long click)
long attachClickArea(long widget, long meter, QString LeftButton, QString MiddleButton, QString RightButton)
const QString & path() const
bool removeMeter(Meter *meter)
PyObject * py_want_right_button(PyObject *, PyObject *args)
Misc/wantRightButton.
static long setIncomingData(long widget, char *path, char *obj)
PyObject * py_create_service_click_area(PyObject *, PyObject *args)
Misc/createServiceClickArea.
int getNumberOfDesktops(long widget)
PyObject * py_get_update_time(PyObject *, PyObject *args)
Misc/getUpdateTime.
QByteArray readThemeFile(const QString &filename) const
bool sendDataToTheme(const QString &prettyThemeName, const QString &data)
int translateAll(long widget, int x, int y)
PyObject * py_open_named_theme(PyObject *, PyObject *args)
Misc/openNamedTheme.
bool sendData(const QString &prettyThemeName, const QString &data)
void setServiceOnClick(const QString &, const QString &, const QString &)
PyObject * py_read_theme_file(PyObject *, PyObject *args)
Misc/readThemeFile.