]> granicus.if.org Git - python/commitdiff
Get rid of PopUp menu.
authorGuido van Rossum <guido@python.org>
Mon, 12 Oct 1998 23:57:48 +0000 (23:57 +0000)
committerGuido van Rossum <guido@python.org>
Mon, 12 Oct 1998 23:57:48 +0000 (23:57 +0000)
Create a simple Windows menu.  (Imperfect when Untitled windows exist.)
Add wakeup() method: deiconify, raise, focus.

Tools/idle/FileList.py

index 6ffeb300f9c5c4f1283e349ed2d1ccb8ddd7a5b2..f7a08e156dc65a8ae3ab9e0bf6950bca6674b2cd 100644 (file)
@@ -18,7 +18,10 @@ class MultiIOBinding(IOBinding):
 class MultiEditorWindow(EditorWindow):
 
     IOBinding = MultiIOBinding
-    from PopupMenu import PopupMenu
+    
+    # Override menu bar specs
+    menu_specs = EditorWindow.menu_specs[:]
+    menu_specs.insert(len(menu_specs)-1, ("windows", "Windows"))
 
     def __init__(self, flist, filename, key):
         self.flist = flist
@@ -28,7 +31,6 @@ class MultiEditorWindow(EditorWindow):
         EditorWindow.__init__(self, flist.root, filename)
         self.io.flist = flist
         self.io.edit = self
-        self.popup = self.PopupMenu(self.text, self.flist)
         self.text.bind("<<open-new-window>>", self.flist.new_callback)
         self.text.bind("<<close-all-windows>>", self.flist.close_all_callback)
 
@@ -38,10 +40,32 @@ class MultiEditorWindow(EditorWindow):
     def filename_change_hook(self):
         self.flist.filename_changed_edit(self)
         EditorWindow.filename_change_hook(self)
+    
+    def wakeup(self):
+        self.top.tkraise()
+        self.top.wm_deiconify()
+        self.text.focus_set()
+
+    def createmenubar(self):
+        EditorWindow.createmenubar(self)
+        self.menudict['windows'].configure(postcommand=self.postwindowsmenu)
+    
+    def postwindowsmenu(self):
+        wmenu = self.menudict['windows']
+        wmenu.delete(0, 'end')
+        self.fixedwindowsmenu(wmenu)
+        files = self.flist.dict.keys()
+        files.sort()
+        for file in files:
+            def openit(self=self, file=file):
+                self.flist.open(file)
+            wmenu.add_command(label=file, command=openit)
 
 
 class FileList:
-
+    
+    EditorWindow = MultiEditorWindow
+    
     def __init__(self, root):
         self.root = root
         self.dict = {}
@@ -62,9 +86,7 @@ class FileList:
             key = os.path.normcase(filename)
             if self.dict.has_key(key):
                 edit = self.dict[key]
-                edit.top.tkraise()
-                edit.top.wm_deiconify()
-                edit.text.focus_set()
+                edit.wakeup()
                 return edit
             if not os.path.exists(filename):
                 tkMessageBox.showinfo(
@@ -76,13 +98,11 @@ class FileList:
                 edit.io.loadfile(filename)
                 self.dict[key] = edit
                 self.inversedict[edit] = key
-                edit.top.tkraise()
-                edit.top.wm_deiconify()
-                edit.text.focus_set()
+                edit.wakeup()
                 return edit
         else:
             key = None
-        edit = MultiEditorWindow(self, filename, key)
+        edit = self.EditorWindow(self, filename, key)
         return edit
 
     def new_callback(self, event):