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

system.verbs.apps.FinderMenu.commands.iconSorter

local (hdist = 100, vdist = 50);
local (ctperline = 3);
local (maxh, maxv);

on sortIcons (folder) {
	local (f);
	local (h = 0, v = 0);
	local (ct = 0);
	maxh = 0;
	maxv = 0;
	on bumppos () {
		if ++ct >= ctperline {
			h = 0;
			v = v + vdist;
			ct = 0}
		else {
			h = h + hdist};
		if h > maxh {
			maxh = h};
		if v > maxv {
			maxv = v};
		msg (maxh + ", " + maxv)};
	fileloop (f in folder) { <<do files first
		if not file.isFolder (f) {
			rollBeachball ();
			file.setIconPos (f, h, v);
			bumppos ()}};
	fileloop (f in folder) { <<do folders second
		if file.isFolder (f) {
			rollBeachball ();
			file.setIconPos (f, h, v);
			bumppos ()}}};
	<<fileloop (f in folder) <<dive into each folder
		<<if file.isFolder (f)
			<<sortIcons (f)

on visit (path) {
	local (folder = path);
	if not file.isFolder (path) {
		folder = file.folderFromPath (path)};
	Finder.close (folder);
	clock.waitSeconds (1);
	sortIcons (folder);
	clock.waitSeconds (1);
	Finder.open (folder);
	Finder.grow (folder, maxh + hdist, maxv + (2 * vdist));
	return (true)};
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.