[commit-gajim] r11242 - trunk/src
asterix at gajim.org
asterix at gajim.org
Sun Apr 26 20:57:18 CEST 2009
Author: asterix
Date: 2009-04-26 20:57:18 +0200 (Sun, 26 Apr 2009)
New Revision: 11242
Modified:
trunk/src/chat_control.py
trunk/src/groupchat_control.py
Log:
ability to select status message and room subject in banner. Fixes #4879
Modified: trunk/src/chat_control.py
===================================================================
--- trunk/src/chat_control.py 2009-04-25 22:29:22 UTC (rev 11241)
+++ trunk/src/chat_control.py 2009-04-26 18:57:18 UTC (rev 11242)
@@ -181,6 +181,8 @@
self.banner_status_label = gtk.Label()
self.banner_status_label.set_selectable(True)
self.banner_status_label.set_alignment(0,0.5)
+ self.banner_status_label.connect('populate_popup',
+ self.on_banner_label_populate_popup)
banner_vbox = self.xml.get_widget('banner_vbox')
banner_vbox.pack_start(self.banner_status_label)
@@ -317,6 +319,20 @@
except (gobject.GError, RuntimeError, TypeError, OSError):
dialogs.AspellDictError(lang)
+ def on_banner_label_populate_popup(self, label, menu):
+ '''We override the default context menu and add our own menutiems'''
+ item = gtk.SeparatorMenuItem()
+ menu.prepend(item)
+
+ menu2 = self.prepare_context_menu()
+ i = 0
+ for item in menu2:
+ menu2.remove(item)
+ menu.prepend(item)
+ menu.reorder_child(item, i)
+ i += 1
+ menu.show_all()
+
def on_msg_textview_populate_popup(self, textview, menu):
'''we override the default context menu and we prepend an option to switch
languages'''
@@ -2205,10 +2221,14 @@
convert_to_gc_menuitem, information_menuitem, history_menuitem):
# destroy accelerators
ag = gtk.accel_groups_from_object(self.parent_win.window)[0]
- send_file_menuitem.remove_accelerator(ag, gtk.keysyms.f, gtk.gdk.CONTROL_MASK)
- convert_to_gc_menuitem.remove_accelerator(ag, gtk.keysyms.g, gtk.gdk.CONTROL_MASK)
- information_menuitem.remove_accelerator(ag, gtk.keysyms.i, gtk.gdk.CONTROL_MASK)
- history_menuitem.remove_accelerator(ag, gtk.keysyms.h, gtk.gdk.CONTROL_MASK)
+ send_file_menuitem.remove_accelerator(ag, gtk.keysyms.f,
+ gtk.gdk.CONTROL_MASK)
+ convert_to_gc_menuitem.remove_accelerator(ag, gtk.keysyms.g,
+ gtk.gdk.CONTROL_MASK)
+ information_menuitem.remove_accelerator(ag, gtk.keysyms.i,
+ gtk.gdk.CONTROL_MASK)
+ history_menuitem.remove_accelerator(ag, gtk.keysyms.h,
+ gtk.gdk.CONTROL_MASK)
# destroy menu
menu.destroy()
Modified: trunk/src/groupchat_control.py
===================================================================
--- trunk/src/groupchat_control.py 2009-04-25 22:29:22 UTC (rev 11241)
+++ trunk/src/groupchat_control.py 2009-04-26 18:57:18 UTC (rev 11242)
@@ -276,49 +276,6 @@
self.number_of_colors = len(gajim.config.get('gc_nicknames_colors').\
split(':'))
- # connect the menuitems to their respective functions
- xm = gtkgui_helpers.get_glade('gc_control_popup_menu.glade')
-
- self.bookmark_room_menuitem = xm.get_widget('bookmark_room_menuitem')
- id_ = self.bookmark_room_menuitem.connect('activate',
- self._on_bookmark_room_menuitem_activate)
- self.handlers[id_] = self.bookmark_room_menuitem
-
- self.change_nick_menuitem = xm.get_widget('change_nick_menuitem')
- id_ = self.change_nick_menuitem.connect('activate',
- self._on_change_nick_menuitem_activate)
- self.handlers[id_] = self.change_nick_menuitem
-
- self.configure_room_menuitem = xm.get_widget('configure_room_menuitem')
- id_ = self.configure_room_menuitem.connect('activate',
- self._on_configure_room_menuitem_activate)
- self.handlers[id_] = self.configure_room_menuitem
-
- self.destroy_room_menuitem = xm.get_widget('destroy_room_menuitem')
- id_ = self.destroy_room_menuitem.connect('activate',
- self._on_destroy_room_menuitem_activate)
- self.handlers[id_] = self.destroy_room_menuitem
-
- self.change_subject_menuitem = xm.get_widget('change_subject_menuitem')
- id_ = self.change_subject_menuitem.connect('activate',
- self._on_change_subject_menuitem_activate)
- self.handlers[id_] = self.change_subject_menuitem
-
- self.history_menuitem = xm.get_widget('history_menuitem')
- id_ = self.history_menuitem.connect('activate',
- self._on_history_menuitem_activate)
- self.handlers[id_] = self.history_menuitem
-
- self.minimize_menuitem = xm.get_widget('minimize_menuitem')
- id_ = self.minimize_menuitem.connect('toggled',
- self.on_minimize_menuitem_toggled)
- self.handlers[id_] = self.minimize_menuitem
-
- self.bookmark_separator = xm.get_widget('bookmark_separator')
- self.separatormenuitem2 = xm.get_widget('separatormenuitem2')
-
- self.gc_popup_menu = xm.get_widget('gc_control_popup_menu')
-
self.name_label = self.xml.get_widget('banner_name_label')
self.event_box = self.xml.get_widget('banner_eventbox')
@@ -645,63 +602,123 @@
def prepare_context_menu(self, hide_buttonbar_entries=False):
'''sets sensitivity state for configure_room'''
- ag = gtk.accel_groups_from_object(self.parent_win.window)[0]
- self.change_nick_menuitem.add_accelerator('activate', ag, gtk.keysyms.n,
- gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE)
- self.change_subject_menuitem.add_accelerator('activate', ag,
- gtk.keysyms.t, gtk.gdk.MOD1_MASK, gtk.ACCEL_VISIBLE)
- self.bookmark_room_menuitem.add_accelerator('activate', ag, gtk.keysyms.b,
- gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE)
- self.history_menuitem.add_accelerator('activate', ag, gtk.keysyms.h,
- gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE)
+ xml = gtkgui_helpers.get_glade('gc_control_popup_menu.glade')
+ menu = xml.get_widget('gc_control_popup_menu')
+ bookmark_room_menuitem = xml.get_widget('bookmark_room_menuitem')
+ change_nick_menuitem = xml.get_widget('change_nick_menuitem')
+ configure_room_menuitem = xml.get_widget('configure_room_menuitem')
+ destroy_room_menuitem = xml.get_widget('destroy_room_menuitem')
+ change_subject_menuitem = xml.get_widget('change_subject_menuitem')
+ history_menuitem = xml.get_widget('history_menuitem')
+ minimize_menuitem = xml.get_widget('minimize_menuitem')
+ bookmark_separator = xml.get_widget('bookmark_separator')
+ separatormenuitem2 = xml.get_widget('separatormenuitem2')
+
if hide_buttonbar_entries:
- self.change_nick_menuitem.hide()
- self.change_subject_menuitem.hide()
- self.bookmark_room_menuitem.hide()
- self.history_menuitem.hide()
- self.bookmark_separator.hide()
- self.separatormenuitem2.hide()
+ change_nick_menuitem.hide()
+ change_subject_menuitem.hide()
+ bookmark_room_menuitem.hide()
+ history_menuitem.hide()
+ bookmark_separator.hide()
+ separatormenuitem2.hide()
else:
- self.change_nick_menuitem.show()
- self.change_subject_menuitem.show()
- self.bookmark_room_menuitem.show()
- self.history_menuitem.show()
- self.bookmark_separator.show()
- self.separatormenuitem2.show()
+ change_nick_menuitem.show()
+ change_subject_menuitem.show()
+ bookmark_room_menuitem.show()
+ history_menuitem.show()
+ bookmark_separator.show()
+ separatormenuitem2.show()
for bm in gajim.connections[self.account].bookmarks:
if bm['jid'] == self.room_jid:
- self.bookmark_room_menuitem.hide()
- self.bookmark_separator.hide()
+ bookmark_room_menuitem.hide()
+ bookmark_separator.hide()
break
+ ag = gtk.accel_groups_from_object(self.parent_win.window)[0]
+ change_nick_menuitem.add_accelerator('activate', ag, gtk.keysyms.n,
+ gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE)
+ change_subject_menuitem.add_accelerator('activate', ag,
+ gtk.keysyms.t, gtk.gdk.MOD1_MASK, gtk.ACCEL_VISIBLE)
+ bookmark_room_menuitem.add_accelerator('activate', ag, gtk.keysyms.b,
+ gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE)
+ history_menuitem.add_accelerator('activate', ag, gtk.keysyms.h,
+ gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE)
+
if self.contact.jid in gajim.config.get_per('accounts', self.account,
'minimized_gc').split(' '):
- self.minimize_menuitem.set_active(True)
+ minimize_menuitem.set_active(True)
if not gajim.connections[self.account].private_storage_supported:
- self.bookmark_room_menuitem.set_sensitive(False)
+ bookmark_room_menuitem.set_sensitive(False)
if gajim.gc_connected[self.account][self.room_jid]:
c = gajim.contacts.get_gc_contact(self.account, self.room_jid,
self.nick)
if c.affiliation not in ('owner', 'admin'):
- self.configure_room_menuitem.set_sensitive(False)
+ configure_room_menuitem.set_sensitive(False)
else:
- self.configure_room_menuitem.set_sensitive(True)
+ configure_room_menuitem.set_sensitive(True)
if c.affiliation != 'owner':
- self.destroy_room_menuitem.set_sensitive(False)
+ destroy_room_menuitem.set_sensitive(False)
else:
- self.destroy_room_menuitem.set_sensitive(True)
- self.change_subject_menuitem.set_sensitive(True)
- self.change_nick_menuitem.set_sensitive(True)
+ destroy_room_menuitem.set_sensitive(True)
+ change_subject_menuitem.set_sensitive(True)
+ change_nick_menuitem.set_sensitive(True)
else:
# We are not connected to this groupchat, disable unusable menuitems
- self.configure_room_menuitem.set_sensitive(False)
- self.destroy_room_menuitem.set_sensitive(False)
- self.change_subject_menuitem.set_sensitive(False)
- self.change_nick_menuitem.set_sensitive(False)
+ configure_room_menuitem.set_sensitive(False)
+ destroy_room_menuitem.set_sensitive(False)
+ change_subject_menuitem.set_sensitive(False)
+ change_nick_menuitem.set_sensitive(False)
- return self.gc_popup_menu
+ # connect the menuitems to their respective functions
+ id_ = bookmark_room_menuitem.connect('activate',
+ self._on_bookmark_room_menuitem_activate)
+ self.handlers[id_] = bookmark_room_menuitem
+ id_ = change_nick_menuitem.connect('activate',
+ self._on_change_nick_menuitem_activate)
+ self.handlers[id_] = change_nick_menuitem
+
+ id_ = configure_room_menuitem.connect('activate',
+ self._on_configure_room_menuitem_activate)
+ self.handlers[id_] = configure_room_menuitem
+
+ id_ = destroy_room_menuitem.connect('activate',
+ self._on_destroy_room_menuitem_activate)
+ self.handlers[id_] = destroy_room_menuitem
+
+ id_ = change_subject_menuitem.connect('activate',
+ self._on_change_subject_menuitem_activate)
+ self.handlers[id_] = change_subject_menuitem
+
+ id_ = history_menuitem.connect('activate',
+ self._on_history_menuitem_activate)
+ self.handlers[id_] = history_menuitem
+
+ id_ = minimize_menuitem.connect('toggled',
+ self.on_minimize_menuitem_toggled)
+ self.handlers[id_] = minimize_menuitem
+
+ menu.connect('selection-done', self.destroy_menu,
+ change_nick_menuitem, change_subject_menuitem,
+ bookmark_room_menuitem, history_menuitem)
+ return menu
+
+ def destroy_menu(self, menu, change_nick_menuitem, change_subject_menuitem,
+ bookmark_room_menuitem, history_menuitem):
+ # destroy accelerators
+ ag = gtk.accel_groups_from_object(self.parent_win.window)[0]
+ change_nick_menuitem.remove_accelerator(ag, gtk.keysyms.n,
+ gtk.gdk.CONTROL_MASK)
+ change_subject_menuitem.remove_accelerator(ag, gtk.keysyms.t,
+ gtk.gdk.MOD1_MASK)
+ bookmark_room_menuitem.remove_accelerator(ag, gtk.keysyms.b,
+ gtk.gdk.CONTROL_MASK)
+ history_menuitem.remove_accelerator(ag, gtk.keysyms.h,
+ gtk.gdk.CONTROL_MASK)
+ # destroy menu
+ menu.destroy()
+
def on_message(self, nick, msg, tim, has_timestamp=False, xhtml=None,
status_code=[]):
if '100' in status_code:
More information about the Commits
mailing list