ask confirmation when we close one tab in groupchat window
This commit is contained in:
parent
8d41ebbdee
commit
58138ce994
|
@ -131,14 +131,19 @@ class GroupchatWindow(chat.Chat):
|
||||||
if gajim.gc_connected[self.account][room_jid]:
|
if gajim.gc_connected[self.account][room_jid]:
|
||||||
self.got_connected(room_jid)
|
self.got_connected(room_jid)
|
||||||
|
|
||||||
def on_groupchat_window_delete_event(self, widget, event):
|
def confirm_close(self, room_jid = None):
|
||||||
'''close window'''
|
'''Returns True if we confirm we want to close
|
||||||
|
Returns False if we don't want to close anymore
|
||||||
|
if room_jid is given, ask only for it else ask for all opened rooms'''
|
||||||
# whether to ask for comfirmation before closing muc
|
# whether to ask for comfirmation before closing muc
|
||||||
if gajim.config.get('confirm_close_muc'):
|
if gajim.config.get('confirm_close_muc'):
|
||||||
names = []
|
names = []
|
||||||
for room_jid in self.xmls:
|
if not room_jid:
|
||||||
if gajim.gc_connected[self.account][room_jid]:
|
for r_jid in self.xmls:
|
||||||
names.append(gajim.get_nick_from_jid(room_jid))
|
if gajim.gc_connected[self.account][r_jid]:
|
||||||
|
names.append(gajim.get_nick_from_jid(r_jid))
|
||||||
|
else:
|
||||||
|
names = [room_jid]
|
||||||
|
|
||||||
rooms_no = len(names)
|
rooms_no = len(names)
|
||||||
if rooms_no >= 2: # if we are in many rooms
|
if rooms_no >= 2: # if we are in many rooms
|
||||||
|
@ -148,18 +153,23 @@ class GroupchatWindow(chat.Chat):
|
||||||
elif rooms_no == 1: # just in one room
|
elif rooms_no == 1: # just in one room
|
||||||
pritext = _('Are you sure you want to leave room "%s"?') % names[0]
|
pritext = _('Are you sure you want to leave room "%s"?') % names[0]
|
||||||
sectext = _('If you close this window, you will be disconnected from this room.')
|
sectext = _('If you close this window, you will be disconnected from this room.')
|
||||||
|
|
||||||
if rooms_no > 0:
|
if rooms_no > 0:
|
||||||
dialog = dialogs.ConfirmationDialogCheck(pritext, sectext,
|
dialog = dialogs.ConfirmationDialogCheck(pritext, sectext,
|
||||||
_('Do not ask me again'))
|
_('Do not ask me again'))
|
||||||
|
|
||||||
if dialog.get_response() != gtk.RESPONSE_OK:
|
|
||||||
return True # stop propagation of the delete event
|
|
||||||
|
|
||||||
if dialog.is_checked():
|
if dialog.is_checked():
|
||||||
gajim.config.set('confirm_close_muc', False)
|
gajim.config.set('confirm_close_muc', False)
|
||||||
dialog.destroy()
|
dialog.destroy()
|
||||||
|
|
||||||
|
if dialog.get_response() != gtk.RESPONSE_OK:
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
|
def on_groupchat_window_delete_event(self, widget, event):
|
||||||
|
'''close window'''
|
||||||
|
if not self.confirm_close():
|
||||||
|
return True # stop propagation of the delete event
|
||||||
for room_jid in self.xmls:
|
for room_jid in self.xmls:
|
||||||
if gajim.gc_connected[self.account][room_jid]:
|
if gajim.gc_connected[self.account][room_jid]:
|
||||||
gajim.connections[self.account].send_gc_status(self.nicks[room_jid],
|
gajim.connections[self.account].send_gc_status(self.nicks[room_jid],
|
||||||
|
@ -1279,6 +1289,9 @@ current room topic.') % command, room_jid)
|
||||||
menu.show_all()
|
menu.show_all()
|
||||||
|
|
||||||
def remove_tab(self, room_jid, reason = 'offline'):
|
def remove_tab(self, room_jid, reason = 'offline'):
|
||||||
|
if not self.confirm_close(room_jid):
|
||||||
|
return
|
||||||
|
|
||||||
chat.Chat.remove_tab(self, room_jid, 'gc')
|
chat.Chat.remove_tab(self, room_jid, 'gc')
|
||||||
if len(self.xmls) > 0:
|
if len(self.xmls) > 0:
|
||||||
gajim.connections[self.account].send_gc_status(self.nicks[room_jid],
|
gajim.connections[self.account].send_gc_status(self.nicks[room_jid],
|
||||||
|
|
Loading…
Reference in New Issue