Дружественные к какао URL - PullRequest
0 голосов
/ 11 декабря 2010

У меня есть кнопка плюс и минус под списком в моем приложении какао.Нажатие кнопки «плюс» открывает диалоговое окно выбора файла, а выбор файла / папки и нажатие на него кнопки «ОК» добавляет URL-адрес, возвращаемый диалоговым окном файла, в список.Этот метод работает хорошо, но не очень удобен для пользователя.Например, если я выберу папку внутри своего домашнего каталога, я получу URL-адрес, подобный следующему: file://localhost/Users/tristan/fighterjets Вместо тех «уродливых» URL-адресов, которые я храню в скрытом поле в NSTableView, могу ли я получить что-то более удобное для пользователя,как /Users/tristan/fighterjets?

Или, если возможно, даже что-то вроде в настройках Time Machine, где вы можете выбрать, какие файлы исключать - путь к файлу со значком.Я предполагаю, что для этого, вероятно, потребуется второй столбец перед путем и каким-то образом получить значок из системы.Я бы тоже хотел узнать это.

1 Ответ

2 голосов
/ 11 декабря 2010

Вы не должны показывать путь вообще.Это не считается удобным для пользователя ... Прежде всего, в зависимости от языковой среды, которую пользователь имеет в Системных настройках, имя файла может не совпадать с тем, что отображается в Finder.Например, Terminal.app на японском языке становится タ ー ミ ナ app .app.Вы всегда должны использовать -[NSFileManager displayNameAtPath:].

Сортировка файлов по именам файлов должна выполняться с использованием -[NSString localizedStandardCompare:].

Значок, связанный сфайл может быть получен через -[NSWorkspace iconForFile:].

Если вы показываете путь к гику, или в гиковом интерфейсе, подобном Time Machine, чтобы вы могли предположить, что пользователь знает,что означает ~/, используйте

NSURL*fileURL= ... you get a file:// URL somehow ...
NSString* path=[fileURL path]; // extract the file system path
NSString* abbreviatedPath=[path stringByAbbreviatingWithTildeInPath]; // this converts /User/user to ~

для получения дополнительной информации, см. эту ссылку .

Фактически, Cocoa имеет предварительно созданный элемент пользовательского интерфейса для отображения путиназывается NSPathControl, который выглядит как это .Поэтому я бы порекомендовал вам использовать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...