Package flumotion :: Package admin :: Module settings
[hide private]

Source Code for Module flumotion.admin.settings

 1  # -*- Mode: Python; fill-column: 80 -*- 
 2  # vi:si:et:sw=4:sts=4:ts=4 
 3  # 
 4  # Flumotion - a streaming media server 
 5  # Copyright (C) 2004-2011 Fluendo, S.L. (www.fluendo.com). 
 6  # All rights reserved. 
 7   
 8  # This file may be distributed and/or modified under the terms of 
 9  # the GNU General Public License version 2 as published by 
10  # the Free Software Foundation. 
11  # This file is distributed without any warranty; without even the implied 
12  # warranty of merchantability or fitness for a particular purpose. 
13  # See "LICENSE.GPL" in the source distribution for more information. 
14   
15  # Licensees having purchased or holding a valid Flumotion Advanced 
16  # Streaming Server license may use this file in accordance with the 
17  # Flumotion Advanced Streaming Server Commercial License Agreement. 
18  # See "LICENSE.Flumotion" in the source distribution for more information. 
19   
20  # Headers in this file shall remain intact. 
21   
22  """Save and restore the settings of the mainwindow""" 
23   
24  import os 
25  from xml.dom import minidom, Node 
26  from xml.parsers.expat import ExpatError 
27   
28  from flumotion.common import log 
29  from flumotion.configure import configure 
30   
31  __version__ = "$Rev$" 
32   
33   
34 -class Settings(object):
35 """ 36 Sets up the settings. Expects a filename where settings 37 will be stored 38 """ 39
40 - def __init__(self, filename=None):
41 if filename is None: 42 self._filename = os.path.join( 43 configure.cachedir, 44 'gtk-admin-state') 45 else: 46 self._filename = filename 47 self._values = {} 48 self.read()
49
50 - def read(self):
51 try: 52 tree = minidom.parse(self._filename) 53 node = tree.getElementsByTagName('gtk-admin-state')[0] 54 for elem in node.childNodes: 55 self._values[elem.nodeName] = elem.firstChild.data 56 except (IOError, IndexError, ExpatError), e: 57 log.warning('Cannot read gtl-admin-state %s', 58 log.getExceptionMessage(e))
59
60 - def save(self):
61 try: 62 f = open(self._filename, 'w') 63 doc = minidom.Document() 64 root = doc.createElement('gtk-admin-state') 65 doc.appendChild(root) 66 for key, value in self._values.iteritems(): 67 self._append(doc, root, key, value) 68 doc.writexml(f) 69 f.close() 70 except IOError, e: 71 log.warning('Cannot find gtk-admin-state: %s', 72 log.getExceptionMessage(e))
73
74 - def _append(self, doc, root, key, value):
75 element = doc.createElement(key) 76 root.appendChild(element) 77 value = doc.createTextNode(value) 78 element.appendChild(value)
79
80 - def setValue(self, key, value):
81 self._values[key] = value
82
83 - def getValue(self, key, default=None):
84 return self._values.get(key, default)
85
86 - def hasValue(self, key):
87 return key in self._values
88 89
90 -def getSettings():
91 return Settings()
92