]>
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", defaultDir
=os
.getcwd(),  
  41             defaultFile
="", wildcard
=wildcard
, style
=wx
.OPEN | wx
.MULTIPLE | wx
.CHANGE_DIR
 
  44         # Show the dialog and retrieve the user response. If it is the OK response,  
  46         if dlg
.ShowModal() == wx
.ID_OK
: 
  47             # This returns a Python list of files that were selected. 
  48             paths 
= dlg
.GetPaths() 
  50             self
.log
.WriteText('You selected %d files:' % len(paths
)) 
  53                 self
.log
.WriteText('           %s\n' % path
) 
  55         # Compare this with the debug above; did we change working dirs? 
  56         self
.log
.WriteText("CWD: %s\n" % os
.getcwd()) 
  58         # Destroy the dialog. Don't do this until you are done with it! 
  59         # BAD things can happen otherwise! 
  64     def OnButton2(self
, evt
): 
  65         self
.log
.WriteText("CWD: %s\n" % os
.getcwd()) 
  67         # Create the dialog. In this case the current directory is forced as the starting 
  68         # directory for the dialog, and no default file name is forced. This can easilly 
  69         # be changed in your program. This is an 'save' dialog. 
  71         # Unlike the 'open dialog' example found elsewhere, this example does NOT 
  72         # force the current working directory to change if the user chooses a different 
  73         # directory than the one initially set. 
  75             self
, message
="Save file as ...", defaultDir
=os
.getcwd(),  
  76             defaultFile
="", wildcard
=wildcard
, style
=wx
.SAVE
 
  79         # This sets the default filter that the user will initially see. Otherwise, 
  80         # the first filter in the list will be used by default. 
  83         # Show the dialog and retrieve the user response. If it is the OK response,  
  85         if dlg
.ShowModal() == wx
.ID_OK
: 
  87             self
.log
.WriteText('You selected "%s"' % path
) 
  89             # Normally, at this point you would save your data using the file and path 
  90             # data that the user provided to you, but since we didn't actually start 
  91             # with any data to work with, that would be difficult. 
  93             # The code to do so would be similar to this, assuming 'data' contains 
  94             # the data you want to save: 
  96             # fp = file(path, 'w') # Create file anew 
 100             # You might want to add some error checking :-) 
 103         # Note that the current working dir didn't change. This is good since 
 104         # that's the way we set it up. 
 105         self
.log
.WriteText("CWD: %s\n" % os
.getcwd()) 
 107         # Destroy the dialog. Don't do this until you are done with it! 
 108         # BAD things can happen otherwise! 
 113 #--------------------------------------------------------------------------- 
 116 def runTest(frame
, nb
, log
): 
 117     win 
= TestPanel(nb
, log
) 
 120 #--------------------------------------------------------------------------- 
 124 This class provides the file selection dialog. It incorporates OS-native features 
 125 depending on the OS in use, and can be used both for open and save operations.  
 126 The files displayed can be filtered by setting up a wildcard filter, multiple files 
 127 can be selected (open only), and files can be forced in a read-only mode. 
 129 There are two ways to get the results back from the dialog. GetFiles() returns only 
 130 the file names themselves, in a Python list. GetPaths() returns the full path and  
 131 filenames combined as a Python list. 
 136 if __name__ 
== '__main__': 
 139     run
.main(['', os
.path
.basename(sys
.argv
[0])] + sys
.argv
[1:])