| 636 | self.name = name |
| 637 | |
| 638 | def open(self, url, new=0, autoraise=True): |
| 639 | sys.audit("webbrowser.open", url) |
| 640 | assert "'" not in url |
| 641 | # hack for local urls |
| 642 | if not ':' in url: |
| 643 | url = 'file:'+url |
| 644 | |
| 645 | # new must be 0 or 1 |
| 646 | new = int(bool(new)) |
| 647 | if self.name == "default": |
| 648 | # User called open, open_new or get without a browser parameter |
| 649 | script = 'open location "%s"' % url.replace('"', '%22') # opens in default browser |
| 650 | else: |
| 651 | # User called get and chose a browser |
| 652 | if self.name == "OmniWeb": |
| 653 | toWindow = "" |
| 654 | else: |
| 655 | # Include toWindow parameter of OpenURL command for browsers |
| 656 | # that support it. 0 == new window; -1 == existing |
| 657 | toWindow = "toWindow %d" % (new - 1) |
| 658 | cmd = 'OpenURL "%s"' % url.replace('"', '%22') |
| 659 | script = '''tell application "%s" |
| 660 | activate |
| 661 | %s %s |
| 662 | end tell''' % (self.name, cmd, toWindow) |
| 663 | # Open pipe to AppleScript through osascript command |
| 664 | osapipe = os.popen("osascript", "w") |
| 665 | if osapipe is None: |
| 666 | return False |
| 667 | # Write script to osascript's stdin |
| 668 | osapipe.write(script) |
| 669 | rc = osapipe.close() |
| 670 | return not rc |
| 671 | |
| 672 | class MacOSXOSAScript(BaseBrowser): |
| 673 | def __init__(self, name='default'): |