summaryrefslogtreecommitdiff
path: root/slime-0.11/slime_root.py
blob: c265801ef73787fdc47c4117589e6259adf25dec (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
"""Implement the root folder."""

from slime_abstract import SlimeFolder, Error

class SlimeFolder_Root(SlimeFolder):
	"""The root folder that lists all folder collections."""
	
	def __init__(self):
		SlimeFolder.__init__(self)
		self._name = "Root folder"

	def open(self):
		self._is_open = 1
	
	def close(self):
		self._is_open = 0
	
	def rescan_subfolders(f):
		self._assert_open()

	def rescan_messages(f):
		self._assert_open()

	def add_message(self, message):
		raise Error, "Can't add messages to root folder."
		
	def delete_message(self, id):
		raise Error, "Can't delete messages from root folder."
		
	def open_message(self, id):
		raise Error, "Can't open messages in root folder."
		
	def add_subfolder(self, object):
		"""Add a subfolder `object'.
		
		Note that the interface is different from SlimeFolder:
		the root folder can't know the type of the folder, so
		it gets an object, instead of just the name."""
		self._assert_open()
		self._subfolders.append(object)
		
	def delete_self(self):
		raise Error, "Can't remove root folder."
		
	def rename_self(self, new_name):
		raise Error, "Can't rename root folder."
		
	def commit_changes(self):
		# For the root folder, everything is happens at once.
		self._assert_open()


def main():
	"""Test the root folder."""
	from slime_mh import *
	from slime_unix import *

	r = SlimeFolder_Root()
	
	r.open()
	r.add_subfolder(SlimeFolder_Unix(os.path.expanduser("~/mail")))
	
	for f in r.list_all_subfolders():
		print repr(f)
		f.open()
		f.rescan_subfolders()
		f.rescan_messages()
		for m in f.list_all_threads()[:2]:
			print m["subject"]
		print "Subfolders:", f.list_all_subfolders()
		f.close()
		print

	r.close()

if __name__ == "__main__":
	main()