Hur får man en fils position i Finder?

Tråden skapades och har fått 22 svar. Det senaste inlägget skrevs .
1

Förr har det gått att både hämta och sätta filpositioner genom att fråga File Manager efter Finder-info, som innehåller "location" som är filens position relativt sitt fönster.

Idag försökte jag göra det under 10.6, men det gick inte alls. Jag får bara ut en massa nollor. Jag gör ungefär som de gör här:

CocoaDev: FinderFlags

dvs tar fram en FSRef, anropar FSGetCatalogInfo med kFSCatInfoFinderInfo och lyfter ut FinderInfo ur den. Där finns typ och creator (4 tecken var) men resten är noll! Jag har även provat med de gamla anropen, en FSSpec och FSpGetFInfo, och det gick inte heller.

Under 10.4 får jag ut informationen för en del filer, men inte alla.

I och med att jag får ut type och creator så ser jag inget skäl att tro att det är något fel på min kod. Kan man inte inspektera och påverka Finderpositioner längre? Eller finns det något annat sätt? (Googla ger inget användbart, bara samma saker som jag redan använder.)

  • Medlem
  • Stockholm
  • 2011-09-29 12:30

Antar att "fulhacket" nedan är ointressant:
1. Nytt dokument i Textredigeraren
2. Format "Gör om till ren textfil"
3. Drag n droppa önskad fil i textdokumentet.

Ursprungligen av Solid:

Antar att "fulhacket" nedan är ointressant:
1. Nytt dokument i Textredigeraren
2. Format "Gör om till ren textfil"
3. Drag n droppa önskad fil i textdokumentet.

Om det är ointressant beror på vad det åstadkommer, men vad gör det för nytta i det här sammanhanget? Allt jag får är sökvägen, och det var inte det jag menade. (Sökvägen får jag lätt ut.) Jag talade om vilken position filikonen har i Finder-fönstret.

  • Medlem
  • Stockholm
  • 2011-09-29 14:25

Aaah. Fel av mig då. Hade aldrig hört ordet filposition tidigare och trodde det var sökvägen du var ute efter.

Ursprungligen av Solid:

Aaah. Fel av mig då. Hade aldrig hört ordet filposition tidigare och trodde det var sökvägen du var ute efter.

"Position i Finder" snarare, men jag förstår, det kan betyda lite olika saker. "Location" i FileInfo är det i alla fall - eller var det förut. Det vore väldigt trist om vi inte har tillgång till den informationen längre, speciellt som att Apple inte hanterar den speciellt bra heller. Fast det kanske är kopplat.

Jag kanske har lösningen själv, fast den är inte så kul. Man kan parsa DS_Store-filer, och hitta positioner där. Hur man får Finder att ta ändringen och inte skriva över med egna data är en annan sak... Jäkla Apple som gör buggiga program som tappar bort data för mig och sluta stödja bra sätt att fixa det.

  • Medlem
  • 2011-09-29 20:15

Om filen ligger på skrivbordet kan tu ta ut den med AS:

tell application "Finder"
	get desktop position of file (choose file)
end tell
Ursprungligen av Baron:

Om filen ligger på skrivbordet kan tu ta ut den med AS:

tell application "Finder"
	get desktop position of file (choose file)
end tell

Där ser man. Men kan man inte göra det för andra fönster? Skrivbordet är ju som vilket annat fönster som helst egentligen. Vad får man om man ber om "desktop position" för andra filer? Kan man sätta positionen också?

Och om Applescript kan det så måste det ju finnas underliggande APIer som kan.

  • Medlem
  • Stockholm
  • 2011-09-30 00:25
Ursprungligen av Ingemar Ragnemalm:

Där ser man. Men kan man inte göra det för andra fönster? Skrivbordet är ju som vilket annat fönster som helst egentligen. Vad får man om man ber om "desktop position" för andra filer? Kan man sätta positionen också?

Och om Applescript kan det så måste det ju finnas underliggande APIer som kan.

Om du har ett Finderfönster öppet:

Citat:

tell application "Finder"

set daWindow to Finder window 1
tell daWindow
set daItem to its item 1
get its position
end tell


end tell

Fungerar på Lion. Jag har för mig att jag läst någon stans att det fanns en bugg i SL, men jag vet inte om det var i början!

Vänligen, Ylan

  • Medlem
  • Stockholm
  • 2011-09-30 10:02
Ursprungligen av Ingemar Ragnemalm:

Där ser man. Men kan man inte göra det för andra fönster? Skrivbordet är ju som vilket annat fönster som helst egentligen. Vad får man om man ber om "desktop position" för andra filer? Kan man sätta positionen också?

Och om Applescript kan det så måste det ju finnas underliggande APIer som kan.

Allt Applescript kan göra är numer lätt åtkomligt via Coco-API:er.!

Vänligen, Ylan

Ursprungligen av Ylan:

Allt Applescript kan göra är numer lätt åtkomligt via Coco-API:er.!

Vänligen, Ylan

Ja, det skall det ju vara. (Mer eller mindre "lätt" men det är en annan sak.) Men just det här fanns i Carbon men verkar inte finnas i Cocoa.

  • Medlem
  • 2011-09-30 16:56
Ursprungligen av Ingemar Ragnemalm:

Där ser man. Men kan man inte göra det för andra fönster? /.../ Vad får man om man ber om "desktop position" för andra filer? /.../

"Missing value".

  • Medlem
  • Stockholm
  • 2011-09-30 00:27

Sorry!

Tror det är fönstrets position jag får!

Vänligen Ylan

  • Medlem
  • Stockholm
  • 2011-10-01 00:51

Men vad sägs om detta då?

tell application "Finder"
	activate
	set daWindow to make new Finder window
	set target of daWindow to path to home folder
	set current view of daWindow to icon view
	
	set daItem to item 5 of daWindow
	set daPosition to get position of daItem
	
end tell

Vänligen, Ylan

  • Medlem
  • 2011-10-01 01:10
Ursprungligen av Ylan:

Men vad sägs om detta då?

tell application "Finder"
	activate
	set daWindow to make new Finder window
	set target of daWindow to path to home folder
	set current view of daWindow to icon view
	
	set daItem to item 5 of daWindow
	set daPosition to get position of daItem
	
end tell

Vänligen, Ylan

Just det:

tell application "Finder"
	if current view of window 1 is icon view then
		set S to selection
		set P to position of item 1 of S
	else
		display dialog "Funkar bara i ikonläge."
	end if
end tell
Ursprungligen av Ylan:

Men vad sägs om detta då?

tell application "Finder"
	activate
	set daWindow to make new Finder window
	set target of daWindow to path to home folder
	set current view of daWindow to icon view
	
	set daItem to item 5 of daWindow
	set daPosition to get position of daItem
	
end tell

Vänligen, Ylan

Det var andra saker det. Det får jag prova. Det är ju märkligt om det finns AS-anrop men inga Carbon- eller Cocoa-anrop som fungerar, men det där borde jag kunna göra någonting med. Kanon!

  • Medlem
  • 2011-10-01 12:52

Jag lyckas inte ändra position.

Ursprungligen av Baron:

Jag lyckas inte ändra position.

Du menar att "set position of..." inte funkar? Det vore bra synd.

Jo, det funkar (10.6.8) men kanske inte exakt som man vill.

Koden

set position of item 1 of S to {x, y}

flyttar symbolen men avrundar till närmaste "grid". Ju mindre grid man valt i mappens visningsalternativ, ju exaktare kan man placera markerad fil. Dessutom verkar det som om man måste uppdatera Finder-fönstret för att ändringen ska synas i Finder.

edit: Jag drog lite för snabba slutsatser. Det verkar gå att flytta ganska exakt oberoende av grid size, men bara om det inte ligger andra filer i vägen. Ligger andra filer i vägen flyttar Finder dem automatiskt till närmaste lediga plats i nätet, och även den fil man flyttar verkar då rätta sig efter aktuell grid. Går kanske att komma runt, men icon view i OS X blir nog aldrig lika mindmapping-vänlig som i OS 9.

Senast redigerat 2011-10-01 16:19
  • Medlem
  • 2011-10-02 00:29

När jag gör det flyttar sig inga filer alls.

Konstigt. Har du provat att uppdatera finderfönstret genom att t.ex. backa/gå framåt el klicka på list view och sen tillbaka till icon view?

Ursprungligen av M. Sundbom:

Konstigt. Har du provat att uppdatera finderfönstret genom att t.ex. backa/gå framåt el klicka på list view och sen tillbaka till icon view?

Om jag skulle köra med "hårda" versionen, peta i DS_Store, då skulle man definitivt få göra så, provocera Finder att ta ändringen. Nej, jag har inte försökt det än.

  • Medlem
  • 2011-10-02 09:03

nä, så mycket har jag inte felsökt. Jag bara konstaterade att det inte fungerade.

1
Bevaka tråden