annotate enso_pyxpcom.py @ 1:6e4335fa3321

Fixed some things.
author Atul Varma <varmaa@toolness.com>
date Thu, 08 May 2008 11:16:05 -0700
parents b1c0ab5d5f14
children 4f22928c7a2c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
1 from xpcom import components, verbose
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
2 import sys, os
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
3 import logging
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
4 import platform
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
5
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
6 _ensoStarted = False
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
7
1
6e4335fa3321 Fixed some things.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
8 ENSO_PATH = os.path.join(os.getenv("HOME"), "Documents/enso-svn")
6e4335fa3321 Fixed some things.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
9 LOGGING_FILE = os.path.join(os.getenv("HOME"), "enso_pyxpcom.log")
6e4335fa3321 Fixed some things.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
10
0
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
11 def getAbout():
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
12 global _ensoStarted
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
13
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
14 if not _ensoStarted:
1
6e4335fa3321 Fixed some things.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
15 logging.info("Importing Enso.")
6e4335fa3321 Fixed some things.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
16 sys.path.append(ENSO_PATH)
6e4335fa3321 Fixed some things.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
17
6e4335fa3321 Fixed some things.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
18 import enso
0
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
19 logging.info("Launching Enso.")
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
20 _ensoStarted = True
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
21 enso.run()
1
6e4335fa3321 Fixed some things.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
22
0
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
23 return "Enso is running."
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
24
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
25 class ShutdownObserver:
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
26 _com_interfaces_ = components.interfaces.nsIObserver
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
27
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
28 def observe(self, subject, topic, data):
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
29 print "quit-application received; calling sys.exitfunc()."
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
30 sys.exitfunc()
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
31
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
32 class AboutPython:
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
33 _com_interfaces_ = components.interfaces.nsIAboutModule
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
34 _reg_contractid_ = '@mozilla.org/network/protocol/about;1?what=enso'
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
35 _reg_clsid_ = '{6d5d462e-6de7-4bca-bbc6-c488d481351c}'
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
36 _reg_desc_ = "about:enso handler"
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
37
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
38 def __init__(self):
1
6e4335fa3321 Fixed some things.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
39 logging.basicConfig(level=logging.INFO,
6e4335fa3321 Fixed some things.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
40 filename=LOGGING_FILE,
6e4335fa3321 Fixed some things.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
41 filemode="w")
0
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
42 logging.info("Setting shutdown observer.")
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
43 observerService = components.classes["@mozilla.org/observer-service;1"].getService(components.interfaces.nsIObserverService)
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
44 observerService.addObserver(ShutdownObserver(), "quit-application", False)
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
45
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
46 def newChannel(self, aURI):
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
47 ioService = components.classes["@mozilla.org/network/io-service;1"] \
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
48 .getService();
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
49
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
50 istream = components.classes["@mozilla.org/io/string-input-stream;1"] \
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
51 .createInstance()
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
52
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
53 about = getAbout()
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
54 istream.setData(about, len(about))
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
55
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
56 channel = components.classes["@mozilla.org/network/input-stream-channel;1"] \
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
57 .createInstance(components.interfaces.nsIInputStreamChannel)
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
58
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
59 channel.setURI(aURI)
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
60 #channel.contentType = "text/html"
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
61 channel.contentStream = istream
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
62 return channel
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
63
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
64 def getURIFlags(self, aURI):
b1c0ab5d5f14 Origination, originally taken from the about:python source code from pyxpcom.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
65 return 0;