]> git.saurik.com Git - wxWidgets.git/blob - wxPython/demo/wxFileHistory.py
fixed extraneous scrolling when scrollbars are added/removed (patch 788026; bug 746618)
[wxWidgets.git] / wxPython / demo / wxFileHistory.py
1
2 from wxPython.wx import *
3 import os
4
5 #----------------------------------------------------------------------
6
7 text = """\
8 Right-click on the panel to get a menu. This menu will be managed by
9 a wxFileHistory object and so the files you select will automatically
10 be added to the end of the menu and will be selectable the next time
11 the menu is viewed. The filename selcted, either via the Open menu
12 item, or from the history, will be displayed in the log window below.
13 """
14
15 #----------------------------------------------------------------------
16
17 class TestPanel(wxPanel):
18 def __init__(self, parent, log):
19 self.log = log
20 wxPanel.__init__(self, parent, -1)
21 box = wxBoxSizer(wxVERTICAL)
22
23 # Make and layout the controls
24 fs = self.GetFont().GetPointSize()
25 bf = wxFont(fs+4, wxSWISS, wxNORMAL, wxBOLD)
26 nf = wxFont(fs+2, wxSWISS, wxNORMAL, wxNORMAL)
27
28 t = wxStaticText(self, -1, "wxFileHistory")
29 t.SetFont(bf)
30 box.Add(t, 0, wxCENTER|wxALL, 5)
31
32 box.Add(wxStaticLine(self, -1), 0, wxEXPAND)
33 box.Add(10,20)
34
35 t = wxStaticText(self, -1, text)
36 t.SetFont(nf)
37 box.Add(t, 0, wxCENTER|wxALL, 5)
38
39 self.SetSizer(box)
40 self.SetAutoLayout(True)
41
42 # Make a menu
43 self.menu = m = wxMenu()
44 m.Append(wxID_NEW, "&New")
45 m.Append(wxID_OPEN, "&Open...")
46 m.Append(wxID_CLOSE, "&Close")
47 m.Append(wxID_SAVE, "&Save")
48 m.Append(wxID_SAVEAS, "Save &as...")
49 m.Enable(wxID_NEW, False)
50 m.Enable(wxID_CLOSE, False)
51 m.Enable(wxID_SAVE, False)
52 m.Enable(wxID_SAVEAS, False)
53
54 # and a file history
55 self.filehistory = wxFileHistory()
56 self.filehistory.UseMenu(self.menu)
57
58 # and finally the event handler bindings
59 EVT_RIGHT_UP(self, self.OnRightClick)
60 EVT_MENU(self, wxID_OPEN, self.OnFileOpenDialog)
61 EVT_MENU_RANGE(self, wxID_FILE1, wxID_FILE9, self.OnFileHistory)
62 EVT_WINDOW_DESTROY(self, self.Cleanup)
63
64
65 def Cleanup(self, *args):
66 del self.filehistory
67 self.menu.Destroy()
68
69
70 def OnRightClick(self, evt):
71 self.PopupMenu(self.menu, evt.GetPosition())
72
73
74 def OnFileOpenDialog(self, evt):
75 dlg = wxFileDialog(self,
76 defaultDir = os.getcwd(),
77 wildcard = "All Files|*",
78 style = wxOPEN | wxCHANGE_DIR)
79 if dlg.ShowModal() == wxID_OK:
80 path = dlg.GetPath()
81 self.log.write("You selected %s\n" % path)
82
83 # add it to the history
84 self.filehistory.AddFileToHistory(path)
85
86 dlg.Destroy()
87
88
89 def OnFileHistory(self, evt):
90 # get the file based on the menu ID
91 fileNum = evt.GetId() - wxID_FILE1
92 path = self.filehistory.GetHistoryFile(fileNum)
93 self.log.write("You selected %s\n" % path)
94
95 # add it back to the history so it will be moved up the list
96 self.filehistory.AddFileToHistory(path)
97
98
99
100 #----------------------------------------------------------------------
101
102 def runTest(frame, nb, log):
103 win = TestPanel(nb, log)
104 return win
105
106 #----------------------------------------------------------------------
107
108
109
110 overview = """<html><body>
111 <h3>wxFileHistory</h3>
112
113 wxFileHistory encapsulates functionality to record the last few files
114 visited, and to allow the user to quickly load these files using the
115 list appended to a menu, such as the File menu.
116
117 </body></html>
118 """
119
120 if __name__ == '__main__':
121 import sys,os
122 import run
123 run.main(['', os.path.basename(sys.argv[0])])
124