Welcome to mirror list, hosted at ThFree Co, Russian Federation.

dev.gajim.org/gajim/gajim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYann Leboulanger <asterix@lagaule.org>2008-08-08 01:57:19 +0400
committerYann Leboulanger <asterix@lagaule.org>2008-08-08 01:57:19 +0400
commitdf895d4817a92456793fcefe09d34eecb6248944 (patch)
treec6db5b84b801378dbb3da66c64d7f94d2fd0a42f
parent00523de49478f84c4fd4f0090301a975eb94260f (diff)
nearly no blocking dialogs
-rw-r--r--src/config.py15
-rw-r--r--src/dialogs.py2
-rw-r--r--src/groupchat_control.py61
3 files changed, 32 insertions, 46 deletions
diff --git a/src/config.py b/src/config.py
index f6367ffbf..9c8431a51 100644
--- a/src/config.py
+++ b/src/config.py
@@ -2442,15 +2442,12 @@ class GroupchatConfigWindow:
'4. domain (the domain itself matches, as does any user@domain,\n'
'domain/resource, or address containing a subdomain.')
- instance = dialogs.InputDialog(title, prompt)
- response = instance.get_response()
- if response != gtk.RESPONSE_OK:
- return
- jid = instance.input_entry.get_text().decode('utf-8')
- if not jid:
- return
- model = self.affiliation_treeview[affiliation].get_model()
- model.append((jid,'', '', ''))
+ def on_ok(jid):
+ if not jid:
+ return
+ model = self.affiliation_treeview[affiliation].get_model()
+ model.append((jid,'', '', ''))
+ instance = dialogs.InputDialog(title, prompt, ok_handler=on_ok)
def on_remove_button_clicked(self, widget, affiliation):
selection = self.affiliation_treeview[affiliation].get_selection()
diff --git a/src/dialogs.py b/src/dialogs.py
index 3c879d57a..f6eee7529 100644
--- a/src/dialogs.py
+++ b/src/dialogs.py
@@ -1495,6 +1495,8 @@ class CommonInputDialog:
def on_okbutton_clicked(self, widget):
user_input = self.get_text()
+ if user_input:
+ user_input = user_input.decode('utf-8')
self.cancel_handler = None
self.dialog.destroy()
if isinstance(self.ok_handler, tuple):
diff --git a/src/groupchat_control.py b/src/groupchat_control.py
index f136025be..6a64d0b23 100644
--- a/src/groupchat_control.py
+++ b/src/groupchat_control.py
@@ -1721,17 +1721,15 @@ class GroupchatControl(ChatControlBase):
return nb
def _on_change_subject_menuitem_activate(self, widget):
- instance = dialogs.InputTextDialog(_('Changing Subject'),
- _('Please specify the new subject:'), self.subject)
- response = instance.get_response()
- if response == gtk.RESPONSE_OK:
+ def on_ok(subject):
# Note, we don't update self.subject since we don't know whether it
# will work yet
- start_iter, end_iter = instance.input_buffer.get_bounds()
- subject = instance.input_buffer.get_text(start_iter, end_iter).decode(
- 'utf-8')
gajim.connections[self.account].send_gc_subject(self.room_jid, subject)
+ instance = dialogs.InputTextDialog(_('Changing Subject'),
+ _('Please specify the new subject:'), input_str=self.subject,
+ ok_handler=on_ok)
+
def _on_change_nick_menuitem_activate(self, widget):
title = _('Changing Nickname')
prompt = _('Please specify the new nickname you want to use:')
@@ -1748,15 +1746,7 @@ class GroupchatControl(ChatControlBase):
= config.GroupchatConfigWindow(self.account, self.room_jid)
def _on_destroy_room_menuitem_activate(self, widget):
- # Ask for a reason
- instance = dialogs.DubbleInputDialog(_('Destroying %s') % self.room_jid,
- _('You are going to definitively destroy this room.\n'
- 'You may specify a reason below:'),
- _('You may also enter an alternate venue:'))
- response = instance.get_response()
- if response == gtk.RESPONSE_OK:
- reason = instance.input_entry1.get_text().decode('utf-8')
- jid = instance.input_entry2.get_text().decode('utf-8')
+ def on_ok(reason, jid):
if jid:
# Test jid
try:
@@ -1765,11 +1755,14 @@ class GroupchatControl(ChatControlBase):
dialogs.ErrorDialog(_('Invalid group chat Jabber ID'),
_('The group chat Jabber ID has not allowed characters.'))
return
- else:
- # Abord destroy operation
- return
- gajim.connections[self.account].destroy_gc_room(self.room_jid, reason,
- jid)
+ gajim.connections[self.account].destroy_gc_room(self.room_jid, reason,
+ jid)
+
+ # Ask for a reason
+ instance = dialogs.DubbleInputDialog(_('Destroying %s') % self.room_jid,
+ _('You are going to definitively destroy this room.\n'
+ 'You may specify a reason below:'),
+ _('You may also enter an alternate venue:'), ok_handler=on_ok)
def _on_bookmark_room_menuitem_activate(self, widget):
'''bookmark the room, without autojoin and not minimized'''
@@ -1937,16 +1930,13 @@ class GroupchatControl(ChatControlBase):
def kick(self, widget, nick):
'''kick a user'''
+ def on_ok(reason):
+ gajim.connections[self.account].gc_set_role(self.room_jid, nick,
+ 'none', reason)
+
# ask for reason
instance = dialogs.InputDialog(_('Kicking %s') % nick,
- _('You may specify a reason below:'))
- response = instance.get_response()
- if response == gtk.RESPONSE_OK:
- reason = instance.input_entry.get_text().decode('utf-8')
- else:
- return # stop kicking procedure
- gajim.connections[self.account].gc_set_role(self.room_jid, nick, 'none',
- reason)
+ _('You may specify a reason below:'), ok_handler=on_ok)
def mk_menu(self, event, iter):
'''Make contact's popup menu'''
@@ -2235,18 +2225,15 @@ class GroupchatControl(ChatControlBase):
def ban(self, widget, jid):
'''ban a user'''
+ def on_ok(reason):
+ gajim.connections[self.account].gc_set_affiliation(self.room_jid, jid,
+ 'outcast', reason)
+
# to ban we know the real jid. so jid is not fakejid
nick = gajim.get_nick_from_jid(jid)
# ask for reason
instance = dialogs.InputDialog(_('Banning %s') % nick,
- _('You may specify a reason below:'))
- response = instance.get_response()
- if response == gtk.RESPONSE_OK:
- reason = instance.input_entry.get_text().decode('utf-8')
- else:
- return # stop banning procedure
- gajim.connections[self.account].gc_set_affiliation(self.room_jid, jid,
- 'outcast', reason)
+ _('You may specify a reason below:'), ok_handler=on_ok)
def grant_membership(self, widget, jid):
'''grant membership privilege to a user'''