CurrencyConverter

A PyObjC Example without documentation

Sources

CurrencyConverter.py

import sys

import objc
from AppKit import NSApplicationMain, NSObject


class Converter(NSObject):
    def convertAmount_atRate_(self, amt, rate):
        return amt * rate


class ConverterController(NSObject):
    # First define the IB Outlets, the 'ivar' calls below define new
    # instance variables in the objective-C class (e.g. visible
    # for introspection in objective-C)
    converter = objc.IBOutlet()
    dollarField = objc.IBOutlet()
    rateField = objc.IBOutlet()
    totalField = objc.IBOutlet()

    def awakeFromNib(self):
        # Provide some defaults for the user...
        self.dollarField.setFloatValue_(2.0)
        self.rateField.setFloatValue_(3.0)

    @objc.IBAction
    def convert_(self, sender):
        rate = self.rateField.floatValue()
        amt = self.dollarField.floatValue()

        total = self.converter.convertAmount_atRate_(rate, amt)
        self.totalField.setFloatValue_(total)
        self.rateField.selectText_(self)

        # x = NSRunAlertPanel("Calculation Result",
        #    "The result is %s"%(total), "OK", None, None)


sys.exit(NSApplicationMain(sys.argv))

setup.py

"""
Script for building the example.

Usage:
    python3 setup.py py2app
"""
from setuptools import setup

setup(
    name="CurrencyConverter",
    app=["CurrencyConverter.py"],
    data_files=["English.lproj"],
    setup_requires=["py2app", "pyobjc-framework-Cocoa"],
)