changeset 22ffe33e941a in /home/hg/repos/gajim

details:http://hg.gajim.org/gajim?cmd=changeset;node=22ffe33e941a
description: use webbrowser module to open uri instead of using popen. Fixes 
#5751

diffstat:

 src/common/helpers.py |  55 ++++++++++++++++++++------------------------------
 src/config.py         |   5 +---
 src/gajim.py          |   2 +-
 src/gtkgui_helpers.py |  29 --------------------------
 src/gui_interface.py  |   3 --
 5 files changed, 24 insertions(+), 70 deletions(-)

diffs (175 lines):

diff -r 1880b5dd2cdb -r 22ffe33e941a src/common/helpers.py
--- a/src/common/helpers.py     Tue Apr 19 08:54:41 2011 +0200
+++ b/src/common/helpers.py     Tue Apr 19 14:36:22 2011 +0200
@@ -35,6 +35,7 @@
 import os
 import subprocess
 import urllib
+import webbrowser
 import errno
 import select
 import base64
@@ -671,30 +672,20 @@
     return contacts_dict
 
 def launch_browser_mailer(kind, uri):
-    #kind = 'url' or 'mail'
-    if os.name == 'nt':
-        try:
-            os.startfile(uri) # if pywin32 is installed we open
-        except Exception:
-            pass
+    # kind = 'url' or 'mail'
+    if kind in ('mail', 'sth_at_sth') and not uri.startswith('mailto:'):
+        uri = 'mailto:' + uri
 
-    else:
-        if kind in ('mail', 'sth_at_sth') and not uri.startswith('mailto:'):
-            uri = 'mailto:' + uri
+    if kind == 'url' and uri.startswith('www.'):
+        uri = 'http://' + uri
 
-        if kind == 'url' and uri.startswith('www.'):
-            uri = 'http://' + uri
-
-        if gajim.config.get('openwith') in ('xdg-open', 'gnome-open',
-        'kfmclient exec', 'exo-open'):
-            command = gajim.config.get('openwith')
-        elif gajim.config.get('openwith') == 'custom':
-            if kind == 'url':
-                command = gajim.config.get('custombrowser')
-            elif kind in ('mail', 'sth_at_sth'):
-                command = gajim.config.get('custommailapp')
-            if command == '': # if no app is configured
-                return
+    if not gajim.config.get('autodetect_browser_mailer'):
+        if kind == 'url':
+            command = gajim.config.get('custombrowser')
+        elif kind in ('mail', 'sth_at_sth'):
+            command = gajim.config.get('custommailapp')
+        if command == '': # if no app is configured
+            return
 
         command = build_command(command, uri)
         try:
@@ -702,18 +693,14 @@
         except Exception:
             pass
 
+    else:
+        webbrowser.open(uri)
+
+
 def launch_file_manager(path_to_open):
-    if os.name == 'nt':
-        try:
-            os.startfile(path_to_open) # if pywin32 is installed we open
-        except Exception:
-            pass
-    else:
-        if gajim.config.get('openwith') in ('xdg-open', 'gnome-open',
-        'kfmclient exec', 'exo-open'):
-            command = gajim.config.get('openwith')
-        elif gajim.config.get('openwith') == 'custom':
-            command = gajim.config.get('custom_file_manager')
+    uri = 'file://' + path_to_open
+    if not gajim.config.get('autodetect_browser_mailer'):
+        command = gajim.config.get('custom_file_manager')
         if command == '': # if no app is configured
             return
         command = build_command(command, path_to_open)
@@ -721,6 +708,8 @@
             exec_command(command)
         except Exception:
             pass
+    else:
+        webbrowser.open(uri)
 
 def play_sound(event):
     if not gajim.config.get('sounds_on'):
diff -r 1880b5dd2cdb -r 22ffe33e941a src/config.py
--- a/src/config.py     Tue Apr 19 08:54:41 2011 +0200
+++ b/src/config.py     Tue Apr 19 14:36:22 2011 +0200
@@ -504,9 +504,7 @@
 
             if gajim.config.get('autodetect_browser_mailer'):
                 self.applications_combobox.set_active(0)
-            # else autodetect_browser_mailer is False.
-            # so user has 'Always Use GNOME/KDE/Xfce' or Custom
-            elif gajim.config.get('openwith') == 'custom':
+            else:
                 self.applications_combobox.set_active(1)
                 self.xml.get_object('custom_apps_frame').show()
 
@@ -1146,7 +1144,6 @@
         elif widget.get_active() == 1:
             gajim.config.set('autodetect_browser_mailer', False)
             self.xml.get_object('custom_apps_frame').show()
-            gajim.config.set('openwith', 'custom')
         gajim.interface.save_config()
 
     def on_custom_browser_entry_changed(self, widget):
diff -r 1880b5dd2cdb -r 22ffe33e941a src/gajim.py
--- a/src/gajim.py      Tue Apr 19 08:54:41 2011 +0200
+++ b/src/gajim.py      Tue Apr 19 14:36:22 2011 +0200
@@ -40,7 +40,7 @@
 demandimport.ignore += ['gobject._gobject', 'libasyncns', 'i18n',
     'logging.NullHandler', 'dbus.glib', 'dbus.service',
     'command_system.implementation.standard', 'OpenSSL.SSL', 'OpenSSL.crypto',
-    'common.sleepy', 'DLFCN', 'dl', 'xml.sax', 'xml.sax.handler']
+    'common.sleepy', 'DLFCN', 'dl', 'xml.sax', 'xml.sax.handler', 'ic']
 
 import os
 import sys
diff -r 1880b5dd2cdb -r 22ffe33e941a src/gtkgui_helpers.py
--- a/src/gtkgui_helpers.py     Tue Apr 19 08:54:41 2011 +0200
+++ b/src/gtkgui_helpers.py     Tue Apr 19 14:36:22 2011 +0200
@@ -221,35 +221,6 @@
 
     return None
 
-def autodetect_browser_mailer():
-    # recognize the environment and set appropriate browser/mailer
-    if user_supports_xdg_open():
-        gajim.config.set('openwith', 'xdg-open')
-    elif user_runs_gnome():
-        gajim.config.set('openwith', 'gnome-open')
-    elif user_runs_kde():
-        gajim.config.set('openwith', 'kfmclient exec')
-    elif user_runs_xfce():
-        gajim.config.set('openwith', 'exo-open')
-    else:
-        gajim.config.set('openwith', 'custom')
-
-def user_supports_xdg_open():
-    import os.path
-    return os.path.isfile('/usr/bin/xdg-open')
-
-def user_runs_gnome():
-    return 'gnome-session' in get_running_processes()
-
-def user_runs_kde():
-    return 'startkde' in get_running_processes()
-
-def user_runs_xfce():
-    procs = get_running_processes()
-    if 'startxfce4' in procs or 'xfce4-session' in procs:
-        return True
-    return False
-
 def get_running_processes():
     """
     Return running processes or None (if /proc does not exist)
diff -r 1880b5dd2cdb -r 22ffe33e941a src/gui_interface.py
--- a/src/gui_interface.py      Tue Apr 19 08:54:41 2011 +0200
+++ b/src/gui_interface.py      Tue Apr 19 14:36:22 2011 +0200
@@ -2649,9 +2649,6 @@
                     gajim.config.set_per('themes', theme_name, o,
                         theme[d.index(o)])
 
-        if gajim.config.get('autodetect_browser_mailer') or not cfg_was_read:
-            gtkgui_helpers.autodetect_browser_mailer()
-
         gajim.idlequeue = idlequeue.get_idlequeue()
         # resolve and keep current record of resolved hosts
         gajim.resolver = resolver.get_resolver(gajim.idlequeue)
_______________________________________________
Commits mailing list
[email protected]
http://lists.gajim.org/cgi-bin/listinfo/commits

Reply via email to