source: kde/kreadconfig/kread-ressource.py @ 817

Last change on this file since 817 was 817, checked in by joergs, 12 years ago

added program to dump all KDE resource types

  • Property svn:executable set to *
  • Property svn:keywords set to
    Id
    Rev
File size: 3.6 KB
Line 
1#!/usr/bin/env python
2# -*- coding: utf-8 -*-
3
4"""
5kread-ressource.py dumps a KDE configuration file.
6It is usefull for debugging KDE Kiosks settings,
7where multiple config files are merged into the final configuration. 
8
9The directory hierarchie for config files
10is based on the KDEDIRS environment variable
11and can be made visible by  the command
12kde4-config --path config
13
14kreadconfig has a similiar purpose,
15but is limited to a single value
16"""
17
18# $Id: kread-ressource.py 817 2010-02-01 15:20:49Z joergs $
19
20import sys
21import os
22from PyKDE4.kdecore import ki18n, KAboutData, KCmdLineArgs, KCmdLineOptions, KConfig
23from PyKDE4.kdeui import KApplication
24 
25#import pprint
26#pp = pprint.PrettyPrinter(indent=4)
27
28def getFullName( config ):
29  """get the full name of a config group"""
30  if config.name() == "<default>":
31    return ""
32
33  # check, if function config.parent is defined
34  try: config.parent
35  except AttributeError:
36    # x doesn't exist, do something
37    return "[" + config.name() + "]"
38  else:
39    # x exists, do something else
40    parentsNames = getFullName( config.parent() )
41    return  parentsNames + "[" + config.name() + "]"
42
43
44
45def dumpGroup( config ):
46  """print the entries of a config group"""
47
48  # print secton name only if entries exists
49  if config.entryMap():
50    print getFullName( config )
51    #print dir(config)
52    #for i in config.entryMap():
53    for i in config.keyList():
54      immutaleString = ''
55      if config.isEntryImmutable( i ):
56        immutaleString = "[$i]"
57      try:
58        print i + immutaleString, "=", config.readEntry( i ).toUtf8()
59      except AttributeError:
60      # ignore when readEntry does not exist
61        print i + " => readEntry not defined"
62        #, i.count(), dir(i)
63        pass
64      except UnicodeEncodeError:
65        print i + " => encoding error"
66        pass
67  print
68
69
70
71def dumpSubGroups( config ):
72  """print entries of the config group and all subgroups"""
73  dumpGroup( config )
74  #print dir( config )
75  for i in config.groupList():
76    configGroup=config.group(str(i))
77    dumpSubGroups( configGroup )
78
79
80appName     = "kread-resource.py"
81catalog     = ""
82programName = ki18n ("kread-resource.py")
83version     = "$Rev: 817 $"
84description = ki18n ("dump KDE resource/configuration files")
85license     = KAboutData.License_GPL
86copyright   = ki18n ("(c) 2010 Jörg Steffens")
87text        = ki18n ("none")
88homePage    = "www.dass-it.de"
89bugEmail    = "rt@dass-it.de"
90 
91aboutData   = KAboutData (appName, catalog, programName, version, description,
92                        license, copyright, text, homePage, bugEmail)
93
94# command line argument handling
95options = KCmdLineOptions()
96options.add("type <kde-res-type>", ki18n("common types are: apps, config, xdgconf-autostart, xdgdata-apps. Default is"), "config")
97options.add("types", ki18n("list all available types"))
98options.add("+resourcename", ki18n("KDE ressource name (file name)"))
99
100KCmdLineArgs.init(sys.argv, aboutData)
101# Register the supported options
102KCmdLineArgs.addCmdLineOptions( options )
103
104app = KApplication()
105
106args = KCmdLineArgs.parsedArgs();
107
108if args.isSet("types"):
109    os.system( "kde4-config --types" )
110    exit()
111
112
113# TODO: why is this not detected automatically?
114if args.count() != 1:
115  args.usage()
116
117# TODO: check valid resource types (otherwise, this application starts a crash report
118type = args.getOption("type");
119
120configfilename = args.arg(0)
121#print configfilename
122
123#try:
124config = KConfig(configfilename, KConfig.NoGlobals, type)
125#except:
126    #print "Unexpected error:", sys.exc_info()[0]
127    #exit(1)
128
129
130# only show the sub-groups.
131# top-level entries will be in the section [MainWindow]
132#dumpSubGroups( config )
133for i in config.groupList():
134  configGroup=config.group(str(i))
135  dumpSubGroups( configGroup )
Note: See TracBrowser for help on using the repository browser.