3 # View a single MIME multipart message.
4 # Display each part as a box.
9 from ScrolledText
import ScrolledText
12 def __init__(self
, parent
, title
, msg
):
15 self
.frame
= Frame(parent
, {'relief': 'raised', 'bd': 2})
16 self
.frame
.packing
= {'expand': 0, 'fill': 'both'}
17 self
.button
= Checkbutton(self
.frame
,
19 'command': self
.toggle
})
20 self
.button
.pack({'anchor': 'w'})
21 headertext
= msg
.getheadertext(
22 lambda x
: x
!= 'received' and x
[:5] != 'x400-')
23 height
= countlines(headertext
, 4)
25 self
.htext
= ScrolledText(self
.frame
,
31 self
.htext
.packing
= {'expand': 1, 'fill': 'both',
33 self
.htext
.insert('end', headertext
)
35 self
.htext
= Frame(self
.frame
,
36 {'relief': 'raised', 'bd': 2})
37 self
.htext
.packing
= {'side': 'top',
42 if type(body
) == StringType
:
44 height
= countlines(body
, 10)
46 self
.btext
= ScrolledText(self
.frame
,
52 self
.btext
.packing
= {'expand': 1,
54 self
.btext
.insert('end', body
)
59 self
.pad
= Frame(self
.frame
,
60 {'relief': 'flat', 'bd': 2})
61 self
.pad
.packing
= {'side': 'left', 'ipadx': 10,
62 'fill': 'y', 'after': self
.htext
}
64 for i
in range(len(body
)):
65 p
= MimeViewer(self
.frame
,
66 '%s.%d' % (title
, i
+1),
72 self
.frame
.pack(self
.frame
.packing
)
85 for comp
in self
.htext
, self
.btext
, self
.pad
:
89 for part
in self
.parts
:
91 self
.frame
.pack({'expand': 0})
94 for comp
in self
.htext
, self
.btext
, self
.pad
:
95 if comp
: comp
.pack(comp
.packing
)
97 for part
in self
.parts
:
99 self
.frame
.pack({'expand': 1})
101 def countlines(str, limit
):
105 i
= string
.find(str, '\n', i
)
115 opts
, args
= getopt
.getopt(sys
.argv
[1:], '')
124 message
= string
.atoi(arg
)
127 f
= mh
.openfolder(folder
)
129 message
= f
.getcurrent()
130 m
= f
.openmessage(message
)
135 top
= MimeViewer(root
, '+%s/%d' % (folder
, message
), m
)
143 if __name__
== '__main__': main()