summaryrefslogtreecommitdiff
path: root/slime-0.11/slime_root.py
diff options
context:
space:
mode:
Diffstat (limited to 'slime-0.11/slime_root.py')
-rw-r--r--slime-0.11/slime_root.py77
1 files changed, 77 insertions, 0 deletions
diff --git a/slime-0.11/slime_root.py b/slime-0.11/slime_root.py
new file mode 100644
index 0000000..c265801
--- /dev/null
+++ b/slime-0.11/slime_root.py
@@ -0,0 +1,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()