# MutableTableModel

- `Download example`

A PyObjC Example without documentation

## Sources

### TableModelAppDelegate.py

    import pwd

    import objc
    from Foundation import NSMutableArray, NSObject

    FIELDS = "name password uid gid class change expire gecos home_dir shell".split()

    def getPasswords():
        a = NSMutableArray()

        for pw in pwd.getpwall():
            a.append(
                {
                    "name": pw.pw_name,
                    "password": pw.pw_passwd,
                    "uid": pw.pw_uid,
                    "gid": pw.pw_gid,
                    "gecos": pw.pw_gecos,
                    "home_dir": pw.pw_dir,
                    "shell": pw.pw_shell,
                }
            )

        return a

    class TableModelAppDelegate(NSObject):
        def passwords(self):
            if not hasattr(self, "_cachedpasswords"):
                self._cachedpasswords = getPasswords()
            return self._cachedpasswords

        @objc.IBAction
        def insertRecord_(self, sender):
            passwords = self.passwords()

            self.willChangeValueForKey_("passwords")
            passwords.append(dict(zip(FIELDS, FIELDS)))
            self.didChangeValueForKey_("passwords")

### main.py

    #
    #  __main__.py
    #  TableModel
    #
    #  Created by Bob Ippolito on Sun Apr 04 2004.
    #  Copyright (c) 2004 Bob Ippolito. All rights reserved.
    #

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

    # start the event loop
    AppHelper.runEventLoop(argv=[])

### setup.py

    """
    Script for building the example, alternative to the Xcode project.

    Usage:
        python3 setup.py py2app
    """

    from setuptools import setup

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