Author: asterix Date: 2008-11-20 15:44:09 +0100 (Thu, 20 Nov 2008) New Revision: 10671
Modified: branches/gajim_0.12/setup_win32.py branches/gajim_0.12/src/dialogs.py branches/gajim_0.12/src/disco.py branches/gajim_0.12/src/gajim.py branches/gajim_0.12/src/groupchat_control.py branches/gajim_0.12/src/music_track_listener.py branches/gajim_0.12/src/roster_window.py branches/gajim_0.12/src/systray.py Log: merge bugfixes from trunk (r10647 r10655 r10658 r10662 r10665 r10666 r10667 r10668 r10669)
Modified: branches/gajim_0.12/setup_win32.py =================================================================== --- branches/gajim_0.12/setup_win32.py 2008-11-20 14:37:38 UTC (rev 10670) +++ branches/gajim_0.12/setup_win32.py 2008-11-20 14:44:09 UTC (rev 10671) @@ -25,15 +25,34 @@ import sys import os
+docutils_files = [] +def fill_docutils_files(folder, base=u'docutils'): + docutils_files.append((base, glob.glob(os.path.join(folder, base, '*.pyc')))) + for path in os.listdir(os.path.join(folder, base)): + if os.path.isdir(os.path.join(folder, base, path)): + fill_docutils_files(folder, base=os.path.join(base, path)) + +try: + import docutils.readers + import docutils.writers.html4css1 + import docutils.languages +except ImportError: + pass +else: + fill_docutils_files(os.path.join(sys.prefix, 'Lib', 'site-packages')) + docutils_files.append((os.path.join('docutils', 'writers', 'html4css1'), + glob.glob(os.path.join(sys.prefix, 'Lib', 'site-packages', 'docutils', + 'writers', 'html4css1', '*.css')))) + sys.path.append('src') # Use local gtk folder instead of the one in PATH that is not latest gtk if 'gtk' in os.listdir('.'): sys.path.append('gtk/bin') -includes = ['encodings', 'encodings.utf-8',]
opts = { 'py2exe': { - 'includes': 'pango,atk,gobject,cairo,pangocairo,gtk.keysyms,encodings,encodings.*,docutils.readers.*,docutils.writers.html4css1', + # ConfigParser,UserString,roman are needed for docutils + 'includes': 'pango,atk,gobject,cairo,pangocairo,gtk.keysyms,encodings,encodings.*,ConfigParser,UserString,roman', 'dll_excludes': [ 'iconv.dll','intl.dll','libatk-1.0-0.dll', 'libgdk_pixbuf-2.0-0.dll','libgdk-win32-2.0-0.dll', @@ -43,21 +62,13 @@ 'libpangowin32-1.0-0.dll','libcairo-2.dll', 'libpangocairo-1.0-0.dll','libpangoft2-1.0-0.dll', ], + 'excludes': [ + 'docutils' + ], } }
-try: - import docutils.readers -except ImportError: - opts['py2exe']['includes'] = \ - opts['py2exe']['includes'].replace(',docutils.readers.*', '')
-try: - import docutils.writers.html4css1 -except ImportError: - opts['py2exe']['includes'] = \ - opts['py2exe']['includes'].replace(',docutils.writers.html4css1', '') - setup( name = 'Gajim', version = '0.12-beta1', @@ -73,9 +84,8 @@ 'icon_resources': [(1, 'data/pixmaps/gajim.ico')]}], options=opts,
- data_files=[('.', glob.glob('src/gtkgui.glade')), - ('.', glob.glob('src/history_manager.glade')), - ], + data_files=docutils_files, + )
# vim: se ts=3:
Modified: branches/gajim_0.12/src/dialogs.py =================================================================== --- branches/gajim_0.12/src/dialogs.py 2008-11-20 14:37:38 UTC (rev 10670) +++ branches/gajim_0.12/src/dialogs.py 2008-11-20 14:44:09 UTC (rev 10671) @@ -442,7 +442,7 @@ self.subactivity, self.entry.get_text().decode('utf-8')) else: - pep.user_retract_activity(self.account) + pep.user_send_activity(self.account, '') self.window.destroy()
def on_cancel_button_clicked(self, widget): @@ -529,7 +529,7 @@ '''Return mood and messsage (None if no mood selected)''' message = self.entry.get_text().decode('utf-8') if self.mood is None: - pep.user_retract_mood(self.account) + pep.user_send_mood(self.account, '') else: pep.user_send_mood(self.account, self.mood, message) self.window.destroy()
Modified: branches/gajim_0.12/src/disco.py =================================================================== --- branches/gajim_0.12/src/disco.py 2008-11-20 14:37:38 UTC (rev 10670) +++ branches/gajim_0.12/src/disco.py 2008-11-20 14:44:09 UTC (rev 10671) @@ -311,7 +311,7 @@ # Allow browsing for unknown types aswell. if (not features and not identities) or \ xmpp.NS_DISCO_ITEMS in features or xmpp.NS_BROWSE in features: - return AgentBrowser + return ToplevelAgentBrowser return None
def get_info(self, jid, node, cb, force = False, nofetch = False, args = ()): @@ -725,10 +725,12 @@ self.travel(jid, '')
def on_services_treeview_row_activated(self, widget, path, col = 0): - self.browser.default_action() + if self.browser: + self.browser.default_action()
def on_services_treeview_selection_changed(self, widget): - self.browser.update_actions() + if self.browser: + self.browser.update_actions()
class AgentBrowser:
Modified: branches/gajim_0.12/src/gajim.py =================================================================== --- branches/gajim_0.12/src/gajim.py 2008-11-20 14:37:38 UTC (rev 10670) +++ branches/gajim_0.12/src/gajim.py 2008-11-20 14:44:09 UTC (rev 10671) @@ -57,6 +57,10 @@
import sys
+if os.name == 'nt': + # needed for docutils + sys.path.append('.') + import logging consoleloghandler = logging.StreamHandler() consoleloghandler.setLevel(1) @@ -1787,23 +1791,27 @@ gajim.block_signed_in_notifications[account] = True self.roster.set_actions_menu_needs_rebuild() self.roster.draw_account(account) - if self.sleeper.getState() != common.sleepy.STATE_UNKNOWN and \ - gajim.connections[account].connected in (2, 3): + state = self.sleeper.getState() + connected = gajim.connections[account].connected + if state != common.sleepy.STATE_UNKNOWN and connected in (2, 3): # we go online or free for chat, so we activate auto status gajim.sleeper_state[account] = 'online' - else: + elif not ((state == common.sleepy.STATE_AWAY and connected == 4) or \ + (state == common.sleepy.STATE_XA and connected == 5)): + # If we are autoaway/xa and come back after a disconnection, do nothing + # Else disable autoaway gajim.sleeper_state[account] = 'off' invisible_show = gajim.SHOW_LIST.index('invisible') # We cannot join rooms if we are invisible if gajim.connections[account].connected == invisible_show: return # join already open groupchats - for gc_control in self.msg_win_mgr.get_controls(message_control.TYPE_GC) + \ - self.minimized_controls[account].values(): + for gc_control in self.msg_win_mgr.get_controls(message_control.TYPE_GC) \ + + self.minimized_controls[account].values(): if account != gc_control.account: continue room_jid = gc_control.room_jid - if room_jid in gajim.gc_connected[account] and\ + if room_jid in gajim.gc_connected[account] and \ gajim.gc_connected[account][room_jid]: continue nick = gc_control.nick
Modified: branches/gajim_0.12/src/groupchat_control.py =================================================================== --- branches/gajim_0.12/src/groupchat_control.py 2008-11-20 14:37:38 UTC (rev 10670) +++ branches/gajim_0.12/src/groupchat_control.py 2008-11-20 14:44:09 UTC (rev 10671) @@ -2234,6 +2234,8 @@
def on_list_treeview_button_press_event(self, widget, event): '''popup user's group's or agent menu''' + # hide tooltip, no matter the button is pressed + self.tooltip.hide_tooltip() if event.button == 3: # right click try: path, column, x, y = widget.get_path_at_pos(int(event.x),
Modified: branches/gajim_0.12/src/music_track_listener.py =================================================================== --- branches/gajim_0.12/src/music_track_listener.py 2008-11-20 14:37:38 UTC (rev 10670) +++ branches/gajim_0.12/src/music_track_listener.py 2008-11-20 14:44:09 UTC (rev 10671) @@ -164,10 +164,10 @@
def _banshee_properties_extract(self, props): info = MusicTrackInfo() - info.title = props['name'] - info.album = props['album'] - info.artist = props['artist'] - info.duration = int(props['length']) + info.title = props.get('name', None) + info.album = props.get('album', None) + info.artist = props.get('artist', None) + info.duration = int(props.get('length', 0)) return info
def get_playing_track(self):
Modified: branches/gajim_0.12/src/roster_window.py =================================================================== --- branches/gajim_0.12/src/roster_window.py 2008-11-20 14:37:38 UTC (rev 10670) +++ branches/gajim_0.12/src/roster_window.py 2008-11-20 14:44:09 UTC (rev 10671) @@ -1417,7 +1417,7 @@ ##############################################################################
def _search_roster_func(self, model, column, key, titer): - key = gobject.markup_escape_text(key.lower()) + key = key.decode('utf-8').lower() name = model[titer][C_NAME].decode('utf-8').lower() return not (key in name)
Modified: branches/gajim_0.12/src/systray.py =================================================================== --- branches/gajim_0.12/src/systray.py 2008-11-20 14:37:38 UTC (rev 10670) +++ branches/gajim_0.12/src/systray.py 2008-11-20 14:44:09 UTC (rev 10671) @@ -128,12 +128,6 @@ def on_new_chat(self, widget, account): dialogs.NewChatDialog(account)
- def on_single_message_menuitem_activate2(self, widget, event, account): - self.on_single_message_menuitem_activate(widget, account) - - def on_new_chat2(self, widget, event, account): - self.on_new_chat(widget, account) - def make_menu(self, event_button, event_time): '''create chat with and new message (sub) menus/menuitems''' for m in self.popup_menus: @@ -174,13 +168,7 @@ item = gtk.ImageMenuItem(uf_show) item.set_image(state_images[show]) sub_menu.append(item) - if os.name == 'nt': - #FIXME: bug in pygtk, activate is not called. - # see http://trac.gajim.org/ticket/4310 - item.connect('button_press_event', - self.on_show_menuitem_activate2, show) - else: - item.connect('activate', self.on_show_menuitem_activate, show) + item.connect('activate', self.on_show_menuitem_activate, show)
item = gtk.SeparatorMenuItem() sub_menu.append(item) @@ -191,13 +179,7 @@ img.set_from_file(path) item.set_image(img) sub_menu.append(item) - if os.name == 'nt': - #FIXME: bug in pygtk, activate is not called. - # see http://trac.gajim.org/ticket/4310 - item.connect('button_press_event', - self.on_change_status_message_activate2) - else: - item.connect('activate', self.on_change_status_message_activate) + item.connect('activate', self.on_change_status_message_activate)
connected_accounts = gajim.get_number_of_connected_accounts() if connected_accounts < 1: @@ -210,13 +192,7 @@ item = gtk.ImageMenuItem(uf_show) item.set_image(state_images['offline']) sub_menu.append(item) - if os.name == 'nt': - #FIXME: bug in pygtk, activate is not called. - # see http://trac.gajim.org/ticket/4310 - item.connect('button_press_event', - self.on_show_menuitem_activate2, 'offline') - else: - item.connect('activate', self.on_show_menuitem_activate, 'offline') + item.connect('activate', self.on_show_menuitem_activate, 'offline')
iskey = connected_accounts > 0 and not (connected_accounts == 1 and gajim.connections[gajim.connections.keys()[0]].is_zeroconf) @@ -242,37 +218,20 @@ # for chat_with item = gtk.MenuItem(_('using account %s') % account) account_menu_for_chat_with.append(item) - if os.name == 'nt': - #FIXME: bug in pygtk, activate is not called. - # see http://trac.gajim.org/ticket/4310 - item.connect('button_press_event', - self.on_new_chat2, account) - else: - item.connect('activate', self.on_new_chat, account) + item.connect('activate', self.on_new_chat, account)
# for single message item = gtk.MenuItem(_('using account %s') % account) - if os.name == 'nt': - #FIXME: bug in pygtk, activate is not called. - # see http://trac.gajim.org/ticket/4310 - item.connect('button_press_event', - self.on_single_message_menuitem_activate2, account) - else: - item.connect('activate', - self.on_single_message_menuitem_activate, account) + item.connect('activate', + self.on_single_message_menuitem_activate, account) account_menu_for_single_message.append(item)
# join gc gc_item = gtk.MenuItem(_('using account %s') % account, False) gc_sub_menu.append(gc_item) gc_menuitem_menu = gtk.Menu() - if os.name == 'nt': - #FIXME: bug in pygtk, activate is not called. - # see http://trac.gajim.org/ticket/4310 - self.add_bookmarks_list2(gc_menuitem_menu, account) - else: - gajim.interface.roster.add_bookmarks_list(gc_menuitem_menu, - account) + gajim.interface.roster.add_bookmarks_list(gc_menuitem_menu, + account) gc_item.set_submenu(gc_menuitem_menu) gc_sub_menu.show_all()
@@ -289,13 +248,8 @@ self.on_single_message_menuitem_activate, account)
# join gc - if os.name == 'nt': - #FIXME: bug in pygtk, activate is not called. - # see http://trac.gajim.org/ticket/4310 - self.add_bookmarks_list2(gc_sub_menu, account) - else: - gajim.interface.roster.add_bookmarks_list(gc_sub_menu, - account) + gajim.interface.roster.add_bookmarks_list(gc_sub_menu, + account) break # No other connected account
newitem = gtk.SeparatorMenuItem() # separator @@ -303,14 +257,8 @@ newitem = gtk.ImageMenuItem(_('_Manage Bookmarks...')) img = gtk.image_new_from_stock(gtk.STOCK_PREFERENCES, gtk.ICON_SIZE_MENU) newitem.set_image(img) - if os.name == 'nt': - #FIXME: bug in pygtk, activate is not called. - # see http://trac.gajim.org/ticket/4310 - newitem.connect('button_press_event', - self.on_manage_bookmarks_menuitem_activate2) - else: - newitem.connect('activate', - gajim.interface.roster.on_manage_bookmarks_menuitem_activate) + newitem.connect('activate', + gajim.interface.roster.on_manage_bookmarks_menuitem_activate) gc_sub_menu.append(newitem)
sounds_mute_menuitem.set_active(not gajim.config.get('sounds_on')) @@ -324,37 +272,9 @@ self.added_hide_menuitem = True
self.systray_context_menu.show_all() - self.systray_context_menu.popup(None, None, None, event_button, + self.systray_context_menu.popup(None, None, None, 0, event_time)
- def on_join_gc_activate2(self, widget, event, account): - gajim.interface.roster.on_join_gc_activate(widget, account) - - def on_bookmark_menuitem_activate2(self, widget, event, account, bookmark): - gajim.interface.roster.on_bookmark_menuitem_activate(widget, account, bookmark) - - def on_manage_bookmarks_menuitem_activate2(self, widget, event): - gajim.interface.roster.on_manage_bookmarks_menuitem_activate(widget) - - def add_bookmarks_list2(self, gc_sub_menu, account): - '''Show join new group chat item and bookmarks list for an account''' - item = gtk.ImageMenuItem(_('_Join New Group Chat')) - icon = gtk.image_new_from_stock(gtk.STOCK_NEW, gtk.ICON_SIZE_MENU) - item.set_image(icon) - item.connect('button_press_event', self.on_join_gc_activate2, account) - gc_sub_menu.append(item) - - # user has at least one bookmark - if len(gajim.connections[account].bookmarks) > 0: - item = gtk.SeparatorMenuItem() # separator - gc_sub_menu.append(item) - - for bookmark in gajim.connections[account].bookmarks: - item = gtk.MenuItem(bookmark['name'], False) # Do not use underline - item.connect('button_press_event', self.on_bookmark_menuitem_activate2, - account, bookmark) - gc_sub_menu.append(item) - def on_show_all_events_menuitem_activate(self, widget): events = gajim.events.get_systray_events() for account in events: @@ -447,9 +367,6 @@ if index != current: gajim.interface.roster.status_combobox.set_active(index)
- def on_show_menuitem_activate2(self, widget, event, show): - self.on_show_menuitem_activate(widget, show) - def on_change_status_message_activate(self, widget): model = gajim.interface.roster.status_combobox.get_model() active = gajim.interface.roster.status_combobox.get_active() @@ -467,9 +384,6 @@ dlg = dialogs.ChangeStatusMessageDialog(on_response, status) dlg.window.present()
- def on_change_status_message_activate2(self, widget, event): - self.on_change_status_message_activate(widget) - def show_tooltip(self, widget): position = widget.window.get_origin() if self.tooltip.id == position: