/offlineimap/head: changeset 229
Applied part 1 of Tommi's patch.
This commit is contained in:
@@ -18,16 +18,16 @@
|
||||
|
||||
import os.path
|
||||
|
||||
def genmbnames(config, boxlist):
|
||||
def genmbnames(config, localeval, boxlist):
|
||||
"""Takes a configparser object and a boxlist, which is a list of hashes
|
||||
containing 'accountname' and 'foldername' keys."""
|
||||
if not config.getboolean("mbnames", "enabled"):
|
||||
return
|
||||
file = open(os.path.expanduser(config.get("mbnames", "filename")), "wt")
|
||||
file.write(eval(config.get("mbnames", "header")))
|
||||
itemlist = [eval(config.get("mbnames", "peritem", raw=1)) % item for item in boxlist]
|
||||
file.write(eval(config.get("mbnames", "sep")).join(itemlist))
|
||||
file.write(eval(config.get("mbnames", "footer")))
|
||||
file.write(localeval.eval(config.get("mbnames", "header")))
|
||||
itemlist = [localeval.eval(config.get("mbnames", "peritem", raw=1)) % item for item in boxlist]
|
||||
file.write(localeval.eval(config.get("mbnames", "sep")).join(itemlist))
|
||||
file.write(localeval.eval(config.get("mbnames", "footer")))
|
||||
file.close()
|
||||
|
||||
|
||||
|
@@ -22,7 +22,7 @@ import re
|
||||
from threading import *
|
||||
|
||||
class IMAPRepository(BaseRepository):
|
||||
def __init__(self, config, accountname, imapserver):
|
||||
def __init__(self, config, localeval, accountname, imapserver):
|
||||
"""Initialize an IMAPRepository object. Takes an IMAPServer
|
||||
object."""
|
||||
self.imapserver = imapserver
|
||||
@@ -32,12 +32,15 @@ class IMAPRepository(BaseRepository):
|
||||
self.nametrans = lambda foldername: foldername
|
||||
self.folderfilter = lambda foldername: 1
|
||||
self.folderincludes = []
|
||||
self.foldersort = cmp
|
||||
if config.has_option(accountname, 'nametrans'):
|
||||
self.nametrans = eval(config.get(accountname, 'nametrans'))
|
||||
self.nametrans = localeval.eval(config.get(accountname, 'nametrans'), {'re': re})
|
||||
if config.has_option(accountname, 'folderfilter'):
|
||||
self.folderfilter = eval(config.get(accountname, 'folderfilter'))
|
||||
self.folderfilter = localeval.eval(config.get(accountname, 'folderfilter'), {'re': re})
|
||||
if config.has_option(accountname, 'folderincludes'):
|
||||
self.folderincludes = eval(config.get(accountname, 'folderincludes'))
|
||||
self.folderincludes = localeval.eval(config.get(accountname, 'folderincludes'), {'re': re})
|
||||
if config.has_option(accountname, 'foldersort'):
|
||||
self.foldersort = localeval.eval(config.get(accountname, 'foldersort'), {'re': re})
|
||||
|
||||
def getsep(self):
|
||||
return self.imapserver.delim
|
||||
@@ -71,6 +74,6 @@ class IMAPRepository(BaseRepository):
|
||||
retval.append(folder.IMAP.IMAPFolder(self.imapserver, foldername,
|
||||
self.nametrans(foldername),
|
||||
self.accountname))
|
||||
retval.sort(lambda x, y: cmp(x.getvisiblename(), y.getvisiblename()))
|
||||
retval.sort(lambda x, y: self.foldersort(x.getvisiblename(), y.getvisiblename()))
|
||||
self.folders = retval
|
||||
return retval
|
||||
|
@@ -16,16 +16,21 @@
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
from offlineimap.ui import *
|
||||
import offlineimap.ui
|
||||
import sys
|
||||
|
||||
def findUI(config):
|
||||
def findUI(config, localeval):
|
||||
uistrlist = ['Tk.Blinkenlights', 'Tk.VerboseUI', 'TTY.TTYUI',
|
||||
'Noninteractive.Basic', 'Noninteractive.Quiet']
|
||||
namespace={}
|
||||
for ui in dir(offlineimap.ui):
|
||||
if ui.startswith('_') or ui=='detector':
|
||||
continue
|
||||
namespace[ui]=getattr(offlineimap.ui, ui)
|
||||
if config.has_option("general", "ui"):
|
||||
uistrlist = config.get("general", "ui").replace(" ", "").split(",")
|
||||
for uistr in uistrlist:
|
||||
uimod = getUImod(uistr)
|
||||
uimod = getUImod(uistr, localeval, namespace)
|
||||
if uimod:
|
||||
uiinstance = uimod(config)
|
||||
if uiinstance.isusable():
|
||||
@@ -33,9 +38,9 @@ def findUI(config):
|
||||
sys.stderr.write("ERROR: No UIs were found usable!\n")
|
||||
sys.exit(200)
|
||||
|
||||
def getUImod(uistr):
|
||||
def getUImod(uistr, localeval, namespace):
|
||||
try:
|
||||
uimod = eval(uistr)
|
||||
except (AttributeError, NameError):
|
||||
uimod = localeval.eval(uistr, namespace)
|
||||
except (AttributeError, NameError), e:
|
||||
return None
|
||||
return uimod
|
||||
|
Reference in New Issue
Block a user