rexx-address-book/addbook.rex

72 lines
1.9 KiB
Rexx
Executable File

#!/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'