rev 294 - in offlineimap/head/offlineimap: folder ui

[email protected] Thu, 2 Jan 2003 19:01:42 -0600 (CST)
Newsgroups gmane.mail.imap.offlineimap.subversion
Message-ID <[email protected]>
Author: jgoerzen
Date: 2003-01-02 19:01:41 -0600 (Thu, 02 Jan 2003)
New Revision: 294

Modified:
   offlineimap/head/offlineimap/folder/LocalStatus.py
   offlineimap/head/offlineimap/ui/Tk.py
Log:
Updated with various fixes


Modified: offlineimap/head/offlineimap/folder/LocalStatus.py
==============================================================================
--- offlineimap/head/offlineimap/folder/LocalStatus.py	(original)
+++ offlineimap/head/offlineimap/folder/LocalStatus.py	Thu Jan  2 19:01:41 2003
@@ -17,7 +17,7 @@
 #    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
 from Base import BaseFolder
-import os
+import os, threading
 
 magicline = "OFFLINEIMAP LocalStatus CACHE DATA - DO NOT MODIFY - FORMAT 1"
 
@@ -29,6 +29,8 @@
         self.filename = os.path.join(root, name)
         self.messagelist = None
         self.repository = repository
+        self.savelock = threading.Lock()
+        self.doautosave = 1
 
     def storesmessages(self):
         return 0
@@ -68,16 +70,24 @@
             self.messagelist[uid] = {'uid': uid, 'flags': flags}
         file.close()
 
+    def autosave(self):
+        if self.doautosave:
+            self.save()
+
     def save(self):
-        file = open(self.filename + ".tmp", "wt")
-        file.write(magicline + "\n")
-        for msg in self.messagelist.values():
-            flags = msg['flags']
-            flags.sort()
-            flags = ''.join(flags)
-            file.write("%s:%s\n" % (msg['uid'], flags))
-        file.close()
-        os.rename(self.filename + ".tmp", self.filename)
+        self.savelock.acquire()
+        try:
+            file = open(self.filename + ".tmp", "wt")
+            file.write(magicline + "\n")
+            for msg in self.messagelist.values():
+                flags = msg['flags']
+                flags.sort()
+                flags = ''.join(flags)
+                file.write("%s:%s\n" % (msg['uid'], flags))
+            file.close()
+            os.rename(self.filename + ".tmp", self.filename)
+        finally:
+            self.savelock.release()
 
     def getmessagelist(self):
         return self.messagelist
@@ -92,6 +102,7 @@
             return uid
 
         self.messagelist[uid] = {'uid': uid, 'flags': flags}
+        self.autosave()
         return uid
 
     def getmessageflags(self, uid):
@@ -99,9 +110,10 @@
 
     def savemessageflags(self, uid, flags):
         self.messagelist[uid]['flags'] = flags
+        self.autosave()
 
     def deletemessage(self, uid):
         if not uid in self.messagelist:
             return
         del(self.messagelist[uid])
-
+        self.autosave()

Modified: offlineimap/head/offlineimap/ui/Tk.py
==============================================================================
--- offlineimap/head/offlineimap/ui/Tk.py	(original)
+++ offlineimap/head/offlineimap/ui/Tk.py	Thu Jan  2 19:01:41 2003
@@ -165,6 +165,7 @@
 
         self.created.wait()
         del self.created
+        time.sleep(1)
 
         if doidlevac:
             t = threadutil.ExitNotifyThread(target = self.idlevacuum,