NSSavePanel には、保存パネルのディレクトリとファイル名を事前設定できる runModalForDirectory:file: メソッドがありました。しかし、それは 10.6 で廃止されました。
NSSavePanel を作成するとき、非推奨の方法を使用せずにファイル名を事前に設定するにはどうすればよいですか?
setNameFieldStringValue:
保存パネルを実行する前に、10.6 で追加されたメソッドを使用します。デフォルトのディレクトリも設定したい場合はsetDirectoryURL:
、10.6 で追加されたメソッドが必要になります。
NSString *defaultDirectoryPath, *defaultName;
NSSavePanel *savePanel;
...
[savePanel setNameFieldStringValue:defaultName];
[savePanel setDirectoryURL:[NSURL fileURLWithPath:defaultDirectoryPath]];
[savePanel runModal];
最初は気付かなかった NSSavePanel#setNameFieldStringValue というファイル名を設定するメソッドがあります。
以下は macruby 構文の完全な例です。
def run_save_settings_dialog(sender)
dialog = NSSavePanel.savePanel
dialog.title = "Save Settings"
dialog.canCreateDirectories = true
dialog.showsHiddenFiles = true
dialog.nameFieldStringValue = "MyFile"
dialog.canChooseFiles = true
dialog.canChooseDirectories = false
dialog.allowsMultipleSelection = false
dialog.setDirectoryURL NSURL.fileURLWithPath("some/path")
if dialog.runModal == NSFileHandlingPanelOKButton
save_settings(dialog.URL)
end
end
def save_settings(file_url)
File.open(file_url.path, 'w') {|f| f.write "Stuff" }
end