mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 11:49:12 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			92 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			92 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()
 |