diff options
Diffstat (limited to 'slime-0.11/slime_root.py')
-rw-r--r-- | slime-0.11/slime_root.py | 77 |
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() |