Control InterSLIP using modeless dialog, uses FrameWork
This commit is contained in:
parent
310c657d75
commit
4ac724946a
|
@ -0,0 +1,116 @@
|
|||
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):
|
||||
"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()
|
|
@ -0,0 +1,55 @@
|
|||
(This file must be converted with BinHex 4.0)
|
||||
:&dPZG'9bFfaTF%0[ER4bEf`Y-LjbFh*M!(*cFQ058d9%!*!)$2eid3#3"!%!N!-
|
||||
,T!!!#U3!!!&CCQBd4$9%-%3a4$*%-a*QCM-c0%8e46"&-88b46-5CQBA5@jdCA*
|
||||
cE'P`3fpZG(*[E#db,R*cFQ-#!!)!FR0bB`)!FR0bBe*6483"!!!d!)!!N"+X``N
|
||||
h!*!'$2dcN!3d)!!e)!!`)!!a)!!b)!!c%M-c!!!d)!%e)!%`)!%a)!%b)!%c5b@
|
||||
U5bQU5bUU5bZU5bbU5bfU5bkU5bp,0kT,1+T,1DT,1UT,1kT,2+T,2DT,2UT,2kT
|
||||
,3+T,3DT,3UT,3kT,4+T,4DT,4UT,4kT,5+T,5DT,5UT,)!#U5b!!N!-9!'B!KJ$
|
||||
&!GB!!!%!!3#3"3)!N!89!'!!E!%@!AJ!!3%!!3#3"3)"!*!%(&"C9'N!N!-"4P*
|
||||
&4J#3"B"*3diM!*!&J!#3!`G"8&"-!*!&!3!!!3!!%!+!!!3%3!"%##!!9I!3!&%
|
||||
J#!"3i!3!8-!#!"2`!3"6m!#!4rJ13%ri%5"Ar#U3!'rm3%K2r&9%crj!3Rrq+S&
|
||||
rrK%#(rm1"#hr!)JVIbp3+b9HS'PPS%"T*B#!Irq"!!!J!J!!%!3!!!J)!!!%%!!
|
||||
!!L!!!!&!!*!$J!!!!3!!%!1!!!3(`!"%$q!!9Ir`!&(rq!"3rr`!82rq!"2rr`"
|
||||
6rrq!4rrr`%rrrq"Irrr`Irrrq(rrrrcrN!2qIrq3!hrrrriIrrrm2rrrq$rrrr!
|
||||
rrrrJIrrr`(rrri"rrrm!!$rq!!!Ir!!!$rJ!!!I`!!!$i!!!!F!!N!1!!*!$"!#
|
||||
3%2m!N"2r!*!+r`$r!*!8r`#3"rm!+`$r!*!2r`#3!rm!N!Er!#Z3!`$r!*!1r`$
|
||||
r!2m!X*!%r`!VN!8!r`#3$Im!r`#3!l!!!,!VN!J!r`#3$2m!r`#3",#`qT!$+j!
|
||||
(!2m!N![r!2m!N!5`X2U3!bZ3#!$r!*!-r`!!X*!'+j!+!2m!N!Rr!2m!!,#3"LZ
|
||||
3#`$r!*!)r`#3!l#3#2SVN!Emrr`V!2m!N!Ir!!$rX*!)qLZ3"2Q*+j!$LIN!r`#
|
||||
3"[m!r`#`N!MkqLZ3!iNVL5Z*+r`V!2m!N!Arr`#`N!Vk+b[m+j!(r#X!r`#3"2m
|
||||
!+l#3#[SV+rmVL5Z*+iNVrbXV!2m!!2rr+bZ`N!VkqL[m+j!(r#Z3!`$r!!$rr,#
|
||||
3$2SV+r`VL5Z*+iNVN!Er!2rrX*!-qLXVqBNVN!1*q5Z3"2Vr!*!%X*!-q[SVN!2
|
||||
mrr`VN!Akr`#3",!&X,!&X*!*qLZ3"rmV+rVr!*!&X!@`"E#`"E#3"rSVrb[rN!6
|
||||
jrrVr!*!'X!@`"E#`"3@`"3@`"E$krrRrN!3VrrVr!*!'X,!&X!8&X!@`X!8&X!@
|
||||
`X#[r+j!&q[m!N!H`X!@`"3@`"3@`"3@`"E#`qLZ3"IVr!*!)X*!3q[SVN!2kr`#
|
||||
3%[rkN!JV+rVr!*!8rrU3"b[kr`#3&[rk+j!&q[m!N"MrqLZ3!rVr!*!DrrSVq[m
|
||||
!N"crq[m!N"lr!*!4!J#3#!m!N!N2!*!&m2!!N!N2!*!$$``2!*!($`!2!*!$m-c
|
||||
!m!#3"Jq3!`99A`c-c!m!N!B2$`!&!&c-N!2!m!#3"3m2!!"9hGc-N!-2!*!&$`m
|
||||
!!&AGh-b3!m$`!*!&$`"9N!2-N!82!*!%$`m!9C!$c*!&`2!!N!-2!!99N!0Gc*!
|
||||
$lq`2!*!$$`$e9C!$AFc-fXc+d2!!!!m2"9@3!ehFc+b3!q`2!!!2m&@3"Gc1c*!
|
||||
$cX$`!!m-9C!&h-r+N!22c!m!rma9N!AGcXb3!ml-`2!2j9@3"9h-l+b3!mc-c`r
|
||||
e9C!&AFcDc-VFc-h`!!99N!9Gh-c[l-c-h`!!89899C!%h-b3!rc0m!!!89&9&9@
|
||||
3!pcmrrrIh`#3!e&494&4&4AIhrrmrI!!!!9484898489A2c-c0m!N!-&89%9%9%
|
||||
9&9h-c-h`!*!$"9@3"ehFc0m!N!RphC!$h-h`!*!*$pf3!pcI!*!,rFc-cI!!N!X
|
||||
2h-cI!*!0rFh`!*!0$pm!N!r`!*!*!3#3"Im!N!2r!*!*r`$r!!$r!2m!N!cr!#X
|
||||
!r`#3#[m!+j!$!2m!N!Er!,#3!bZ3"!$r!*!&rrm!X2Rj+j!%!2m!N!6r!,#3!bZ
|
||||
3!rQ*+`$r!!$rrbZ`N!2j+bZ*q5Z3!rm!!2q`N!Aj+j!%qIm!N!5`N!Aj+rrrqIm
|
||||
!N!5`"E!&X!@`q5[jr`#3"E#3"rRjr`#3#[rjN!2r!*!-rrRr!*!1r`#3'S!!!2!
|
||||
!m!#3"2$`$`m!N!E``2!!N!32$-`2!*!$m&9Fc-$`!!$r"Gh-c!m!!2"9A-cD`2!
|
||||
2r&9Gc+h-c`$e99AFc-h`!!999Gcrh`!!8C!$AFh`!!"9N!0Gh`#3"IhGm!#3"3r
|
||||
I!*!(m!#3$N!)J#P!!L!%%#i)0!3Z%QiK2`)I0#U)2j!!!L!"3!#!!!!)J#R!!q!
|
||||
(m#ri2r`rrRrr2riIr$ri2r!$i!(!!)!!N!9i!!8!N!8m!!S!8!"@"!G$EfjZC@0
|
||||
d!*!'2!$`!&!"433+4'PcBfpZEQ9MG!#3"3S!@J!D!8D)!*!'(J"D!#i"4SJ!N!B
|
||||
+!!S!'J"9L!G6G'&dGA-km!#3"4i!#J!Z!&@)#%ePFh0KCf8k!*!$CJ!$!*!&PJ"
|
||||
a!+S!U`3#6dX!N!8+!(%!5J#aS!)#!3#3"9!!9!"J!-Q)%8PZG'9bFfaTF#"$Efj
|
||||
dFQpXB3#3"@i!2!#$!1')&NTKBfXJ5Q&ZFf9Z,#"$9dNX)$%j168!N!1!!!%!!"!
|
||||
#J!!%"%!!4!JJ!&A`%!"4)!J!81!%!&$!!J!6m!%!8r!!J%Ii$N"2q"%J9r`UN!"
|
||||
[r%")6ra94-rq3%*rrLU"Iri4!Krr$J3Yr`#)+hm[8#XPAU"TCD"!D5@!J(rrJ3!
|
||||
!)!)!!"!%!!!)#!!!""!!!!)J!!!"3!#3!i!!N!3"!*!$!3#3!`ZN!!!+T!!!!9N
|
||||
!a!8%%Pi!N!-F!5B!#d4-6dF!!3"L4%P86!!"!(T#6N4-!*!$NNC548B!N!1H580
|
||||
1)`#3!kTTBf`i!*!$YQPME$3!N!2#D@0c1!#3!mjTBh-d!*!$fQPMFb-!N!2Q580
|
||||
26J#3!r*3@94T!*!$rJ)!N!X#!3!2!*!$'3#3"!)!rrm!!!Ne!*!%!J(rr`!!#E%
|
||||
!N!@!rrm!N!-b!-3$U!#!rrm!N!05!-3#X!#!rrm!N!0G!-3#Y!#!rrm!!!&K!-3
|
||||
#1!#!rrm!!!9P!-3$D!#!rrm!!!GT!-3#+!#!rrm!!!KY!-3#2!#!rrm!!!Ma!-3
|
||||
#3!)"!"N!!!SE!*!(*!!!#Tm!a!)X$N0[ER4bEf`J4'PKE'pR#8&LEh9d)'*[H!T
|
||||
"BQpeG#"*BfpZ$NphEQ9b)(*PFfpeFQ0PITS:
|
Loading…
Reference in New Issue