annotate my-enso-commands.py @ 7:41bc59775872

wow, haven't committed changes in a long time.
author Atul Varma <varmaa@toolness.com>
date Sat, 27 Mar 2010 12:19:32 -0700
parents c41c4896c97e
children 4285e37bea69
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
1 # -*-Mode:python-*-
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
2
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
3 import os
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
4 import tempfile
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
5 import sys
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
6 import subprocess
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
7 import webbrowser
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
8 import urllib
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
9 import threading
1
3924ba5f3621 Added a bunch of commands, many of which are experimental. Some require PyXPCOM, meaning that Enso must be running atop Firefox or something similar.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
10 import logging
0
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
11 from StringIO import StringIO
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
12
3
9767abfe290b Added more service-oriented commands.
Atul Varma <varmaa@toolness.com>
parents: 2
diff changeset
13 def _do_service(ensoapi, serviceName):
1
3924ba5f3621 Added a bunch of commands, many of which are experimental. Some require PyXPCOM, meaning that Enso must be running atop Firefox or something similar.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
14 import AppKit
3924ba5f3621 Added a bunch of commands, many of which are experimental. Some require PyXPCOM, meaning that Enso must be running atop Firefox or something similar.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
15
2
c28ae8f664ba Removed a bunch of diagnostic or highly experimental commands. Also removed the PyXPCOM commands b/c I'm not running Enso on top of Firefox right now, but they're still stored in the repository for future use.
Atul Varma <varmaa@toolness.com>
parents: 1
diff changeset
16 text = ensoapi.get_selection().get("text", "").strip()
c28ae8f664ba Removed a bunch of diagnostic or highly experimental commands. Also removed the PyXPCOM commands b/c I'm not running Enso on top of Firefox right now, but they're still stored in the repository for future use.
Atul Varma <varmaa@toolness.com>
parents: 1
diff changeset
17
c28ae8f664ba Removed a bunch of diagnostic or highly experimental commands. Also removed the PyXPCOM commands b/c I'm not running Enso on top of Firefox right now, but they're still stored in the repository for future use.
Atul Varma <varmaa@toolness.com>
parents: 1
diff changeset
18 if not text:
c28ae8f664ba Removed a bunch of diagnostic or highly experimental commands. Also removed the PyXPCOM commands b/c I'm not running Enso on top of Firefox right now, but they're still stored in the repository for future use.
Atul Varma <varmaa@toolness.com>
parents: 1
diff changeset
19 ensoapi.display_message("No text selection!")
c28ae8f664ba Removed a bunch of diagnostic or highly experimental commands. Also removed the PyXPCOM commands b/c I'm not running Enso on top of Firefox right now, but they're still stored in the repository for future use.
Atul Varma <varmaa@toolness.com>
parents: 1
diff changeset
20 return
1
3924ba5f3621 Added a bunch of commands, many of which are experimental. Some require PyXPCOM, meaning that Enso must be running atop Firefox or something similar.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
21
3924ba5f3621 Added a bunch of commands, many of which are experimental. Some require PyXPCOM, meaning that Enso must be running atop Firefox or something similar.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
22 pb = AppKit.NSPasteboard.pasteboardWithName_("EnsoServiceContent")
3924ba5f3621 Added a bunch of commands, many of which are experimental. Some require PyXPCOM, meaning that Enso must be running atop Firefox or something similar.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
23
3924ba5f3621 Added a bunch of commands, many of which are experimental. Some require PyXPCOM, meaning that Enso must be running atop Firefox or something similar.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
24 pb.declareTypes_owner_( [AppKit.NSStringPboardType], None )
3924ba5f3621 Added a bunch of commands, many of which are experimental. Some require PyXPCOM, meaning that Enso must be running atop Firefox or something similar.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
25
3924ba5f3621 Added a bunch of commands, many of which are experimental. Some require PyXPCOM, meaning that Enso must be running atop Firefox or something similar.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
26 try:
3924ba5f3621 Added a bunch of commands, many of which are experimental. Some require PyXPCOM, meaning that Enso must be running atop Firefox or something similar.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
27 if not pb.setString_forType_( text, AppKit.NSStringPboardType ):
3924ba5f3621 Added a bunch of commands, many of which are experimental. Some require PyXPCOM, meaning that Enso must be running atop Firefox or something similar.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
28 raise Exception( "Failed to set pasteboard data." )
3924ba5f3621 Added a bunch of commands, many of which are experimental. Some require PyXPCOM, meaning that Enso must be running atop Firefox or something similar.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
29
3924ba5f3621 Added a bunch of commands, many of which are experimental. Some require PyXPCOM, meaning that Enso must be running atop Firefox or something similar.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
30 if not AppKit.NSPerformService( serviceName, pb ):
3924ba5f3621 Added a bunch of commands, many of which are experimental. Some require PyXPCOM, meaning that Enso must be running atop Firefox or something similar.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
31 raise Exception( "Failed to perform service." )
3924ba5f3621 Added a bunch of commands, many of which are experimental. Some require PyXPCOM, meaning that Enso must be running atop Firefox or something similar.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
32 finally:
3924ba5f3621 Added a bunch of commands, many of which are experimental. Some require PyXPCOM, meaning that Enso must be running atop Firefox or something similar.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
33 pass
3924ba5f3621 Added a bunch of commands, many of which are experimental. Some require PyXPCOM, meaning that Enso must be running atop Firefox or something similar.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
34
3
9767abfe290b Added more service-oriented commands.
Atul Varma <varmaa@toolness.com>
parents: 2
diff changeset
35 def cmd_define(ensoapi):
9767abfe290b Added more service-oriented commands.
Atul Varma <varmaa@toolness.com>
parents: 2
diff changeset
36 _do_service(ensoapi, "Look Up in Dictionary")
9767abfe290b Added more service-oriented commands.
Atul Varma <varmaa@toolness.com>
parents: 2
diff changeset
37
9767abfe290b Added more service-oriented commands.
Atul Varma <varmaa@toolness.com>
parents: 2
diff changeset
38 def cmd_speak(ensoapi):
9767abfe290b Added more service-oriented commands.
Atul Varma <varmaa@toolness.com>
parents: 2
diff changeset
39 _do_service(ensoapi, "Speech/Start Speaking Text")
9767abfe290b Added more service-oriented commands.
Atul Varma <varmaa@toolness.com>
parents: 2
diff changeset
40
9767abfe290b Added more service-oriented commands.
Atul Varma <varmaa@toolness.com>
parents: 2
diff changeset
41 def cmd_summarize(ensoapi):
9767abfe290b Added more service-oriented commands.
Atul Varma <varmaa@toolness.com>
parents: 2
diff changeset
42 _do_service(ensoapi, "Summarize")
9767abfe290b Added more service-oriented commands.
Atul Varma <varmaa@toolness.com>
parents: 2
diff changeset
43
9767abfe290b Added more service-oriented commands.
Atul Varma <varmaa@toolness.com>
parents: 2
diff changeset
44 def cmd_spotlight(ensoapi):
9767abfe290b Added more service-oriented commands.
Atul Varma <varmaa@toolness.com>
parents: 2
diff changeset
45 _do_service(ensoapi, "Spotlight")
9767abfe290b Added more service-oriented commands.
Atul Varma <varmaa@toolness.com>
parents: 2
diff changeset
46
0
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
47 def cmd_count_lines(ensoapi):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
48 seldict = ensoapi.get_selection()
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
49 ensoapi.display_message( "Selection is %s lines." %
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
50 len(seldict.get("text","").splitlines()) )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
51
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
52 def _get_filelike_timestamp():
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
53 import time
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
54
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
55 return time.strftime("%Y%m%d%H%M%S")
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
56
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
57 def _get_clipboard_img_datafile():
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
58 import AppKit
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
59
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
60 pb = AppKit.NSPasteboard.generalPasteboard()
7
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
61 typestr = pb.availableTypeFromArray_([AppKit.NSTIFFPboardType,
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
62 AppKit.NSPICTPboardType])
6
c41c4896c97e upload image cmd now accepts more image types in clipboard, changed cmd_monospace to use tt instead of pre.
Atul Varma <varmaa@toolness.com>
parents: 5
diff changeset
63 tiffbytes = None
7
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
64 if typestr == AppKit.NSTIFFPboardType:
6
c41c4896c97e upload image cmd now accepts more image types in clipboard, changed cmd_monospace to use tt instead of pre.
Atul Varma <varmaa@toolness.com>
parents: 5
diff changeset
65 tiffbytes = pb.dataForType_(AppKit.NSTIFFPboardType).bytes()
7
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
66 elif typestr == AppKit.NSPICTPboardType:
6
c41c4896c97e upload image cmd now accepts more image types in clipboard, changed cmd_monospace to use tt instead of pre.
Atul Varma <varmaa@toolness.com>
parents: 5
diff changeset
67 img = AppKit.NSImage.alloc().initWithPasteboard_(pb)
c41c4896c97e upload image cmd now accepts more image types in clipboard, changed cmd_monospace to use tt instead of pre.
Atul Varma <varmaa@toolness.com>
parents: 5
diff changeset
68 tiffbytes = img.TIFFRepresentation().bytes()
c41c4896c97e upload image cmd now accepts more image types in clipboard, changed cmd_monospace to use tt instead of pre.
Atul Varma <varmaa@toolness.com>
parents: 5
diff changeset
69
c41c4896c97e upload image cmd now accepts more image types in clipboard, changed cmd_monospace to use tt instead of pre.
Atul Varma <varmaa@toolness.com>
parents: 5
diff changeset
70 if tiffbytes:
c41c4896c97e upload image cmd now accepts more image types in clipboard, changed cmd_monospace to use tt instead of pre.
Atul Varma <varmaa@toolness.com>
parents: 5
diff changeset
71 return StringIO(str(tiffbytes))
c41c4896c97e upload image cmd now accepts more image types in clipboard, changed cmd_monospace to use tt instead of pre.
Atul Varma <varmaa@toolness.com>
parents: 5
diff changeset
72 return None
0
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
73
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
74 def image_command(func):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
75 def wrapper(ensoapi):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
76 import Image
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
77
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
78 datafile = _get_clipboard_img_datafile()
7
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
79
0
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
80 if datafile:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
81 img = Image.open(datafile)
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
82 return func(ensoapi, img)
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
83 else:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
84 files = ensoapi.get_selection().get("files", [])
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
85 if files:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
86 if len(files) == 1:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
87 filename = files[0]
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
88 img = None
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
89 try:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
90 img = Image.open(filename)
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
91 except IOError, e:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
92 ensoapi.display_message("An error occurred: %s." % e)
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
93 if img:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
94 return func(ensoapi, img)
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
95 else:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
96 ensoapi.display_message("More than one file selected.")
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
97 else:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
98 ensoapi.display_message("No image in clipboard, and no "
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
99 "file selected.")
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
100 return wrapper
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
101
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
102 @image_command
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
103 def cmd_get_image_size(ensoapi, img):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
104 outputfile = StringIO()
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
105 img.save(outputfile, "PNG")
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
106 png_size = outputfile.tell()
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
107 outputfile = StringIO()
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
108 img.save(outputfile, "JPEG", quality=90)
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
109 jpg_size = outputfile.tell()
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
110 ensoapi.display_message("png size: %d bytes. jpg-90 size: %d bytes." %
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
111 (png_size, jpg_size))
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
112
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
113 def cmd_unupload_image(ensoapi):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
114 url = ensoapi.get_selection().get("text", "")
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
115 if url:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
116 if url.startswith(REMOTE_UPLOAD_URL):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
117 filename = url[len(REMOTE_UPLOAD_URL):]
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
118 localfile = os.path.join(LOCAL_UPLOAD_DIR, filename)
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
119 # It's just easier to upload a truncated file than it is
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
120 # to remove the file remotely.
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
121 open(localfile, "w").close()
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
122 popen = subprocess.Popen(
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
123 ["scp",
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
124 localfile,
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
125 "%s%s" % (REMOTE_UPLOAD_DIR, filename)]
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
126 )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
127 while popen.poll() is None:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
128 yield
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
129 if popen.returncode == 0:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
130 os.remove(localfile)
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
131 ensoapi.display_message("Image removed.")
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
132 else:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
133 ensoapi.display_message("An error occurred.")
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
134 else:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
135 ensoapi.display_message("URL is not an upload URL.")
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
136 else:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
137 ensoapi.display_message("No selection!")
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
138
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
139 LOCAL_UPLOAD_DIR = "/Users/varmaa/Archive/toolness-images/"
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
140 REMOTE_UPLOAD_DIR = "toolness.com:/home/varmaa/toolness.com/images/"
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
141 REMOTE_UPLOAD_URL = "http://www.toolness.com/images/"
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
142
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
143 @image_command
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
144 def cmd_upload_image(ensoapi, img):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
145 filename = "%s.jpg" % _get_filelike_timestamp()
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
146 localfile = os.path.join(LOCAL_UPLOAD_DIR, filename)
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
147 img.save(localfile, quality=90)
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
148
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
149 ensoapi.display_message("Uploading image...")
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
150
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
151 popen = subprocess.Popen(
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
152 ["scp",
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
153 localfile,
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
154 "%s%s" % (REMOTE_UPLOAD_DIR, filename)]
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
155 )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
156 while popen.poll() is None:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
157 yield
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
158 if popen.returncode == 0:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
159 webbrowser.open("%s%s" % (REMOTE_UPLOAD_URL, filename))
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
160 else:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
161 ensoapi.display_message("An error occurred.")
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
162
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
163 class ThreadedFunc(threading.Thread):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
164 def __init__(self, target):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
165 self.__target = target
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
166 threading.Thread.__init__(self)
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
167 self.__success = False
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
168 self.__retval = None
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
169 self.start()
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
170
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
171 def run(self):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
172 self.__retval = self.__target()
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
173 self.__success = True
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
174
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
175 def wasSuccessful(self):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
176 if self.isAlive():
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
177 raise Exception( "Thread not finished" )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
178 return self.__success
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
179
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
180 def getRetval(self):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
181 if self.isAlive():
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
182 raise Exception( "Thread not finished" )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
183 return self.__retval
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
184
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
185 def htmlifier(func):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
186 def wrapper(ensoapi):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
187 seldict = ensoapi.get_selection()
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
188 text = seldict.get("text", "")
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
189 html = seldict.get("html", text)
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
190 if not text:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
191 ensoapi.display_message("No selection!")
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
192 else:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
193 result = func(ensoapi, html)
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
194 ensoapi.set_selection(
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
195 {"html":result,
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
196 "text":result}
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
197 )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
198
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
199 return wrapper
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
200
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
201 @htmlifier
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
202 def cmd_bold(ensoapi, text):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
203 return "<b>%s</b>" % text
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
204
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
205 @htmlifier
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
206 def cmd_italics(ensoapi, text):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
207 return "<i>%s</i>" % text
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
208
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
209 @htmlifier
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
210 def cmd_monospace(ensoapi, text):
6
c41c4896c97e upload image cmd now accepts more image types in clipboard, changed cmd_monospace to use tt instead of pre.
Atul Varma <varmaa@toolness.com>
parents: 5
diff changeset
211 return "<tt>%s</tt>" % text
0
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
212
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
213 def cmd_normalize(ensoapi):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
214 normal_template = "<span style=\"font-weight: normal;\">%s</span>"
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
215 seldict = ensoapi.get_selection()
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
216 text = seldict.get("text", "")
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
217 if not text:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
218 ensoapi.display_message("No selection!")
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
219 else:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
220 ensoapi.set_selection(
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
221 {"html":normal_template % text,
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
222 "text":text} )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
223
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
224 def make_get_url_func(url):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
225 def get_url():
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
226 import urllib2
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
227
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
228 f = urllib2.urlopen(url)
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
229 return f.read()
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
230 return get_url
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
231
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
232 def get_weather(xml_data):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
233 """
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
234 Shows the weather for the given place.
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
235 """
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
236
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
237 import elementtree.ElementTree as ET
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
238
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
239 page = ET.fromstring(xml_data)
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
240
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
241 weather = page.find( "weather/current_conditions" )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
242
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
243 return {
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
244 'f' : weather.find( "temp_f" ).get( "data" ),
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
245 'c' : weather.find( "temp_c" ).get( "data" ),
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
246 'humidity' : weather.find( "humidity" ).get( "data" ),
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
247 'wind' : weather.find( "wind_condition" ).get( "data" )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
248 }
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
249
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
250 def test_get_weather():
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
251 xml_data = """<?xml version="1.0"?><xml_api_reply version="1"><weather module_id="0" tab_id="0"><forecast_information><city data="Chicago, IL"/><postal_code data="60657"/><latitude_e6 data=""/><longitude_e6 data=""/><forecast_date data="2008-04-07"/><current_date_time data="2008-04-07 06:38:00 +0000"/><unit_system data="US"/></forecast_information><current_conditions><condition data="Cloudy"/><temp_f data="57"/><temp_c data="14"/><humidity data="Humidity: 47%"/><icon data="/images/weather/cloudy.gif"/><wind_condition data="Wind: N at 0 mph"/></current_conditions><forecast_conditions><day_of_week data="Today"/><low data="40"/><high data="56"/><icon data="/images/weather/cloudy.gif"/><condition data="Cloudy"/></forecast_conditions><forecast_conditions><day_of_week data="Tue"/><low data="45"/><high data="54"/><icon data="/images/weather/thunderstorm.gif"/><condition data="Thunderstorm"/></forecast_conditions><forecast_conditions><day_of_week data="Wed"/><low data="40"/><high data="54"/><icon data="/images/weather/mostly_sunny.gif"/><condition data="Partly Sunny"/></forecast_conditions><forecast_conditions><day_of_week data="Thu"/><low data="38"/><high data="49"/><icon data="/images/weather/chance_of_rain.gif"/><condition data="Chance of Showers"/></forecast_conditions></weather></xml_api_reply>"""
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
252
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
253 assert get_weather(xml_data) == {'c': '14', 'humidity': 'Humidity: 47%', 'wind': 'Wind: N at 0 mph', 'f': '57'}
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
254
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
255 def cmd_weather(ensoapi, place="san francisco"):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
256 zipcode = cmd_weather.places[place]
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
257 url = "http://www.google.com/ig/api?weather=%s" % zipcode
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
258 thread = ThreadedFunc(make_get_url_func(url))
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
259 while thread.isAlive():
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
260 yield
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
261 weather_xml = thread.getRetval()
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
262 if not weather_xml:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
263 ensoapi.display_message("An error occurred when getting the weather.")
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
264 else:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
265 wdict = get_weather(weather_xml)
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
266 wdict["place"] = place
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
267 ensoapi.display_message(u"In %(place)s it is "
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
268 u"%(f)s\u00b0F/%(c)s\u00b0C, "
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
269 u"%(humidity)s, %(wind)s." % wdict)
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
270
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
271 cmd_weather.places = { "san francisco" : "94115",
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
272 "chicago" : "60640",
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
273 "mountain view" : "94043" }
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
274
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
275 cmd_weather.valid_args = cmd_weather.places.keys()
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
276
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
277 def cmd_what_is_my_ip(ensoapi):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
278 thread = ThreadedFunc(make_get_url_func("http://www.toolness.com/ip/"))
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
279 while thread.isAlive():
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
280 yield
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
281 ensoapi.display_message("%s." % thread.getRetval())
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
282
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
283 def cmd_character_count(ensoapi):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
284 text = ensoapi.get_selection().get("text", "").strip()
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
285 if not text:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
286 ensoapi.display_message( "No selection." )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
287 ensoapi.display_message( "%d characters." % len(text) )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
288
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
289 def cmd_email_to_me(ensoapi):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
290 text = ensoapi.get_selection().get("text", "").strip()
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
291 if not text:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
292 ensoapi.display_message( "No selection." )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
293 else:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
294 server = "mail.toolness.com"
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
295 port = 587
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
296 username = "no-reply@toolness.com"
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
297 password = "4p5o3j45ot%$"
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
298
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
299 mailfrom = "varmaa@gmail.com"
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
300 rcpttos = ["varmaa@gmail.com"]
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
301
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
302 text = text.encode("ascii", "xmlcharrefreplace")
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
303 subject = text.splitlines()[0]
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
304 text = ("This message was sent by Enso's "
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
305 "'email to' command.\n\n" + text)
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
306 data = "From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n%s" % \
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
307 (mailfrom, ", ".join(rcpttos), subject, text)
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
308
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
309 def sendmail():
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
310 import smtplib
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
311
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
312 try:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
313 svr = smtplib.SMTP( server, port )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
314 svr.login( username, password )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
315 svr.sendmail( mailfrom, rcpttos, data )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
316 svr.quit()
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
317 except:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
318 success[0] = False
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
319 raise
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
320
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
321 thread = ThreadedFunc(sendmail)
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
322 ensoapi.display_message( "Sending message..." )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
323 while thread.isAlive():
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
324 yield
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
325 if thread.wasSuccessful():
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
326 ensoapi.display_message( "Message sent." )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
327 else:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
328 ensoapi.display_message(
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
329 "An error occurred when sending the message."
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
330 )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
331
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
332 def cmd_date(ensoapi):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
333 import time
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
334
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
335 ensoapi.display_message( "%s" % time.asctime() )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
336
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
337 def cmd_insert_date(ensoapi):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
338 import time
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
339
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
340 ensoapi.set_selection( time.asctime() )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
341
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
342 class WebSearchCmd(object):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
343 def __init__(self, url_template):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
344 self._url_template = url_template
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
345
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
346 def __call__(self, ensoapi, query=None):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
347 if not query:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
348 query = ensoapi.get_selection().get("text", u"")
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
349 query = query.strip()
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
350
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
351 if not query:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
352 ensoapi.display_message( "No query." )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
353 return
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
354
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
355 query = urllib.quote( query.encode("utf-8") )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
356
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
357 webbrowser.open( self._url_template % {"query" : query} )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
358
7
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
359 cmd_wiki = WebSearchCmd("http://en.wikipedia.org/wiki/Special:Search?search=%(query)s")
0
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
360 cmd_wowhead = WebSearchCmd("http://www.wowhead.com/?search=%(query)s")
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
361 cmd_amaz = WebSearchCmd("http://www.amazon.com/exec/obidos/search-handle-url/index%%3Dblended%%26field-keywords%%3D%(query)s%%26store-name%%3Dall-product-search")
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
362 cmd_yp = WebSearchCmd("http://local.google.com/local?sc=1&q=%(query)s&near=2418+washington+94115&btnG=Google+Search")
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
363 cmd_imdb = WebSearchCmd("http://www.imdb.com/find?s=all&q=%(query)s&x=0&y=0")
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
364 cmd_mdc = WebSearchCmd("http://www.google.com/search?hl=en&q=%(query)s+site%%3Adeveloper.mozilla.org&btnG=Google+Search")
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
365 cmd_mxr = WebSearchCmd("http://mxr.mozilla.org/mozilla/search?string=%(query)s")
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
366 cmd_phonebook = WebSearchCmd("https://ldap.mozilla.org/phonebook/search.php?search=%(query)s")
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
367
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
368 # For help on this one see http://www.squarefree.com/bugzilla/quicksearch-help.html
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
369 cmd_bugzilla = WebSearchCmd("https://bugzilla.mozilla.org/buglist.cgi?quicksearch=%(query)s")
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
370
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
371 def cmd_farewell(ensoapi):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
372 import AppKit
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
373
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
374 app = AppKit.NSApplication.sharedApplication()
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
375 app.terminate_(None)
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
376
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
377 class Launcher(object):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
378 def __init__(self):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
379 import Foundation
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
380 import AppKit
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
381
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
382 self._targets = {}
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
383
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
384 query = Foundation.NSMetadataQuery.alloc().init()
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
385 queryString = ( "((kMDItemKind == \"Application\") "
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
386 " and (kMDItemSupportFileType != \"MDSystemFile\"))" )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
387 queryString += " or (kMDItemKind == \"Mac OS X Preference Pane\")"
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
388 predicate = Foundation.NSPredicate.predicateWithFormat_(
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
389 queryString
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
390 )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
391 query.setPredicate_( predicate )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
392 if query.startQuery() != True:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
393 raise Exception( "startQuery() failed." )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
394 self._query = query
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
395 self._workspace = AppKit.NSWorkspace.sharedWorkspace()
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
396 self._targets = {}
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
397
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
398 def get_namespace(self):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
399 return self._targets.keys()
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
400
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
401 def get_target(self, name):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
402 return self._targets[name]
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
403
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
404 def update(self):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
405 query = self._query
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
406
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
407 while query.isGathering():
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
408 yield
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
409
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
410 # TODO: Modify this so we just get notified whenever the query
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
411 # results change instead of constantly "polling" every time
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
412 # the quasimode starts.
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
413
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
414 resultList = []
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
415 targets = {}
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
416
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
417 query.disableUpdates()
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
418 numresults = query.resultCount()
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
419
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
420 BATCH_SIZE = 10
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
421
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
422 for i in range( numresults ):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
423 result = query.resultAtIndex_( i )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
424 fsname = result.valueForAttribute_("kMDItemFSName")
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
425 name = result.valueForAttribute_("kMDItemDisplayName")
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
426 kind = result.valueForAttribute_("kMDItemKind")
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
427 if name:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
428 name = name.lower()
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
429 itempath = result.valueForAttribute_("kMDItemPath")
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
430 if kind == "Mac OS X Preference Pane":
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
431 name += " preferences"
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
432 target = ShellOpenLaunchableTarget(itempath)
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
433 else:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
434 target = AppLaunchableTarget(self._workspace, itempath)
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
435 resultList.append(name)
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
436 targets[name] = target
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
437 if i / BATCH_SIZE == i / float(BATCH_SIZE):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
438 yield
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
439 #print "total results: %s" % numresults
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
440 query.enableUpdates()
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
441 targets["computer"] = ShellOpenLaunchableTarget("/")
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
442 self._targets = targets
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
443
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
444 class AppLaunchableTarget(object):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
445 def __init__(self, workspace, path):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
446 self._workspace = workspace
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
447 self._path = path
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
448
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
449 def launch(self, with_files=None):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
450 if with_files:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
451 for filename in with_files:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
452 self._workspace.openFile_withApplication_(
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
453 filename,
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
454 self._path
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
455 )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
456 else:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
457 self._workspace.launchApplication_( self._path )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
458
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
459 def can_launch_with(self):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
460 return True
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
461
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
462 class ShellOpenLaunchableTarget(object):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
463 def __init__(self, path):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
464 self._path = path
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
465
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
466 def launch(self):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
467 subprocess.Popen( ["open", self._path] )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
468
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
469 def can_launch_with(self):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
470 return False
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
471
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
472 class OpenCommand(object):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
473 """
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
474 Opens an application, folder, or URL.
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
475 """
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
476
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
477 def __init__(self, launcher):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
478 self.launcher = launcher
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
479 self._isFetchingArgs = False
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
480
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
481 def on_quasimode_start(self):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
482 if self._isFetchingArgs:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
483 return
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
484
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
485 self._isFetchingArgs = True
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
486
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
487 for _ in self.launcher.update():
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
488 yield
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
489
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
490 self.valid_args = self.launcher.get_namespace()
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
491
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
492 self._isFetchingArgs = False
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
493
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
494 valid_args = []
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
495
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
496 def __call__(self, ensoapi, target=None):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
497 if not target:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
498 seldict = ensoapi.get_selection()
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
499 if seldict.get("files"):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
500 for file in seldict["files"]:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
501 subprocess.Popen( ["open", file] )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
502 elif seldict.get("text"):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
503 filename = seldict["text"].strip()
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
504 if os.path.isabs(filename):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
505 subprocess.Popen( ["open", filename] )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
506 else:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
507 webbrowser.open(filename)
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
508 else:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
509 self.launcher.get_target(target).launch()
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
510
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
511 class OpenWithCommand(object):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
512 """
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
513 Opens the selected file(s) with a particular application.
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
514 """
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
515
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
516 def __init__(self, launcher):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
517 self.launcher = launcher
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
518
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
519 def _get_valid_args(self):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
520 return self.launcher.get_namespace()
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
521
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
522 valid_args = property(_get_valid_args)
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
523
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
524 def __call__(self, ensoapi, target):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
525 files = ensoapi.get_selection().get("files", [])
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
526 targ = self.launcher.get_target(target)
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
527 if not files:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
528 ensoapi.display_message("No files selected!")
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
529 elif not targ.can_launch_with():
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
530 ensoapi.display_message("Can't open files with %s." % target)
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
531 else:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
532 targ.launch(files)
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
533
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
534 cmd_go = OpenCommand(Launcher())
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
535 cmd_open = cmd_go
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
536 cmd_bust_with = OpenWithCommand(cmd_open.launcher)
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
537
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
538 def cmd_run_python(ensoapi):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
539 """
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
540 runs the selected text as python code.
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
541 """
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
542
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
543 text = ensoapi.get_selection().get("text","")
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
544
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
545 if not text:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
546 ensoapi.display_message("No text selection!")
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
547 return
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
548
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
549 output_fd, output_name = tempfile.mkstemp()
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
550
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
551 # TODO: This is for OSX only; will have to figure out what to do
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
552 # for other platforms.
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
553 cmd = text.replace( "\r", "\n" )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
554
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
555 try:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
556 compile( cmd, "<selected text>", "eval" )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
557 is_eval = True
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
558 except:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
559 is_eval = False
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
560
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
561 if is_eval:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
562 cmd = "print %s," % cmd
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
563
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
564 cmd = ("try:\n"
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
565 " from autoimp import *\n"
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
566 "except ImportError:\n"
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
567 " pass\n\n" + cmd )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
568
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
569 popen = subprocess.Popen(
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
570 [ sys.executable,
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
571 "-c", cmd ],
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
572 stdout = output_fd,
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
573 stderr = subprocess.STDOUT,
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
574 )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
575
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
576 while popen.poll() is None:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
577 yield
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
578
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
579 os.close(output_fd)
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
580
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
581 output_text = open(output_name, "r").read().strip()
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
582 if output_text:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
583 seldict = {"text" : "\n".join([text, output_text])}
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
584 ensoapi.set_selection(seldict)
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
585 else:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
586 if popen.returncode == 0:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
587 ensoapi.display_message("Code run successfully.")
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
588 else:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
589 ensoapi.display_message("An error occurred.")
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
590
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
591 os.remove(output_name)
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
592
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
593 def cmd_doctest(ensoapi):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
594 """
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
595 python doctests the selected section of plain text.
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
596 """
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
597
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
598 text = ensoapi.get_selection().get("text","")
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
599
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
600 if not text:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
601 ensoapi.display_message("No text selection!")
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
602 return
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
603
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
604 # TODO: This is for OSX only; will have to figure out what to do
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
605 # for other platforms.
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
606 new_text = text.replace( "\r", "\n" )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
607
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
608 fd, source_name = tempfile.mkstemp()
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
609 os.close(fd)
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
610 open(source_name, "wb").write(new_text)
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
611
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
612 output_fd, output_name = tempfile.mkstemp()
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
613
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
614 cmd = ("import doctest; doctest.testfile(%s, "
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
615 "module_relative=False)" % repr(source_name))
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
616
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
617 popen = subprocess.Popen(
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
618 [ sys.executable,
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
619 "-c", cmd ],
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
620 stdout = output_fd,
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
621 stderr = subprocess.STDOUT,
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
622 )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
623
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
624 while popen.poll() is None:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
625 yield
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
626
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
627 os.close(output_fd)
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
628
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
629 if popen.returncode == 0:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
630 output_text = open(output_name, "r").read()
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
631 if output_text:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
632 seldict = {"text":text + output_text}
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
633 ensoapi.set_selection(seldict)
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
634 else:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
635 ensoapi.display_message("All doctests successful!")
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
636 else:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
637 ensoapi.display_message("An error occurred.")
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
638
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
639 os.remove(source_name)
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
640 os.remove(output_name)
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
641
7
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
642 def cmd_wow_firefox(ensoapi):
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
643 popen = subprocess.Popen(["/Users/varmaa/bin/wow-firefox"])
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
644
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
645 def cmd_work_firefox(ensoapi):
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
646 popen = subprocess.Popen(["/Users/varmaa/bin/work-firefox"])
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
647
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
648 def cmd_mozpics_firefox(ensoapi):
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
649 popen = subprocess.Popen(["/Users/varmaa/bin/mozpics-firefox"])
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
650
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
651 def cmd_firefox(ensoapi):
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
652 popen = subprocess.Popen(["/Users/varmaa/bin/personal-firefox"])
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
653
0
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
654 def cmd_nosetest(ensoapi):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
655 """
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
656 runs nosetests on the selected region of python code.
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
657 """
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
658
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
659 text = ensoapi.get_selection().get("text","")
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
660
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
661 if not text:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
662 ensoapi.display_message("No text selection!")
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
663 return
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
664
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
665 # TODO: This is for OSX only; will have to figure out what to do
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
666 # for other platforms.
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
667 new_text = text.replace( "\r", "\n" )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
668
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
669 fd, source_name = tempfile.mkstemp(suffix=".py")
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
670 os.close(fd)
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
671 open(source_name, "wb").write(new_text)
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
672
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
673 output_fd, output_name = tempfile.mkstemp()
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
674
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
675 popen = subprocess.Popen(
5
56d44190362e Had to provide an absolute path to nosetests.
Atul Varma <varmaa@toolness.com>
parents: 3
diff changeset
676 [ "/usr/local/bin/nosetests",
0
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
677 source_name,
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
678 "--with-doctest" ],
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
679 stdout = output_fd,
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
680 stderr = subprocess.STDOUT,
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
681 )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
682
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
683 while popen.poll() is None:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
684 yield
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
685
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
686 os.close(output_fd)
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
687
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
688 output_text = open(output_name, "r").read()
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
689 if output_text:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
690 if popen.returncode == 0:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
691 lines = output_text.splitlines()
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
692 ensoapi.display_message(lines[2])
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
693 else:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
694 seldict = {"text":text + output_text}
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
695 ensoapi.set_selection(seldict)
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
696 else:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
697 raise AssertionError( "nosetests didn't return anything!" )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
698
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
699 os.remove(source_name)
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
700 os.remove(output_name)
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
701
7
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
702 def cmd_markdown_to_html(ensoapi):
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
703 """
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
704 Converts the plaintext markdown selection to plaintext
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
705 HTML source.
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
706 """
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
707
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
708 import markdown2
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
709 text = ensoapi.get_selection().get("text", "")
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
710 html = markdown2.markdown(text)
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
711 ensoapi.set_selection({"text": html})
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
712
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
713 def cmd_unquote(ensoapi):
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
714 """
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
715 Removes a '<' at the beginning of every line.
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
716 """
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
717
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
718 text = ensoapi.get_selection().get("text", "")
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
719 lines = ["%s\n" % line[2:]
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
720 for line in text.splitlines()
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
721 if line.startswith("> ")]
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
722 ensoapi.set_selection({"text": ''.join(lines)})
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
723
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
724 def cmd_quote(ensoapi):
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
725 """
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
726 Puts a '>' at the beginning of every line.
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
727 """
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
728
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
729 text = ensoapi.get_selection().get("text", "")
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
730 lines = ["> %s\n" % line
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
731 for line in text.splitlines()]
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
732 ensoapi.set_selection({"text": ''.join(lines)})
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
733
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
734 def cmd_markdown(ensoapi):
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
735 """
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
736 Converts the plaintext markdown selection to rich text.
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
737 """
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
738
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
739 import markdown2
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
740 text = ensoapi.get_selection().get("text", "")
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
741 html = markdown2.markdown(text)
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
742 ensoapi.set_selection({"html": html,
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
743 "text": text})
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
744
0
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
745 def cmd_insert_html(ensoapi):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
746 ensoapi.set_selection( {"html":"<b>hi</b> <p>there</p>"} )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
747
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
748 def _runAppleScript( script ):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
749 params = [ "osascript", "-e", script ]
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
750 popen = subprocess.Popen( params )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
751
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
752 def cmd_screen_saver(ensoapi):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
753 """
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
754 Starts your screen saver.
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
755 """
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
756
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
757 _runAppleScript(
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
758 "tell application id \"com.apple.ScreenSaver.Engine\" "
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
759 "to launch"
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
760 )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
761
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
762 def cmd_sleep(ensoapi):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
763 """
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
764 Puts your computer to sleep.
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
765 """
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
766
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
767 _runAppleScript(
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
768 "tell application \"Finder\" to sleep"
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
769 )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
770
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
771 def cmd_play(ensoapi):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
772 """
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
773 Plays the current iTunes song.
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
774 """
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
775
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
776 _runAppleScript(
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
777 "tell application \"iTunes\" to play"
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
778 )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
779
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
780 def cmd_pause(ensoapi):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
781 """
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
782 Pauses the current iTunes song.
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
783 """
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
784
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
785 _runAppleScript(
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
786 "tell application \"iTunes\" to pause"
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
787 )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
788
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
789
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
790 def cmd_next_track(ensoapi):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
791 """
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
792 Goes to the next track on iTunes.
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
793 """
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
794
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
795 _runAppleScript(
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
796 "tell application \"iTunes\" to next track"
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
797 )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
798
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
799 def cmd_previous_track(ensoapi):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
800 """
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
801 Goes to the previous track on iTunes.
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
802 """
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
803
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
804 _runAppleScript(
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
805 "tell application \"iTunes\" to back track"
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
806 )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
807
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
808 KIRITSU_DIR = "/Users/varmaa/Documents/kiritsu"
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
809 KIRITSU_MAKE_SCRIPT = "%s/MakeEverything.py" % KIRITSU_DIR
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
810 KIRITSU_VIEW_TEMPLATE = "file://%s/%s.html"
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
811 KIRITSU_VIEWS = ["work", "play", "chores"]
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
812
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
813 def cmd_refresh_kiritsu(ensoapi):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
814 """
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
815 Refreshes all kiritsu feeds.
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
816 """
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
817
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
818 popen = subprocess.Popen(
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
819 [sys.executable,
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
820 KIRITSU_MAKE_SCRIPT],
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
821 cwd = KIRITSU_DIR
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
822 )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
823
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
824 ensoapi.display_message( "Please wait while kiritsu retrieves "
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
825 "new feeds." )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
826
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
827 while popen.poll() is None:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
828 yield
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
829
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
830 if popen.returncode != 0:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
831 ensoapi.display_message( "An error occurred in Kiritsu." )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
832 else:
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
833 ensoapi.display_message( "Kiritsu is done." )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
834
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
835 def cmd_view( ensoapi, viewname ):
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
836 """
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
837 Opens the given kiritsu view.
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
838 """
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
839
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
840 webbrowser.open( KIRITSU_VIEW_TEMPLATE % (KIRITSU_DIR, viewname) )
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
841
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
842 cmd_view.valid_args = KIRITSU_VIEWS
429e04abae50 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
843
1
3924ba5f3621 Added a bunch of commands, many of which are experimental. Some require PyXPCOM, meaning that Enso must be running atop Firefox or something similar.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
844 def cmd_html_template(ensoapi):
3924ba5f3621 Added a bunch of commands, many of which are experimental. Some require PyXPCOM, meaning that Enso must be running atop Firefox or something similar.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
845 ensoapi.set_selection({"text" : HTML_TEMPLATE})
3924ba5f3621 Added a bunch of commands, many of which are experimental. Some require PyXPCOM, meaning that Enso must be running atop Firefox or something similar.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
846
3924ba5f3621 Added a bunch of commands, many of which are experimental. Some require PyXPCOM, meaning that Enso must be running atop Firefox or something similar.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
847 HTML_TEMPLATE = """\
7
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
848 <html>
1
3924ba5f3621 Added a bunch of commands, many of which are experimental. Some require PyXPCOM, meaning that Enso must be running atop Firefox or something similar.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
849 <head>
3924ba5f3621 Added a bunch of commands, many of which are experimental. Some require PyXPCOM, meaning that Enso must be running atop Firefox or something similar.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
850 <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
3924ba5f3621 Added a bunch of commands, many of which are experimental. Some require PyXPCOM, meaning that Enso must be running atop Firefox or something similar.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
851 <link rel="stylesheet" type="text/css" media="all"
3924ba5f3621 Added a bunch of commands, many of which are experimental. Some require PyXPCOM, meaning that Enso must be running atop Firefox or something similar.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
852 href="" />
3924ba5f3621 Added a bunch of commands, many of which are experimental. Some require PyXPCOM, meaning that Enso must be running atop Firefox or something similar.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
853 <title></title>
3924ba5f3621 Added a bunch of commands, many of which are experimental. Some require PyXPCOM, meaning that Enso must be running atop Firefox or something similar.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
854 </head>
3924ba5f3621 Added a bunch of commands, many of which are experimental. Some require PyXPCOM, meaning that Enso must be running atop Firefox or something similar.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
855 <body>
3924ba5f3621 Added a bunch of commands, many of which are experimental. Some require PyXPCOM, meaning that Enso must be running atop Firefox or something similar.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
856
3924ba5f3621 Added a bunch of commands, many of which are experimental. Some require PyXPCOM, meaning that Enso must be running atop Firefox or something similar.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
857 </body>
7
41bc59775872 wow, haven't committed changes in a long time.
Atul Varma <varmaa@toolness.com>
parents: 6
diff changeset
858 <script src=""></script>
1
3924ba5f3621 Added a bunch of commands, many of which are experimental. Some require PyXPCOM, meaning that Enso must be running atop Firefox or something similar.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
859 </html>
3924ba5f3621 Added a bunch of commands, many of which are experimental. Some require PyXPCOM, meaning that Enso must be running atop Firefox or something similar.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
860 """