mirror of
https://github.com/python/cpython.git
synced 2025-09-26 10:19:53 +00:00
Control InterSLIP using a modal dialog
This commit is contained in:
parent
07043b4573
commit
310c657d75
2 changed files with 105 additions and 0 deletions
92
Mac/Demo/example1/InterslipControl-1.py
Normal file
92
Mac/Demo/example1/InterslipControl-1.py
Normal file
|
@ -0,0 +1,92 @@
|
|||
"""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()
|
Loading…
Add table
Add a link
Reference in a new issue