diff options
Diffstat (limited to 'slime-0.11/ui_helpers.py')
-rw-r--r-- | slime-0.11/ui_helpers.py | 155 |
1 files changed, 155 insertions, 0 deletions
diff --git a/slime-0.11/ui_helpers.py b/slime-0.11/ui_helpers.py new file mode 100644 index 0000000..ad52f94 --- /dev/null +++ b/slime-0.11/ui_helpers.py @@ -0,0 +1,155 @@ +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("<Key-Return>", self.ok) + self.entry.bind("<Key-Escape>", 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("<Key-Return>", self.ok) + self.entry.bind("<Key-Escape>", 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() |