more user friendly Add contact window

This commit is contained in:
Yann Leboulanger 2005-02-03 22:21:55 +00:00
parent ad61789101
commit 1d2380b6d7
2 changed files with 202 additions and 46 deletions

View File

@ -374,16 +374,77 @@ class addContact_Window:
self.plugin.roster.req_sub(self, who, txt, self.account)
widget.get_toplevel().destroy()
def fill_who(self):
cb = self.xml.get_widget('combobox_agent')
model = cb.get_model()
index = cb.get_active()
str = self.xml.get_widget('entry_login').get_text()
str = str.replace("@", "%")
agent = model[index][1]
if agent:
str += "@" + agent
self.xml.get_widget('entry_who').set_text(str)
def on_cb_changed(self, widget):
self.fill_who()
def guess_agent(self):
login = self.xml.get_widget('entry_login').get_text()
cb = self.xml.get_widget('combobox_agent')
model = cb.get_model()
#If login contains only numbers, it's probably an ICQ number
try:
string.atoi(login)
except:
pass
else:
if 'ICQ' in self.agents:
cb.set_active(self.agents.index('ICQ'))
return
cb.set_active(0)
def on_entry_login_changed(self, widget):
self.guess_agent() #It changes the cb so automatically call fill_who()
def __init__(self, plugin, account, jid=None):
self.plugin = plugin
self.account = account
self.xml = gtk.glade.XML(GTKGUI_GLADE, 'Add', APP)
self.window = self.xml.get_widget('Add')
liststore = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING)
liststore.append(['Jabber', ''])
self.agents = ['Jabber']
jid_agents = []
for j in self.plugin.roster.contacts[account]:
user = self.plugin.roster.contacts[account][j][0]
if 'Agents' in user.groups:
jid_agents.append(j)
for a in jid_agents:
if a.find("aim") > -1:
name = "AIM"
elif a.find("icq") > -1:
name = "ICQ"
elif a.find("msn") > -1:
name = "MSN"
elif a.find("yahoo") > -1:
name = "Yahoo!"
else:
name = a
iter = liststore.append([name, a])
self.agents.append(name)
cb = self.xml.get_widget('combobox_agent')
cb.set_model(liststore)
cb.set_active(0)
self.fill_who()
if jid:
self.xml.get_widget('entry_who').set_text(jid)
self.xml.signal_connect('gtk_widget_destroy', self.delete_event)
self.xml.signal_connect('on_button_sub_clicked', self.on_subscribe)
self.xml.signal_connect('on_cancel_clicked', self.on_cancel)
self.xml.signal_connect('on_cb_changed', self.on_cb_changed)
self.xml.signal_connect('on_entry_login_changed', \
self.on_entry_login_changed)
class warning_Window:
"""Class for warning window : print a warning message"""

View File

@ -2170,53 +2170,16 @@ on the server.</property>
<property name="spacing">0</property>
<child>
<widget class="GtkHBox" id="hbox11">
<widget class="GtkTable" id="table21">
<property name="visible">True</property>
<property name="n_rows">3</property>
<property name="n_columns">3</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
<property name="row_spacing">5</property>
<property name="column_spacing">5</property>
<child>
<widget class="GtkImage" id="image127">
<property name="visible">True</property>
<property name="stock">gtk-redo</property>
<property name="icon_size">4</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">True</property>
<property name="fill">True</property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label17">
<property name="width_request">145</property>
<property name="height_request">8</property>
<property name="visible">True</property>
<property name="label" translatable="yes">Send subscription to :</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_RIGHT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">True</property>
</packing>
</child>
<child>
<widget class="GtkEntry" id="entry_who">
<widget class="GtkEntry" id="entry_login">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="editable">True</property>
@ -2226,11 +2189,143 @@ on the server.</property>
<property name="has_frame">True</property>
<property name="invisible_char">*</property>
<property name="activates_default">False</property>
<signal name="changed" handler="on_entry_login_changed" last_modification_time="Wed, 02 Feb 2005 22:34:32 GMT"/>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="top_attach">0</property>
<property name="bottom_attach">1</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkEntry" id="entry_who">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="editable">False</property>
<property name="visibility">True</property>
<property name="max_length">0</property>
<property name="text" translatable="yes"></property>
<property name="has_frame">True</property>
<property name="invisible_char">*</property>
<property name="activates_default">False</property>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkImage" id="image184">
<property name="visible">True</property>
<property name="stock">gtk-add</property>
<property name="icon_size">4</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="left_attach">0</property>
<property name="right_attach">1</property>
<property name="top_attach">0</property>
<property name="bottom_attach">3</property>
<property name="x_options">fill</property>
<property name="y_options">fill</property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label185">
<property name="visible">True</property>
<property name="label" translatable="yes">Login :</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">0</property>
<property name="bottom_attach">1</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label186">
<property name="visible">True</property>
<property name="label" translatable="yes">Agent :</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label187">
<property name="visible">True</property>
<property name="label" translatable="yes">Jabber ID :</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkComboBox" id="combobox_agent">
<property name="visible">True</property>
<property name="items" translatable="yes"></property>
<signal name="changed" handler="on_cb_changed" last_modification_time="Wed, 02 Feb 2005 22:32:45 GMT"/>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="x_options">fill</property>
<property name="y_options">fill</property>
</packing>
</child>
</widget>