• 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 
27 static 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 
58 static 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 
109 static 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 
149 PyObject* 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.8.13
This website is maintained by Timothy Pearson.