diff --git a/data/pixmaps/muc_separator.png b/data/pixmaps/muc_separator.png new file mode 100644 index 000000000..0440596d7 Binary files /dev/null and b/data/pixmaps/muc_separator.png differ diff --git a/src/dialogs.py b/src/dialogs.py index a9ab11a78..878caaf05 100644 --- a/src/dialogs.py +++ b/src/dialogs.py @@ -239,16 +239,17 @@ class ChangeStatusMessageDialog: self.window.show_all() def run(self): - '''Wait for OK button to be pressed and return status messsage''' + '''Wait for OK or Cancel button to be pressed and return status messsage + (None if users pressed Cancel or x button of WM''' rep = self.window.run() if rep == gtk.RESPONSE_OK: beg, end = self.message_buffer.get_bounds() - message = self.message_buffer.get_text(beg, end, 0).decode('utf-8').strip() + message = self.message_buffer.get_text(beg, end).decode('utf-8').strip() msg = helpers.to_one_line(message) if self.show: gajim.config.set('last_status_msg_' + self.show, msg) else: - message = -1 + message = None # user pressed Cancel button or X wm button self.window.destroy() return message @@ -361,7 +362,7 @@ _('Contact names must be of the form "user@servername".')).get_response() message_buffer = self.xml.get_widget('message_textview').get_buffer() start_iter = message_buffer.get_start_iter() end_iter = message_buffer.get_end_iter() - message = message_buffer.get_text(start_iter, end_iter, 0).decode('utf-8') + message = message_buffer.get_text(start_iter, end_iter).decode('utf-8') group = self.group_comboboxentry.child.get_text().decode('utf-8') self.plugin.roster.req_sub(self, jid, message, self.account, group = group, pseudo = nickname) diff --git a/src/roster_window.py b/src/roster_window.py index 96b7477e2..739de3ad5 100644 --- a/src/roster_window.py +++ b/src/roster_window.py @@ -1008,7 +1008,8 @@ class RosterWindow: show = gajim.SHOW_LIST[gajim.connections[account].connected] dlg = dialogs.ChangeStatusMessageDialog(self.plugin, show) message = dlg.run() - self.send_status(account, show, message) + if message is not None: # None if user pressed Cancel + self.send_status(account, show, message) def mk_menu_account(self, event, iter): '''Make account's popup menu''' @@ -1421,9 +1422,10 @@ _('If "%s" accepts this request you will know his status.') %jid) return dlg = dialogs.ChangeStatusMessageDialog(self.plugin) message = dlg.run() - for acct in accounts: - show = gajim.SHOW_LIST[gajim.connections[acct].connected] - self.send_status(acct, show, message) + if message is not None: # None if user pressed Cancel + for acct in accounts: + show = gajim.SHOW_LIST[gajim.connections[acct].connected] + self.send_status(acct, show, message) return if status == 'invisible': bug_user = False @@ -2266,7 +2268,7 @@ _('If "%s" accepts this request you will know his status.') %jid) gtkgui_helpers.set_unset_urgency_hint(self.window, self.nb_unread) def iter_is_separator(self, model, iter): - if not model[iter][0]: + if model[iter][0] == 'SEPARATOR': return True return False @@ -2312,7 +2314,7 @@ _('If "%s" accepts this request you will know his status.') %jid) self.transports_state_images[transport] = self.load_iconset( folder + '/16x16/') - liststore = gtk.ListStore(str, gtk.Image, str) + liststore = gtk.ListStore(str, gtk.Image, str) # uf_show, img, show self.status_combobox = self.xml.get_widget('status_combobox') cell = cell_renderer_image.CellRendererImage() @@ -2329,15 +2331,15 @@ _('If "%s" accepts this request you will know his status.') %jid) for show in ['online', 'chat', 'away', 'xa', 'dnd', 'invisible']: uf_show = helpers.get_uf_show(show) liststore.append([uf_show, self.jabber_state_images[show], show]) - # Add a Separator - liststore.append(['', None, '']) + # Add a Separator (self.iter_is_separator() checks on string SEPARATOR) + liststore.append(['SEPARATOR', None, '']) path = os.path.join(gajim.DATA_DIR, 'pixmaps', 'rename.png') img = gtk.Image() img.set_from_file(path) - liststore.append([_('Change Status Message'), img, '']) - # Add a Separator - liststore.append(['', None, '']) + liststore.append([_('_Change Status Message...'), img, '']) + # Add a Separator (self.iter_is_separator() checks on string SEPARATOR) + liststore.append(['SEPARATOR', None, '']) uf_show = helpers.get_uf_show('offline') liststore.append([uf_show, self.jabber_state_images['offline'], diff --git a/src/systray.py b/src/systray.py index 13f5c3161..beb0b1db2 100644 --- a/src/systray.py +++ b/src/systray.py @@ -141,7 +141,7 @@ class Systray: item = gtk.SeparatorMenuItem() sub_menu.append(item) - item = gtk.ImageMenuItem(_('_Change Status Message')) + item = gtk.ImageMenuItem(_('_Change Status Message...')) path = os.path.join(gajim.DATA_DIR, 'pixmaps', 'rename.png') img = gtk.Image() img.set_from_file(path) @@ -315,10 +315,11 @@ class Systray: def on_change_status_message_activate(self, widget): dlg = dialogs.ChangeStatusMessageDialog(self.plugin) message = dlg.run() - accounts = gajim.connections.keys() - for acct in accounts: - show = gajim.SHOW_LIST[gajim.connections[acct].connected] - self.plugin.roster.send_status(acct, show, message) + if message is not None: # None if user press Cancel + accounts = gajim.connections.keys() + for acct in accounts: + show = gajim.SHOW_LIST[gajim.connections[acct].connected] + self.plugin.roster.send_status(acct, show, message) def show_tooltip(self, widget): position = widget.window.get_origin()