Ticket #86: conseil-xdg.diff

File conseil-xdg.diff, 2.9 kB (added by Moonz, 21 months ago)

let's guess...

  • conseil.py

     
    1414        import gtk 
    1515        import gtk.glade 
    1616        import gobject 
    17         import gnome 
    1817except: 
    1918        sys.exit(1) 
    2019 
  • retriever.py

     
    1717        import gtk 
    1818        import gtk.glade 
    1919        import gobject 
    20         import gnome 
     20        import desktop 
    2121except: 
    2222        sys.exit(1) 
    2323from page import * 
     
    122122                                        # Fixme ! 
    123123                                        if itera != None : 
    124124                                                bugnbr = store.get_value(itera,0) 
    125                                                 gnome.url_show(self.bts.getBugUrl(bugnbr)) 
     125                                                desktop.url_show(self.bts.getBugUrl(bugnbr)) 
    126126                                browser = gtk.MenuItem(_("Open in a web browser")) 
    127127                                browser.connect("activate", browser_callback) 
    128128                                browser.show() 
     
    197197                        #right click menu 
    198198                        elif event.button == 3 : 
    199199                                def browser_callback(menuitem) : 
    200                                         gnome.url_show(self.bts.getBugUrl(nbr)) 
     200                                        desktop.url_show(self.bts.getBugUrl(nbr)) 
    201201                                browser = gtk.MenuItem(_("Open in a web browser")) 
    202202                                browser.connect("activate", browser_callback) 
    203203                                browser.show() 
     
    220220                                #self.bts.postComment(nbr,title,content) 
    221221 
    222222                def callback_browser(button,bugnbr) : 
    223                         gnome.url_show(self.bts.getBugUrl(bugnbr)) 
     223                        desktop.url_show(self.bts.getBugUrl(bugnbr)) 
    224224         
    225225                if nbr < 0 : 
    226226                        main_widget = gtk.Label(_("This specific bug doesnt exist")) 
  • desktop.py

     
     1#!/usr/bin/env python 
     2# -*- coding: utf-8 -*- 
     3 
     4import os as _os 
     5import sys as _sys 
     6 
     7try: 
     8        import gnome as _gnome 
     9        _has_gnome = True 
     10except ImportError: 
     11        _has_gnome = False 
     12 
     13def _spawn_executable(close_stdout = False, close_stderr = False, *args): 
     14        pid = _os.fork() 
     15        if pid == 0: 
     16                # Child process 
     17                 
     18                # Close stdout and/or stderr 
     19                null = _os.open('/dev/null', _os.O_WRONLY) 
     20                if close_stdout: _os.dup2(null, 1) 
     21                if close_stderr: _os.dup2(null, 2) 
     22                _os.close(null) 
     23                 
     24                # Run it 
     25                try: 
     26                        _os.execlp(args[0], *args) 
     27                except OSError: 
     28                        _sys.exit(127) 
     29        else: 
     30                status = _os.waitpid(pid, 0)[1] 
     31                return _os.WIFEXITED(status) and (_os.WEXITSTATUS(status) == 0) 
     32 
     33def _test_executable(*args): 
     34        return _spawn_executable(True, True, *args) 
     35 
     36def _spawn_quiet(*args): 
     37        return _spawn_executable(True, False, *args) 
     38 
     39_has_xdg = _test_executable('xdg-open', '--help') 
     40_has_exo = _test_executable('exo-open', '--help') 
     41 
     42def url_show(url): 
     43        if _has_xdg: # freedesktop is the best choice :p 
     44                return _spawn_quiet('xdg-open', url) 
     45        elif _has_gnome: # shouldn't also check for gnome-open ? 
     46                return _gnome.url_show(url) 
     47        elif _has_exo: # for xfce 
     48                return _spawn_quiet('exo-open', url) 
     49        # add your favorite desktop here ;) 
     50         
     51        return False