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)
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()
def init_banner(s):
+ s.threadframes = {}
+ s.availablethreadframes = []
+ s.tflock = Lock()
s._createTopWindow()
s._msg(version.productname + " " + version.versionstr + ", " +\
version.copyright)
self.fontfamily = fontfamily
self.fontsize = fontsize
self.frame = Frame(self.top, background = 'black')
- self.frame.pack(side = BOTTOM, expand = 0, fill = X)
+ self.frame.pack(side = BOTTOM, expand = 1, fill = X)
self._createcanvas(self.frame)
self.label = Label(self.frame, text = accountname,
background = "black", foreground = "blue",
font = (self.fontfamily, self.fontsize))
- self.label.pack(side = LEFT)
+ self.label.grid(sticky = E, row = 0, column = 1)
def getnewthreadframe(s):
return LEDThreadFrame(s.canvas)
def _createcanvas(self, parent):
- c = LEDCanvas(parent, background = 'black', height = 20, bd = 0,
- highlightthickness = 0)
- c.setLEDCount(0)
- c.createLEDLock()
+ c = LEDFrame(parent)
self.canvas = c
- c.pack(side = BOTTOM, expand = 0, fill = X)
+ c.grid(sticky = E, row = 0, column = 0)
+ parent.grid_columnconfigure(1, weight = 1)
+ #c.pack(side = LEFT, expand = 0, fill = X)
def startsleep(s, sleepsecs):
- print 351
s.sleeping_abort = 0
s.button = Button(s.frame, text = "Sync now", command = s.syncnow,
background = "black", activebackground = "black",
activeforeground = "white",
- foreground = "blue",
- font = (s.fontfamily, s.fontsize), bd = 0,
- relief = FLAT)
- s.button.pack(side = LEFT)
+ foreground = "blue", highlightthickness = 0,
+ padx = 0, pady = 0,
+ font = (s.fontfamily, s.fontsize), borderwidth = 0,
+ relief = 'solid')
+ s.button.grid(sticky = E, row = 0, column = 2)
def syncnow(s):
- print 357
s.sleeping_abort = 1
def sleeping(s, sleepsecs, remainingsecs):
- print 360
if remainingsecs:
s.button.config(text = 'Sync now (%d:%02d remain)' % \
(remainingsecs / 60, remainingsecs % 60))
del s.button
return s.sleeping_abort
-class LEDCanvas(Canvas):
+class LEDFrame(Frame):
"""This holds the different lights."""
- def createLEDLock(self):
- self.ledlock = Lock()
- def acquireLEDLock(self):
- self.ledlock.acquire()
- def releaseLEDLock(self):
- self.ledlock.release()
- def setLEDCount(self, arg):
- self.ledcount = arg
- def getLEDCount(self):
- return self.ledcount
- def incLEDCount(self):
- self.ledcount += 1
+ def getnewobj(self):
+ retval = Canvas(self, background = 'black', height = 20, bd = 0,
+ highlightthickness = 0, width = 10)
+ retval.pack(side = LEFT, padx = 0, pady = 0, ipadx = 0, ipady = 0)
+ return retval
class LEDThreadFrame:
"""There is one of these for each little light."""
def __init__(self, master):
- self.canvas = master
+ self.canvas = master.getnewobj()
self.color = ''
- try:
- self.canvas.acquireLEDLock()
- startpos = 5 + self.canvas.getLEDCount() * 10
- self.canvas.incLEDCount()
- finally:
- self.canvas.releaseLEDLock()
- self.ovalid = self.canvas.create_oval(startpos, 5, startpos + 5,
- 10, fill = 'gray',
+ self.ovalid = self.canvas.create_oval(4, 4, 9,
+ 9, fill = 'gray',
outline = '#303030')
def setcolor(self, newcolor):
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,
menubar.add_command(label = "Exit", command = s.terminate)
s.top.config(menu = menubar)
s.menubar = menubar
- s.gettf().setcolor('red')
- s._msg(version.banner)
s.text.see(END)
- s.top.resizable(width = 0, height = 0)
- 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)
+ s._msg(version.banner)
def _togglelog(s):
if s.textenabled:
s.top.update()
else:
- s.text.pack(side = BOTTOM, expand = 1, fill = BOTH)
+ s.text.pack(side = TOP, expand = 1, fill = BOTH)
s.textenabled = 1
s.top.update()
s.top.geometry("")
BlinkenBase.sleep(s, sleepsecs)
def sleeping(s, sleepsecs, remainingsecs):
- print 503
return BlinkenBase.sleeping(s, sleepsecs, remainingsecs)
def _rescroll(s):