• Skip to content
  • Skip to link menu
Trinity API Reference
  • Trinity API Reference
  • superkaramba
 

superkaramba

  • superkaramba
  • src
svcgrp_python.cpp
1/***************************************************************************
2 * *
3 * Copyright (C) 2004 Luke Kenneth Casson Leighton <lkcl@lkcl.net> *
4 * *
5 * contains code from kickermenu: *
6 * *
7 * Copyright (C) 2004 by Tommy Brander *
8 * tbr00001@student.mdh.se *
9 * *
10 * This program is free software; you can redistribute it and/or modify *
11 * it under the terms of the GNU General Public License as published by *
12 * the Free Software Foundation; either version 2 of the License, or *
13 * (at your option) any later version. *
14 ***************************************************************************/
15
16#ifdef _XOPEN_SOURCE
17#undef _XOPEN_SOURCE
18#endif
19
20#include <Python.h>
21#include "task_python.h"
22#include <tqobject.h>
23#include <kservicegroup.h>
24#include "karamba.h"
25#include "svcgrp_python.h"
26
27static PyObject *get_svc_grp(KServiceGroup::Ptr const& g)
28{
29 //Avoid adding empty groups.
30 KServiceGroup::Ptr subMenuRoot = KServiceGroup::group(g->relPath());
31 if (subMenuRoot->childCount() == 0)
32 return NULL;
33 // Ignore dotfiles.
34 if ((g->name().at(0) == '.'))
35 return NULL;
36
37 PyObject *tuple = PyTuple_New(2);
38 PyObject *dict = PyDict_New();
39
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()));
50
51 PyTuple_SET_ITEM(tuple, 0, Py_BuildValue((char*)"l", 0));
52 PyTuple_SET_ITEM(tuple, 1, dict);
53
54 return tuple;
55}
56
57
58static PyObject *get_svc(KService::Ptr const& g)
59{
60 PyObject *tuple = PyTuple_New(2);
61 PyObject *dict = PyDict_New();
62
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()));
90 /*
91 PyDict_SetItem(dict, PyBytes_FromString("terminal"),
92 Py_BuildValue("l", g->terminal()));
93 PyDict_SetItem(dict, PyBytes_FromString("type"),
94 PyBytes_FromString(g->type().ascii()));
95 PyDict_SetItem(dict, PyBytes_FromString("username"),
96 PyBytes_FromString(g->username().ascii()));
97 PyDict_SetItem(dict, PyBytes_FromString("substuid"),
98 Py_BuildValue("l", g->substituteUid()));
99 PyDict_SetItem(dict, PyBytes_FromString("path"),
100 PyBytes_FromString(g->path().ascii()));
101 */
102
103 PyTuple_SET_ITEM(tuple, 0, Py_BuildValue((char*)"l", 1));
104 PyTuple_SET_ITEM(tuple, 1, dict);
105
106 return tuple;
107}
108
109static PyObject *getServiceGroups(const char *rel_path)
110{
111 PyObject *list = PyList_New(0);
112
113 // We ask KSycoca to give us all services (sorted).
114 KServiceGroup::Ptr root = KServiceGroup::group(rel_path);
115
116 if (!root || !root->isValid())
117 return list;
118
119 bool excludeNoDisplay_ = true;
120 bool detailed_ = false;
121 bool detailedNamesFirst_ = false;
122
123 KServiceGroup::List sl = root->entries(true, excludeNoDisplay_, true, detailed_ && !detailedNamesFirst_);
124
125 TQStringList suppressGenericNames = root->suppressGenericNames();
126
127 KServiceGroup::List::ConstIterator it = sl.begin();
128 for (; it != sl.end(); ++it)
129 {
130 KSycocaEntry * e = *it;
131
132 PyObject *tuple = NULL;
133 if (e->isType(KST_KServiceGroup)) {
134 KServiceGroup::Ptr g(static_cast<KServiceGroup *>(e));
135 tuple = get_svc_grp(g);
136 }
137 else if (e->isType(KST_KService)) {
138 KService::Ptr g(static_cast<KService *>(e));
139 tuple = get_svc(g);
140 }
141
142 if (tuple != NULL)
143 PyList_Append(list, tuple);
144 }
145
146 return list;
147}
148
149PyObject* py_get_service_groups(PyObject *, PyObject *args)
150{
151 char *rel_path;
152 if (!PyArg_ParseTuple(args, (char*)"s:getServiceGroup", &rel_path))
153 return NULL;
154 return getServiceGroups(rel_path);
155}
156

superkaramba

Skip menu "superkaramba"
  • Main Page
  • Alphabetical List
  • Class List
  • File List
  • Class Members

superkaramba

Skip menu "superkaramba"
  • kcalc
  •   knumber
  • superkaramba
Generated for superkaramba by doxygen 1.9.4
This website is maintained by Timothy Pearson.