[Jython-checkins] jython: Add webbrowser module

jim.baker jython-checkins at python.org
Wed Jan 14 03:57:14 CET 2015


https://hg.python.org/jython/rev/a4631c4cb565
changeset:   7529:a4631c4cb565
user:        Jim Baker <jim.baker at rackspace.com>
date:        Tue Jan 13 19:56:56 2015 -0700
summary:
  Add webbrowser module

Fixes http://bugs.jython.org/issue1762054

files:
  Lib/webbrowser.py |  78 +++++++++++++++++++++++++++++++++++
  1 files changed, 78 insertions(+), 0 deletions(-)


diff --git a/Lib/webbrowser.py b/Lib/webbrowser.py
new file mode 100644
--- /dev/null
+++ b/Lib/webbrowser.py
@@ -0,0 +1,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()

-- 
Repository URL: https://hg.python.org/jython


More information about the Jython-checkins mailing list