25
25
class XmlDataProvider:
27
def __init__(self, filename):
29
if(os.access(filename, os.W_OK|os.R_OK) == False):
30
raise Exception('Bookmarks file not found: ' + filename)
32
self.filename = filename
35
def loadFromFile(self):
37
self.root = etree.parse(self.filename).getroot()
40
out_file = open(self.filename, "w")
41
out_file.write(etree.tostring(self.root, method='xml', encoding='UTF-8'))
44
def listRadioNames(self):
46
return self.root.xpath("//bookmark/@name")
48
def getRadioUrl(self, name):
50
result = self.root.xpath("//bookmark[@name=$var]/@url", var=name)
54
def addRadio(self, name, url):
56
radio = etree.SubElement(self.root, 'bookmark')
57
radio.set("name", name)
61
def updateRadio(self, oldName, newName, url):
63
radioXml = self.root.xpath("//bookmark[@name=$var]", var=oldName)[0]
64
radioXml.set("name", unicode(newName))
65
radioXml.set("url", url)
68
def removeRadio(self, name):
70
radio = self.root.xpath("//bookmark[@name=$var]", var=name)[0]
71
self.root.remove(radio)
74
def moveUp(self, name):
76
radio = self.root.xpath("//bookmark[@name=$var]", var=name)[0]
77
previous = radio.getprevious()
78
if ( previous != None):
79
index=self.root.xpath("count(//bookmark[@name=$var]/preceding-sibling::*)+1", var=name)
80
self.root.remove(radio)
81
self.root.insert(int(index)-2,radio)
88
def moveDown(self, name):
90
radio = self.root.xpath("//bookmark[@name=$var]", var=name)[0]
91
next = radio.getnext()
93
index=self.root.xpath("count(//bookmark[@name=$var]/preceding-sibling::*)+1", var=name)
94
self.root.remove(radio)
95
self.root.insert(int(index),radio)
27
def __init__(self, filename):
29
if(os.access(filename, os.W_OK|os.R_OK) == False):
30
raise Exception('Bookmarks file not found: ' + filename)
32
self.filename = filename
34
def loadFromFile(self):
36
self.root = etree.parse(self.filename).getroot()
39
out_file = open(self.filename, "w")
40
out_file.write(etree.tostring(self.root, method='xml', encoding='UTF-8', pretty_print=True))
43
def listRadioNames(self):
45
return self.root.xpath("//bookmark/@name")
47
def getRadioUrl(self, name):
49
result = self.root.xpath("//bookmark[@name=$var]/@url", var=name)
53
def addRadio(self, name, url):
55
# Flag used to determine if a radio gets added or not
58
# First, let us check this name hasn't been used yet.
59
result = self._radioExists(name)
62
radio = etree.SubElement(self.root, 'bookmark')
63
radio.set("name", name)
68
print "A radio with the name \"%s\" already exists." % name
73
def updateRadio(self, oldName, newName, url):
75
# Flag used to determine if a radio gets added or not
78
result = self._radioExists(oldName)
81
print "Could not find a radio with the name \"%s\"." % oldName
84
if oldName == newName:
85
result.set("url", url)
89
radioXml = self._radioExists(newName)
90
if radioXml is not None:
91
print "A radio with the name \"%s\" already exists." % newName
94
result.set("name", unicode(newName))
95
result.set("url", url)
101
def removeRadio(self, name):
103
radio = self._radioExists(name)
105
if radio is not None:
106
self.root.remove(radio)
109
def moveUp(self, name):
111
radio = self._radioExists(name)
112
previous = radio.getprevious()
113
if ( previous != None):
114
index=self.root.xpath("count(//bookmark[@name=$var]/preceding-sibling::*)+1", var=name)
115
self.root.remove(radio)
116
self.root.insert(int(index)-2,radio)
123
def moveDown(self, name):
125
radio = self._radioExists(name)
126
next = radio.getnext()
128
index=self.root.xpath("count(//bookmark[@name=$var]/preceding-sibling::*)+1", var=name)
129
self.root.remove(radio)
130
self.root.insert(int(index),radio)
137
def _radioExists(self, name):
141
radio = self.root.xpath("//bookmark[@name=$var]", var=name)[0]
142
except IndexError, e:
144
print "Could not find a radio with the name \"%s\"." % name