[patrys] new vcard window. For #1840
This commit is contained in:
parent
a67eaba727
commit
8896419494
3 changed files with 1758 additions and 1760 deletions
File diff suppressed because it is too large
Load diff
BIN
data/pixmaps/person.png
Normal file
BIN
data/pixmaps/person.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 594 B |
57
src/vcard.py
57
src/vcard.py
|
@ -70,7 +70,6 @@ class VcardWindow:
|
||||||
|
|
||||||
self.publish_button.set_no_show_all(True)
|
self.publish_button.set_no_show_all(True)
|
||||||
self.retrieve_button.set_no_show_all(True)
|
self.retrieve_button.set_no_show_all(True)
|
||||||
self.xml.get_widget('photo_vbuttonbox').set_no_show_all(True)
|
|
||||||
|
|
||||||
self.contact = contact # don't use it if vcard is true
|
self.contact = contact # don't use it if vcard is true
|
||||||
self.account = account
|
self.account = account
|
||||||
|
@ -96,6 +95,11 @@ class VcardWindow:
|
||||||
# here (when we see someone else's vcard)
|
# here (when we see someone else's vcard)
|
||||||
self.nickname_entry.connect('focus-out-event',
|
self.nickname_entry.connect('focus-out-event',
|
||||||
self.on_nickname_entry_focus_out_event)
|
self.on_nickname_entry_focus_out_event)
|
||||||
|
button = self.xml.get_widget('set_avatar_button')
|
||||||
|
button.set_no_show_all(True)
|
||||||
|
button.connect('clicked',
|
||||||
|
gtkgui_helpers.on_avatar_save_as_menuitem_activate,
|
||||||
|
self.jid, self.account, self.contact.name + '.jpeg')
|
||||||
|
|
||||||
self.xml.signal_autoconnect(self)
|
self.xml.signal_autoconnect(self)
|
||||||
self.window.show_all()
|
self.window.show_all()
|
||||||
|
@ -152,10 +156,11 @@ class VcardWindow:
|
||||||
|
|
||||||
def on_clear_button_clicked(self, widget):
|
def on_clear_button_clicked(self, widget):
|
||||||
# empty the image
|
# empty the image
|
||||||
self.xml.get_widget('PHOTO_image').set_from_pixbuf(None)
|
path = os.path.join(gajim.DATA_DIR, 'pixmaps', 'person.png')
|
||||||
|
self.xml.get_widget('PHOTO_image').set_from_file(path)
|
||||||
self.avatar_encoded = None
|
self.avatar_encoded = None
|
||||||
if self.avatar_save_as_id:
|
if self.avatar_save_as_id:
|
||||||
self.xml.get_widget('PHOTO_eventbox').disconnect(
|
self.xml.get_widget('set_avatar_button').disconnect(
|
||||||
self.avatar_save_as_id)
|
self.avatar_save_as_id)
|
||||||
self.avatar_save_as_id = None
|
self.avatar_save_as_id = None
|
||||||
|
|
||||||
|
@ -207,7 +212,7 @@ class VcardWindow:
|
||||||
|
|
||||||
self.dialog = dialogs.ImageChooserDialog(on_response_ok = on_ok)
|
self.dialog = dialogs.ImageChooserDialog(on_response_ok = on_ok)
|
||||||
|
|
||||||
def on_PHOTO_eventbox_button_press_event(self, widget, event):
|
def on_PHOTO_button_press_event(self, widget, event):
|
||||||
'''If right-clicked, show popup'''
|
'''If right-clicked, show popup'''
|
||||||
if event.button == 3: # right click
|
if event.button == 3: # right click
|
||||||
if self.vcard:
|
if self.vcard:
|
||||||
|
@ -223,6 +228,12 @@ class VcardWindow:
|
||||||
gtkgui_helpers.on_avatar_save_as_menuitem_activate,
|
gtkgui_helpers.on_avatar_save_as_menuitem_activate,
|
||||||
self.jid, account, nick + '.jpeg')
|
self.jid, account, nick + '.jpeg')
|
||||||
menu.append(menuitem)
|
menu.append(menuitem)
|
||||||
|
# show clear for own avatar
|
||||||
|
if self.vcard:
|
||||||
|
menuitem = gtk.ImageMenuItem(gtk.STOCK_CLEAR)
|
||||||
|
menuitem.connect('activate',
|
||||||
|
self.on_clear_button_clicked)
|
||||||
|
menu.append(menuitem)
|
||||||
menu.show_all()
|
menu.show_all()
|
||||||
menu.connect('selection-done', lambda w:w.destroy())
|
menu.connect('selection-done', lambda w:w.destroy())
|
||||||
# show the menu
|
# show the menu
|
||||||
|
@ -240,14 +251,17 @@ class VcardWindow:
|
||||||
if i == 'PHOTO':
|
if i == 'PHOTO':
|
||||||
pixbuf, self.avatar_encoded, self.avatar_mime_type = \
|
pixbuf, self.avatar_encoded, self.avatar_mime_type = \
|
||||||
get_avatar_pixbuf_encoded_mime(vcard[i])
|
get_avatar_pixbuf_encoded_mime(vcard[i])
|
||||||
if not pixbuf:
|
|
||||||
continue
|
|
||||||
image = self.xml.get_widget('PHOTO_image')
|
image = self.xml.get_widget('PHOTO_image')
|
||||||
|
if not pixbuf:
|
||||||
|
image.set_from_icon_name('stock_person',
|
||||||
|
gtk.ICON_SIZE_DIALOG)
|
||||||
|
continue
|
||||||
pixbuf = gtkgui_helpers.get_scaled_pixbuf(pixbuf, 'vcard')
|
pixbuf = gtkgui_helpers.get_scaled_pixbuf(pixbuf, 'vcard')
|
||||||
image.set_from_pixbuf(pixbuf)
|
image.set_from_pixbuf(pixbuf)
|
||||||
eventbox = self.xml.get_widget('PHOTO_eventbox')
|
button = self.xml.get_widget('set_avatar_button')
|
||||||
self.avatar_save_as_id = eventbox.connect('button-press-event',
|
self.avatar_save_as_id = button.connect('button-press-event',
|
||||||
self.on_PHOTO_eventbox_button_press_event)
|
self.on_PHOTO_button_press_event)
|
||||||
|
button.show()
|
||||||
continue
|
continue
|
||||||
if i == 'ADR' or i == 'TEL' or i == 'EMAIL':
|
if i == 'ADR' or i == 'TEL' or i == 'EMAIL':
|
||||||
for entry in vcard[i]:
|
for entry in vcard[i]:
|
||||||
|
@ -270,7 +284,7 @@ class VcardWindow:
|
||||||
self.fill_status_label()
|
self.fill_status_label()
|
||||||
|
|
||||||
def set_os_info(self, resource, client_info, os_info):
|
def set_os_info(self, resource, client_info, os_info):
|
||||||
if self.xml.get_widget('information_notebook').get_n_pages() < 5:
|
if self.xml.get_widget('information_notebook').get_n_pages() < 4:
|
||||||
return
|
return
|
||||||
i = 0
|
i = 0
|
||||||
client = ''
|
client = ''
|
||||||
|
@ -295,7 +309,7 @@ class VcardWindow:
|
||||||
self.xml.get_widget('os_label').set_text(os)
|
self.xml.get_widget('os_label').set_text(os)
|
||||||
|
|
||||||
def fill_status_label(self):
|
def fill_status_label(self):
|
||||||
if self.xml.get_widget('information_notebook').get_n_pages() < 5:
|
if self.xml.get_widget('information_notebook').get_n_pages() < 4:
|
||||||
return
|
return
|
||||||
contact_list = gajim.contacts.get_contact(self.account, self.contact.jid)
|
contact_list = gajim.contacts.get_contact(self.account, self.contact.jid)
|
||||||
# stats holds show and status message
|
# stats holds show and status message
|
||||||
|
@ -326,8 +340,10 @@ class VcardWindow:
|
||||||
|
|
||||||
def fill_jabber_page(self):
|
def fill_jabber_page(self):
|
||||||
tooltips = gtk.Tooltips()
|
tooltips = gtk.Tooltips()
|
||||||
self.xml.get_widget('nickname_label').set_text(
|
self.xml.get_widget('nickname_label').set_markup(
|
||||||
self.contact.get_shown_name())
|
'<b><span size="x-large">' +
|
||||||
|
self.contact.get_shown_name() +
|
||||||
|
'</span></b>')
|
||||||
self.xml.get_widget('jid_label').set_text(self.contact.jid)
|
self.xml.get_widget('jid_label').set_text(self.contact.jid)
|
||||||
uf_sub = helpers.get_uf_sub(self.contact.sub)
|
uf_sub = helpers.get_uf_sub(self.contact.sub)
|
||||||
self.xml.get_widget('subscription_label').set_text(uf_sub)
|
self.xml.get_widget('subscription_label').set_text(uf_sub)
|
||||||
|
@ -487,7 +503,7 @@ class VcardWindow:
|
||||||
self.xml.get_widget('DESC_textview').get_buffer().set_text('')
|
self.xml.get_widget('DESC_textview').get_buffer().set_text('')
|
||||||
self.xml.get_widget('PHOTO_image').set_from_pixbuf(None)
|
self.xml.get_widget('PHOTO_image').set_from_pixbuf(None)
|
||||||
if self.avatar_save_as_id:
|
if self.avatar_save_as_id:
|
||||||
self.xml.get_widget('PHOTO_eventbox').disconnect(
|
self.xml.get_widget('set_avatar_button').disconnect(
|
||||||
self.avatar_save_as_id)
|
self.avatar_save_as_id)
|
||||||
self.avatar_save_as_id = None
|
self.avatar_save_as_id = None
|
||||||
gajim.connections[self.account].request_vcard(self.jid)
|
gajim.connections[self.account].request_vcard(self.jid)
|
||||||
|
@ -497,14 +513,17 @@ class VcardWindow:
|
||||||
|
|
||||||
def change_to_vcard(self):
|
def change_to_vcard(self):
|
||||||
self.xml.get_widget('information_notebook').remove_page(0)
|
self.xml.get_widget('information_notebook').remove_page(0)
|
||||||
self.xml.get_widget('nickname_label').set_text(_('Personal details'))
|
self.xml.get_widget('nickname_label').set_markup(
|
||||||
|
'<b><span size="x-large">' +
|
||||||
|
_('Personal details') +
|
||||||
|
'</span></b>')
|
||||||
|
self.xml.get_widget('set_avatar_button').connect('clicked',
|
||||||
|
self.on_set_avatar_button_clicked)
|
||||||
|
|
||||||
|
self.xml.get_widget('set_avatar_button').show()
|
||||||
self.publish_button.show()
|
self.publish_button.show()
|
||||||
self.retrieve_button.show()
|
self.retrieve_button.show()
|
||||||
|
|
||||||
#photo_vbuttonbox visible
|
|
||||||
self.xml.get_widget('photo_vbuttonbox').show()
|
|
||||||
|
|
||||||
#make all entries editable
|
#make all entries editable
|
||||||
entries = ['FN', 'NICKNAME', 'BDAY', 'EMAIL_HOME_USERID', 'URL',
|
entries = ['FN', 'NICKNAME', 'BDAY', 'EMAIL_HOME_USERID', 'URL',
|
||||||
'TEL_HOME_NUMBER', 'N_FAMILY', 'N_GIVEN', 'N_MIDDLE', 'N_PREFIX',
|
'TEL_HOME_NUMBER', 'N_FAMILY', 'N_GIVEN', 'N_MIDDLE', 'N_PREFIX',
|
||||||
|
|
Loading…
Add table
Reference in a new issue