Monday, November 08, 2010 at 12:01 AM.
system.verbs.apps.FinderMenu.commands.oldstuff.typeCreatorDialog
on doDialog (path) {
local { <<names of the fields of the dialog
okitem = 1;
cancelitem = 2;
promptitem = 3;
typeitem = 4;
creatoritem = 5};
local { <<original values of each of the editable fields
fname = file.fileFromPath (path);
type = file.type (path);
creator = file.creator (path)};
on copytodialog () { <<copy info about "path" into the dialog
dialog.setvalue (promptitem, "File “" + fname + "”:");
dialog.setvalue (typeitem, type);
dialog.setvalue (creatoritem, creator)};
on copyfromdialog () { <<copy info about "path" from the dialog to the file
local (s);
on check4chars (s, msg) {
if sizeof (s) == 4 {
return (true)}
else {
msg = "File " + msg + " must be exactly four characters long. “";
msg = msg + s + "” has " + sizeof (s) + " characters.";
dialog.alert (msg);
return (false)}}; <<don't get rid of dialog
s = dialog.getvalue (typeitem);
if s != string (type) {
if not check4chars (s, "type") {
<<dialog.setvalue (typeitem, type) <<restore to original value
return (false)}; <<don't get rid of dialog
file.setType (path, s)};
s = dialog.getvalue (creatoritem);
if s != string (creator) {
if not check4chars (s, "type") {
<<dialog.setvalue (creatoritem, creator) <<restore to original value
return (false)}; <<don't get rid of dialog
file.setCreator (path, s)};
return (true)};
on itemhit (item) {
case item {
-1 {
copytodialog ();
return (true)};
okitem {
if copyfromdialog () {
return (false)}};
cancelitem {
return (false)}}
else {
return (true)}}; <<keep going if item isn't OK or Cancel
if not file.exists (path) {
scripterror ("File " + fname + " doesn't exist.")};
if not file.isFolder (path) { <<only works for files, not folders
dialog.run (dlogResource, okitem, @itemhit)};
return (true)};
<<local (dlogResource = dialog.loadFromFile ("Creator & Type Dialog.DW"))
local (dlogResource = findermenu.commands.typeDialog.copyToResourceFork ());
FinderMenu.visitPaths (@doDialog)
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.