merge vcard window into vcard_information_window
This commit is contained in:
parent
d2b02aba97
commit
7f5ff6fe09
3 changed files with 114 additions and 1266 deletions
|
@ -37,95 +37,6 @@ import gtkgui
|
||||||
GTKGUI_GLADE='plugins/gtkgui/gtkgui.glade'
|
GTKGUI_GLADE='plugins/gtkgui/gtkgui.glade'
|
||||||
|
|
||||||
|
|
||||||
class vCard_Window:
|
|
||||||
"""Class for window that show vCard information"""
|
|
||||||
def delete_event(self, widget=None):
|
|
||||||
"""close window"""
|
|
||||||
del self.plugin.windows[self.account]['infos'][self.jid]
|
|
||||||
|
|
||||||
def on_close(self, widget):
|
|
||||||
"""When Close button is clicked"""
|
|
||||||
widget.get_toplevel().destroy()
|
|
||||||
|
|
||||||
def set_value(self, entry_name, value):
|
|
||||||
try:
|
|
||||||
self.xml.get_widget(entry_name).set_text(value)
|
|
||||||
except AttributeError, e:
|
|
||||||
pass
|
|
||||||
|
|
||||||
def set_values(self, vcard):
|
|
||||||
for i in vcard.keys():
|
|
||||||
if type(vcard[i]) == type({}):
|
|
||||||
for j in vcard[i].keys():
|
|
||||||
self.set_value('entry_'+i+'_'+j, vcard[i][j])
|
|
||||||
else:
|
|
||||||
if i == 'DESC':
|
|
||||||
self.xml.get_widget('textview_DESC').get_buffer().\
|
|
||||||
set_text(vcard[i], 0)
|
|
||||||
else:
|
|
||||||
self.set_value('entry_'+i, vcard[i])
|
|
||||||
|
|
||||||
def add_to_vcard(self, vcard, entry, txt):
|
|
||||||
"""Add an information to the vCard dictionary"""
|
|
||||||
entries = string.split(entry, '_')
|
|
||||||
loc = vcard
|
|
||||||
while len(entries) > 1:
|
|
||||||
if not loc.has_key(entries[0]):
|
|
||||||
loc[entries[0]] = {}
|
|
||||||
loc = loc[entries[0]]
|
|
||||||
del entries[0]
|
|
||||||
loc[entries[0]] = txt
|
|
||||||
return vcard
|
|
||||||
|
|
||||||
def make_vcard(self):
|
|
||||||
"""make the vCard dictionary"""
|
|
||||||
entries = ['FN', 'NICKNAME', 'BDAY', 'EMAIL_USERID', 'URL', 'TEL_NUMBER',\
|
|
||||||
'ADR_STREET', 'ADR_EXTADR', 'ADR_LOCALITY', 'ADR_REGION', 'ADR_PCODE',\
|
|
||||||
'ADR_CTRY', 'ORG_ORGNAME', 'ORG_ORGUNIT', 'TITLE', 'ROLE']
|
|
||||||
vcard = {}
|
|
||||||
for e in entries:
|
|
||||||
txt = self.xml.get_widget('entry_'+e).get_text()
|
|
||||||
if txt != '':
|
|
||||||
vcard = self.add_to_vcard(vcard, e, txt)
|
|
||||||
buf = self.xml.get_widget('textview_DESC').get_buffer()
|
|
||||||
start_iter = buf.get_start_iter()
|
|
||||||
end_iter = buf.get_end_iter()
|
|
||||||
txt = buf.get_text(start_iter, end_iter, 0)
|
|
||||||
if txt != '':
|
|
||||||
vcard['DESC']= txt
|
|
||||||
return vcard
|
|
||||||
|
|
||||||
def on_retrieve(self, widget):
|
|
||||||
if self.plugin.connected[self.account]:
|
|
||||||
self.plugin.send('ASK_VCARD', self.account, self.jid)
|
|
||||||
else:
|
|
||||||
warning_dialog(_("You must be connected to get your informations"))
|
|
||||||
|
|
||||||
def on_publish(self, widget):
|
|
||||||
if not self.plugin.connected[self.account]:
|
|
||||||
warning_dialog(_("You must be connected to publish your informations"))
|
|
||||||
return
|
|
||||||
vcard = self.make_vcard()
|
|
||||||
nick = ''
|
|
||||||
if vcard.has_key('NICKNAME'):
|
|
||||||
nick = vcard['NICKNAME']
|
|
||||||
if nick == '':
|
|
||||||
nick = self.plugin.accounts[self.account]['name']
|
|
||||||
self.plugin.nicks[self.account] = nick
|
|
||||||
self.plugin.send('VCARD', self.account, vcard)
|
|
||||||
|
|
||||||
def __init__(self, jid, plugin, account):
|
|
||||||
self.xml = gtk.glade.XML(GTKGUI_GLADE, 'vcard', APP)
|
|
||||||
self.window = self.xml.get_widget('vcard')
|
|
||||||
self.jid = jid
|
|
||||||
self.plugin = plugin
|
|
||||||
self.account = account
|
|
||||||
|
|
||||||
self.xml.signal_connect('gtk_widget_destroy', self.delete_event)
|
|
||||||
self.xml.signal_connect('on_close_clicked', self.on_close)
|
|
||||||
self.xml.signal_connect('on_retrieve_clicked', self.on_retrieve)
|
|
||||||
self.xml.signal_connect('on_publish_clicked', self.on_publish)
|
|
||||||
|
|
||||||
class preferences_window:
|
class preferences_window:
|
||||||
"""Class for Preferences window"""
|
"""Class for Preferences window"""
|
||||||
def delete_event(self, widget):
|
def delete_event(self, widget):
|
||||||
|
@ -1050,7 +961,8 @@ class accountpreferences_window:
|
||||||
jid = self.xml.get_widget('jid_entry').get_text()
|
jid = self.xml.get_widget('jid_entry').get_text()
|
||||||
if self.plugin.connected[self.account]:
|
if self.plugin.connected[self.account]:
|
||||||
self.plugin.windows[self.account]['infos'][jid] = \
|
self.plugin.windows[self.account]['infos'][jid] = \
|
||||||
vCard_Window(jid, self.plugin, self.account)
|
infoUser_Window(jid, self.plugin, self.account, True)
|
||||||
|
# vCard_Window(jid, self.plugin, self.account)
|
||||||
self.plugin.send('ASK_VCARD', self.account, jid)
|
self.plugin.send('ASK_VCARD', self.account, jid)
|
||||||
else:
|
else:
|
||||||
warning_dialog(_('You must be connected to get your informations'))
|
warning_dialog(_('You must be connected to get your informations'))
|
||||||
|
|
|
@ -36,10 +36,13 @@ class infoUser_Window:
|
||||||
"""Class for user's information window"""
|
"""Class for user's information window"""
|
||||||
def on_user_information_window_destroy(self, widget=None):
|
def on_user_information_window_destroy(self, widget=None):
|
||||||
"""close window"""
|
"""close window"""
|
||||||
del self.plugin.windows[self.account]['infos'][self.user.jid]
|
del self.plugin.windows[self.account]['infos'][self.jid]
|
||||||
|
|
||||||
def on_close_button_clicked(self, widget):
|
def on_close_button_clicked(self, widget):
|
||||||
"""Save user's informations and update the roster on the Jabber server"""
|
"""Save user's informations and update the roster on the Jabber server"""
|
||||||
|
if self.vcard:
|
||||||
|
widget.get_toplevel().destroy()
|
||||||
|
return
|
||||||
#update user.name if it's not ""
|
#update user.name if it's not ""
|
||||||
name_entry = self.xml.get_widget('nickname_entry')
|
name_entry = self.xml.get_widget('nickname_entry')
|
||||||
new_name = name_entry.get_text()
|
new_name = name_entry.get_text()
|
||||||
|
@ -87,41 +90,122 @@ class infoUser_Window:
|
||||||
else:
|
else:
|
||||||
self.set_value(i+'_entry', vcard[i])
|
self.set_value(i+'_entry', vcard[i])
|
||||||
|
|
||||||
def __init__(self, user, plugin, account):
|
def fill_jabber_page(self):
|
||||||
self.xml = gtk.glade.XML(GTKGUI_GLADE, 'user_information_window', APP)
|
self.xml.get_widget('nickname_label').set_text(self.user.name)
|
||||||
self.window = self.xml.get_widget('user_information_window')
|
self.xml.get_widget('jid_label').set_text(self.user.jid)
|
||||||
self.plugin = plugin
|
self.xml.get_widget('subscription_label').set_text(self.user.sub)
|
||||||
self.user = user
|
if self.user.ask:
|
||||||
self.account = account
|
self.xml.get_widget('ask_label').set_text(self.user.ask)
|
||||||
|
|
||||||
self.xml.get_widget('nickname_label').set_text(user.name)
|
|
||||||
self.xml.get_widget('jid_label').set_text(user.jid)
|
|
||||||
self.xml.get_widget('subscription_label').set_text(user.sub)
|
|
||||||
if user.ask:
|
|
||||||
self.xml.get_widget('ask_label').set_text(user.ask)
|
|
||||||
else:
|
else:
|
||||||
self.xml.get_widget('ask_label').set_text('None')
|
self.xml.get_widget('ask_label').set_text('None')
|
||||||
self.xml.get_widget('nickname_entry').set_text(user.name)
|
self.xml.get_widget('nickname_entry').set_text(self.user.name)
|
||||||
account_info = self.plugin.accounts[account]
|
account_info = self.plugin.accounts[self.account]
|
||||||
log = 1
|
log = 1
|
||||||
if account_info.has_key('no_log_for'):
|
if account_info.has_key('no_log_for'):
|
||||||
if user.jid in account_info['no_log_for'].split(' '):
|
if self.user.jid in account_info['no_log_for'].split(' '):
|
||||||
log = 0
|
log = 0
|
||||||
self.xml.get_widget('log_checkbutton').set_active(log)
|
self.xml.get_widget('log_checkbutton').set_active(log)
|
||||||
resources = user.resource + ' (' + str(user.priority) + ')'
|
resources = self.user.resource + ' (' + str(self.user.priority) + ')'
|
||||||
if not user.status:
|
if not self.user.status:
|
||||||
user.status = ''
|
user.status = ''
|
||||||
stats = user.show + ' : ' + user.status
|
stats = self.user.show + ' : ' + self.user.status
|
||||||
for u in self.plugin.roster.contacts[account][user.jid]:
|
for u in self.plugin.roster.contacts[self.account][self.user.jid]:
|
||||||
if u.resource != user.resource:
|
if u.resource != self.user.resource:
|
||||||
resources += '\n' + u.resource + ' (' + str(u.priority) + ')'
|
resources += '\n' + u.resource + ' (' + str(u.priority) + ')'
|
||||||
if not u.status:
|
if not u.status:
|
||||||
u.status = ''
|
u.status = ''
|
||||||
stats += '\n' + u.show + ' : ' + u.status
|
stats += '\n' + u.show + ' : ' + u.status
|
||||||
self.xml.get_widget('resource_label').set_text(resources)
|
self.xml.get_widget('resource_label').set_text(resources)
|
||||||
self.xml.get_widget('status_label').set_text(stats)
|
self.xml.get_widget('status_label').set_text(stats)
|
||||||
plugin.send('ASK_VCARD', account, self.user.jid)
|
plugin.send('ASK_VCARD', self.account, self.user.jid)
|
||||||
|
|
||||||
|
def add_to_vcard(self, vcard, entry, txt):
|
||||||
|
"""Add an information to the vCard dictionary"""
|
||||||
|
entries = string.split(entry, '_')
|
||||||
|
loc = vcard
|
||||||
|
while len(entries) > 1:
|
||||||
|
if not loc.has_key(entries[0]):
|
||||||
|
loc[entries[0]] = {}
|
||||||
|
loc = loc[entries[0]]
|
||||||
|
del entries[0]
|
||||||
|
loc[entries[0]] = txt
|
||||||
|
return vcard
|
||||||
|
|
||||||
|
def make_vcard(self):
|
||||||
|
"""make the vCard dictionary"""
|
||||||
|
entries = ['FN', 'NICKNAME', 'BDAY', 'EMAIL_USERID', 'URL', 'TEL_NUMBER',\
|
||||||
|
'ADR_STREET', 'ADR_EXTADR', 'ADR_LOCALITY', 'ADR_REGION', 'ADR_PCODE',\
|
||||||
|
'ADR_CTRY', 'ORG_ORGNAME', 'ORG_ORGUNIT', 'TITLE', 'ROLE']
|
||||||
|
vcard = {}
|
||||||
|
for e in entries:
|
||||||
|
txt = self.xml.get_widget(e+'_entry').get_text()
|
||||||
|
if txt != '':
|
||||||
|
vcard = self.add_to_vcard(vcard, e, txt)
|
||||||
|
buffer = self.xml.get_widget('DESC_textview').get_buffer()
|
||||||
|
start_iter = buffer.get_start_iter()
|
||||||
|
end_iter = buffer.get_end_iter()
|
||||||
|
txt = buffer.get_text(start_iter, end_iter, 0)
|
||||||
|
if txt != '':
|
||||||
|
vcard['DESC'] = txt
|
||||||
|
return vcard
|
||||||
|
|
||||||
|
def on_publish_button_clicked(self, widget):
|
||||||
|
if not self.plugin.connected[self.account]:
|
||||||
|
warning_dialog(_("You must be connected to publish your informations"))
|
||||||
|
return
|
||||||
|
vcard = self.make_vcard()
|
||||||
|
nick = ''
|
||||||
|
if vcard.has_key('NICKNAME'):
|
||||||
|
nick = vcard['NICKNAME']
|
||||||
|
if nick == '':
|
||||||
|
nick = self.plugin.accounts[self.account]['name']
|
||||||
|
self.plugin.nicks[self.account] = nick
|
||||||
|
self.plugin.send('VCARD', self.account, vcard)
|
||||||
|
|
||||||
|
def on_retrieve_button_clicked(self, widget):
|
||||||
|
if self.plugin.connected[self.account]:
|
||||||
|
self.plugin.send('ASK_VCARD', self.account, self.jid)
|
||||||
|
else:
|
||||||
|
warning_dialog(_('You must be connected to get your informations'))
|
||||||
|
|
||||||
|
def change_to_vcard(self):
|
||||||
|
self.xml.get_widget('information_notebook').remove_page(0)
|
||||||
|
self.xml.get_widget('nickname_label').set_text('Personal details')
|
||||||
|
information_hbuttonbox = self.xml.get_widget('information_hbuttonbox')
|
||||||
|
#publish button
|
||||||
|
button = gtk.Button(stock=gtk.STOCK_GOTO_TOP)
|
||||||
|
button.get_children()[0].get_children()[0].get_children()[1].\
|
||||||
|
set_text('Publish')
|
||||||
|
button.connect('clicked', self.on_publish_button_clicked)
|
||||||
|
button.show_all()
|
||||||
|
information_hbuttonbox.pack_start(button)
|
||||||
|
#retrieve button
|
||||||
|
button = gtk.Button(stock=gtk.STOCK_GOTO_BOTTOM)
|
||||||
|
button.get_children()[0].get_children()[0].get_children()[1].\
|
||||||
|
set_text('Retrieve')
|
||||||
|
button.connect('clicked', self.on_retrieve_button_clicked)
|
||||||
|
button.show_all()
|
||||||
|
information_hbuttonbox.pack_start(button)
|
||||||
|
#close button at the end
|
||||||
|
button = self.xml.get_widget('close_button')
|
||||||
|
information_hbuttonbox.reorder_child(button, 2)
|
||||||
|
|
||||||
|
#the user variable is the jid if vcard is true
|
||||||
|
def __init__(self, user, plugin, account, vcard=False):
|
||||||
|
self.xml = gtk.glade.XML(GTKGUI_GLADE, 'vcard_information_window', APP)
|
||||||
|
self.window = self.xml.get_widget('vcard_information_window')
|
||||||
|
self.plugin = plugin
|
||||||
|
self.user = user #don't use it is vcard is true
|
||||||
|
self.account = account
|
||||||
|
self.vcard = vcard
|
||||||
|
|
||||||
|
if vcard:
|
||||||
|
self.jid = user
|
||||||
|
self.change_to_vcard()
|
||||||
|
else:
|
||||||
|
self.jid = user.jid
|
||||||
|
self.fill_jabber_page()
|
||||||
|
|
||||||
self.xml.signal_autoconnect(self)
|
self.xml.signal_autoconnect(self)
|
||||||
|
|
||||||
class passphrase_Window:
|
class passphrase_Window:
|
||||||
|
|
File diff suppressed because it is too large
Load diff
Loading…
Add table
Reference in a new issue