cpython/Mac/Demo/example1/InterslipControl-1.py

93 lines
2.1 KiB
Python

"""Sample program handling InterSLIP control and showing off EasyDialogs,
Res and Dlg in the process"""
import EasyDialogs
import Res
import Dlg
import sys
import interslip
#
# Definitions for our resources
ID_MAIN=512
ITEM_CONNECT=1
ITEM_DISCONNECT=2
ITEM_UPDATE=3
ITEM_QUIT=4
ITEM_STATUS=5
ITEM_MESSAGE=6
status2text = ["<idle>", "<wait-modem>", "<dialling>", "<logging in>",
"<connected>", "<disconnecting>"]
def main():
"""Main routine: open resourcefile, open interslip, call dialog handler"""
try:
Res.OpenResFile("InterslipControl-1.rsrc")
except Res.Error, arg:
EasyDialogs.Message("Cannot open resource file InterslipControl-1.rsrc: "+
arg[1])
sys.exit(1)
try:
interslip.open()
except interslip.error, arg:
EasyDialogs.Message("Cannot open interslip: "+arg[1])
sys.exit(1)
do_dialog()
def do_dialog():
"""Post dialog and handle user interaction until quit"""
my_dlg = Dlg.GetNewDialog(ID_MAIN, -1)
while 1:
n = Dlg.ModalDialog(None)
if n == ITEM_CONNECT:
do_connect()
elif n == ITEM_DISCONNECT:
do_disconnect()
elif n == ITEM_UPDATE:
status, msg = do_status()
# Convert status number to a text string
try:
txt = status2text[status]
except IndexError:
txt = "<unknown state %d>"%status
# Set the status text field
tp, h, rect = my_dlg.GetDialogItem(ITEM_STATUS)
Dlg.SetDialogItemText(h, txt)
# Set the message text field
tp, h, rect = my_dlg.GetDialogItem(ITEM_MESSAGE)
Dlg.SetDialogItemText(h, msg)
elif n == ITEM_QUIT:
break
def do_connect():
"""Connect, posting error message in case of failure"""
try:
interslip.connect()
except interslip.error, arg:
EasyDialogs.Message("Cannot connect: "+arg[1])
def do_disconnect():
"""Disconnect, posting error message in case of failure"""
try:
interslip.disconnect()
except interslip.error, arg:
EasyDialogs.Message("Cannot disconnect: "+arg[1])
def do_status():
"""Get status as (state_index, message),
posting error message in case of failure"""
try:
status, msgnum, msg = interslip.status()
except interslip.error, arg:
EasyDialogs.Message("Cannot get status: "+arg[1])
return 0, ''
return status, msg
main()