127 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			127 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
#
 | 
						|
# Gramps - a GTK+/GNOME based genealogy program
 | 
						|
#
 | 
						|
# Copyright (C) 2002-2006  Donald N. Allingham
 | 
						|
#
 | 
						|
# This program is free software; you can redistribute it and/or modify
 | 
						|
# it under the terms of the GNU General Public License as published by
 | 
						|
# the Free Software Foundation; either version 2 of the License, or
 | 
						|
# (at your option) any later version.
 | 
						|
#
 | 
						|
# This program is distributed in the hope that it will be useful,
 | 
						|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
						|
# GNU General Public License for more details.
 | 
						|
#
 | 
						|
# You should have received a copy of the GNU General Public License
 | 
						|
# along with this program; if not, write to the Free Software
 | 
						|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 | 
						|
#
 | 
						|
 | 
						|
# $Id$
 | 
						|
 | 
						|
import const
 | 
						|
import locale
 | 
						|
import os
 | 
						|
 | 
						|
#list of manuals on wiki, map locale code to wiki extension, add language codes
 | 
						|
#completely, or first part, so pt_BR if Brazilian portugeze wiki manual, and 
 | 
						|
#nl for Dutch (nl_BE, nl_NL language code)
 | 
						|
MANUALS = {
 | 
						|
    'nl' : '/nl',
 | 
						|
    'fr' : '/fr',
 | 
						|
    'sq' : '/sq',
 | 
						|
    'mk' : '/mk',
 | 
						|
    'de' : '/de',
 | 
						|
    'fi' : '/fi',
 | 
						|
}
 | 
						|
 | 
						|
#first, determine language code, so nl_BE --> wiki /nl
 | 
						|
LANG = locale.getlocale()[0]
 | 
						|
if not LANG:
 | 
						|
    LANG = 'C'
 | 
						|
#support environment overrule:
 | 
						|
try: 
 | 
						|
    if not os.environ['LANGUAGE'] or \
 | 
						|
            os.environ['LANGUAGE'].split(':')[0] == LANG:
 | 
						|
        pass
 | 
						|
    else:
 | 
						|
        LANG = os.environ['LANGUAGE'].split(':')[0]
 | 
						|
except:
 | 
						|
    pass
 | 
						|
EXTENSION = ''
 | 
						|
try:
 | 
						|
    EXTENSION = MANUALS[LANG]
 | 
						|
except KeyError:
 | 
						|
    pass
 | 
						|
try:
 | 
						|
    if not EXTENSION :
 | 
						|
        EXTENSION = MANUALS[LANG.split('_')[0]]
 | 
						|
except KeyError:
 | 
						|
    pass
 | 
						|
 | 
						|
def help(webpage='', section=''):
 | 
						|
    """
 | 
						|
    Display the specified webpage and section from the Gramps 3.0 wiki.
 | 
						|
    """
 | 
						|
    if not webpage:
 | 
						|
        link = const.URL_WIKISTRING + const.URL_MANUAL_PAGE + EXTENSION
 | 
						|
    else:
 | 
						|
        link = const.URL_WIKISTRING + webpage + EXTENSION
 | 
						|
        if section:
 | 
						|
            link = link + '#' + section
 | 
						|
    url(link)
 | 
						|
        
 | 
						|
def url(link):
 | 
						|
    """
 | 
						|
    Open the specified URL in a browser. 
 | 
						|
    """
 | 
						|
    if not run_file(link):
 | 
						|
        run_browser(link)
 | 
						|
 | 
						|
def run_file(file):
 | 
						|
    """
 | 
						|
    Open a file or url with the default application. This should work
 | 
						|
    on GNOME, KDE, XFCE, ... as we use a freedesktop application
 | 
						|
    """
 | 
						|
    import os
 | 
						|
    
 | 
						|
    search = os.environ['PATH'].split(':')
 | 
						|
    
 | 
						|
    xdgopen = 'xdg-open'
 | 
						|
    for path in search:
 | 
						|
        prog = os.path.join(path, xdgopen)
 | 
						|
        if os.path.isfile(prog):
 | 
						|
            os.spawnvpe(os.P_NOWAIT, prog, [prog, file], os.environ)
 | 
						|
            return True
 | 
						|
    
 | 
						|
    return False
 | 
						|
 | 
						|
def run_browser(url):
 | 
						|
    """
 | 
						|
    Attempt of find a browswer, and launch with the browser with the
 | 
						|
    specified URL
 | 
						|
    Use run_file first!
 | 
						|
    """
 | 
						|
    try:
 | 
						|
        import webbrowser
 | 
						|
        webbrowser.open_new_tab(url)
 | 
						|
    except ImportError:
 | 
						|
        import os
 | 
						|
 | 
						|
        search = os.environ['PATH'].split(':')
 | 
						|
 | 
						|
        for browser in ['firefox', 'konqueror', 'epiphany',
 | 
						|
                        'galeon', 'mozilla']:
 | 
						|
            for path in search:
 | 
						|
                prog = os.path.join(path,browser)
 | 
						|
                if os.path.isfile(prog):
 | 
						|
                    os.spawnvpe(os.P_NOWAIT, prog, [prog, url], os.environ)
 | 
						|
                    return
 | 
						|
 | 
						|
        # If we did not find a browser in the path, try this
 | 
						|
        try:
 | 
						|
            os.startfile(url)
 | 
						|
        except:
 | 
						|
            pass
 |