File: webbrowser.py

package info (click to toggle)
jython 2.7.2%2Brepack1-3
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 62,676 kB
  • sloc: python: 640,908; java: 306,458; xml: 1,984; sh: 522; ansic: 126; makefile: 76
file content (78 lines) | stat: -rw-r--r-- 1,964 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#! /usr/bin/env python
"""Interfaces for launching and remotely controlling Web browsers."""
# Rewritten for Jython from the orginal for CPython maintained by Georg Brandl.

import getopt
import sys
from java.awt import Desktop
from java.net import URI

__all__ = ["Error", "open", "open_new", "open_new_tab", "get", "register"]

class Error(Exception):
    pass

class AWTBrowser(object):
    def open(self, url, new=0, autoraise=1):    
        if not Desktop.isDesktopSupported():
            raise Error("webbrowswer.py not supported in your environment")
        try:
            Desktop.getDesktop().browse(URI(url))
            return True
        except IOError as e:
            raise Error(e)
  
    def open_new(self, url):
        return self.open(url, 1)

    def open_new_tab(self, url):
        return self.open(url, 2)


# singleton, since we only support one such browser anyway in Java AWT,
# despite get/register functions
AWTBrowser = AWTBrowser()


def get(using=None):
    """Return a browser launcher instance appropriate for the environment."""
    return AWTBrowser


def register(name, klass, instance=None, update_tryorder=1):
    """Register a browser connector and, optionally, connection."""
    pass  # ignored on Jython

open = AWTBrowser.open
open_new = AWTBrowser.open_new
open_new_tab = AWTBrowser.open_new_tab


def main():
    import getopt
    usage = """Usage: %s [-n | -t] url
    -n: open new window
    -t: open new tab""" % sys.argv[0]
    try:
        opts, args = getopt.getopt(sys.argv[1:], 'ntd')
    except getopt.error, msg:
        print >>sys.stderr, msg
        print >>sys.stderr, usage
        sys.exit(1)
    new_win = 0
    for o, a in opts:
        if o == '-n': new_win = 1
        elif o == '-t': new_win = 2
    if len(args) <> 1:
        print >>sys.stderr, usage
        sys.exit(1)

    url = args[0]

    open(url, new_win)
    print ('opened')

    print "\a"

if __name__ == "__main__":
    main()