# # "$Id: file_chooser.py 315 2007-05-01 08:10:15Z andreasheld $" # # File chooser test program for pyFLTK the Python bindings # for the Fast Light Tool Kit (FLTK). # # FLTK copyright 1998-1999 by Bill Spitzak and others. # pyFLTK copyright 2003 by Andreas Held and others. # # This library is free software you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation either # version 2 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Library General Public License for more details. # # You should have received a copy of the GNU Library General Public # License along with this library if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 # USA. # # Please report all bugs and problems to "pyfltk-user@lists.sourceforge.net". # from fltk import * import sys # globals fc = None filter = None files = None relative = "" def close_callback(ptr): sys.exit(0) def create_callback(ptr): global fc fc.type(fc.type() ^ Fl_File_Chooser.CREATE) def dir_callback(ptr): global fc fc.type(fc.type() ^ Fl_File_Chooser.DIRECTORY) def fc_callback(ptr): global fc #fc = Fl_File_Chooser(ptr) filename = fc.value() print " filename = ", filename def multi_callback(ptr): global fc fc.type(fc.type() ^ Fl_File_Chooser.MULTI) def pdf_check(name, header, headerlen): return None def ps_check(name, header, headerlen): return None def show_callback(ptr): global fc global filter global relative global files #fc.show() if filter.value() != None: #fc.filter(filter.value()) fc.filter("*.*") fc.show() while fc.visible(): Fl.wait() count = fc.count() #print "count = ", count #if count > 1: # files.clear() # i = 0 # if fc.value(i) != None: # (status, relative) = fl_filename_relative(relative, 1024, fc.value(i)) # files.add(relative, None) # files.redraw() if count > 0: files.clear() i = 1; while i <= count: if fc.value(i) != None: (status,relative) = fl_filename_relative(relative, 1024, fc.value(i)) files.add(relative, Fl_File_Icon.find(fc.value(i),Fl_File_Icon.PLAIN)) i = i+1 files.redraw() # Make the file chooser... #Fl.scheme(0) Fl_File_Icon.load_system_icons() filter_string="*.*" fc = Fl_File_Chooser(".", "*", Fl_File_Chooser.SINGLE, "Fl_File_Chooser Test"); #fc = Fl_File_Chooser("", filter_string, Fl_File_Chooser.SINGLE, "Fl_File_Chooser Test") fc.callback(fc_callback) fc.preview(0) # Register the PS and PDF image types... #Fl_Shared_Image.add_handler(pdf_check) #Fl_Shared_Image.add_handler(ps_check) #make the main window window = Fl_Window(400, 200, "File Chooser Test") filter = Fl_Input(50, 10, 310, 25, "Filter:") filter.value(filter_string) #filter.value("PDF Files (*.pdf)\t" # "PostScript Files (*.ps)\t" # "Image Files (*.{bmp,gif,jpg,png})\t" # "C/C++ Source Files (*.{c,C,cc,cpp,cxx})") b1 = Fl_Button(365, 10, 25, 25, "Test") b1.labelcolor(FL_YELLOW); b1.callback(show_callback); icon = Fl_File_Icon.find(".", Fl_File_Icon.DIRECTORY) #print "icon = ", icon if icon != None: icon.label(b1); b2 = Fl_Light_Button(50, 45, 80, 25, "MULTI") b2.callback(multi_callback) b3 = Fl_Light_Button(140, 45, 90, 25, "CREATE") b3.callback(create_callback); b4 = Fl_Light_Button(240, 45, 115, 25, "DIRECTORY") b4.callback(dir_callback); files = Fl_File_Browser(50, 80, 340, 75, "Files:") files.align(FL_ALIGN_LEFT); b5 = Fl_Button(340, 165, 50, 25, "Close") b5.callback(close_callback) window.resizable(files) window.end() window.show() Fl.run()