79 lines
1.9 KiB
Python
79 lines
1.9 KiB
Python
#! /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()
|