21#include "task_python.h"
23#include <kservicegroup.h>
25#include "svcgrp_python.h"
27static PyObject *get_svc_grp(KServiceGroup::Ptr
const& g)
30 KServiceGroup::Ptr subMenuRoot = KServiceGroup::group(g->relPath());
31 if (subMenuRoot->childCount() == 0)
34 if ((g->name().at(0) ==
'.'))
37 PyObject *tuple = PyTuple_New(2);
38 PyObject *dict = PyDict_New();
40 PyDict_SetItem(dict, PyBytes_FromString(
"caption"),
41 PyBytes_FromString(g->caption().ascii()));
42 if (g->comment() != NULL)
43 PyDict_SetItem(dict, PyBytes_FromString(
"comment"),
44 PyBytes_FromString(g->comment().ascii()));
45 if (g->icon() != NULL)
46 PyDict_SetItem(dict, PyBytes_FromString(
"icon"),
47 PyBytes_FromString(g->icon().ascii()));
48 PyDict_SetItem(dict, PyBytes_FromString(
"relpath"),
49 PyBytes_FromString(g->relPath().ascii()));
51 PyTuple_SET_ITEM(tuple, 0, Py_BuildValue((
char*)
"l", 0));
52 PyTuple_SET_ITEM(tuple, 1, dict);
58static PyObject *get_svc(KService::Ptr
const& g)
60 PyObject *tuple = PyTuple_New(2);
61 PyObject *dict = PyDict_New();
63 if (g->exec() != NULL)
64 PyDict_SetItem(dict, PyBytes_FromString(
"exec"),
65 PyBytes_FromString(g->exec().ascii()));
66 if (g->menuId() != NULL)
67 PyDict_SetItem(dict, PyBytes_FromString(
"menuid"),
68 PyBytes_FromString(g->menuId().ascii()));
69 if (g->name() != NULL)
70 PyDict_SetItem(dict, PyBytes_FromString(
"name"),
71 PyBytes_FromString(g->name().ascii()));
72 if (g->path() != NULL)
73 PyDict_SetItem(dict, PyBytes_FromString(
"path"),
74 PyBytes_FromString(g->path().ascii()));
75 if (g->icon() != NULL)
76 PyDict_SetItem(dict, PyBytes_FromString(
"icon"),
77 PyBytes_FromString(g->icon().ascii()));
78 if (g->library() != NULL)
79 PyDict_SetItem(dict, PyBytes_FromString(
"library"),
80 PyBytes_FromString(g->library().ascii()));
81 if (g->comment() != NULL)
82 PyDict_SetItem(dict, PyBytes_FromString(
"comment"),
83 PyBytes_FromString(g->comment().ascii()));
84 if (g->type() != NULL)
85 PyDict_SetItem(dict, PyBytes_FromString(
"type"),
86 PyBytes_FromString(g->type().ascii()));
87 if (g->genericName() != NULL)
88 PyDict_SetItem(dict, PyBytes_FromString(
"genericname"),
89 PyBytes_FromString(g->genericName().ascii()));
103 PyTuple_SET_ITEM(tuple, 0, Py_BuildValue((
char*)
"l", 1));
104 PyTuple_SET_ITEM(tuple, 1, dict);
109static PyObject *getServiceGroups(
const char *rel_path)
111 PyObject *list = PyList_New(0);
114 KServiceGroup::Ptr root = KServiceGroup::group(rel_path);
116 if (!root || !root->isValid())
119 bool excludeNoDisplay_ =
true;
120 bool detailed_ =
false;
121 bool detailedNamesFirst_ =
false;
123 KServiceGroup::List sl = root->entries(
true, excludeNoDisplay_,
true, detailed_ && !detailedNamesFirst_);
125 TQStringList suppressGenericNames = root->suppressGenericNames();
127 KServiceGroup::List::ConstIterator it = sl.begin();
128 for (; it != sl.end(); ++it)
130 KSycocaEntry * e = *it;
132 PyObject *tuple = NULL;
133 if (e->isType(KST_KServiceGroup)) {
134 KServiceGroup::Ptr g(
static_cast<KServiceGroup *
>(e));
135 tuple = get_svc_grp(g);
137 else if (e->isType(KST_KService)) {
138 KService::Ptr g(
static_cast<KService *
>(e));
143 PyList_Append(list, tuple);
149PyObject* py_get_service_groups(PyObject *, PyObject *args)
152 if (!PyArg_ParseTuple(args, (
char*)
"s:getServiceGroup", &rel_path))
154 return getServiceGroups(rel_path);