]>
git.saurik.com Git - wxWidgets.git/blob - wxPython/demo/FileDialog.py
   5 #--------------------------------------------------------------------------- 
   7 # This is how you pre-establish a file filter so that the dialog 
   8 # only shows the extension(s) you want it to. 
   9 wildcard 
= "Python source (*.py)|*.py|"     \
 
  10            "Compiled Python (*.pyc)|*.pyc|" \
 
  11            "SPAM files (*.spam)|*.spam|"    \
 
  12            "Egg file (*.egg)|*.egg|"        \
 
  15 #--------------------------------------------------------------------------- 
  17 class TestPanel(wx
.Panel
): 
  18     def __init__(self
, parent
, log
): 
  20         wx
.Panel
.__init
__(self
, parent
, -1) 
  22         b 
= wx
.Button(self
, -1, "Create and Show an OPEN FileDialog", (50,50)) 
  23         self
.Bind(wx
.EVT_BUTTON
, self
.OnButton
, b
) 
  25         b 
= wx
.Button(self
, -1, "Create and Show a SAVE FileDialog", (50,90)) 
  26         self
.Bind(wx
.EVT_BUTTON
, self
.OnButton2
, b
) 
  29     def OnButton(self
, evt
): 
  30         self
.log
.WriteText("CWD: %s\n" % os
.getcwd()) 
  32         # Create the dialog. In this case the current directory is forced as the starting 
  33         # directory for the dialog, and no default file name is forced. This can easilly 
  34         # be changed in your program. This is an 'open' dialog, and allows multitple 
  35         # file selections as well. 
  37         # Finally, if the directory is changed in the process of getting files, this 
  38         # dialog is set up to change the current working directory to the path chosen. 
  40             self
, message
="Choose a file", 
  41             defaultDir
=os
.getcwd(),  
  44             style
=wx
.OPEN | wx
.MULTIPLE | wx
.CHANGE_DIR
 
  47         # Show the dialog and retrieve the user response. If it is the OK response,  
  49         if dlg
.ShowModal() == wx
.ID_OK
: 
  50             # This returns a Python list of files that were selected. 
  51             paths 
= dlg
.GetPaths() 
  53             self
.log
.WriteText('You selected %d files:' % len(paths
)) 
  56                 self
.log
.WriteText('           %s\n' % path
) 
  58         # Compare this with the debug above; did we change working dirs? 
  59         self
.log
.WriteText("CWD: %s\n" % os
.getcwd()) 
  61         # Destroy the dialog. Don't do this until you are done with it! 
  62         # BAD things can happen otherwise! 
  67     def OnButton2(self
, evt
): 
  68         self
.log
.WriteText("CWD: %s\n" % os
.getcwd()) 
  70         # Create the dialog. In this case the current directory is forced as the starting 
  71         # directory for the dialog, and no default file name is forced. This can easilly 
  72         # be changed in your program. This is an 'save' dialog. 
  74         # Unlike the 'open dialog' example found elsewhere, this example does NOT 
  75         # force the current working directory to change if the user chooses a different 
  76         # directory than the one initially set. 
  78             self
, message
="Save file as ...", defaultDir
=os
.getcwd(),  
  79             defaultFile
="", wildcard
=wildcard
, style
=wx
.SAVE
 
  82         # This sets the default filter that the user will initially see. Otherwise, 
  83         # the first filter in the list will be used by default. 
  86         # Show the dialog and retrieve the user response. If it is the OK response,  
  88         if dlg
.ShowModal() == wx
.ID_OK
: 
  90             self
.log
.WriteText('You selected "%s"' % path
) 
  92             # Normally, at this point you would save your data using the file and path 
  93             # data that the user provided to you, but since we didn't actually start 
  94             # with any data to work with, that would be difficult. 
  96             # The code to do so would be similar to this, assuming 'data' contains 
  97             # the data you want to save: 
  99             # fp = file(path, 'w') # Create file anew 
 103             # You might want to add some error checking :-) 
 106         # Note that the current working dir didn't change. This is good since 
 107         # that's the way we set it up. 
 108         self
.log
.WriteText("CWD: %s\n" % os
.getcwd()) 
 110         # Destroy the dialog. Don't do this until you are done with it! 
 111         # BAD things can happen otherwise! 
 116 #--------------------------------------------------------------------------- 
 119 def runTest(frame
, nb
, log
): 
 120     win 
= TestPanel(nb
, log
) 
 123 #--------------------------------------------------------------------------- 
 127 This class provides the file selection dialog. It incorporates OS-native features 
 128 depending on the OS in use, and can be used both for open and save operations.  
 129 The files displayed can be filtered by setting up a wildcard filter, multiple files 
 130 can be selected (open only), and files can be forced in a read-only mode. 
 132 There are two ways to get the results back from the dialog. GetFiles() returns only 
 133 the file names themselves, in a Python list. GetPaths() returns the full path and  
 134 filenames combined as a Python list. 
 139 if __name__ 
== '__main__': 
 142     run
.main(['', os
.path
.basename(sys
.argv
[0])] + sys
.argv
[1:])