this fixes the popups, but GTK file dialogs are case-sensitive... which totally messes up our associations

This commit is contained in:
Michael Becker 2019-12-02 07:54:51 -05:00
parent 3dc90109c0
commit d80a8281cc
No known key found for this signature in database
GPG Key ID: 389DFF5D73781A12

View File

@ -24,6 +24,8 @@ using MBS.Framework.UserInterface.Layouts;
using MBS.Framework.UserInterface.Controls.FileBrowser;
using MBS.Framework.UserInterface.Controls;
using System.Collections.Generic;
using MBS.Framework.UserInterface.Dialogs;
using System.Text;
namespace UniversalEditor.UserInterface.Controls
{
@ -51,9 +53,9 @@ namespace UniversalEditor.UserInterface.Controls
this.Controls.Add (_Browser, new BoxLayout.Constraints (true, true));
cboObjectModel = new GenericBrowserButton<ObjectModel, ObjectModelReference> ();
// cboObjectModel.SelectedObject = ObjectModel;
cboObjectModel.Text = "Object _model: (not selected)";
cboObjectModel.SelectedObject = ObjectModel;
cboObjectModel.SelectionChanged += cboObjectModel_SelectionChanged;
cboObjectModel.Label = "Object _model: ";
ObjectModelReference[] omrs = new ObjectModelReference[0];
@ -88,7 +90,8 @@ namespace UniversalEditor.UserInterface.Controls
}
cboDataFormat = new GenericBrowserButton<DataFormat, DataFormatReference> ();
cboDataFormat.Text = "Data _format: (not selected)";
cboDataFormat.SelectionChanged += cboDataFormat_SelectionChanged;
cboDataFormat.Label = "Data _format: ";
DataFormatReference[] dfrs = new DataFormatReference[0];
if (Mode == FileBrowserMode.Save)
@ -149,6 +152,38 @@ namespace UniversalEditor.UserInterface.Controls
this.Controls.Add (_Table, new BoxLayout.Constraints (false, false));
}
void cboDataFormat_SelectionChanged(object sender, EventArgs e)
{
_Browser.FileNameFilters.Clear();
Association[] assocs = Association.FromCriteria(new AssociationCriteria { ObjectModel = cboObjectModel.SelectedObject.MakeReference(), DataFormat = cboDataFormat.SelectedObject.MakeReference() });
for (int i = 0; i < assocs.Length; i++)
{
for (int j = 0; j < assocs[i].Filters.Count; j++)
{
FileDialogFileNameFilter filter = new FileDialogFileNameFilter();
filter.Title = assocs[i].Filters[j].Title;
StringBuilder sb = new StringBuilder();
for (int k = 0; k < assocs[i].Filters[j].FileNameFilters.Count; k++)
{
sb.Append(assocs[i].Filters[j].FileNameFilters[k]);
if (k < assocs[i].Filters[j].FileNameFilters.Count - 1)
sb.Append('|');
}
filter.Filter = sb.ToString();
_Browser.FileNameFilters.Add(filter);
}
}
}
void cboObjectModel_SelectionChanged(object sender, EventArgs e)
{
cboDataFormat.OpenDropDown();
}
public event EventHandler ItemActivated;
protected virtual void OnItemActivated (EventArgs e)
{