174 lines
3.9 KiB
C#
174 lines
3.9 KiB
C#
using System;
|
|
using System.Windows.Forms;
|
|
|
|
namespace BizHawk.Client.EmuHawk
|
|
{
|
|
public static class HawkDialogFactory
|
|
{
|
|
public static Type OpenDialogClass = typeof(DefaultOpenFileDialog);
|
|
public static Type SaveDialogClass = typeof(DefaultSaveFileDialog);
|
|
public static Type FolderBrowserClass = typeof(DefaultFolderBrowserDialog);
|
|
|
|
public static IOpenFileDialog CreateOpenFileDialog()
|
|
{
|
|
if(typeof(IOpenFileDialog).IsAssignableFrom(OpenDialogClass))
|
|
{
|
|
return (IOpenFileDialog)OpenDialogClass.GetConstructor(Type.EmptyTypes).Invoke(null);
|
|
}
|
|
return new DefaultOpenFileDialog();
|
|
}
|
|
|
|
public static ISaveFileDialog CreateSaveFileDialog()
|
|
{
|
|
if(typeof(ISaveFileDialog).IsAssignableFrom(SaveDialogClass))
|
|
{
|
|
return (ISaveFileDialog)SaveDialogClass.GetConstructor(Type.EmptyTypes).Invoke(null);
|
|
}
|
|
return new DefaultSaveFileDialog();
|
|
}
|
|
|
|
public static IFolderBrowserDialog CreateFolderBrowserDialog()
|
|
{
|
|
if(typeof(IFolderBrowserDialog).IsAssignableFrom(FolderBrowserClass))
|
|
{
|
|
return (IFolderBrowserDialog)FolderBrowserClass.GetConstructor(Type.EmptyTypes).Invoke(null);
|
|
}
|
|
return new DefaultFolderBrowserDialog();
|
|
}
|
|
}
|
|
|
|
public class DefaultSaveFileDialog : DefaultOpenFileDialog, ISaveFileDialog
|
|
{
|
|
public DefaultSaveFileDialog()
|
|
{
|
|
_capsule = new SaveFileDialog();
|
|
}
|
|
|
|
public string DefaultExt
|
|
{
|
|
get
|
|
{
|
|
return ((SaveFileDialog)_capsule).DefaultExt;
|
|
}
|
|
set
|
|
{
|
|
((SaveFileDialog)_capsule).DefaultExt = value;
|
|
}
|
|
}
|
|
|
|
public bool OverwritePrompt
|
|
{
|
|
get
|
|
{
|
|
return ((SaveFileDialog)_capsule).OverwritePrompt;
|
|
}
|
|
set
|
|
{
|
|
((SaveFileDialog)_capsule).OverwritePrompt = value;
|
|
}
|
|
}
|
|
}
|
|
|
|
public class DefaultOpenFileDialog : IOpenFileDialog
|
|
{
|
|
//Can't extend OpenFileDialog because it's sealed, so I need to encapsulate it.
|
|
protected FileDialog _capsule;
|
|
public DefaultOpenFileDialog()
|
|
{
|
|
_capsule = new OpenFileDialog();
|
|
}
|
|
public string InitialDirectory
|
|
{
|
|
get { return _capsule.InitialDirectory; }
|
|
set { _capsule.InitialDirectory = value; }
|
|
}
|
|
public string Filter
|
|
{
|
|
get { return _capsule.Filter; }
|
|
set { _capsule.Filter = value; }
|
|
}
|
|
public bool RestoreDirectory
|
|
{
|
|
get { return _capsule.RestoreDirectory; }
|
|
set { _capsule.RestoreDirectory = value; }
|
|
}
|
|
public bool Multiselect
|
|
{
|
|
get
|
|
{
|
|
if (_capsule is OpenFileDialog)
|
|
{
|
|
return ((OpenFileDialog)_capsule).Multiselect;
|
|
}
|
|
return false;
|
|
}
|
|
set
|
|
{
|
|
if (_capsule is OpenFileDialog)
|
|
{
|
|
((OpenFileDialog)_capsule).Multiselect = value;
|
|
}
|
|
}
|
|
}
|
|
public bool AddExtension
|
|
{
|
|
get { return _capsule.AddExtension; }
|
|
set { _capsule.AddExtension = value; }
|
|
}
|
|
public System.Windows.Forms.DialogResult ShowDialog()
|
|
{
|
|
return _capsule.ShowDialog();
|
|
}
|
|
public System.Windows.Forms.DialogResult ShowDialog(System.Windows.Forms.Form form)
|
|
{
|
|
return _capsule.ShowDialog(form);
|
|
}
|
|
public string FileName
|
|
{
|
|
get { return _capsule.FileName; }
|
|
set { _capsule.FileName = value; }
|
|
}
|
|
public string[] FileNames
|
|
{
|
|
get { return _capsule.FileNames; }
|
|
}
|
|
public string Title
|
|
{
|
|
get { return _capsule.Title; }
|
|
set { _capsule.Title = value; }
|
|
}
|
|
public int FilterIndex
|
|
{
|
|
get { return _capsule.FilterIndex; }
|
|
set { _capsule.FilterIndex = value; }
|
|
}
|
|
public void Dispose()
|
|
{
|
|
_capsule.Dispose();
|
|
}
|
|
}
|
|
|
|
public class DefaultFolderBrowserDialog : IFolderBrowserDialog
|
|
{
|
|
private FolderBrowserDialog _capsule;
|
|
public DefaultFolderBrowserDialog()
|
|
{
|
|
_capsule = new FolderBrowserDialog();
|
|
}
|
|
public string Description
|
|
{
|
|
get { return _capsule.Description; }
|
|
set { _capsule.Description = value; }
|
|
}
|
|
public string SelectedPath
|
|
{
|
|
get { return _capsule.SelectedPath; }
|
|
set { _capsule.SelectedPath = value; }
|
|
}
|
|
public System.Windows.Forms.DialogResult ShowDialog()
|
|
{
|
|
return _capsule.ShowDialog();
|
|
}
|
|
}
|
|
}
|