• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdeutils API Reference
  • KDE Home
  • Contact Us
 

superkaramba

  • sources
  • kde-4.12
  • kdeutils
  • superkaramba
  • src
  • python
svcgrp.cpp
Go to the documentation of this file.
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 #if defined(_XOPEN_SOURCE) && !defined(__SUNPRO_CC)
17 #undef _XOPEN_SOURCE
18 #endif
19 
20 #include "python/svcgrp.h"
21 
22 #include <Python.h>
23 #include "python/task.h"
24 #include <qobject.h>
25 #include <kservice.h>
26 #include <kservicegroup.h>
27 #include "../karamba.h"
28 
29 static PyObject *get_svc_grp(KServiceGroup::Ptr const& g)
30 {
31  //Avoid adding empty groups.
32  KServiceGroup::Ptr subMenuRoot = KServiceGroup::group(g->relPath());
33  if (subMenuRoot->childCount() == 0)
34  return NULL;
35  // Ignore dotfiles.
36  if ((g->name().at(0) == '.'))
37  return NULL;
38 
39  PyObject *tuple = PyTuple_New(2);
40  PyObject *dict = PyDict_New();
41 
42  PyDict_SetItem(dict, PyString_FromString("caption"),
43  PyString_FromString(g->caption().toAscii().data()));
44  if (g->comment() != NULL)
45  PyDict_SetItem(dict, PyString_FromString("comment"),
46  PyString_FromString(g->comment().toAscii().data()));
47  if (g->icon() != NULL)
48  PyDict_SetItem(dict, PyString_FromString("icon"),
49  PyString_FromString(g->icon().toAscii().data()));
50  PyDict_SetItem(dict, PyString_FromString("relpath"),
51  PyString_FromString(g->relPath().toAscii().data()));
52 
53  PyTuple_SET_ITEM(tuple, 0, Py_BuildValue((char*)"l", 0));
54  PyTuple_SET_ITEM(tuple, 1, dict);
55 
56  return tuple;
57 }
58 
59 
60 static PyObject *get_svc(KService::Ptr const& g)
61 {
62  PyObject *tuple = PyTuple_New(2);
63  PyObject *dict = PyDict_New();
64 
65  if (!g->exec().isNull())
66  PyDict_SetItem(dict, PyString_FromString("exec"),
67  PyString_FromString(g->exec().toAscii().data()));
68 
69  if (!g->menuId().isNull())
70  PyDict_SetItem(dict, PyString_FromString("menuid"),
71  PyString_FromString(g->menuId().toAscii().data()));
72 
73  if (!g->name().isNull())
74  PyDict_SetItem(dict, PyString_FromString("name"),
75  PyString_FromString(g->name().toAscii().data()));
76 
77  if (!g->path().isNull())
78  PyDict_SetItem(dict, PyString_FromString("path"),
79  PyString_FromString(g->path().toAscii().data()));
80 
81  if (!g->icon().isNull())
82  PyDict_SetItem(dict, PyString_FromString("icon"),
83  PyString_FromString(g->icon().toAscii().data()));
84 
85  if (!g->library().isNull())
86  PyDict_SetItem(dict, PyString_FromString("library"),
87  PyString_FromString(g->library().toAscii().data()));
88  if (!g->comment().isNull())
89  PyDict_SetItem(dict, PyString_FromString("comment"),
90  PyString_FromString(g->comment().toAscii().data()));
91  QString type = g->isApplication() ? "Application" : "Service";
92  PyDict_SetItem(dict, PyString_FromString("type"),
93  PyString_FromString(type.toAscii().data()));
94 
95  if (!g->genericName().isNull())
96  PyDict_SetItem(dict, PyString_FromString("genericname"),
97  PyString_FromString(g->genericName().toAscii().data()));
98  /*
99  PyDict_SetItem(dict, PyString_FromString("terminal"),
100  Py_BuildValue("l", g->terminal()));
101  PyDict_SetItem(dict, PyString_FromString("type"),
102  PyString_FromString(g->type().toAscii().data()));
103  PyDict_SetItem(dict, PyString_FromString("username"),
104  PyString_FromString(g->username().toAscii().data()));
105  PyDict_SetItem(dict, PyString_FromString("substuid"),
106  Py_BuildValue("l", g->substituteUid()));
107  PyDict_SetItem(dict, PyString_FromString("path"),
108  PyString_FromString(g->path().toAscii().data()));
109  */
110 
111  PyTuple_SET_ITEM(tuple, 0, Py_BuildValue((char*)"l", 1));
112  PyTuple_SET_ITEM(tuple, 1, dict);
113 
114  return tuple;
115 }
116 
117 static PyObject *getServiceGroups(const char *rel_path)
118 {
119  PyObject *list = PyList_New(0);
120 
121  // We ask KSycoca to give us all services (sorted).
122  KServiceGroup::Ptr root = KServiceGroup::group(rel_path);
123 
124  if (!root || !root->isValid())
125  return list;
126 
127  bool excludeNoDisplay_ = true;
128  bool detailed_ = false;
129  bool detailedNamesFirst_ = false;
130 
131  KServiceGroup::List sl = root->entries(true, excludeNoDisplay_, true,
132  detailed_ && !detailedNamesFirst_);
133 
134  QStringList suppressGenericNames = root->suppressGenericNames();
135 
136  KServiceGroup::List::ConstIterator it = sl.constBegin();
137  for (; it != sl.constEnd(); ++it) {
138  KSycocaEntry *e = (KSycocaEntry*)(*it).data();
139 
140  PyObject *tuple = NULL;
141  if (e->isType(KST_KServiceGroup)) {
142  KServiceGroup::Ptr g(static_cast<KServiceGroup *>(e));
143  tuple = get_svc_grp(g);
144  } else if (e->isType(KST_KService)) {
145  KService::Ptr g(static_cast<KService *>(e));
146  tuple = get_svc(g);
147  }
148 
149  if (tuple != NULL)
150  PyList_Append(list, tuple);
151  }
152 
153  return list;
154 }
155 
156 PyObject* py_get_service_groups(PyObject *, PyObject *args)
157 {
158  char *rel_path;
159  if (!PyArg_ParseTuple(args, (char*)"s:getServiceGroup", &rel_path))
160  return NULL;
161  return getServiceGroups(rel_path);
162 }
163 
get_svc
static PyObject * get_svc(KService::Ptr const &g)
Definition: svcgrp.cpp:60
PyObject
struct _object PyObject
Definition: python/karamba.h:35
py_get_service_groups
PyObject * py_get_service_groups(PyObject *, PyObject *args)
Definition: svcgrp.cpp:156
get_svc_grp
static PyObject * get_svc_grp(KServiceGroup::Ptr const &g)
Definition: svcgrp.cpp:29
task.h
svcgrp.h
getServiceGroups
static PyObject * getServiceGroups(const char *rel_path)
Definition: svcgrp.cpp:117
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 23:07:20 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

superkaramba

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

kdeutils API Reference

Skip menu "kdeutils API Reference"
  • ark
  • filelight
  • kcalc
  • kcharselect
  • kdf
  • kfloppy
  • kgpg
  • kremotecontrol
  • ktimer
  • kwallet
  • superkaramba
  • sweeper

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal