Author: asterix
Date: 2007-08-31 11:08:17 +0200 (Fri, 31 Aug 2007)
New Revision: 8669
Modified:
branches/gajim_0.11.1/src/common/connection.py
branches/gajim_0.11.1/src/common/connection_handlers.py
branches/gajim_0.11.1/src/config.py
branches/gajim_0.11.1/src/gajim.py
Log:
use new dataform widget in register agent window. Remove no more used old DataFormWindow.
Modified: branches/gajim_0.11.1/src/common/connection.py
===================================================================
--- branches/gajim_0.11.1/src/common/connection.py 2007-08-31 08:59:52 UTC (rev 8668)
+++ branches/gajim_0.11.1/src/common/connection.py 2007-08-31 09:08:17 UTC (rev 8669)
@@ -222,7 +222,7 @@
return
is_form = data[2]
if is_form:
- conf = self.parse_data_form(data[1])
+ conf = data[1]
else:
conf = data[1].asDict()
self.dispatch('REGISTER_AGENT_INFO', (data[0], conf, is_form))
Modified: branches/gajim_0.11.1/src/common/connection_handlers.py
===================================================================
--- branches/gajim_0.11.1/src/common/connection_handlers.py 2007-08-31 08:59:52 UTC (rev 8668)
+++ branches/gajim_0.11.1/src/common/connection_handlers.py 2007-08-31 09:08:17 UTC (rev 8669)
@@ -592,37 +592,15 @@
agent)
self.connection.SendAndCallForResponse(iq, self._ReceivedRegInfo,
{'agent': agent})
-
- def build_data_from_dict(self, query, config):
- x = query.setTag(common.xmpp.NS_DATA + ' x', attrs = {'type': 'submit'})
- i = 0
- while config.has_key(i):
- if not config[i].has_key('type'):
- i += 1
- continue
- if config[i]['type'] == 'fixed':
- i += 1
- continue
- tag = x.addChild('field')
- if config[i].has_key('var'):
- tag.setAttr('var', config[i]['var'])
- if config[i].has_key('values'):
- for val in config[i]['values']:
- if val == False:
- val = '0'
- elif val == True:
- val = '1'
- # Force to create a new child
- tag.addChild('value').addData(val)
- i += 1
-
+
def register_agent(self, agent, info, is_form = False):
if not self.connection:
return
if is_form:
iq = common.xmpp.Iq('set', common.xmpp.NS_REGISTER, to = agent)
query = iq.getTag('query')
- self.build_data_from_dict(query, info)
+ info.setAttr('type', 'submit')
+ query.addChild(node = info)
self.connection.send(iq)
else:
# fixed: blocking
@@ -1795,67 +1773,9 @@
self.dispatch('NOTIFY', (jid_stripped, show, status, resource, prio,
keyID, timestamp, contact_nickname))
# END presenceCB
+
def _StanzaArrivedCB(self, con, obj):
self.last_io = gajim.idlequeue.current_time()
-
-
- def parse_data_form(self, node):
- dic = {}
- tag = node.getTag('title')
- if tag:
- dic['title'] = tag.getData()
- tag = node.getTag('instructions')
- if tag:
- dic['instructions'] = tag.getData()
- i = 0
- for child in node.getChildren():
- if child.getName() != 'field':
- continue
- var = child.getAttr('var')
- ctype = child.getAttr('type')
- label = child.getAttr('label')
- if not var and ctype != 'fixed': # We must have var if type != fixed
- continue
- dic[i] = {}
- if var:
- dic[i]['var'] = var
- if ctype:
- dic[i]['type'] = ctype
- if label:
- dic[i]['label'] = label
- tags = child.getTags('value')
- if len(tags):
- dic[i]['values'] = []
- for tag in tags:
- data = tag.getData()
- if ctype == 'boolean':
- if data in ('yes', 'true', 'assent', '1'):
- data = True
- else:
- data = False
- dic[i]['values'].append(data)
- tag = child.getTag('desc')
- if tag:
- dic[i]['desc'] = tag.getData()
- option_tags = child.getTags('option')
- if len(option_tags):
- dic[i]['options'] = {}
- j = 0
- for option_tag in option_tags:
- dic[i]['options'][j] = {}
- label = option_tag.getAttr('label')
- tags = option_tag.getTags('value')
- dic[i]['options'][j]['values'] = []
- for tag in tags:
- dic[i]['options'][j]['values'].append(tag.getData())
- if not label:
- label = dic[i]['options'][j]['values'][0]
- dic[i]['options'][j]['label'] = label
- j += 1
- if not dic[i].has_key('values'):
- dic[i]['values'] = [dic[i]['options'][0]['values'][0]]
- i += 1
- return dic
def _MucOwnerCB(self, con, iq_obj):
gajim.log.debug('MucOwnerCB')
Modified: branches/gajim_0.11.1/src/config.py
===================================================================
--- branches/gajim_0.11.1/src/config.py 2007-08-31 08:59:52 UTC (rev 8668)
+++ branches/gajim_0.11.1/src/config.py 2007-08-31 09:08:17 UTC (rev 8669)
@@ -2125,11 +2125,14 @@
class ServiceRegistrationWindow:
'''Class for Service registration window:
Window that appears when we want to subscribe to a service
- if is_form we use DataFormWindow else we use service_registarion_window'''
+ if is_form we use dataforms_widget else we use service_registarion_window'''
def __init__(self, service, infos, account, is_form):
self.service = service
self.account = account
self.is_form = is_form
+ self.xml = gtkgui_helpers.get_glade('service_registration_window.glade')
+ self.window = self.xml.get_widget('service_registration_window')
+ self.window.set_transient_for(gajim.interface.roster.window)
if self.is_form:
dataform = dataforms.ExtendForm(node = infos)
self.data_form_widget = dataforms_widget.DataFormWidget(dataform)
@@ -2145,20 +2148,19 @@
self.data_form_widget = FakeDataForm(infos)
table = self.xml.get_widget('table')
table.attach(self.data_form_widget, 0, 2, 0, 1)
- self.xml.signal_autoconnect(self)
- self.window.show_all()
+ self.xml.signal_autoconnect(self)
+ self.window.show_all()
+
def on_cancel_button_clicked(self, widget):
self.window.destroy()
def on_ok_button_clicked(self, widget):
# send registration info to the core
if self.is_form:
- # We pressed OK button of the DataFormWindow
- if self.infos.has_key('registered'):
- del self.infos['registered']
+ form = self.data_form_widget.data_form
gajim.connections[self.account].register_agent(self.service,
- self.infos, True) # True is for is_form
+ form, True) # True is for is_form
else:
infos = self.data_form_widget.get_infos()
if infos.has_key('instructions'):
@@ -2340,7 +2342,6 @@
del gajim.interface.instances[self.account]['gc_config'][self.room_jid]
def on_ok_button_clicked(self, widget):
- # We pressed OK button of the DataFormWindow
if self.form:
form = self.data_form_widget.data_form
gajim.connections[self.account].send_gc_config(self.room_jid, form)
Modified: branches/gajim_0.11.1/src/gajim.py
===================================================================
--- branches/gajim_0.11.1/src/gajim.py 2007-08-31 08:59:52 UTC (rev 8668)
+++ branches/gajim_0.11.1/src/gajim.py 2007-08-31 09:08:17 UTC (rev 8669)
@@ -868,8 +868,9 @@
self.roster.remove_contact(c, account)
def handle_event_register_agent_info(self, account, array):
- #('REGISTER_AGENT_INFO', account, (agent, infos, is_form))
- if array[1].has_key('instructions'):
+ # ('REGISTER_AGENT_INFO', account, (agent, infos, is_form))
+ # info in a dataform if is_form is True
+ if array[2] or array[1].has_key('instructions'):
config.ServiceRegistrationWindow(array[0], array[1], account,
array[2])
else: