using System;
using System.Collections.Generic;
namespace TriLibCore.SFB
{
/// Represents a series of methods to operate platform-specific file pickers.
/// File picker return type.
public interface IStandaloneFileBrowser
{
/// Opens the platform-specific file selection panel.
/// The dialog title.
/// The initial file panel directory.
/// The allowed extensions.
/// Pass true to enable multi-selection.
/// The list of selected files.
IList OpenFilePanel(string title, string directory, ExtensionFilter[] extensions, bool multiselect);
/// Opens the platform-specific folder selection panel.
/// The dialog title.
/// The initial file panel directory.
/// Pass true to enable multi-selection.
/// The list of selected folders.
IList OpenFolderPanel(string title, string directory, bool multiselect);
/// Opens the platform-specific file save panel.
/// The dialog title.
/// The initial file panel directory.
/// The initial filename.
/// The allowed extensions.
/// The saved file.
T SaveFilePanel(string title, string directory, string defaultName, ExtensionFilter[] extensions);
/// Opens the platform-specific file selection panel Asynchronously.
/// The dialog title.
/// The initial file panel directory.
/// The allowed extensions.
/// Pass true to enable multi-selection.
/// The Method to call when the user selects or cancel the file selection dialog.
void OpenFilePanelAsync(string title, string directory, ExtensionFilter[] extensions, bool multiselect, Action> cb);
/// Opens the platform-specific folder selection panel Asynchronously.
/// The dialog title.
/// The initial file panel directory.
/// Pass true to enable multi-selection.
/// The Method to call when the user selects or cancel the file selection dialog.
void OpenFolderPanelAsync(string title, string directory, bool multiselect, Action> cb);
/// Opens the platform-specific file save panel Asynchronously.
/// The dialog title.
/// The initial file panel directory.
/// The initial filename.
/// The allowed extensions.
/// The Method to call when the user selects or cancel the file selection dialog.
void SaveFilePanelAsync(string title, string directory, string defaultName, ExtensionFilter[] extensions, Action cb);
}
}