TinyTinyEdit¶
A PyObjC Example without documentation
Sources¶
TinyTinyEdit.py¶
"""TinyTinyEdit -- A minimal Document-based Cocoa application."""
import Cocoa
import objc
import sys
from PyObjCTools import AppHelper
class TinyTinyDocument(Cocoa.NSDocument):
textView = objc.IBOutlet()
path = None
def windowNibName(self):
return "TinyTinyDocument"
def readFromFile_ofType_(self, path, tp):
if self.textView is None:
# we're not yet fully loaded
self.path = path
else:
# "revert"
self.readFromUTF8_(path)
return True
def writeToFile_ofType_(self, path, tp):
with open(path, "w") as f:
text = self.textView.string()
if sys.version_info[0] == 2:
text = text.encode("utf-8")
f.write(text)
return True
def windowControllerDidLoadNib_(self, controller):
if self.path:
self.readFromUTF8_(self.path)
def readFromUTF8_(self, path):
with open(path) as f:
text = f.read()
if sys.version_info[0] == 2:
text = text.decode("utf-8")
self.textView.setString_(text)
if __name__ == "__main__":
AppHelper.runEventLoop()
setup.py¶
"""
Script for building the example.
Usage:
python3 setup.py py2app
"""
from setuptools import setup
plist = {
"CFBundleDocumentTypes": [
{
"CFBundleTypeExtensions": ["txt", "text", "*"],
"CFBundleTypeName": "Text File",
"CFBundleTypeRole": "Editor",
"NSDocumentClass": "TinyTinyDocument",
}
]
}
setup(
name="Tiny Tiny Edit",
app=["TinyTinyEdit.py"],
data_files=["MainMenu.nib", "TinyTinyDocument.nib"],
options={"py2app": {"plist": plist}},
setup_requires=["py2app", "pyobjc-framework-Cocoa"],
)