diff --git a/src/config.py b/src/config.py index 8be50be5d..2c79e72c3 100644 --- a/src/config.py +++ b/src/config.py @@ -895,7 +895,7 @@ class Account_modification_window: """Class for account informations""" def on_account_modification_window_destroy(self, widget): """close window""" - del self.plugin.windows['account_modification'] + del self.plugin.windows[self.account]['account_modification'] def on_cancel_button_clicked(self, widget): self.window.destroy() @@ -1340,7 +1340,7 @@ class Accounts_window: def on_new_button_clicked(self, widget): """When new button is clicked : open an account information window""" - if self.plugin.windows.has_key('account_modification_window'): + if self.plugin.windows.has_key('account_modification'): self.plugin.windows['account_modification'].window.present() else: self.plugin.windows['account_modification'] = \ @@ -1374,7 +1374,7 @@ class Accounts_window: sel = self.accounts_treeview.get_selection() (model, iter) = sel.get_selected() account = model.get_value(iter, 0) - if self.plugin.windows[account].has_key('account_modification_window'): + if self.plugin.windows[account].has_key('account_modification'): self.plugin.windows[account]['account_modification'].window.present() else: self.plugin.windows[account]['account_modification'] = \ @@ -1628,14 +1628,64 @@ class Add_remove_emoticons_window: class Service_discovery_window: """Class for Service Discovery Window: - to know the services on the selected server""" + to know the services on a server""" def on_service_discovery_window_destroy(self, widget): """close window""" del self.plugin.windows[self.account]['disco'] def on_close_button_clicked(self, widget): - """When Close button is clicked""" self.window.destroy() + + def __init__(self, plugin, account): + if gajim.connections[account].connected < 2: + dialog.Error_dialog(_('You must be connected to browse services')) + return + xml = gtk.glade.XML(GTKGUI_GLADE, 'service_discovery_window', APP) + self.window = xml.get_widget('service_discovery_window') + self.services_treeview = xml.get_widget('services_treeview') + self.join_button = xml.get_widget('join_button') + self.register_button = xml.get_widget('register_button') + self.address_comboboxentry = xml.get_widget('address_comboboxentry') + self.address_comboboxentry_entry = self.address_comboboxentry.child + self.address_comboboxentry_entry.set_activates_default(True) + self.plugin = plugin + self.account = account + self.agent_infos = {} + model = gtk.TreeStore(gobject.TYPE_STRING, gobject.TYPE_STRING) + self.services_treeview.set_model(model) + #columns + renderer = gtk.CellRendererText() + renderer.set_data('column', 0) + self.services_treeview.insert_column_with_attributes(-1, 'Name', \ + renderer, text=0) + renderer = gtk.CellRendererText() + renderer.set_data('column', 1) + self.services_treeview.insert_column_with_attributes(-1, 'Service', \ + renderer, text=1) + + self.address_comboboxentry = xml.get_widget('address_comboboxentry') + liststore = gtk.ListStore(str) + self.address_comboboxentry.set_model(liststore) + self.address_comboboxentry.set_text_column(0) + self.latest_addresses = gajim.config.get('latest_disco_addresses').split() + server_address = gajim.config.get_per('accounts', self.account, \ + 'hostname') + if server_address in self.latest_addresses: + self.latest_addresses.remove(server_address) + self.latest_addresses.insert(0, server_address) + if len(self.latest_addresses) > 10: + self.latest_addresses = self.latest_addresses[0:10] + for j in self.latest_addresses: + self.address_comboboxentry.append_text(j) + self.address_comboboxentry.child.set_text(server_address) + + self.register_button = xml.get_widget('register_button') + self.register_button.set_sensitive(False) + self.join_button = xml.get_widget('join_button') + self.join_button.set_sensitive(False) + xml.signal_autoconnect(self) + self.browse(server_address) + self.window.show_all() def browse(self, jid): """Send a request to the core to know the available services""" @@ -1842,54 +1892,3 @@ class Service_discovery_window: self.services_treeview.get_model().clear() self.browse(server_address) self.plugin.save_config() - - def __init__(self, plugin, account): - if gajim.connections[account].connected < 2: - dialog.Error_dialog(_('You must be connected to browse services')) - return - xml = gtk.glade.XML(GTKGUI_GLADE, 'service_discovery_window', APP) - self.window = xml.get_widget('service_discovery_window') - self.services_treeview = xml.get_widget('services_treeview') - self.join_button = xml.get_widget('join_button') - self.register_button = xml.get_widget('register_button') - self.address_comboboxentry = xml.get_widget('address_comboboxentry') - self.address_comboboxentry_entry = self.address_comboboxentry.child - self.address_comboboxentry_entry.set_activates_default(True) - self.plugin = plugin - self.account = account - self.agent_infos = {} - model = gtk.TreeStore(gobject.TYPE_STRING, gobject.TYPE_STRING) - self.services_treeview.set_model(model) - #columns - renderer = gtk.CellRendererText() - renderer.set_data('column', 0) - self.services_treeview.insert_column_with_attributes(-1, 'Name', \ - renderer, text=0) - renderer = gtk.CellRendererText() - renderer.set_data('column', 1) - self.services_treeview.insert_column_with_attributes(-1, 'Service', \ - renderer, text=1) - - self.address_comboboxentry = xml.get_widget('address_comboboxentry') - liststore = gtk.ListStore(str) - self.address_comboboxentry.set_model(liststore) - self.address_comboboxentry.set_text_column(0) - self.latest_addresses = gajim.config.get('latest_disco_addresses').split() - server_address = gajim.config.get_per('accounts', self.account, \ - 'hostname') - if server_address in self.latest_addresses: - self.latest_addresses.remove(server_address) - self.latest_addresses.insert(0, server_address) - if len(self.latest_addresses) > 10: - self.latest_addresses = self.latest_addresses[0:10] - for j in self.latest_addresses: - self.address_comboboxentry.append_text(j) - self.address_comboboxentry.child.set_text(server_address) - - self.register_button = xml.get_widget('register_button') - self.register_button.set_sensitive(False) - self.join_button = xml.get_widget('join_button') - self.join_button.set_sensitive(False) - xml.signal_autoconnect(self) - self.browse(server_address) - self.window.show_all() diff --git a/src/dialogs.py b/src/dialogs.py index ca4d21ad7..a67971094 100644 --- a/src/dialogs.py +++ b/src/dialogs.py @@ -239,6 +239,7 @@ class Edit_groups_dialog: self.plugin = plugin self.account = account self.user = user + self.changes_made = False self.list = self.xml.get_widget('groups_treeview') self.xml.get_widget('nickname_label').set_markup(\ _('Contact\'s name: %s') % user.name) @@ -251,9 +252,9 @@ class Edit_groups_dialog: def run(self): self.dialog.run() self.dialog.destroy() - #TODO: do not send if unnecesary - gajim.connections[self.account].update_user(self.user.jid, \ - self.user.name, self.user.groups) + if self.changes_made: + gajim.connections[self.account].update_user(self.user.jid, \ + self.user.name, self.user.groups) def update_user(self): self.plugin.roster.remove_user(self.user, self.account) @@ -275,6 +276,7 @@ class Edit_groups_dialog: self.update_user() def group_toggled_cb(self, cell, path): + self.changes_made = True model = self.list.get_model() if model[path][1] and len(self.user.groups) == 1: # we try to remove # the latest group diff --git a/src/gtkgui.glade b/src/gtkgui.glade index e898f93aa..93594bc07 100644 --- a/src/gtkgui.glade +++ b/src/gtkgui.glade @@ -9204,7 +9204,7 @@ Custom 0 True Click for contact's extented information - Anonymous <id@server/res> + Anonymous <nick@server/res> True GTK_RELIEF_NONE True diff --git a/src/gtkgui.py b/src/gtkgui.py index 7903f816a..315a0f5cb 100644 --- a/src/gtkgui.py +++ b/src/gtkgui.py @@ -313,27 +313,31 @@ class interface: elif self.roster.contacts[account].has_key(ji): #It isn't an agent self.roster.chg_user_status(user1, array[1], array[2], account) - #play sound - if old_show < 2 and new_show > 1 and gajim.config.get_per( \ - 'soundevents', 'contact_connected', 'enabled'): - self.play_sound('contact_connected') + #inform the user about new contact online + if old_show < 2 and new_show > 1: + if gajim.config.get_per('soundevents', 'contact_connected', \ + 'enabled'): + self.play_sound('contact_connected') if not self.windows[account]['chats'].has_key(jid) and \ not self.queues[account].has_key(jid) and \ - gajim.config.get('notify_on_online') and \ - gajim.config.get('autopopupaway'): - instance = dialogs.Popup_window(self, 'Contact Online', jid, \ - account) - self.roster.popup_windows.append(instance) - elif old_show > 1 and new_show < 2 and gajim.config.get_per( \ - 'soundevents', 'contact_disconnected', 'enabled'): - self.play_sound('contact_disconnected') - if not self.windows[account]['chats'].has_key(jid) and \ - not self.queues[account].has_key(jid) and \ - gajim.config.get('notify_on_offline') and \ - gajim.config.get('autopopupaway'): - instance = dialogs.Popup_window(self, 'Contact Offline', jid, \ - account) - self.roster.popup_windows.append(instance) + gajim.config.get('notify_on_online'): + #FIXME: check what is OUR STATUS and do the rest + if gajim.config.get('autopopupaway'): + instance = dialogs.Popup_window(self, 'Contact Online', jid, \ + account) + self.roster.popup_windows.append(instance) + elif old_show > 1 and new_show < 2: + if gajim.config.get_per('soundevents', 'contact_disconnected', \ + 'enabled'): + self.play_sound('contact_disconnected') + if not self.windows[account]['chats'].has_key(jid) and \ + not self.queues[account].has_key(jid) and \ + gajim.config.get('notify_on_offline'): + #FIXME: check what is OUR STATUS and do the rest + if gajim.config.get('autopopupaway'): + instance = dialogs.Popup_window(self, 'Contact Offline', jid, \ + account) + self.roster.popup_windows.append(instance) elif self.windows[account]['gc'].has_key(ji): #it is a groupchat presence @@ -354,10 +358,11 @@ class interface: if not self.windows[account]['chats'].has_key(jid) and \ not self.queues[account].has_key(jid): first = True - if gajim.config.get('notify_on_new_message') and \ - gajim.config.get('autopopupaway'): - instance = dialogs.Popup_window(self, 'New Message', jid, account) - self.roster.popup_windows.append(instance) + if gajim.config.get('notify_on_new_message'): + #FIXME: check what is OUR STATUS (if we're online) and do the rest + if gajim.config.get('autopopupaway'): + instance = dialogs.Popup_window(self, 'New Message', jid, account) + self.roster.popup_windows.append(instance) self.roster.on_message(jid, array[1], array[2], account) if gajim.config.get_per('soundevents', 'first_message_received', \ 'enabled') and first: @@ -743,7 +748,7 @@ class interface: # get instances for windows/dialogs that will show_all()/hide() self.windows['preferences'] = config.Preferences_window(self) - self.windows['add_remove_emoticons_window'] = \ + self.windows['add_remove_emoticons'] = \ config.Add_remove_emoticons_window(self) self.windows['roster'] = self.roster diff --git a/src/roster_window.py b/src/roster_window.py index b334499a2..aef87a735 100644 --- a/src/roster_window.py +++ b/src/roster_window.py @@ -530,7 +530,7 @@ class Roster_window: menu.reposition() def on_edit_account(self, widget, account): - if self.plugin.windows.has_key('account_modification_window'): + if self.plugin.windows.has_key('account_modification'): self.plugin.windows['account_modification'].window.present() else: self.plugin.windows['account_modification'] = \ @@ -879,7 +879,7 @@ class Roster_window: path = None autopopup = gajim.config.get('autopopup') autopopupaway = gajim.config.get('autopopupaway') - if (autopopup == 0 or ( not autopopupaway and \ + if (not autopopup or ( not autopopupaway and \ gajim.connections[account].connected > 2)) and not \ self.plugin.windows[account]['chats'].has_key(jid): #We save it in a queue