diff --git a/frontends/quick_frontend/quick_app.py b/frontends/quick_frontend/quick_app.py
index 30993cb0..a8f5fdf6 100644
--- a/frontends/quick_frontend/quick_app.py
+++ b/frontends/quick_frontend/quick_app.py
@@ -42,8 +42,8 @@ class QuickApp():
self.bridge.register("askConfirmation", self.askConfirmation, "request")
###now we get the essential params###
- self.whoami=JID(self.bridge.getParam("JabberID","Connection")[0])
- self.watched=self.bridge.getParam("Watched", "Misc")[0].split() #TODO: put this in a plugin
+ self.whoami=JID(self.bridge.getParamV("JabberID","Connection"))
+ self.watched=self.bridge.getParamV("Watched", "Misc").split() #TODO: put this in a plugin
## misc ##
self.onlineContact = set() #FIXME: temporary
diff --git a/frontends/sat_bridge_frontend/DBus.py b/frontends/sat_bridge_frontend/DBus.py
index dee6cc95..5677009d 100755
--- a/frontends/sat_bridge_frontend/DBus.py
+++ b/frontends/sat_bridge_frontend/DBus.py
@@ -61,14 +61,17 @@ class DBusBridgeFrontend(BridgeFrontend):
def setPresence(self, to="", type="", show="", status="", priority=0):
return self.db_comm_iface.setPresence(to, type, show, status, priority)
- def setParam(self, name, value, namespace="default"):
- return self.db_comm_iface.setParam(name, value, namespace)
+ def setParam(self, name, value, category):
+ return self.db_comm_iface.setParam(name, value, category)
- def getParam(self, name, namespace="default"):
- return self.db_comm_iface.getParam(name, namespace)
+ def getParamV(self, name, category):
+ return self.db_comm_iface.getParamV(name, category)
- def getParams(self, namespace="default"):
- return self.db_comm_iface.getParams(namespace)
+ def getParams(self):
+ return self.db_comm_iface.getParams()
+
+ def getParamsForCategory(self, category):
+ return self.db_comm_iface.getParamsForCategory(category)
def getParamsCategories(self):
return self.db_comm_iface.getParamsCategories()
diff --git a/frontends/wix/main_window.py b/frontends/wix/main_window.py
index 976254c6..8b08f3f0 100644
--- a/frontends/wix/main_window.py
+++ b/frontends/wix/main_window.py
@@ -340,7 +340,7 @@ class MainWindow(wx.Frame, QuickApp):
def onParam(self, e):
debug("Param request")
- param=Param(self.bridge.setParam, self.bridge.getParam, self.bridge.getParams, self.bridge.getParamsCategories)
+ param=Param(self.bridge)
def onExit(self, e):
self.Close()
diff --git a/frontends/wix/param.py b/frontends/wix/param.py
index efbad4e1..2b38bf01 100644
--- a/frontends/wix/param.py
+++ b/frontends/wix/param.py
@@ -23,17 +23,15 @@ along with this program. If not, see .
import wx
import pdb
+from xml.dom import minidom
from logging import debug, info, error
class Param(wx.Frame):
- def __init__(self, setParam, getParam, getParams, getParamsCategories, title="Configuration"):
+ def __init__(self, bridge, title="Configuration"):
super(Param, self).__init__(None, title=title)
- self.setParam=setParam
- self.getParam=getParam
- self.getParams=getParams
- self.getParamsCategories=getParamsCategories
+ self.bridge = bridge
self.modified={} # dict of modified data (i.e. what we have to save)
@@ -48,7 +46,7 @@ class Param(wx.Frame):
self.MakeModal()
- for category in self.getParamsCategories():
+ for category in self.bridge.getParamsCategories():
self.addCategory(category)
self.Show()
@@ -57,17 +55,22 @@ class Param(wx.Frame):
panel=wx.Panel(self.notebook)
panel.sizer = wx.BoxSizer(wx.VERTICAL)
- for param in self.getParams(category):
+ cat_dom = minidom.parseString(self.bridge.getParamsForCategory(category))
+
+ for param in cat_dom.documentElement.getElementsByTagName("param"):
+ name = param.getAttribute("name")
+ type = param.getAttribute("type")
+ value = param.getAttribute("value")
sizer = wx.BoxSizer(wx.HORIZONTAL)
- label=wx.StaticText(panel, -1, param[0]+" ")
- if param[2]=="string":
- ctrl = wx.TextCtrl(panel, -1, param[1])
- elif param[2]=="password":
- ctrl = wx.TextCtrl(panel, -1, param[1], style=wx.TE_PASSWORD)
+ label=wx.StaticText(panel, -1, name+" ")
+ if type=="string":
+ ctrl = wx.TextCtrl(panel, -1, value)
+ elif type=="password":
+ ctrl = wx.TextCtrl(panel, -1, value, style=wx.TE_PASSWORD)
else:
error("FIXME FIXME FIXME") #FIXME !
raise NotImplementedError
- ctrl.param_id=(param[0], category)
+ ctrl.param_id=(name, category)
sizer.Add(label)
sizer.Add(ctrl, 1, flag=wx.EXPAND)
panel.sizer.Add(sizer, flag=wx.EXPAND)
@@ -76,6 +79,7 @@ class Param(wx.Frame):
panel.SetSizer(panel.sizer)
panel.SetAutoLayout(True)
self.notebook.AddPage(panel, category)
+ cat_dom.unlink()
def onTextChanged(self, event):
"""Called when a paramated is modified"""
@@ -88,7 +92,7 @@ class Param(wx.Frame):
debug("close")
#now we save the modifier params
for param in self.modified:
- self.setParam(param[0], self.modified[param], param[1])
+ self.bridge.setParam(param[0], self.modified[param], param[1])
self.MakeModal(False)
event.Skip()
diff --git a/sat.tac b/sat.tac
index 40be3a4a..4d9d28df 100644
--- a/sat.tac
+++ b/sat.tac
@@ -86,6 +86,7 @@ class SatXMPPClient(client.XMPPClient):
return self.__connected
def connectionLost(self, connector, unused_reason):
+ self.__connected=False
print "********** DISCONNECTED **********"
try:
self.keep_alife.stop()
@@ -258,8 +259,9 @@ class SAT(service.Service):
self.bridge.register("getPresenceStatus", self.memory.getPresenceStatus)
self.bridge.register("sendMessage", self.sendMessage)
self.bridge.register("setParam", self.setParam)
- #self.bridge.register("getParam", self.memory.getParam)
+ self.bridge.register("getParamV", self.memory.getParamV)
self.bridge.register("getParams", self.memory.getParams)
+ self.bridge.register("getParamsForCategory", self.memory.getParamsForCategory)
self.bridge.register("getParamsCategories", self.memory.getParamsCategories)
self.bridge.register("getHistory", self.memory.getHistory)
self.bridge.register("setPresence", self.setPresence)
@@ -376,11 +378,11 @@ class SAT(service.Service):
## Client management ##
- def setParam(self, name, value, namespace):
+ def setParam(self, name, value, category):
"""set wanted paramater and notice observers"""
- info ("setting param: %s=%s in namespace %s", name, value, namespace)
- self.memory.setParam(name, value, namespace)
- self.bridge.paramUpdate(name, value, namespace)
+ info ("setting param: %s=%s in category %s", name, value, category)
+ self.memory.setParam(name, value, category)
+ self.bridge.paramUpdate(name, value, category)
def failed(self,xmlstream):
debug("failed: %s", xmlstream.getErrorMessage())
diff --git a/sat_bridge/DBus.py b/sat_bridge/DBus.py
index db4b90e8..caf0e0b2 100755
--- a/sat_bridge/DBus.py
+++ b/sat_bridge/DBus.py
@@ -60,8 +60,8 @@ class DbusObject(dbus.service.Object):
@dbus.service.signal(const_INT_PREFIX+const_COMM_SUFFIX,
signature='sss')
- def paramUpdate(self, name, value, namespace):
- debug("param update signal: %s=%s in namespace %s", name, value, namespace)
+ def paramUpdate(self, name, value, category):
+ debug("param update signal: %s=%s in category %s", name, value, category)
@dbus.service.signal(const_INT_PREFIX+const_COMM_SUFFIX,
signature='s')
@@ -126,21 +126,21 @@ class DbusObject(dbus.service.Object):
def setParam(self, name, value, category):
self.cb["setParam"](name, str(value), category)
- """@dbus.service.method(const_INT_PREFIX+const_COMM_SUFFIX,
- in_signature='ss', out_signature='(ss)')
- def getParam(self, name, namespace="default"):
- return self.cb["getParam"](name, namespace)"""
-
- """@dbus.service.method(const_INT_PREFIX+const_COMM_SUFFIX,
- in_signature='s', out_signature='a(sss)')
- def getParams(self, namespace):
- return self.cb["getParams"](namespace)"""
+ @dbus.service.method(const_INT_PREFIX+const_COMM_SUFFIX,
+ in_signature='ss', out_signature='s')
+ def getParamV(self, name, category="default"):
+ return self.cb["getParamV"](name, category)
@dbus.service.method(const_INT_PREFIX+const_COMM_SUFFIX,
in_signature='', out_signature='s')
def getParams(self):
return self.cb["getParams"]()
+ @dbus.service.method(const_INT_PREFIX+const_COMM_SUFFIX,
+ in_signature='s', out_signature='s')
+ def getParamsForCategory(self, category):
+ return self.cb["getParamsForCategory"](category)
+
@dbus.service.method(const_INT_PREFIX+const_COMM_SUFFIX,
in_signature='', out_signature='as')
def getParamsCategories(self):
@@ -236,9 +236,9 @@ class DBusBridge(Bridge):
debug("updating presence for %s",jid)
self.dbus_bridge.presenceUpdate(jid, type, show, status, priority)
- def paramUpdate(self, name, value, namespace):
- debug("updating param [%s] %s ", namespace, name)
- self.dbus_bridge.paramUpdate(name, value, namespace)
+ def paramUpdate(self, name, value, category):
+ debug("updating param [%s] %s ", category, name)
+ self.dbus_bridge.paramUpdate(name, value, category)
def contactDeleted(self, jid):
debug("sending contact deleted signal %s ", jid)
diff --git a/tools/memory.py b/tools/memory.py
index 4708f2a4..f262cfcb 100644
--- a/tools/memory.py
+++ b/tools/memory.py
@@ -38,9 +38,9 @@ class Param():
default_xml = """
-
+
-
+
@@ -70,14 +70,15 @@ class Param():
return node.getAttribute("value")
def getParams(self):
- """Return the wold params XML"""
+ """Return the whole params XML"""
return self.dom.toxml()
-
- """def getParam(self, name, category):
- if self.params.has_key(namespace) and self.params[namespace].has_key(name):
- return self.params[namespace][name]
- return ["",""]"""
+ def getParamsForCategory(self, category):
+ """Return node's xml for selected category"""
+ for node in self.dom.documentElement.childNodes:
+ if node.nodeName == "category" and node.getAttribute("name") == category:
+ return node.toxml()
+ return ""
def __getParamNode(self, name, category):
for node in self.dom.documentElement.childNodes:
@@ -88,15 +89,6 @@ class Param():
return param
return None
-
- """def getParams(self, namespace):
- if self.params.has_key(namespace):
- ret=[]
- for name in self.params[namespace]:
- ret.append([name] + self.params[namespace][name])
- return ret
- return [[]]"""
-
def getParamsCategories(self):
"""return the categories availables"""
categories=[]
@@ -108,13 +100,13 @@ class Param():
node = self.__getParamNode(name, category)
if not node:
return #TODO: throw an error
- node.setAttribute(name, value)
+ node.setAttribute("value", value)
- """def createParam (self, name, value, type, namespace):
+ """def createParam (self, name, value, type, category):
### TODO: add desciption in params
- if not self.params.has_key(namespace):
- self.params[namespace]={}
- self.params[namespace][name]=[value,type];"""
+ if not self.params.has_key(category):
+ self.params[category]={}
+ self.params[category][name]=[value,type];"""
class Memory:
"""This class manage all persistent informations"""
@@ -224,6 +216,9 @@ class Memory:
def getParams(self):
return self.params.getParams()
+ def getParamsForCategory(self, category):
+ return self.params.getParamsForCategory(category)
+
def getParamsCategories(self):
return self.params.getParamsCategories()