|
@@ -656,12 +656,17 @@ namespace Terminal.Gui {
|
|
|
X = Pos.Right (nameEntry) + 2,
|
|
|
Y = Pos.Top (nameEntry),
|
|
|
Width = Dim.Fill (1),
|
|
|
- Height = allowedTypes != null ? allowedTypes.Count + 1 : 1,
|
|
|
+ Height = SetComboBoxHeight (allowedTypes),
|
|
|
Text = allowedTypes?.Count > 0 ? allowedTypes [0] : string.Empty,
|
|
|
- ReadOnly = true
|
|
|
+ SelectedItem = allowedTypes?.Count > 0 ? 0 : -1,
|
|
|
+ ReadOnly = true,
|
|
|
+ HideDropdownListOnClick = true
|
|
|
};
|
|
|
cmbAllowedTypes.SetSource (allowedTypes ?? new List<string> ());
|
|
|
- cmbAllowedTypes.OpenSelectedItem += (e) => AllowedFileTypes = cmbAllowedTypes.Text.ToString ().Split (';');
|
|
|
+ cmbAllowedTypes.OpenSelectedItem += (e) => {
|
|
|
+ dirListView.AllowedFileTypes = cmbAllowedTypes.Text.ToString ().Split (';');
|
|
|
+ dirListView.Reload ();
|
|
|
+ };
|
|
|
Add (cmbAllowedTypes);
|
|
|
|
|
|
dirListView = new DirListView (this) {
|
|
@@ -673,7 +678,7 @@ namespace Terminal.Gui {
|
|
|
DirectoryPath = Path.GetFullPath (Environment.CurrentDirectory);
|
|
|
Add (dirListView);
|
|
|
|
|
|
- AllowedFileTypes = cmbAllowedTypes.Text.ToString ().Split (';');
|
|
|
+ AllowedFileTypes = allowedTypes?.Count > 0 ? allowedTypes?.ToArray () : null;
|
|
|
dirListView.DirectoryChanged = (dir) => { nameEntry.Text = ustring.Empty; dirEntry.Text = dir; };
|
|
|
dirListView.FileChanged = (file) => nameEntry.Text = file == ".." ? "" : file;
|
|
|
dirListView.SelectedChanged = (file) => nameEntry.Text = file.Item1 == ".." ? "" : file.Item1;
|
|
@@ -738,6 +743,11 @@ namespace Terminal.Gui {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private static int SetComboBoxHeight (List<string> allowedTypes)
|
|
|
+ {
|
|
|
+ return allowedTypes != null ? Math.Min (allowedTypes.Count + 1, 8) : 8;
|
|
|
+ }
|
|
|
+
|
|
|
internal bool canceled;
|
|
|
|
|
|
///<inheritdoc/>
|
|
@@ -821,13 +831,22 @@ namespace Terminal.Gui {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private string [] allowedFileTypes;
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// The array of filename extensions allowed, or null if all file extensions are allowed.
|
|
|
/// </summary>
|
|
|
/// <value>The allowed file types.</value>
|
|
|
public string [] AllowedFileTypes {
|
|
|
- get => dirListView.AllowedFileTypes;
|
|
|
- set => dirListView.AllowedFileTypes = value;
|
|
|
+ get => allowedFileTypes;
|
|
|
+ set {
|
|
|
+ allowedFileTypes = value;
|
|
|
+ var selected = cmbAllowedTypes.SelectedItem;
|
|
|
+ cmbAllowedTypes.SetSource (value);
|
|
|
+ cmbAllowedTypes.SelectedItem = selected > -1 ? selected : 0;
|
|
|
+ SetComboBoxHeight (value?.ToList ());
|
|
|
+ dirListView.AllowedFileTypes = value [cmbAllowedTypes.SelectedItem].Split (';');
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/// <summary>
|