CurrencyConverter
=================

* :download:`Download example <PyObjCExample-CurrencyConverter.zip>`

A simple NIB based application. Start with this one. Also see the
:doc:`PyObjC tutorial </tutorials/index>`.


.. rst-class:: tabber

Sources
-------

.. rst-class:: tabbertab

CurrencyConverter.py
....................

.. sourcecode:: python

    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))

.. rst-class:: tabbertab

setup.py
........

.. sourcecode:: python

    """
    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"],
    )

