/offlineimap/head: changeset 325
Touched up the isactive tests. Added defaults for many more options.
This commit is contained in:
parent
1cc5cfda0a
commit
16b3ce90ca
@ -4,7 +4,7 @@ on Fri, 21 Jun 2002 14:54:56 -0500.
|
||||
The original source can always be found at:
|
||||
ftp://ftp.debian.org/dists/unstable/main/source/
|
||||
|
||||
Copyright (C) 2002 John Goerzen
|
||||
Copyright (C) 2002, 2003 John Goerzen
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -38,7 +38,7 @@ accounts = Test
|
||||
# Offlineimap can synchronize more the one account at a time. If you
|
||||
# want to enable this feature, set the below value to something
|
||||
# greater than 1. To force it to synchronize only one account at a
|
||||
# time, leave it at 1.
|
||||
# time, set it to 1.
|
||||
#
|
||||
|
||||
maxsyncaccounts = 1
|
||||
|
@ -28,6 +28,19 @@ class CustomConfigParser(ConfigParser):
|
||||
else:
|
||||
return default
|
||||
|
||||
def getdefaultint(self, section, option, default, *args, **kwargs):
|
||||
if self.has_option(section, option):
|
||||
return apply(self.getint, [section, option] + list(args), kwargs)
|
||||
else:
|
||||
return default
|
||||
|
||||
def getdefaultboolean(self, section, option, default, *args, **kwargs):
|
||||
if self.has_option(section, option):
|
||||
return apply(self.getboolean, [section, option] + list(args),
|
||||
kwargs)
|
||||
else:
|
||||
return default
|
||||
|
||||
def getmetadatadir(self):
|
||||
metadatadir = os.path.expanduser(self.getdefault("general", "metadata", "~/.offlineimap"))
|
||||
if not os.path.exists(metadatadir):
|
||||
|
@ -130,7 +130,7 @@ class AccountSynchronizationMixin:
|
||||
threadutil.threadsreset(folderthreads)
|
||||
mbnames.write()
|
||||
if not self.hold:
|
||||
server.close()
|
||||
self.server.close()
|
||||
finally:
|
||||
pass
|
||||
|
||||
|
@ -266,7 +266,7 @@ class ConfigedIMAPServer(IMAPServer):
|
||||
port = None
|
||||
if config.has_option(accountname, "remoteport"):
|
||||
port = config.getint(accountname, "remoteport")
|
||||
ssl = config.getboolean(accountname, "ssl")
|
||||
ssl = config.getdefaultboolean(accountname, "ssl", 0)
|
||||
usetunnel = config.has_option(accountname, "preauthtunnel")
|
||||
reference = '""'
|
||||
if config.has_option(accountname, "reference"):
|
||||
@ -292,5 +292,5 @@ class ConfigedIMAPServer(IMAPServer):
|
||||
passfile.close()
|
||||
IMAPServer.__init__(self, config, accountname,
|
||||
user, password, host, port, ssl,
|
||||
config.getint(accountname, "maxconnections"),
|
||||
config.getdefaultint(accountname, "maxconnections", 1),
|
||||
reference = reference)
|
||||
|
@ -86,7 +86,7 @@ def startup(versionno):
|
||||
threadutil.initInstanceLimit("ACCOUNTLIMIT", 1)
|
||||
else:
|
||||
threadutil.initInstanceLimit("ACCOUNTLIMIT",
|
||||
config.getint("general", "maxsyncaccounts"))
|
||||
config.getdefaultint("general", "maxsyncaccounts", 1))
|
||||
|
||||
for account in accounts:
|
||||
for instancename in ["FOLDER_" + account, "MSGCOPY_" + account]:
|
||||
@ -94,7 +94,7 @@ def startup(versionno):
|
||||
threadutil.initInstanceLimit(instancename, 1)
|
||||
else:
|
||||
threadutil.initInstanceLimit(instancename,
|
||||
config.getint(account, "maxconnections"))
|
||||
config.getdefaultint(account, "maxconnections", 1))
|
||||
|
||||
threadutil.initexitnotify()
|
||||
t = ExitNotifyThread(target=syncmaster.syncitall,
|
||||
|
@ -50,7 +50,7 @@ def genmbnames():
|
||||
mblock.acquire()
|
||||
try:
|
||||
localeval = config.getlocaleval()
|
||||
if not config.getboolean("mbnames", "enabled"):
|
||||
if not config.getdefaultboolean("mbnames", "enabled", 0):
|
||||
return
|
||||
file = open(os.path.expanduser(config.get("mbnames", "filename")), "wt")
|
||||
file.write(localeval.eval(config.get("mbnames", "header")))
|
||||
|
@ -19,7 +19,7 @@
|
||||
from Blinkenlights import BlinkenBase
|
||||
from UIBase import UIBase
|
||||
from threading import *
|
||||
import thread, time
|
||||
import thread, time, sys, os
|
||||
from offlineimap import version, threadutil
|
||||
from offlineimap.threadutil import MultiLock
|
||||
|
||||
@ -309,6 +309,32 @@ class Blinkenlights(BlinkenBase, UIBase):
|
||||
s._msg(version.banner)
|
||||
s.inputhandler.set_bgchar(s.keypress)
|
||||
|
||||
def isusable(s):
|
||||
# Not a terminal? Can't use curses.
|
||||
if not sys.stdout.isatty() and sys.stdin.isatty():
|
||||
return 0
|
||||
|
||||
# No TERM specified? Can't use curses.
|
||||
try:
|
||||
if not len(os.environ['TERM']):
|
||||
return 0
|
||||
except: return 0
|
||||
|
||||
# ncurses doesn't want to start? Can't use curses.
|
||||
# This test is nasty because initscr() actually EXITS on error.
|
||||
# grr.
|
||||
|
||||
pid = os.fork()
|
||||
if pid:
|
||||
# parent
|
||||
return not os.WEXITSTATUS(os.waitpid(pid, 0)[1])
|
||||
else:
|
||||
# child
|
||||
curses.initscr()
|
||||
curses.endwin()
|
||||
# If we didn't die by here, indicate success.
|
||||
sys.exit(0)
|
||||
|
||||
def keypress(s, key):
|
||||
if key > 255:
|
||||
return
|
||||
|
@ -29,6 +29,8 @@ from Queue import Queue
|
||||
from UIBase import UIBase
|
||||
from offlineimap.ui.Blinkenlights import BlinkenBase
|
||||
|
||||
usabletest = None
|
||||
|
||||
class PasswordDialog:
|
||||
def __init__(self, accountname, config, master=None, errmsg = None):
|
||||
self.top = Toplevel(master)
|
||||
@ -148,12 +150,17 @@ class ThreadFrame(Frame):
|
||||
|
||||
class VerboseUI(UIBase):
|
||||
def isusable(s):
|
||||
global usabletest
|
||||
if usabletest != None:
|
||||
return usabletest
|
||||
|
||||
try:
|
||||
Tk().destroy()
|
||||
return 1
|
||||
usabletest = 1
|
||||
except TclError:
|
||||
return 0
|
||||
|
||||
usabletest = 0
|
||||
return usabletest
|
||||
|
||||
def _createTopWindow(self, doidlevac = 1):
|
||||
self.notdeleted = 1
|
||||
self.created = threading.Event()
|
||||
@ -414,20 +421,19 @@ class Blinkenlights(BlinkenBase, VerboseUI):
|
||||
if config.has_option('ui.Tk.Blinkenlights', 'fontsize'):
|
||||
s.fontsize = config.getint('ui.Tk.Blinkenlights', 'fontsize')
|
||||
|
||||
def isusable(s):
|
||||
return VerboseUI.isusable(s)
|
||||
|
||||
def _createTopWindow(self):
|
||||
VerboseUI._createTopWindow(self, 0)
|
||||
#self.top.resizable(width = 0, height = 0)
|
||||
self.top.configure(background = 'black', bd = 0)
|
||||
|
||||
widthmetric = tkFont.Font(family = self.fontfamily, size = self.fontsize).measure("0")
|
||||
self.loglines = 5
|
||||
if self.config.has_option("ui.Tk.Blinkenlights", "loglines"):
|
||||
self.loglines = self.config.getint("ui.Tk.Blinkenlights",
|
||||
"loglines")
|
||||
self.bufferlines = 500
|
||||
if self.config.has_option("ui.Tk.Blinkenlights", "bufferlines"):
|
||||
self.bufferlines = self.config.getint("ui.Tk.Blinkenlights",
|
||||
"bufferlines")
|
||||
self.loglines = self.config.getdefaultint("ui.Tk.Blinkenlights",
|
||||
"loglines", 5)
|
||||
self.bufferlines = self.config.getdefaultint("ui.Tk.Blinkenlights",
|
||||
"bufferlines", 500)
|
||||
self.text = ScrolledText(self.top, bg = 'black', #scrollbar = 'y',
|
||||
font = (self.fontfamily, self.fontsize),
|
||||
bd = 0, highlightthickness = 0, setgrid = 0,
|
||||
@ -457,8 +463,7 @@ class Blinkenlights(BlinkenBase, VerboseUI):
|
||||
s.top.config(menu = menubar)
|
||||
s.menubar = menubar
|
||||
s.text.see(END)
|
||||
if s.config.has_option("ui.Tk.Blinkenlights", "showlog") and \
|
||||
s.config.getboolean("ui.Tk.Blinkenlights", "showlog"):
|
||||
if s.config.getdefaultboolean("ui.Tk.Blinkenlights", "showlog", 1):
|
||||
s._togglelog()
|
||||
s.gettf().setcolor('red')
|
||||
s.top.resizable(width = 0, height = 0)
|
||||
|
@ -20,7 +20,8 @@ import offlineimap.ui
|
||||
import sys
|
||||
|
||||
def findUI(config, chosenUI=None):
|
||||
uistrlist = ['Tk.Blinkenlights', 'Tk.VerboseUI', 'TTY.TTYUI',
|
||||
uistrlist = ['Tk.Blinkenlights', 'Tk.VerboseUI',
|
||||
'Curses.Blinkenlights', 'TTY.TTYUI',
|
||||
'Noninteractive.Basic', 'Noninteractive.Quiet']
|
||||
namespace={}
|
||||
for ui in dir(offlineimap.ui):
|
||||
|
Loading…
Reference in New Issue
Block a user