from Tkinter import * import Shells, ButtonBox from ui_config import config class CommandButton(Button): def __init__(self, master, text, command): Button.__init__(self, master=master, text=text, font=config["command-font"], padx=1, pady=0, command=command) self.pack(side=LEFT) class ModalDialog(Shells.Modal): def terminate(self): Shells.Modal.terminate(self) self.top.update() def show(self): apply(Shells.NonModal.show, (self,)) self.initFocus() self.top.waitvar(self.waitVar) return self.result def initFocus(self): pass class PgpUsernameDialog(ModalDialog): def __init__(self, infrontof, default_value): ModalDialog.__init__(self, infrontof) self.top.title("Enter PGP username") self.top.iconname("Enter PGP username") Label(self.top, text="Please enter the PGP username").pack() self.entry = Entry(self.top, width=40) self.entry.pack() self.entry.bind("", self.ok) self.entry.bind("", self.cancel) b = ButtonBox.T(self.top, ("OK", self.ok), ("Cancel", self.cancel)) self.default_value = default_value def ok(self, event=None): self.terminate() self.result = self.entry.get() def cancel(self, event=None): self.terminate() self.result = None def initControls(self): self.entry.delete('0', 'end') self.entry.insert('0', self.default_value) def initFocus(self): self.entry.focus_set() class PasswordDialog(ModalDialog): def __init__(self, infrontof): ModalDialog.__init__(self, infrontof) self.top.title("Enter PGP Passphrase") self.top.iconname("Enter PGP Passphrase") Label(self.top, text="Please enter the PGP passphrase").pack() self.entry = Entry(self.top, show="*", width=40) self.entry.pack() self.entry.bind("", self.ok) self.entry.bind("", self.cancel) b = ButtonBox.T(self.top, ("OK", self.ok), ("Cancel", self.cancel)) def ok(self, event=None): self.terminate() self.result = self.entry.get() def cancel(self, event=None): self.terminate() self.result = None def initControls(self): self.entry.delete('0', 'end') def initFocus(self): self.entry.focus_set() class YesNoDialog(ModalDialog): def __init__(self, infrontof, question, title=None): ModalDialog.__init__(self, infrontof) if not title: title = question self.top.title(title) self.top.iconname(title) Label(self.top, text=question).pack() b = ButtonBox.T(self.top, ("OK", self.ok), ("Cancel", self.cancel)) def ok(self): self.result = 1 self.terminate() def cancel(self): self.result = 0 self.terminate() class NonModalDialog(Shells.NonModal): def terminate(self): Shells.NonModal.terminate(self) self.top.update() class InfoBox(NonModalDialog): def __init__(self, infrontof, title, text): NonModalDialog.__init__(self, infrontof) self.top.title(title) self.top.iconname(title) Message(self.top, text=text, width=250).pack() Button(self.top, text="Dismiss", command=self.terminate).pack() class ErrorBox(InfoBox): def __init__(self, infrontof, title, text): InfoBox.__init__(self, infrontof, "Error: " + title, text) class FolderInfoEditor(ModalDialog): def __init__(self, infrontof, foldername, is_inbox_now): ModalDialog.__init__(self, infrontof) self.top.title("Folder settings") self.top.iconname("Folder settings") Label(self.top, text="Settings for folder %s" % foldername).pack() frame = Frame(self.top) frame.pack(fill=X) Label(frame, text="Scan for new messages?").pack(side=LEFT) self.var = BooleanVar() self.var.set(is_inbox_now) self.is_inbox = Checkbutton(frame, variable=self.var, command=self.setOnOffText) self.is_inbox.pack(side=LEFT) frame = Frame(self.top) frame.pack(fill=X) Button(frame, text="OK", command=self.ok).pack(side=LEFT) Button(frame, text="Cancel", command=self.cancel).pack(side=LEFT) self.setOnOffText() def setOnOffText(self): if self.var.get() == 0: text = "No" else: text = "Yes" self.is_inbox.config(text=text) def ok(self): self.result = self.var.get() self.terminate() def cancel(self): self.result = None self.terminate()