• Facebook
  • Twitter
  • Reddit
  • StumbleUpon
  • Digg
  • email

import os
from Cocoa import *
import objc
import leases
 
FILENAME = '/var/db/dhcpd_leases'
 
def getLeases(fn):
    if os.path.exists(fn):
        lines = file(fn, 'U')
    else:
        lines = leases.EXAMPLE.splitlines()
    return list(leases.leases(lines))
 
class TableModelAppDelegate (NSObject):
    mainWindow = objc.IBOutlet()
 
    def awakeFromNib(self):
        self.timer = NSTimer.scheduledTimerWithTimeInterval_target_selector_userInfo_repeats_(1.0, self, 'pollLeases:', {}, True)
 
    def pollLeases_(self, timer):
        if not os.path.exists(FILENAME):
            return
        d = timer.userInfo()
        newtime = os.stat(FILENAME).st_mtime
        oldtime = d.get('st_mtime', 0)
        if newtime > oldtime:
            d['st_mtime'] = newtime
            self.setLeases_(getLeases(FILENAME))
 
    def leases(self):
        if not hasattr(self, '_cachedleases'):
            self._cachedleases = getLeases(FILENAME)
        return self._cachedleases
 
    def setLeases_(self, leases):
        self._cachedleases = leases
 
    def windowWillClose_(self, sender):
        if sender is self.mainWindow:
            NSApp().terminate()