Machacks: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
→Open Vplot files with Double Click: syntaxhighlight |
||
(One intermediate revision by one other user not shown) | |||
Line 3: | Line 3: | ||
== Open Vplot files with Double Click == | == Open Vplot files with Double Click == | ||
This actually requires an application. MacOS cannot use shell scripts as applications, and the application also needs to be able to parse arguments (needed for the double click funcionality - the instigating file becomes the first argument). The below steps will turn a simple python script into an Application. First, install [http://pythonhosted.org/py2app/ py2ap] and then follow the below | This actually requires an application. MacOS cannot use shell scripts as applications, and the application also needs to be able to parse arguments (needed for the double click funcionality - the instigating file becomes the first argument). The below steps will turn a simple python script into an Application. First, install [http://pythonhosted.org/py2app/ py2ap] and then follow the below instructions (based on a website of [https://moosystems.com/double-click-on-files-in-finder-to-open-them-in-your-python-and-tk-application/ MooSystems]). | ||
# Use the following python file (named ClickPen.py): | # Use the following python file (named ClickPen.py). Adapt the sfpen path as needed, or use an environmental variable: | ||
<syntaxhighlight lang="python"> | |||
#!/usr/bin/env python | |||
# -*- coding: utf-8 -*- | |||
"""This piece of code shows how to accept 'Open Document' Apple Events in | |||
your Python / Tk application.""" | |||
import os | |||
import sys | |||
import commands | |||
import logging | |||
import logging.handlers | |||
# configure logging | |||
home_dir = os.path.expanduser('~') | |||
log_file = os.path.join(home_dir, | |||
"Library/Logs/CliclPen.log") | |||
log = logging.getLogger("main") | |||
log.setLevel(logging.DEBUG) | |||
handler = logging.handlers.RotatingFileHandler(log_file, | |||
maxBytes=30000000, | |||
backupCount=10) | |||
handler.setLevel(logging.DEBUG) | |||
fmt = logging.Formatter('%(asctime)s - %(message)s') | |||
handler.setFormatter(fmt) | |||
log.addHandler(handler) | |||
# callback which gets invoked when files or folders are sent to our app: | |||
def doOpenFile(*args): | |||
for f in args: | |||
if os.path.isfile(f): | |||
command = '/opt/RSF/bin/sfpen %s'%(f) | |||
commands.getoutput(command) | |||
else: | |||
log.info("'%s' is not compatible." % f) | |||
# when the app starts up, check for command-line arguments: | |||
for f in sys.argv[1:]: | |||
doOpenFile(f) | |||
</syntaxhighlight> | |||
# Use the following setup file (named setup.py): | # Use the following setup file (named setup.py): | ||
<syntaxhighlight lang="python"> | |||
""" | |||
This is a setup.py script generated by py2applet | |||
Usage: | |||
python setup.py py2app | |||
""" | |||
from setuptools import setup | |||
APP = ['ClickPen.py'] | |||
DATA_FILES = [] | |||
OPTIONS = {'argv_emulation': True, | |||
'plist': { | |||
'CFBundleDocumentTypes': [{ | |||
'CFBundleTypeName': "File suffix of my app's documents", | |||
'CFBundleTypeRole': "Editor", | |||
'LSHandlerRank': "Owner", | |||
'LSItemContentTypes': ["ClickPen"], | |||
}], | |||
'UTExportedTypeDeclarations': [{ | |||
'UTTypeConformsTo': ["public.data"], | |||
'UTTypeIdentifier': "ClickPen", | |||
'UTTypeDescription': "File suffix of my app's documents", | |||
'UTTypeTagSpecification': {'public.filename-extension': ".vpl"} | |||
}], | |||
'CFBundleIdentifier': "ClickPen", | |||
'CFBundleName': "ClickPen" | |||
} | |||
} | |||
setup( | |||
app=APP, | |||
data_files=DATA_FILES, | |||
options={'py2app': OPTIONS}, | |||
setup_requires=['py2app'], | |||
) | |||
</syntaxhighlight> | |||
# Run the following command: | # Run the following command: | ||
<pre> | |||
python setup.py py2app | python setup.py py2app | ||
</pre> | |||
# Now in the dist folder you should find a ClickPen.app program. | # Now in the dist folder you should find a ClickPen.app program. Use it wisely. |
Latest revision as of 22:44, 3 April 2015
On this page you can find a few hacks for MacOS users.
Open Vplot files with Double Click[edit]
This actually requires an application. MacOS cannot use shell scripts as applications, and the application also needs to be able to parse arguments (needed for the double click funcionality - the instigating file becomes the first argument). The below steps will turn a simple python script into an Application. First, install py2ap and then follow the below instructions (based on a website of MooSystems).
- Use the following python file (named ClickPen.py). Adapt the sfpen path as needed, or use an environmental variable:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""This piece of code shows how to accept 'Open Document' Apple Events in
your Python / Tk application."""
import os
import sys
import commands
import logging
import logging.handlers
# configure logging
home_dir = os.path.expanduser('~')
log_file = os.path.join(home_dir,
"Library/Logs/CliclPen.log")
log = logging.getLogger("main")
log.setLevel(logging.DEBUG)
handler = logging.handlers.RotatingFileHandler(log_file,
maxBytes=30000000,
backupCount=10)
handler.setLevel(logging.DEBUG)
fmt = logging.Formatter('%(asctime)s - %(message)s')
handler.setFormatter(fmt)
log.addHandler(handler)
# callback which gets invoked when files or folders are sent to our app:
def doOpenFile(*args):
for f in args:
if os.path.isfile(f):
command = '/opt/RSF/bin/sfpen %s'%(f)
commands.getoutput(command)
else:
log.info("'%s' is not compatible." % f)
# when the app starts up, check for command-line arguments:
for f in sys.argv[1:]:
doOpenFile(f)
- Use the following setup file (named setup.py):
"""
This is a setup.py script generated by py2applet
Usage:
python setup.py py2app
"""
from setuptools import setup
APP = ['ClickPen.py']
DATA_FILES = []
OPTIONS = {'argv_emulation': True,
'plist': {
'CFBundleDocumentTypes': [{
'CFBundleTypeName': "File suffix of my app's documents",
'CFBundleTypeRole': "Editor",
'LSHandlerRank': "Owner",
'LSItemContentTypes': ["ClickPen"],
}],
'UTExportedTypeDeclarations': [{
'UTTypeConformsTo': ["public.data"],
'UTTypeIdentifier': "ClickPen",
'UTTypeDescription': "File suffix of my app's documents",
'UTTypeTagSpecification': {'public.filename-extension': ".vpl"}
}],
'CFBundleIdentifier': "ClickPen",
'CFBundleName': "ClickPen"
}
}
setup(
app=APP,
data_files=DATA_FILES,
options={'py2app': OPTIONS},
setup_requires=['py2app'],
)
- Run the following command:
python setup.py py2app
- Now in the dist folder you should find a ClickPen.app program. Use it wisely.