* 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:
Yann Leboulanger 2008-01-22 16:06:16 +00:00
parent 335079dd9b
commit d27f9a9c85
2 changed files with 84 additions and 55 deletions

View File

@ -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)

View File

@ -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')