CurrencyConvBinding

A PyObjC Example without documentation

Sources

Converter.py

import objc
from Foundation import NSObject
from objc import super  # noqa: A004


class Converter(NSObject):
    exchangeRate = objc.ivar.double()
    dollarsToConvert = objc.ivar.double()

    def init(self):
        self = super().init()
        self.exchangeRate = 3
        self.dollarsToConvert = 4
        return self

    def amountInOtherCurrency(self):
        return self.dollarsToConvert * self.exchangeRate


Converter.setKeys_triggerChangeNotificationsForDependentKey_(
    ["dollarsToConvert", "exchangeRate"], "amountInOtherCurrency"
)

CurrencyConvBinding.py

# import classes required to start application
import Converter  # noqa: F401
import CurrencyConvBindingDocument  # noqa: F401
from PyObjCTools import AppHelper

if __name__ == "__main__":
    AppHelper.runEventLoop()

CurrencyConvBindingDocument.py

from Cocoa import NSDocument


class CurrencyConvBindingDocument(NSDocument):
    def windowNibName(self):
        return "CurrencyConvBindingDocument"

setup.py

"""
Script for building the example:

Usage:
    python3 setup.py py2app
"""

from setuptools import setup

plist = {
    "CFBundleDocumentTypes": [
        {
            "CFBundleTypeExtensions": ["CurrencyConvBinding", "*"],
            "CFBundleTypeName": "CurrencyConvBinding File",
            "CFBundleTypeRole": "Editor",
            "NSDocumentClass": "CurrencyConvBindingDocument",
        }
    ]
}

setup(
    name="CurrencyConvBinding",
    app=["CurrencyConvBinding.py"],
    data_files=["English.lproj"],
    options={"py2app": {"plist": plist}},
    setup_requires=["py2app", "pyobjc-framework-Cocoa"],
)