cpython/Mac/Demo/example2/InterslipControl-2.py

117 lines
2.7 KiB
Python

import FrameWork
import EasyDialogs
import Res
import Dlg
import sys
import interslip
#
# Definitions for our resources
ID_MAIN=512
ID_ABOUT=513
ITEM_CONNECT=1
ITEM_DISCONNECT=2
ITEM_STATUS=3
ITEM_MESSAGE=4
status2text = ["<idle>", "<wait-modem>", "<dialling>", "<logging in>",
"<connected>", "<disconnecting>"]
def main():
try:
interslip.open()
except interslip.error, arg:
EasyDialogs.Message("Cannot open interslip: "+arg[1])
sys.exit(1)
try:
dummy = Res.GetResource('DLOG', ID_MAIN)
except Res.Error:
try:
Res.OpenResFile("InterslipControl-2.rsrc")
except Res.error:
EasyDialogs.Message("Cannot open InterslipControl-2.rsrc: "+arg[1])
sys.exit(1)
InterslipControl()
class InterslipControl(FrameWork.Application):
"Application class for InterslipControl"
def __init__(self):
# First init menus, etc.
FrameWork.Application.__init__(self)
# Next create our dialog
self.main_dialog = MyDialog(self)
# Now open the dialog
self.main_dialog.open(ID_MAIN)
# Finally, go into the event loop
self.mainloop()
def makeusermenus(self):
self.filemenu = m = FrameWork.Menu(self.menubar, "File")
self.quititem = FrameWork.MenuItem(m, "Quit", "Q", self.quit)
def quit(self, *args):
raise self
def do_about(self, *args):
f = Dlg.GetNewDialog(ID_ABOUT, -1)
while 1:
n = Dlg.ModalDialog(None)
if n == 1:
return
def idle(self, event):
"Idle routine - update status"
self.main_dialog.updatestatus()
class MyDialog(FrameWork.DialogWindow):
"Main dialog window for InterslipControl"
def __init__(self, parent):
FrameWork.DialogWindow.__init__(self, parent)
self.last_status = None
self.last_msgnum = None
def do_itemhit(self, item, event):
if item == ITEM_DISCONNECT:
self.disconnect()
elif item == ITEM_CONNECT:
self.connect()
def connect(self):
try:
interslip.connect()
except interslip.error, arg:
EasyDialogs.Message("Cannot connect: "+arg[1])
def disconnect(self):
try:
interslip.disconnect()
except interslip.error, arg:
EasyDialogs.Message("Cannot disconnect: "+arg[1])
def updatestatus(self):
try:
status, msgnum, msg = interslip.status()
except interslip.error, arg:
EasyDialogs.Message("Cannot get status: "+arg[1])
sys.exit(1)
if status == self.last_status and msgnum == self.last_msgnum:
return
self.last_status = status
self.last_msgnum = msgnum
if msgnum == 0:
msg = ''
try:
txt = status2text[status]
except IndexError:
txt = "<unknown state %d>"%status
tp, h, rect = self.wid.GetDialogItem(ITEM_STATUS)
Dlg.SetDialogItemText(h, txt)
tp, h, rect = self.wid.GetDialogItem(ITEM_MESSAGE)
Dlg.SetDialogItemText(h, msg)
main()