diff options
author | Jack Jansen <jack.jansen@cwi.nl> | 1996-01-29 15:45:59 (GMT) |
---|---|---|
committer | Jack Jansen <jack.jansen@cwi.nl> | 1996-01-29 15:45:59 (GMT) |
commit | d390325bbb1a75b384b0caec98f49bb3ae0baf41 (patch) | |
tree | 01b14b24f49bc44ea0048189d7fc6280ba2c1b67 /Mac | |
parent | 7e156a70fa5a26e11c50f2d5bff44935345c4ea9 (diff) | |
download | cpython-d390325bbb1a75b384b0caec98f49bb3ae0baf41.zip cpython-d390325bbb1a75b384b0caec98f49bb3ae0baf41.tar.gz cpython-d390325bbb1a75b384b0caec98f49bb3ae0baf41.tar.bz2 |
Modules implementing WWW and URL suite, and a module to control netscape.
Diffstat (limited to 'Mac')
-rw-r--r-- | Mac/Lib/toolbox/Standard_URL_suite.py | 52 | ||||
-rw-r--r-- | Mac/Lib/toolbox/WWW_Suite.py | 416 | ||||
-rw-r--r-- | Mac/Modules/ae/nsremote.py | 76 |
3 files changed, 544 insertions, 0 deletions
diff --git a/Mac/Lib/toolbox/Standard_URL_suite.py b/Mac/Lib/toolbox/Standard_URL_suite.py new file mode 100644 index 0000000..d8bac0c --- /dev/null +++ b/Mac/Lib/toolbox/Standard_URL_suite.py @@ -0,0 +1,52 @@ +"""Suite Standard URL suite: Mac URL standard, supported by many apps + + + +Level 1, version 1 + +Generated from flap:Programma's:Netscape 2.0b5 Folder:Netscape 2.0b5 +AETE/AEUT resource version 1/0, language 0, script 0 +""" + +import addpack +addpack.addpack('Tools') +addpack.addpack('bgen') +addpack.addpack('ae') + +import aetools +import MacOS + +_code = 'GURL' + +class Standard_URL_suite: + + _argmap_GetURL = { + 'to' : 'dest', + 'inside' : 'HWIN', + '_from' : 'refe', + } + + def GetURL(self, _object, _attributes={}, **_arguments): + """GetURL: Loads the URL (optionaly to disk) + + Required argument: The url + Keyword argument to: file the URL should be loaded into + Keyword argument inside: Window the URL should be loaded to + Keyword argument _from: Refererer, to be sent with the HTTP request + Keyword argument _attributes: AppleEvent attribute dictionary + """ + _code = 'GURL' + _subcode = 'GURL' + + aetools.keysubst(_arguments, self._argmap_GetURL) + _arguments['----'] = _object + + + _reply, _arguments, _attributes = self.send(_code, _subcode, + _arguments, _attributes) + if _arguments.has_key('errn'): + raise MacOS.Error, aetools.decodeerror(_arguments) + # XXXX Optionally decode result + if _arguments.has_key('----'): + return _arguments['----'] + diff --git a/Mac/Lib/toolbox/WWW_Suite.py b/Mac/Lib/toolbox/WWW_Suite.py new file mode 100644 index 0000000..437243c --- /dev/null +++ b/Mac/Lib/toolbox/WWW_Suite.py @@ -0,0 +1,416 @@ +"""Suite WorldWideWeb suite, as defined in Spyglass spec.: +Level 1, version 1 + +Generated from flap:Programma's:Netscape 2.0b5 Folder:Netscape 2.0b5 +AETE/AEUT resource version 1/0, language 0, script 0 +""" + +import addpack +addpack.addpack('Tools') +addpack.addpack('bgen') +addpack.addpack('ae') + +import aetools +import MacOS + +_code = 'WWW!' + +class WWW_Suite: + + _argmap_OpenURL = { + 'to' : 'INTO', + 'toWindow' : 'WIND', + 'flags' : 'FLGS', + 'post_data' : 'POST', + 'post_type' : 'MIME', + 'progressApp' : 'PROG', + } + + def OpenURL(self, _object, _attributes={}, **_arguments): + """OpenURL: Opens a URL. Allows for more options than GetURL event + Required argument: URL + Keyword argument to: file destination + Keyword argument toWindow: window iD + Keyword argument flags: Binary: any combination of 1, 2 and 4 is allowed: 1 and 2 mean force reload the document. 4 is ignored + Keyword argument post_data: Form posting data + Keyword argument post_type: MIME type of the posting data. Defaults to application/x-www-form-urlencoded + Keyword argument progressApp: Application that will display progress + Keyword argument _attributes: AppleEvent attribute dictionary + Returns: ID of the loading window + """ + _code = 'WWW!' + _subcode = 'OURL' + + aetools.keysubst(_arguments, self._argmap_OpenURL) + _arguments['----'] = _object + + + _reply, _arguments, _attributes = self.send(_code, _subcode, + _arguments, _attributes) + if _arguments.has_key('errn'): + raise MacOS.Error, aetools.decodeerror(_arguments) + # XXXX Optionally decode result + if _arguments.has_key('----'): + return _arguments['----'] + + _argmap_ShowFile = { + 'MIME_type' : 'MIME', + 'Window_ID' : 'WIND', + 'URL' : 'URL ', + } + + def ShowFile(self, _object, _attributes={}, **_arguments): + """ShowFile: Similar to OpenDocuments, except that it specifies the parent URL, and MIME type of the file + Required argument: File to open + Keyword argument MIME_type: MIME type + Keyword argument Window_ID: Window to open the file in + Keyword argument URL: Use this as a base URL + Keyword argument _attributes: AppleEvent attribute dictionary + Returns: Window ID of the loaded window. 0 means ShowFile failed, FFFFFFF means that data was not appropriate type to display in the browser. + """ + _code = 'WWW!' + _subcode = 'SHWF' + + aetools.keysubst(_arguments, self._argmap_ShowFile) + _arguments['----'] = _object + + + _reply, _arguments, _attributes = self.send(_code, _subcode, + _arguments, _attributes) + if _arguments.has_key('errn'): + raise MacOS.Error, aetools.decodeerror(_arguments) + # XXXX Optionally decode result + if _arguments.has_key('----'): + return _arguments['----'] + + _argmap_parse_anchor = { + 'relative_to' : 'RELA', + } + + def parse_anchor(self, _object, _attributes={}, **_arguments): + """parse anchor: Resolves the relative URL + Required argument: Main URL + Keyword argument relative_to: Relative URL + Keyword argument _attributes: AppleEvent attribute dictionary + Returns: Parsed URL + """ + _code = 'WWW!' + _subcode = 'PRSA' + + aetools.keysubst(_arguments, self._argmap_parse_anchor) + _arguments['----'] = _object + + + _reply, _arguments, _attributes = self.send(_code, _subcode, + _arguments, _attributes) + if _arguments.has_key('errn'): + raise MacOS.Error, aetools.decodeerror(_arguments) + # XXXX Optionally decode result + if _arguments.has_key('----'): + return _arguments['----'] + + _argmap_cancel_progress = { + 'in_window' : 'WIND', + } + + def cancel_progress(self, _object=None, _attributes={}, **_arguments): + """cancel progress: Interrupts the download of the document in the given window + Required argument: progress ID, obtained from the progress app + Keyword argument in_window: window ID of the progress to cancel + Keyword argument _attributes: AppleEvent attribute dictionary + """ + _code = 'WWW!' + _subcode = 'CNCL' + + aetools.keysubst(_arguments, self._argmap_cancel_progress) + _arguments['----'] = _object + + + _reply, _arguments, _attributes = self.send(_code, _subcode, + _arguments, _attributes) + if _arguments.has_key('errn'): + raise MacOS.Error, aetools.decodeerror(_arguments) + # XXXX Optionally decode result + if _arguments.has_key('----'): + return _arguments['----'] + + def find_URL(self, _object, _attributes={}, **_arguments): + """find URL: If the file was downloaded by Netscape, you can call FindURL to find out the URL used to download the file. + Required argument: File spec + Keyword argument _attributes: AppleEvent attribute dictionary + Returns: The URL + """ + _code = 'WWW!' + _subcode = 'FURL' + + if _arguments: raise TypeError, 'No optional args expected' + _arguments['----'] = _object + + + _reply, _arguments, _attributes = self.send(_code, _subcode, + _arguments, _attributes) + if _arguments.has_key('errn'): + raise MacOS.Error, aetools.decodeerror(_arguments) + # XXXX Optionally decode result + if _arguments.has_key('----'): + return _arguments['----'] + + def webActivate(self, _object=None, _attributes={}, **_arguments): + """webActivate: Makes Netscape the frontmost application, and selects a given window. This event is here for suite completeness/ cross-platform compatibility only, you should use standard AppleEvents instead. + Required argument: window to bring to front + Keyword argument _attributes: AppleEvent attribute dictionary + """ + _code = 'WWW!' + _subcode = 'ACTV' + + if _arguments: raise TypeError, 'No optional args expected' + _arguments['----'] = _object + + + _reply, _arguments, _attributes = self.send(_code, _subcode, + _arguments, _attributes) + if _arguments.has_key('errn'): + raise MacOS.Error, aetools.decodeerror(_arguments) + # XXXX Optionally decode result + if _arguments.has_key('----'): + return _arguments['----'] + + def list_windows(self, _no_object=None, _attributes={}, **_arguments): + """list windows: Lists the IDs of all the hypertext windows + Keyword argument _attributes: AppleEvent attribute dictionary + Returns: List of unique IDs of all the hypertext windows + """ + _code = 'WWW!' + _subcode = 'LSTW' + + if _arguments: raise TypeError, 'No optional args expected' + if _no_object != None: raise TypeError, 'No direct arg expected' + + + _reply, _arguments, _attributes = self.send(_code, _subcode, + _arguments, _attributes) + if _arguments.has_key('errn'): + raise MacOS.Error, aetools.decodeerror(_arguments) + # XXXX Optionally decode result + if _arguments.has_key('----'): + return _arguments['----'] + + def get_window_info(self, _object=None, _attributes={}, **_arguments): + """get window info: Returns the information about the window as a list. Currently the list contains the window title and the URL. You can get the same information using standard Apple Event GetProperty. + Required argument: window ID + Keyword argument _attributes: AppleEvent attribute dictionary + Returns: undocumented, typecode 'list' + """ + _code = 'WWW!' + _subcode = 'WNFO' + + if _arguments: raise TypeError, 'No optional args expected' + _arguments['----'] = _object + + + _reply, _arguments, _attributes = self.send(_code, _subcode, + _arguments, _attributes) + if _arguments.has_key('errn'): + raise MacOS.Error, aetools.decodeerror(_arguments) + # XXXX Optionally decode result + if _arguments.has_key('----'): + return _arguments['----'] + + def register_URL_echo(self, _object=None, _attributes={}, **_arguments): + """register URL echo: Registers the ³echo² application. Each download from now on will be echoed to this application. + Required argument: Application signature + Keyword argument _attributes: AppleEvent attribute dictionary + """ + _code = 'WWW!' + _subcode = 'RGUE' + + if _arguments: raise TypeError, 'No optional args expected' + _arguments['----'] = _object + + + _reply, _arguments, _attributes = self.send(_code, _subcode, + _arguments, _attributes) + if _arguments.has_key('errn'): + raise MacOS.Error, aetools.decodeerror(_arguments) + # XXXX Optionally decode result + if _arguments.has_key('----'): + return _arguments['----'] + + def unregister_URL_echo(self, _object, _attributes={}, **_arguments): + """unregister URL echo: cancels URL echo + Required argument: application signature + Keyword argument _attributes: AppleEvent attribute dictionary + """ + _code = 'WWW!' + _subcode = 'UNRU' + + if _arguments: raise TypeError, 'No optional args expected' + _arguments['----'] = _object + + + _reply, _arguments, _attributes = self.send(_code, _subcode, + _arguments, _attributes) + if _arguments.has_key('errn'): + raise MacOS.Error, aetools.decodeerror(_arguments) + # XXXX Optionally decode result + if _arguments.has_key('----'): + return _arguments['----'] + + _argmap_register_viewer = { + 'MIME_type' : 'MIME', + 'with_file_type' : 'FTYP', + } + + def register_viewer(self, _object, _attributes={}, **_arguments): + """register viewer: Registers an application as a specialı viewer for this MIME type. The application will be launched with ViewDoc events + Required argument: Application sig + Keyword argument MIME_type: MIME type viewer is registering for + Keyword argument with_file_type: Mac file type for the downloaded files + Keyword argument _attributes: AppleEvent attribute dictionary + Returns: TRUE if registration has been successful + """ + _code = 'WWW!' + _subcode = 'RGVW' + + aetools.keysubst(_arguments, self._argmap_register_viewer) + _arguments['----'] = _object + + + _reply, _arguments, _attributes = self.send(_code, _subcode, + _arguments, _attributes) + if _arguments.has_key('errn'): + raise MacOS.Error, aetools.decodeerror(_arguments) + # XXXX Optionally decode result + if _arguments.has_key('----'): + return _arguments['----'] + + _argmap_unregister_viewer = { + 'MIME_type' : 'MIME', + } + + def unregister_viewer(self, _object, _attributes={}, **_arguments): + """unregister viewer: Revert to the old way of handling this MIME type + Required argument: Application sig + Keyword argument MIME_type: MIME type to be unregistered + Keyword argument _attributes: AppleEvent attribute dictionary + Returns: TRUE if the event was successful + """ + _code = 'WWW!' + _subcode = 'UNRV' + + aetools.keysubst(_arguments, self._argmap_unregister_viewer) + _arguments['----'] = _object + + + _reply, _arguments, _attributes = self.send(_code, _subcode, + _arguments, _attributes) + if _arguments.has_key('errn'): + raise MacOS.Error, aetools.decodeerror(_arguments) + # XXXX Optionally decode result + if _arguments.has_key('----'): + return _arguments['----'] + + _argmap_register_protocol = { + 'for_protocol' : 'PROT', + } + + def register_protocol(self, _object=None, _attributes={}, **_arguments): + """register protocol: Registers application as a ³handler² for this protocol with a given prefix. The handler will receive ³OpenURL², or if that fails, ³GetURL² event. + Required argument: Application sig + Keyword argument for_protocol: protocol prefix: ³finger:², ³file², + Keyword argument _attributes: AppleEvent attribute dictionary + Returns: TRUE if registration has been successful + """ + _code = 'WWW!' + _subcode = 'RGPR' + + aetools.keysubst(_arguments, self._argmap_register_protocol) + _arguments['----'] = _object + + + _reply, _arguments, _attributes = self.send(_code, _subcode, + _arguments, _attributes) + if _arguments.has_key('errn'): + raise MacOS.Error, aetools.decodeerror(_arguments) + # XXXX Optionally decode result + if _arguments.has_key('----'): + return _arguments['----'] + + _argmap_unregister_protocol = { + 'for_protocol' : 'PROT', + } + + def unregister_protocol(self, _object=None, _attributes={}, **_arguments): + """unregister protocol: reverses the effects of ³register protocol² + Required argument: Application sig. + Keyword argument for_protocol: protocol prefix. If none, unregister for all protocols + Keyword argument _attributes: AppleEvent attribute dictionary + Returns: TRUE if successful + """ + _code = 'WWW!' + _subcode = 'UNRP' + + aetools.keysubst(_arguments, self._argmap_unregister_protocol) + _arguments['----'] = _object + + + _reply, _arguments, _attributes = self.send(_code, _subcode, + _arguments, _attributes) + if _arguments.has_key('errn'): + raise MacOS.Error, aetools.decodeerror(_arguments) + # XXXX Optionally decode result + if _arguments.has_key('----'): + return _arguments['----'] + + _argmap_register_window_close = { + 'for_window' : 'WIND', + } + + def register_window_close(self, _object=None, _attributes={}, **_arguments): + """register window close: Netscape will notify registered application when this window closes + Required argument: Application signature + Keyword argument for_window: window ID + Keyword argument _attributes: AppleEvent attribute dictionary + Returns: true if successful + """ + _code = 'WWW!' + _subcode = 'RGWC' + + aetools.keysubst(_arguments, self._argmap_register_window_close) + _arguments['----'] = _object + + + _reply, _arguments, _attributes = self.send(_code, _subcode, + _arguments, _attributes) + if _arguments.has_key('errn'): + raise MacOS.Error, aetools.decodeerror(_arguments) + # XXXX Optionally decode result + if _arguments.has_key('----'): + return _arguments['----'] + + _argmap_unregister_window_close = { + 'for_window' : 'WIND', + } + + def unregister_window_close(self, _object=None, _attributes={}, **_arguments): + """unregister window close: Undo for register window close + Required argument: Application signature + Keyword argument for_window: window ID + Keyword argument _attributes: AppleEvent attribute dictionary + Returns: true if successful + """ + _code = 'WWW!' + _subcode = 'UNRC' + + aetools.keysubst(_arguments, self._argmap_unregister_window_close) + _arguments['----'] = _object + + + _reply, _arguments, _attributes = self.send(_code, _subcode, + _arguments, _attributes) + if _arguments.has_key('errn'): + raise MacOS.Error, aetools.decodeerror(_arguments) + # XXXX Optionally decode result + if _arguments.has_key('----'): + return _arguments['----'] + diff --git a/Mac/Modules/ae/nsremote.py b/Mac/Modules/ae/nsremote.py new file mode 100644 index 0000000..cace374 --- /dev/null +++ b/Mac/Modules/ae/nsremote.py @@ -0,0 +1,76 @@ +"""nsremote - Control Netscape from python. + +Interface modelled after unix-interface done +by hassan@cs.stanford.edu. + +Jack Jansen, CWI, January 1996. +""" +# +# Note: this module currently uses the funny SpyGlass AppleEvents, since +# these seem to be the only way to get the info from Netscape. It would +# be nicer to use the more "object oriented" standard OSA stuff, when it +# is implemented in Netscape. +# +import addpack +import sys + +addpack.addpack('Tools') +addpack.addpack('bgen') +addpack.addpack('ae') + +import aetools +import Standard_Suite +import WWW_Suite +import MacOS + +class Netscape(aetools.TalkTo, Standard_Suite.Standard_Suite, WWW_Suite.WWW_Suite): + pass + +SIGNATURE='MOSS' + +Error = 'nsremote.Error' + +_talker = None + +def _init(): + global _talker + if _talker == None: + _talker = Netscape(SIGNATURE) + +def list(dpyinfo=""): + _init() + list = _talker.list_windows() + return map(lambda x: (x, 'version unknown'), list) + +def geturl(windowid=0, dpyinfo=""): + _init() + if windowid == 0: + ids = _talker.list_windows() + if not ids: + raise Error, 'No netscape windows open' + windowid = ids[0] + info = _talker.get_window_info(windowid) + return info + +def openurl(url, windowid=0, dpyinfo=""): + _init() + if windowid == 0: + _talker.OpenURL(url) + else: + _talker.OpenURL(url, toWindow=windowid) + +def _test(): + """Test program: Open www.python.org in all windows, then revert""" + import sys + windows_and_versions = list() + windows_and_urls = map(lambda x: (x[0], geturl(x[0])[0]), windows_and_versions) + for id, version in windows_and_versions: + openurl('http://www.python.org/', windowid=id) + print 'Type return to revert to old contents-' + sys.stdin.readline() + for id, url in windows_and_urls: + openurl(url, id) + +if __name__ == '__main__': + _test() + |