Control InterSLIP using a modal dialog
diff --git a/Mac/Demo/example1/InterslipControl-1.py b/Mac/Demo/example1/InterslipControl-1.py
new file mode 100644
index 0000000..14fc59c
--- /dev/null
+++ b/Mac/Demo/example1/InterslipControl-1.py
@@ -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()