|
import sys,os |
|
# if you place objc_hacks in site packages, this line is not needed |
|
sys.path.append(os.path.expanduser('~/Documents')) |
|
|
|
from objc_hacks import apphack |
|
#alternatively, just place apphack.py in site_packages, and import apphack |
|
|
|
#little workaround to persistent button locations. needs fixing in apphack |
|
if hasattr(apphack,'__persistent_views'): |
|
__builtins__.__persistent_views=apphack.__persistent_views |
|
elif not hasattr(__builtins__,'__persistent_views'): |
|
__builtins__.__persistent_views={} |
|
|
|
|
|
def example(sender): |
|
'''Functions must be of form that take single, sender argument, which is the ui.Button |
|
Also note that the function gets stored so it survives |
|
global clears, but the globals() still is cleared. meaning |
|
the function must be completely standalone. all imports |
|
needed by the function must happen within the function, not |
|
outside |
|
''' |
|
import editor,console |
|
|
|
console.hud_alert(editor.get_path()) |
|
#for kicks, toggle tint |
|
sender.tint_color=tuple(1-x for x in sender.tint_color[0:3]) |
|
|
|
|
|
def search_apple(sender): |
|
import editor,webbrowser, urllib3.request |
|
_sel=editor.get_selection() |
|
_txt=editor.get_text()[_sel[0]:_sel[1]] |
|
webbrowser.open('https://google.com/search?{}'.format(urllib3.request.urlencode({'q':'reference '+_txt,'as_sitesearch':'developer.apple.com','btnI':'I'}))) |
|
|
|
def comment(sender): |
|
"""" comment out selected lines""" |
|
import editor |
|
import re |
|
COMMENT='#' |
|
i=editor.get_line_selection() |
|
t=editor.get_text() |
|
# replace every occurance of newline with ewline plus COMMENT, except last newline |
|
editor.replace_text(i[0],i[1]-1,COMMENT+re.sub(r'\n',r'\n'+COMMENT,t[i[0]:i[1]-1])) |
|
|
|
editor.set_selection(i[0],i[1]-len(t)+len(editor.get_text())) |
|
|
|
def uncomment(sender): |
|
"""" uncomment selected lines""" |
|
import editor |
|
import re |
|
COMMENT='#' |
|
i=editor.get_line_selection() |
|
t=editor.get_text() |
|
# replace every occurance of newline # with newline, except last newline |
|
if all( [x.startswith('#') for x in t[i[0]:i[1]-1].split(r'\n')]): |
|
editor.replace_text(i[0],i[1]-1,re.sub(r'^'+COMMENT,r'',t[i[0]:i[1]-1],flags=re.MULTILINE)) |
|
|
|
editor.set_selection(i[0],i[1]-len(t)+len(editor.get_text())) |
|
|
|
|
|
# now... create buttons |
|
apphack.create_toolbar_button(example,'iow:information_circled_32',0) |
|
apphack.create_toolbar_button(search_apple,'iob:social_apple_outline_32',1) |
|
apphack.create_toolbar_button(comment,'iow:code_working_32',2) |
|
apphack.create_toolbar_button(uncomment,'iow:ios7_more_32',3) |
|
|
|
|