Let me begin by explaining what I don't like about the built-in functions...
The ui_get_path() function:
- Does not allow you to select the root folder of any drive.* (This was my big complaint.)
- Does not show hidden folders.
- Does not show available UNC drives.
- Is not resizeable.
- Requires 3 arguments even if they are blank.
- Clicking the "up one level" icon does some really strange things. (It sorta goes up one level but then switches the selected folder to the first subfolder regardless of which folder you were in initially. That's very confusing for users.)
*Many people have tried to tell me it can select the root folder but, once I've walked them through it, nobody has yet been able to actually get the function to return "C:". The best you can get is the first subfolder under C: - or any other drive letter. You can click on any drive in the drive selection box but it will ALWAYS return one of the subfolder names. The only way to get it to return the root folder is to put in a memory stick or external drive that doesn't have any subfolders.
The ui_browse_for_folder() function:
- Shows hidden folders. (With no option for not showing them.)
- Is not resizeable.
- Does not allow you to create a new folder.
- Does not have an "up one level" icon. (Although that isn't critical with the tree format.)
- Does not show the complete path. (You can figure it out by scrolling up and down the tree but there are some situations where that's rather painful compared to just looking at a field with the full path spelled out.
Selwyn wasn't willing to fix either one of them and and said I could build my own using an xdialog so here it is. It's not as "clean" as I'd like it (I'd like it to have a tree format like the ui_browse_for_folder() function) but it has all the features I wanted and I think it's better than ui_get_path() - at least my users like it better.
This is a replacement for ui_get_path. It can be used as a direct replacement but also has a few extra features:
- No arguments are necessary. (But additional arguments are available for the additional features below.)
- Allows you to select the root folder of any drive.
- The dialog is sizable - and the last size and position are saved.
- There is a Description argument that allows you to display text at the top to assist the user.
- The default for drive choices shows all available drives including UNC drives. (I'm thinking about adding an option to hide the UNC drives.)
- The Default_Path can be blank to use the 'datapath'. (In my 'lingo', 'datapath' is where the main data is stored - locally on one computer or on the server if using a workstation.)
- The Default_Path can be "last saved" to allow the user to save any selected path as the standard default.
- The Default_Path can be "last selected" to always use the last selected path as the default for the next selection.
- Showing 'hidden' files and folders is optional. The default shows them.
- The font face can be set to Arial, Tahoma, or MS Sans Serif.
- The font size can be set up to 16.
- The 'Create New Folder' icon can be hidden.
- If no subfolders are found when double-clicking a folder name, there is a "short_xdialog" that appears for just a second then disappears - no more need to close the warning message.
I was thinking about making it an aex file since I put a lot of time into creating the code but decided to post the whole thing so it would be easier for people to include in their Code tab when distributing generic apps. And, since it's 529 lines long, I've just attached it in a text file.
If you find any problems with it, please let me know.
The ui_get_path() function:
- Does not allow you to select the root folder of any drive.* (This was my big complaint.)
- Does not show hidden folders.
- Does not show available UNC drives.
- Is not resizeable.
- Requires 3 arguments even if they are blank.
- Clicking the "up one level" icon does some really strange things. (It sorta goes up one level but then switches the selected folder to the first subfolder regardless of which folder you were in initially. That's very confusing for users.)
*Many people have tried to tell me it can select the root folder but, once I've walked them through it, nobody has yet been able to actually get the function to return "C:". The best you can get is the first subfolder under C: - or any other drive letter. You can click on any drive in the drive selection box but it will ALWAYS return one of the subfolder names. The only way to get it to return the root folder is to put in a memory stick or external drive that doesn't have any subfolders.
The ui_browse_for_folder() function:
- Shows hidden folders. (With no option for not showing them.)
- Is not resizeable.
- Does not allow you to create a new folder.
- Does not have an "up one level" icon. (Although that isn't critical with the tree format.)
- Does not show the complete path. (You can figure it out by scrolling up and down the tree but there are some situations where that's rather painful compared to just looking at a field with the full path spelled out.
Selwyn wasn't willing to fix either one of them and and said I could build my own using an xdialog so here it is. It's not as "clean" as I'd like it (I'd like it to have a tree format like the ui_browse_for_folder() function) but it has all the features I wanted and I think it's better than ui_get_path() - at least my users like it better.
This is a replacement for ui_get_path. It can be used as a direct replacement but also has a few extra features:
- No arguments are necessary. (But additional arguments are available for the additional features below.)
- Allows you to select the root folder of any drive.
- The dialog is sizable - and the last size and position are saved.
- There is a Description argument that allows you to display text at the top to assist the user.
- The default for drive choices shows all available drives including UNC drives. (I'm thinking about adding an option to hide the UNC drives.)
- The Default_Path can be blank to use the 'datapath'. (In my 'lingo', 'datapath' is where the main data is stored - locally on one computer or on the server if using a workstation.)
- The Default_Path can be "last saved" to allow the user to save any selected path as the standard default.
- The Default_Path can be "last selected" to always use the last selected path as the default for the next selection.
- Showing 'hidden' files and folders is optional. The default shows them.
- The font face can be set to Arial, Tahoma, or MS Sans Serif.
- The font size can be set up to 16.
- The 'Create New Folder' icon can be hidden.
- If no subfolders are found when double-clicking a folder name, there is a "short_xdialog" that appears for just a second then disappears - no more need to close the warning message.
I was thinking about making it an aex file since I put a lot of time into creating the code but decided to post the whole thing so it would be easier for people to include in their Code tab when distributing generic apps. And, since it's 529 lines long, I've just attached it in a text file.
If you find any problems with it, please let me know.
Comment