* YesNo dialog now destroy itself when we click on a button
* yes YesNo dialog when a contact removes us to as if user wants to remove it too * fix some coding standards
This commit is contained in:
parent
335079dd9b
commit
d27f9a9c85
112
src/dialogs.py
112
src/dialogs.py
|
@ -9,7 +9,7 @@
|
|||
## Copyright (C) 2005 Norman Rasmussen <norman@rasmussen.co.za>
|
||||
## Copyright (C) 2007 Lukas Petrovicky <lukas@petrovicky.net>
|
||||
## Julien Pivotto <roidelapluie@gmail.com>
|
||||
## Stephan Erb <steve-e@h3c.de>
|
||||
## Stephan Erb <steve-e@h3c.de>
|
||||
##
|
||||
## This file is part of Gajim.
|
||||
##
|
||||
|
@ -207,7 +207,7 @@ class EditGroupsDialog:
|
|||
for group in groups:
|
||||
if group not in helpers.special_groups or groups[group] > 0:
|
||||
group_list.append(group)
|
||||
group_list.sort()
|
||||
group_list.sort()
|
||||
for group in group_list:
|
||||
iter = store.append()
|
||||
store.set(iter, 0, group) # Group name
|
||||
|
@ -256,7 +256,7 @@ class PassphraseDialog:
|
|||
self.window.destroy()
|
||||
return passphrase, checked
|
||||
|
||||
def __init__(self, titletext, labeltext, checkbuttontext=None, is_modal = True,
|
||||
def __init__(self, titletext, labeltext, checkbuttontext=None, is_modal=True,
|
||||
ok_handler = None, cancel_handler = None):
|
||||
self.xml = gtkgui_helpers.get_glade('passphrase_dialog.glade')
|
||||
self.window = self.xml.get_widget('passphrase_dialog')
|
||||
|
@ -278,14 +278,14 @@ class PassphraseDialog:
|
|||
|
||||
self.xml.signal_autoconnect(self)
|
||||
self.window.show_all()
|
||||
|
||||
|
||||
self.check = bool(checkbuttontext)
|
||||
checkbutton = self.xml.get_widget('save_passphrase_checkbutton')
|
||||
if self.check:
|
||||
checkbutton.set_label(checkbuttontext)
|
||||
else:
|
||||
checkbutton.hide()
|
||||
|
||||
|
||||
def on_okbutton_clicked(self, widget):
|
||||
passph = self.passphrase_entry.get_text().decode('utf-8')
|
||||
|
||||
|
@ -432,7 +432,7 @@ class ChangeActivityDialog:
|
|||
|
||||
def on_ok_button_clicked(self, widget):
|
||||
'''Return activity and messsage (None if no activity selected)'''
|
||||
activity = None
|
||||
activity = None
|
||||
subactivity = None
|
||||
message = None
|
||||
active1 = self.combo1.get_active()
|
||||
|
@ -476,7 +476,7 @@ class ChangeMoodDialog:
|
|||
|
||||
def on_ok_button_clicked(self, widget):
|
||||
'''Return mood and messsage (None if no mood selected)'''
|
||||
mood = None
|
||||
mood = None
|
||||
message = None
|
||||
active = self.combo.get_active()
|
||||
if active > -1:
|
||||
|
@ -621,7 +621,7 @@ class ChangeStatusMessageDialog:
|
|||
self.preset_messages_dict[msg_name] = msg_text
|
||||
iter_ = self.message_liststore.append((msg_name,))
|
||||
gajim.config.add_per('statusmsg', msg_name)
|
||||
# select in combobox the one we just saved
|
||||
# select in combobox the one we just saved
|
||||
self.message_combobox.set_active_iter(iter_)
|
||||
gajim.config.set_per('statusmsg', msg_name, 'message', msg_text_1l)
|
||||
|
||||
|
@ -697,7 +697,7 @@ _('Please fill in the data of the contact you want to add in account %s') %accou
|
|||
self.agents[type_].append(jid_)
|
||||
self.available_types.append(type_)
|
||||
liststore = gtk.ListStore(str)
|
||||
self.group_comboboxentry.set_model(liststore)
|
||||
self.group_comboboxentry.set_model(liststore)
|
||||
# Combobox with transport/jabber icons
|
||||
liststore = gtk.ListStore(str, gtk.gdk.Pixbuf, str)
|
||||
cell = gtk.CellRendererPixbuf()
|
||||
|
@ -947,7 +947,7 @@ class AboutDialog:
|
|||
text = open(copying_file_path).read()
|
||||
dlg.set_license(text)
|
||||
|
||||
dlg.set_comments('%s\n%s %s\n%s %s'
|
||||
dlg.set_comments('%s\n%s %s\n%s %s'
|
||||
% (_('A GTK+ jabber client'), \
|
||||
_('GTK+ Version:'), self.tuple2str(gtk.gtk_version), \
|
||||
_('PyGTK Version:'), self.tuple2str(gtk.pygtk_version)))
|
||||
|
@ -991,7 +991,7 @@ class AboutDialog:
|
|||
dlg.props.wrap_license = True
|
||||
|
||||
pixbuf = gtk.gdk.pixbuf_new_from_file(os.path.join(
|
||||
gajim.DATA_DIR, 'pixmaps', 'gajim_about.png'))
|
||||
gajim.DATA_DIR, 'pixmaps', 'gajim_about.png'))
|
||||
|
||||
dlg.set_logo(pixbuf)
|
||||
#here you write your name in the form Name FamilyName <someone@somewhere>
|
||||
|
@ -1037,7 +1037,7 @@ class HigDialog(gtk.MessageDialog):
|
|||
def __init__(self, parent, type, buttons, pritext, sectext,
|
||||
on_response_ok = None, on_response_cancel = None, on_response_yes = None,
|
||||
on_response_no = None):
|
||||
gtk.MessageDialog.__init__(self, parent,
|
||||
gtk.MessageDialog.__init__(self, parent,
|
||||
gtk.DIALOG_DESTROY_WITH_PARENT | gtk.DIALOG_MODAL,
|
||||
type, buttons, message_format = pritext)
|
||||
|
||||
|
@ -1088,7 +1088,7 @@ class FileChooserDialog(gtk.FileChooserDialog):
|
|||
select_multiple = False, current_folder = None, on_response_ok = None,
|
||||
on_response_cancel = None):
|
||||
|
||||
gtk.FileChooserDialog.__init__(self, title = title_text,
|
||||
gtk.FileChooserDialog.__init__(self, title = title_text,
|
||||
action = action, buttons = buttons)
|
||||
|
||||
self.set_default_response(default_response)
|
||||
|
@ -1146,7 +1146,7 @@ class ConfirmationDialog(HigDialog):
|
|||
on_response_cancel = None):
|
||||
self.user_response_ok = on_response_ok
|
||||
self.user_response_cancel = on_response_cancel
|
||||
HigDialog.__init__(self, None,
|
||||
HigDialog.__init__(self, None,
|
||||
gtk.MESSAGE_QUESTION, gtk.BUTTONS_OK_CANCEL, pritext, sectext,
|
||||
self.on_response_ok, self.on_response_cancel)
|
||||
self.popup()
|
||||
|
@ -1173,7 +1173,7 @@ class NonModalConfirmationDialog(HigDialog):
|
|||
on_response_cancel = None):
|
||||
self.user_response_ok = on_response_ok
|
||||
self.user_response_cancel = on_response_cancel
|
||||
HigDialog.__init__(self, None,
|
||||
HigDialog.__init__(self, None,
|
||||
gtk.MESSAGE_QUESTION, gtk.BUTTONS_OK_CANCEL, pritext, sectext,
|
||||
self.on_response_ok, self.on_response_cancel)
|
||||
self.set_modal(False)
|
||||
|
@ -1197,7 +1197,7 @@ class NonModalConfirmationDialog(HigDialog):
|
|||
class WarningDialog(HigDialog):
|
||||
def __init__(self, pritext, sectext=''):
|
||||
'''HIG compliant warning dialog.'''
|
||||
HigDialog.__init__( self, None,
|
||||
HigDialog.__init__( self, None,
|
||||
gtk.MESSAGE_WARNING, gtk.BUTTONS_OK, pritext, sectext)
|
||||
self.set_modal(False)
|
||||
self.set_transient_for(gajim.interface.roster.window)
|
||||
|
@ -1206,7 +1206,7 @@ class WarningDialog(HigDialog):
|
|||
class InformationDialog(HigDialog):
|
||||
def __init__(self, pritext, sectext=''):
|
||||
'''HIG compliant info dialog.'''
|
||||
HigDialog.__init__( self, None,
|
||||
HigDialog.__init__( self, None,
|
||||
gtk.MESSAGE_INFO, gtk.BUTTONS_OK, pritext, sectext)
|
||||
self.set_modal(False)
|
||||
self.set_transient_for(gajim.interface.roster.window)
|
||||
|
@ -1215,7 +1215,7 @@ class InformationDialog(HigDialog):
|
|||
class ErrorDialog(HigDialog):
|
||||
def __init__(self, pritext, sectext=''):
|
||||
'''HIG compliant error dialog.'''
|
||||
HigDialog.__init__( self, None,
|
||||
HigDialog.__init__( self, None,
|
||||
gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, pritext, sectext)
|
||||
self.popup()
|
||||
|
||||
|
@ -1223,12 +1223,32 @@ class YesNoDialog(HigDialog):
|
|||
def __init__(self, pritext, sectext='', on_response_yes = None,
|
||||
on_response_no = None):
|
||||
'''HIG compliant YesNo dialog.'''
|
||||
HigDialog.__init__( self, None,
|
||||
self.user_response_yes = on_response_yes
|
||||
self.user_response_no = on_response_no
|
||||
HigDialog.__init__( self, None,
|
||||
gtk.MESSAGE_QUESTION, gtk.BUTTONS_YES_NO, pritext, sectext,
|
||||
on_response_yes = on_response_yes, on_response_no = on_response_no)
|
||||
on_response_yes=self.on_response_yes,
|
||||
on_response_no=self.on_response_no)
|
||||
self.set_modal(False)
|
||||
self.popup()
|
||||
|
||||
def on_response_yes(self, widget):
|
||||
if self.user_response_yes:
|
||||
if isinstance(self.user_response_yes, tuple):
|
||||
self.user_response_yes[0](*self.user_response_yes[1:])
|
||||
else:
|
||||
self.user_response_yes(self.is_checked())
|
||||
self.destroy()
|
||||
|
||||
def on_response_no(self, widget):
|
||||
if self.user_response_no:
|
||||
if isinstance(self.user_response_no, tuple):
|
||||
self.user_response_no[0](*self.user_response_no[1:])
|
||||
else:
|
||||
self.user_response_no()
|
||||
self.destroy()
|
||||
|
||||
|
||||
class ConfirmationDialogCheck(ConfirmationDialog):
|
||||
'''HIG compliant confirmation dialog with checkbutton.'''
|
||||
def __init__(self, pritext, sectext='', checktext = '',
|
||||
|
@ -1264,7 +1284,7 @@ class ConfirmationDialogCheck(ConfirmationDialog):
|
|||
def on_response_cancel(self, widget):
|
||||
if self.user_response_cancel:
|
||||
if isinstance(self.user_response_cancel, tuple):
|
||||
self.user_response_cancel[0](*self.user_response_ok[1:])
|
||||
self.user_response_cancel[0](*self.user_response_cancel[1:])
|
||||
else:
|
||||
self.user_response_cancel()
|
||||
self.destroy()
|
||||
|
@ -1884,7 +1904,7 @@ class PopupNotificationWindow:
|
|||
bg_color = 'yellowgreen'
|
||||
elif event_type == _('Groupchat Invitation'):
|
||||
bg_color = 'tan1'
|
||||
elif event_type == _('Contact Changed Status'):
|
||||
elif event_type == _('Contact Changed Status'):
|
||||
bg_color = 'thistle2'
|
||||
else: # Unknown event! Shouldn't happen but deal with it
|
||||
bg_color = 'white'
|
||||
|
@ -1892,7 +1912,7 @@ class PopupNotificationWindow:
|
|||
close_button.modify_bg(gtk.STATE_NORMAL, popup_bg_color)
|
||||
eventbox.modify_bg(gtk.STATE_NORMAL, popup_bg_color)
|
||||
event_description_label.set_markup(
|
||||
'<span foreground="black">%s</span>' % text)
|
||||
'<span foreground="black">%s</span>' % text)
|
||||
|
||||
# set the image
|
||||
image.set_from_file(path_to_image)
|
||||
|
@ -2118,7 +2138,7 @@ class SingleMessageWindow:
|
|||
|
||||
if self.message:
|
||||
self.conversation_textview.print_real_text(self.message)
|
||||
fjid = self.from_whom
|
||||
fjid = self.from_whom
|
||||
if self.resource:
|
||||
fjid += '/' + self.resource # Full jid of sender (with resource)
|
||||
self.from_entry.set_text(fjid)
|
||||
|
@ -2128,16 +2148,16 @@ class SingleMessageWindow:
|
|||
self.cancel_button.hide()
|
||||
self.close_button.show()
|
||||
elif action == 'form': # prepare UI for Receiving
|
||||
title = _('Form %s') % title
|
||||
self.send_button.show()
|
||||
self.send_and_close_button.show()
|
||||
self.to_label.show()
|
||||
self.to_entry.show()
|
||||
self.reply_button.hide()
|
||||
self.from_label.hide()
|
||||
self.from_entry.hide()
|
||||
self.conversation_scrolledwindow.hide()
|
||||
self.message_scrolledwindow.hide()
|
||||
title = _('Form %s') % title
|
||||
self.send_button.show()
|
||||
self.send_and_close_button.show()
|
||||
self.to_label.show()
|
||||
self.to_entry.show()
|
||||
self.reply_button.hide()
|
||||
self.from_label.hide()
|
||||
self.from_entry.hide()
|
||||
self.conversation_scrolledwindow.hide()
|
||||
self.message_scrolledwindow.hide()
|
||||
|
||||
self.window.set_title(title)
|
||||
|
||||
|
@ -2385,7 +2405,7 @@ class PrivacyListWindow:
|
|||
# set jabber id completion
|
||||
jids_list_store = gtk.ListStore(gobject.TYPE_STRING)
|
||||
for jid in gajim.contacts.get_jid_list(self.account):
|
||||
jids_list_store.append([jid])
|
||||
jids_list_store.append([jid])
|
||||
jid_entry_completion = gtk.EntryCompletion()
|
||||
jid_entry_completion.set_text_column(0)
|
||||
jid_entry_completion.set_model(jids_list_store)
|
||||
|
@ -2399,7 +2419,7 @@ class PrivacyListWindow:
|
|||
self.list_of_groups[group] = count
|
||||
count += 1
|
||||
self.edit_type_group_combobox.append_text(group)
|
||||
self.edit_type_group_combobox.set_active(0)
|
||||
self.edit_type_group_combobox.set_active(0)
|
||||
|
||||
self.window.set_title(title)
|
||||
|
||||
|
@ -2421,7 +2441,7 @@ class PrivacyListWindow:
|
|||
if a_d_dict['default'] == self.privacy_list_name:
|
||||
self.privacy_list_default_checkbutton.set_active(True)
|
||||
else:
|
||||
self.privacy_list_default_checkbutton.set_active(False)
|
||||
self.privacy_list_default_checkbutton.set_active(False)
|
||||
|
||||
def privacy_list_received(self, rules):
|
||||
self.list_of_rules_combobox.get_model().clear()
|
||||
|
@ -2556,7 +2576,7 @@ class PrivacyListWindow:
|
|||
self.edit_queries_send_checkbutton.set_active(False)
|
||||
self.edit_view_status_checkbutton.set_active(False)
|
||||
self.edit_send_status_checkbutton.set_active(False)
|
||||
self.edit_order_spinbutton.set_value(1)
|
||||
self.edit_order_spinbutton.set_value(1)
|
||||
self.edit_type_group_combobox.set_active(0)
|
||||
self.edit_type_subscription_combobox.set_active(0)
|
||||
self.add_edit_rule_label.set_label(
|
||||
|
@ -2638,7 +2658,7 @@ class PrivacyListsWindow:
|
|||
or edit an already there one'''
|
||||
def __init__(self, account):
|
||||
self.account = account
|
||||
self.privacy_lists_save = []
|
||||
self.privacy_lists_save = []
|
||||
|
||||
self.xml = gtkgui_helpers.get_glade('privacy_lists_window.glade')
|
||||
|
||||
|
@ -2648,7 +2668,7 @@ class PrivacyListsWindow:
|
|||
'new_privacy_list_button', 'new_privacy_list_entry',
|
||||
'privacy_lists_refresh_button', 'close_privacy_lists_window_button']:
|
||||
self.__dict__[widget_to_add] = self.xml.get_widget(
|
||||
widget_to_add)
|
||||
widget_to_add)
|
||||
|
||||
self.draw_privacy_lists_in_combobox([])
|
||||
self.privacy_lists_refresh()
|
||||
|
@ -3086,8 +3106,8 @@ class AdvancedNotificationsWindow:
|
|||
|
||||
self.window.show_all()
|
||||
|
||||
def initiate_rule_state(self):
|
||||
'''Set values for all widgets'''
|
||||
def initiate_rule_state(self):
|
||||
'''Set values for all widgets'''
|
||||
if self.active_num < 0:
|
||||
return
|
||||
# event
|
||||
|
@ -3328,7 +3348,7 @@ class AdvancedNotificationsWindow:
|
|||
for st in ['online', 'away', 'xa', 'dnd', 'invisible']:
|
||||
self.__dict__[st + '_cb'].hide()
|
||||
|
||||
self.special_status_rb.show()
|
||||
self.special_status_rb.show()
|
||||
else:
|
||||
self.set_status_config()
|
||||
# 'special status' clicked
|
||||
|
@ -3543,8 +3563,8 @@ class TransformChatToMUC:
|
|||
contact.jid != gajim.get_jid_from_account(self.account) and\
|
||||
contact.jid not in gajim.interface.minimized_controls[account] and\
|
||||
not contact.is_transport() and\
|
||||
not contact_transport
|
||||
|
||||
not contact_transport
|
||||
|
||||
# set jabber id and pseudos
|
||||
for account in gajim.contacts.get_accounts():
|
||||
if gajim.connections[account].is_zeroconf:
|
||||
|
@ -3596,7 +3616,7 @@ class TransformChatToMUC:
|
|||
guest_list.append(guest)
|
||||
room_jid = room_id + '@' + server
|
||||
gajim.automatic_rooms[self.account][room_jid] = {}
|
||||
gajim.automatic_rooms[self.account][room_jid]['invities'] = guest_list
|
||||
gajim.automatic_rooms[self.account][room_jid]['invities'] = guest_list
|
||||
gajim.automatic_rooms[self.account][room_jid]['continue_tag'] = True
|
||||
gajim.interface.roster.join_gc_room(self.account, room_jid,
|
||||
gajim.nicks[self.account], None, is_continued=True)
|
||||
|
|
27
src/gajim.py
27
src/gajim.py
|
@ -455,7 +455,7 @@ class Interface:
|
|||
|
||||
def handle_event_http_auth(self, account, data):
|
||||
#('HTTP_AUTH', account, (method, url, transaction_id, iq_obj, msg))
|
||||
def response(widget, account, iq_obj, answer):
|
||||
def response(account, iq_obj, answer):
|
||||
self.dialog.destroy()
|
||||
gajim.connections[account].build_http_auth_answer(iq_obj, answer)
|
||||
|
||||
|
@ -948,13 +948,22 @@ class Interface:
|
|||
self.remote_ctrl.raise_signal('Subscribed', (account, array))
|
||||
|
||||
def handle_event_unsubscribed(self, account, jid):
|
||||
dialogs.InformationDialog(_('Contact "%s" removed subscription from you')\
|
||||
% jid, _('You will always see him or her as offline.'))
|
||||
# FIXME: Per RFC 3921, we can "deny" ack as well, but the GUI does not show deny
|
||||
gajim.connections[account].ack_unsubscribed(jid)
|
||||
if self.remote_ctrl:
|
||||
self.remote_ctrl.raise_signal('Unsubscribed', (account, jid))
|
||||
|
||||
contact = gajim.contacts.get_first_contact_from_jid(account, jid)
|
||||
if not contact:
|
||||
return
|
||||
def on_yes(list_):
|
||||
self.roster.on_req_usub(None, list_)
|
||||
list_ = [(contact, account)]
|
||||
dialogs.YesNoDialog(
|
||||
_('Contact "%s" removed subscription from you') % jid,
|
||||
_('You will always see him or her as offline.\nDo you want to remove him or her from your contact list?'),
|
||||
on_response_yes = (on_yes, list_))
|
||||
# FIXME: Per RFC 3921, we can "deny" ack as well, but the GUI does not show deny
|
||||
|
||||
def handle_event_agent_info_error(self, account, agent):
|
||||
#('AGENT_ERROR_INFO', account, (agent))
|
||||
try:
|
||||
|
@ -1932,12 +1941,12 @@ class Interface:
|
|||
negotiated, not_acceptable, ask_user = session.verify_options_bob(form)
|
||||
|
||||
if ask_user:
|
||||
def accept_nondefault_options(widget):
|
||||
def accept_nondefault_options():
|
||||
self.dialog.destroy()
|
||||
negotiated.update(ask_user)
|
||||
session.respond_e2e_bob(form, negotiated, not_acceptable)
|
||||
|
||||
def reject_nondefault_options(widget):
|
||||
def reject_nondefault_options():
|
||||
self.dialog.destroy()
|
||||
for key in ask_user.keys():
|
||||
not_acceptable.append(key)
|
||||
|
@ -1973,7 +1982,7 @@ class Interface:
|
|||
session.check_identity = _cb
|
||||
|
||||
if ask_user:
|
||||
def accept_nondefault_options(widget):
|
||||
def accept_nondefault_options():
|
||||
dialog.destroy()
|
||||
|
||||
negotiated.update(ask_user)
|
||||
|
@ -1983,7 +1992,7 @@ class Interface:
|
|||
except exceptions.NegotiationError, details:
|
||||
session.fail_bad_negotiation(details)
|
||||
|
||||
def reject_nondefault_options(widget):
|
||||
def reject_nondefault_options():
|
||||
session.reject_negotiation()
|
||||
dialog.destroy()
|
||||
|
||||
|
@ -2237,7 +2246,7 @@ class Interface:
|
|||
gajim.config.set_per('accounts', account, 'ssl_fingerprint_sha1',
|
||||
data[0])
|
||||
gajim.connections[account].ssl_certificate_accepted()
|
||||
def on_no(widget):
|
||||
def on_no():
|
||||
dialog.destroy()
|
||||
gajim.connections[account].disconnect(on_purpose=True)
|
||||
self.handle_event_status(account, 'offline')
|
||||
|
|
Loading…
Reference in New Issue