1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- //
- // FileDialog.cs: File system dialogs for open and save
- //
- // TODO:
- // * Add directory selector
- // * Implement subclasses
- // * Figure out why message text does not show
- // * Remove the extra space when message does not show
- // * Use a line separator to show the file listing, so we can use same colors as the rest
- // * DirListView: Add mouse support
- using Terminal.Gui.Resources;
- namespace Terminal.Gui;
- /// <summary>The <see cref="SaveDialog"/> provides an interactive dialog box for users to pick a file to save.</summary>
- /// <remarks>
- /// <para>
- /// To use, create an instance of <see cref="SaveDialog"/>, and pass it to
- /// <see cref="Application.Run(Toplevel, Func{Exception, bool})"/>. This will run the dialog modally, and when this returns,
- /// the <see cref="FileName"/>property will contain the selected file name or null if the user canceled.
- /// </para>
- /// </remarks>
- public class SaveDialog : FileDialog
- {
- /// <summary>Initializes a new <see cref="SaveDialog"/>.</summary>
- public SaveDialog () { Style.OkButtonText = Strings.btnSave; }
- /// <summary>
- /// Gets the name of the file the user selected for saving, or null if the user canceled the
- /// <see cref="SaveDialog"/>.
- /// </summary>
- /// <value>The name of the file.</value>
- public string FileName => Canceled ? null : Path;
- /// <summary>Gets the default title for the <see cref="SaveDialog"/>.</summary>
- /// <returns></returns>
- protected override string GetDefaultTitle ()
- {
- List<string> titleParts = [Strings.fdSave]
- ;
- if (MustExist)
- {
- titleParts.Add (Strings.fdExisting);
- }
- switch (OpenMode)
- {
- case OpenMode.File:
- titleParts.Add (Strings.fdFile);
- break;
- case OpenMode.Directory:
- titleParts.Add (Strings.fdDirectory);
- break;
- }
- return string.Join (' ', titleParts);
- }
- }
|