MutableTableModel

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