#!/usr/bin/env rexx /*************************************************************************** * Rexx Address Book * * * * A simple application for storing, maintaining, and browsing contact * * information. * * * * Backend: Object Rexx with unix system, and sqlite extensions. * * Frontend: Object Rexx with ncurses extensions. * **************************************************************************/ signal on HALT name ProgramHalt .environment['STOPNOW'] = 0 call setEnv app = .AddressBookApp~new() app~run() Do forever if .environment['STOPNOW'] = 1 then do app~cleanup() /* Clean up before exiting */ call SysCls exit 0 end app~reloop() end Exit ::CLASS AddressBookApp PUBLIC ::METHOD Init expose ui db db = .AddressBookDB~new() ui = .AddressBookUI~new(db) return ::method run expose ui ui~initialize ui~mainLoop ui~cleanup return ::method reloop expose ui ui~mainLoop RETURN ::method cleanup expose db db~closeDb() return ::ROUTINE setEnv .environment~home = SysGetpwnam("gmgauthier", "d") .environment~projectRoot = .home||"/Projects/rexx-address-book" .environment~pkgPath = .projectRoot||"/app" .environment~dbPath = .projectRoot||"/db" .environment~dbFile = .dbPath||"/contacts.sqlite" .environment["REXX_PATH"] = .projectRoot||";"||.pkgPath||";"||.dbPath||";" /** External Libraries **/ ::requires 'app/appdb.cls' ::requires 'app/appui.cls' ::requires 'app/utils.rex' ::requires 'ooSQLite.cls' ::requires "rxunixsys" LIBRARY ::requires 'ncurses.cls'