Added 'description' class attribute to every command class (to help the
[python/dscho.git] / Mac / Demo / example1 / dnslookup-1.py
bloba59fb8ee990a7f4c786767c03b5133b9bff0ab4b
1 """Sample program performing domain name lookups and showing off EasyDialogs,
2 Res and Dlg in the process"""
4 import EasyDialogs
5 import Res
6 import Dlg
7 import sys
8 import socket
9 import string
11 # Definitions for our resources
12 ID_MAIN=512
14 ITEM_LOOKUP_ENTRY=1
15 ITEM_RESULT=2
16 ITEM_LOOKUP_BUTTON=3
17 ITEM_QUIT_BUTTON=4
20 def main():
21 """Main routine: open resource file, call dialog handler"""
22 try:
23 Res.OpenResFile("dnslookup-1.rsrc")
24 except Res.Error:
25 EasyDialogs.Message("Cannot open dnslookup-1.rsrc")
26 sys.exit(1)
27 do_dialog()
29 def do_dialog():
30 """Post dialog and handle user interaction until quit"""
31 my_dlg = Dlg.GetNewDialog(ID_MAIN, -1)
32 while 1:
33 n = Dlg.ModalDialog(None)
34 if n == ITEM_LOOKUP_BUTTON:
35 tp, h, rect = my_dlg.GetDialogItem(ITEM_LOOKUP_ENTRY)
36 txt = Dlg.GetDialogItemText(h)
38 tp, h, rect = my_dlg.GetDialogItem(ITEM_RESULT)
39 Dlg.SetDialogItemText(h, dnslookup(txt))
40 elif n == ITEM_QUIT_BUTTON:
41 break
43 def dnslookup(str):
44 """ Perform DNS lookup on str. If first character of digit is numeric,
45 assume that str contains an IP address. Otherwise, assume that str
46 contains a hostname."""
47 if str == '': str = ' '
48 if str[0] in string.digits:
49 try:
50 value = socket.gethostbyaddr(str)[0]
51 except:
52 value = 'Lookup failed'
53 else:
54 try:
55 value = socket.gethostbyname(str)
56 except:
57 value = 'Lookup failed'
58 return value
60 main()