(* ShowNeighbours 0.9 Skripti näyttää valitun kansion naapurikansiot. Harjoitelma AppleScriptin ja Finderin omituisuuksien seulomisessa. Tuottaa käyttäjälle ymmärrettävät tulokset riippumatta mm. valitun kansion läheisyydestä Työpöytään, joka sekoittaa herkästi hakemistopolkujen selvittelyn olemalla eri levyjen kesken yhteinen. Työpöytäkansion sijainti on skriptissä häivytetty kuten Finderissakin. Vaatimukset Mac OS Classic, AppleScript, standard additions. 2001 Tuomas Rosberg <vanhentunut> Lähdekoodi on ilmaista ja tarkoitettu yleiseen käyttöön (public domain). Sitä lainattessa kirjoittajan nimi on mainittava. Koodilla ei ole mitään takuuta, ja sen sisältävää ohjelmaa käyttävät toimivat omalla vastuullaan. *) global otherFolders, originalFolder on run choose folder with prompt "Valitse kansio, jonka naapurikansiot haetaan." set originalFolder to result if (originalFolder as string) does not contain "FindByContent" then -- I hope this is invisible after AppleScript v. 1.3.4. set otherFolders to {} tell application "Finder" try set parentFolder to container of originalFolder on error -- The original folder has no container, so it must be the Desktop Folder. end try end tell try set parentFolder to parentFolder as alias my listNeighbours(parentFolder) on error -- Container didn't coerse to an alias, so it must be desktop. my listDesktop() end try my showResult() else display dialog ¬ "Näkemiin." buttons "Kiitos" default button 1 end if end run on listNeighbours(parentFolder) list folder parentFolder without invisibles set namesList to result repeat with x in namesList set pathText to (parentFolder as string) & contents of x set anAlias to pathText as alias if last character of (anAlias as string) is ":" then tell application "Finder" to copy name of anAlias to aName if (anAlias as string) does not contain "Desktop" then --'list folder' regards desktop folder visible, so it is picked by hand. if anAlias is not originalFolder then set anEntry to {{name:aName, path:anAlias}} set otherFolders to otherFolders & anEntry end if end if end if end repeat end listNeighbours on listDesktop() tell application "Finder" set theList to every container in desktop repeat with aContainer in theList set aName to name of aContainer try set aContainer to aContainer as alias if aContainer is not originalFolder then set anEntry to {{name:aName, path:aContainer}} set otherFolders to otherFolders & anEntry end if on error -- It is the trash can. Leave it. end try end repeat end tell end listDesktop on showResult() set namesList to {} repeat with f in otherFolders set namesList to namesList & name in f end repeat choose from list namesList set chosenName to result if chosenName is not false then -- 'choose from list' returns false if cancelled. repeat with f in otherFolders if name in f contains chosenName then exit repeat end if end repeat set chosenFolder to path in f tell application "Finder" activate open chosenFolder end tell end if end showResult