From: Hidetoshi NAGAI Date: 2010-02-14T09:04:27+09:00 Subject: Re: Ruby/TK: Versatile file-chooser dialogs? From: Axel Subject: Ruby/TK: Versatile file-chooser dialogs? Date: Sat, 13 Feb 2010 18:55:06 +0900 Message-ID: <467aed5c-69a4-4ca9-adf8-79467abe7c9b@b7g2000yqd.googlegroups.com> > Wishlist (for Windows; other OSs should be usable): About Tk.getOpenFile and getSaveFile: > * Favorite dirs and files > * Recent dirs and files For dir, :initialdir option may be useful. # And sometimes, :initialfile option may help you. > * Using filters (regexp would be nice) :filetypes option can control listed files in the dialog. Extension-style or glob-style of file patterns are available on its description. Please read the Tcl/Tk's manual about tk_getOpenFile. You can give a Ruby's array for a Tcl's list. e.g. Tcl's list ------------------------------------------ { {{Text Files} {.txt} } {{TCL Scripts} {.tcl} } {{C Source Files} {.c} TEXT} {{GIF Files} {.gif} } {{GIF Files} {} GIFF} {{All Files} * } } ------------------------------------------ ==> Ruby's array ------------------------------------------ [ ["Text Files", [".txt"] ], ["TCL Scripts", [".tcl"] ], ["C Source Files", [".c"], "TEXT"], ["GIF Files", [".gif"] ], ["GIF Files", [], "GIFF"], ["All Files", ["*"], ] ] ------------------------------------------ > * Having incremental search (i.e., limiting the displayed files/dirs > while typing into a search field) "File name" field of Tk.getOpenFile, getSaveFile accepts a glob pattern for filtering listed files. Incremental search is not available. But on Tk8.5, completion is available. > * Pasting and copying file path from/to clipboard e.g. ------------------------------------------ TkClipboard.append(Tk.getOpenFile) f = TkClipboard.get Tk.getOpenFile(:initialdir=>File.dirname(f),:initialfile=>File.basename(f)) ------------------------------------------ > * Fast Use a faster machine. ;-) > Nice to have: > * Font color dependent on File extension. You must write a script (or a class). Please check the usage of TkWindow#grab, TkWindow#grab_release, and TkVariable#wait or TkWindow#wait_destroy. -- Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)