]> granicus.if.org Git - python/commitdiff
Don't use tktools, dummy! Reworded test message slightly.
authorGuido van Rossum <guido@python.org>
Sun, 21 Jul 1996 02:20:06 +0000 (02:20 +0000)
committerGuido van Rossum <guido@python.org>
Sun, 21 Jul 1996 02:20:06 +0000 (02:20 +0000)
Lib/lib-tk/SimpleDialog.py
Lib/tkinter/SimpleDialog.py

index d82773d902954cc68c6932591a95663b8196890a..7354779c8058f9f98dbfb214d6eb97b122ff8082 100644 (file)
@@ -2,7 +2,6 @@
 
 
 from Tkinter import *
-import tktools
 
 
 class SimpleDialog:
@@ -10,7 +9,13 @@ class SimpleDialog:
     def __init__(self, master,
                 text='', buttons=[], default=None, cancel=None,
                 title=None, class_=None):
-       self.root = tktools.make_toplevel(master, title=title, class_=class_)
+       if class_:
+           self.root = Toplevel(master, class_=class_)
+       else:
+           self.root = Toplevel(master)
+       if title:
+           self.root.title(title)
+           self.root.iconname(title)
        self.message = Message(self.root, text=text, aspect=400)
        self.message.pack(expand=1, fill=BOTH)
        self.frame = Frame(self.root)
@@ -27,7 +32,28 @@ class SimpleDialog:
                b.config(relief=RIDGE, borderwidth=8)
            b.pack(side=LEFT, fill=BOTH, expand=1)
        self.root.protocol('WM_DELETE_WINDOW', self.wm_delete_window)
-       tktools.set_transient(self.root, master)
+       self._set_transient(master)
+
+    def _set_transient(self, master, relx=0.5, rely=0.3):
+       widget = self.root
+       widget.withdraw() # Remain invisible while we figure out the geometry
+       widget.transient(master)
+       widget.update_idletasks() # Actualize geometry information
+       if master.winfo_ismapped():
+           m_width = master.winfo_width()
+           m_height = master.winfo_height()
+           m_x = master.winfo_rootx()
+           m_y = master.winfo_rooty()
+       else:
+           m_width = master.winfo_screenwidth()
+           m_height = master.winfo_screenheight()
+           m_x = m_y = 0
+       w_width = widget.winfo_reqwidth()
+       w_height = widget.winfo_reqheight()
+       x = m_x + (m_width - w_width) * relx
+       y = m_y + (m_height - w_height) * rely
+       widget.geometry("+%d+%d" % (x, y))
+       widget.deiconify() # Become visible at the desired location
 
     def go(self):
        self.root.grab_set()
@@ -58,8 +84,8 @@ def test():
        d = SimpleDialog(root,
                         text="This is a test dialog.  "
                              "Would this have been an actual dialog, "
-                             "the buttons below would have glowed "
-                             "in soft pink light. "
+                             "the buttons below would have been glowing "
+                             "in soft pink light.\n"
                              "Do you believe this?",
                         buttons=["Yes", "No", "Cancel"],
                         default=0,
index d82773d902954cc68c6932591a95663b8196890a..7354779c8058f9f98dbfb214d6eb97b122ff8082 100755 (executable)
@@ -2,7 +2,6 @@
 
 
 from Tkinter import *
-import tktools
 
 
 class SimpleDialog:
@@ -10,7 +9,13 @@ class SimpleDialog:
     def __init__(self, master,
                 text='', buttons=[], default=None, cancel=None,
                 title=None, class_=None):
-       self.root = tktools.make_toplevel(master, title=title, class_=class_)
+       if class_:
+           self.root = Toplevel(master, class_=class_)
+       else:
+           self.root = Toplevel(master)
+       if title:
+           self.root.title(title)
+           self.root.iconname(title)
        self.message = Message(self.root, text=text, aspect=400)
        self.message.pack(expand=1, fill=BOTH)
        self.frame = Frame(self.root)
@@ -27,7 +32,28 @@ class SimpleDialog:
                b.config(relief=RIDGE, borderwidth=8)
            b.pack(side=LEFT, fill=BOTH, expand=1)
        self.root.protocol('WM_DELETE_WINDOW', self.wm_delete_window)
-       tktools.set_transient(self.root, master)
+       self._set_transient(master)
+
+    def _set_transient(self, master, relx=0.5, rely=0.3):
+       widget = self.root
+       widget.withdraw() # Remain invisible while we figure out the geometry
+       widget.transient(master)
+       widget.update_idletasks() # Actualize geometry information
+       if master.winfo_ismapped():
+           m_width = master.winfo_width()
+           m_height = master.winfo_height()
+           m_x = master.winfo_rootx()
+           m_y = master.winfo_rooty()
+       else:
+           m_width = master.winfo_screenwidth()
+           m_height = master.winfo_screenheight()
+           m_x = m_y = 0
+       w_width = widget.winfo_reqwidth()
+       w_height = widget.winfo_reqheight()
+       x = m_x + (m_width - w_width) * relx
+       y = m_y + (m_height - w_height) * rely
+       widget.geometry("+%d+%d" % (x, y))
+       widget.deiconify() # Become visible at the desired location
 
     def go(self):
        self.root.grab_set()
@@ -58,8 +84,8 @@ def test():
        d = SimpleDialog(root,
                         text="This is a test dialog.  "
                              "Would this have been an actual dialog, "
-                             "the buttons below would have glowed "
-                             "in soft pink light. "
+                             "the buttons below would have been glowing "
+                             "in soft pink light.\n"
                              "Do you believe this?",
                         buttons=["Yes", "No", "Cancel"],
                         default=0,