Monday, November 08, 2010 at 12:01 AM.


on putFilesAway () {
	local (pFolder = "finderMenu.examples.putAwayPath");
	on visit (path) {
		<<we take every file (folders are ignored) and check it's creator
			<<then we find out the name of the creator app, & add a '' to
			<<the end of it's name. We then put the file into a folder named
			<<'[appName] '. If the folder doesn't exist, we make it. If the
			<<creating app doesn't exist, the file goes into the 'unknown' 
		if file.isFolder (path) or (file.type (path) == 'APPL') {
			return (true)};
		local {
			app = file.fileFromPath (file.findApplication (file.creator (path)));
			dest = finderMenu.examples.putAwayPath};
		if app == "" {
			app = "Unknown files"};
		dest = dest + app + " :";
		if ! file.exists (dest) { << if the destination folder doesn't exist, make it
			file.newFolder (dest)};
		<<We can run into problems here
			<<if the user tries to put away files that are on a different volume
			<<than the destination, they need to be copied, not moved.
		if file.volumeFromPath (path) == file.volumeFromPath (dest) {
			file.move (path, dest)}
		else {
			dest = dest + file.fileFromPath (path);
			file.copy (path, dest)};
		return (true)};
	bundle { << error checking
		<<does the ODB address exist?
		if ! defined (pFolder^) {
			new (stringType, pFolder)};
		<<does the path at pFolder^ exist?
		<<is it a folder ?
		if ! file.exists (pFolder^) or ! file.isFolder (pFolder^) {
			if ! file.getFolderDialog ("Please select the folder to use as your master file folder:", pFolder) {
				return (false)}}};
	FinderMenu.visitPaths (@visit)}

This listing is for code that runs in the OPML Editor environment. I created these listings because I wanted the search engines to index it, so that when I want to look up something in my codebase I don't have to use the much slower search functionality in my object database. Dave Winer.