105 lines
2.6 KiB
C#
105 lines
2.6 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
using BizHawk.Client.Common;
|
|
using BizHawk.Client.EmuHawk;
|
|
using BizHawk.Emulation.Common;
|
|
|
|
namespace BizHawk.Client.EmuHawk
|
|
{
|
|
public partial class GenericCoreConfig : Form
|
|
{
|
|
object s;
|
|
object ss;
|
|
bool syncsettingschanged = false;
|
|
|
|
GenericCoreConfig(bool ignoresettings, bool ignoresyncsettings)
|
|
{
|
|
InitializeComponent();
|
|
|
|
var settable = new SettingsAdapter(Global.Emulator);
|
|
|
|
if (settable.HasSettings && !ignoresettings)
|
|
s = settable.GetSettings();
|
|
if (settable.HasSyncSettings && !ignoresyncsettings)
|
|
ss = settable.GetSyncSettings();
|
|
|
|
if (s != null)
|
|
propertyGrid1.SelectedObject = s;
|
|
else
|
|
tabControl1.TabPages.Remove(tabPage1);
|
|
if (ss != null)
|
|
propertyGrid2.SelectedObject = ss;
|
|
else
|
|
tabControl1.TabPages.Remove(tabPage2);
|
|
|
|
if (Global.MovieSession.Movie.IsActive)
|
|
propertyGrid2.Enabled = false; // disable changes to sync setting when movie, so as not to confuse user
|
|
}
|
|
|
|
GenericCoreConfig()
|
|
:this(false, false)
|
|
{
|
|
}
|
|
|
|
private void button1_Click(object sender, EventArgs e)
|
|
{
|
|
var settable = new SettingsAdapter(Global.Emulator);
|
|
if (s != null && settable.HasSettings)
|
|
{
|
|
settable.PutSettings(s);
|
|
}
|
|
|
|
if (ss != null && syncsettingschanged)
|
|
GlobalWin.MainForm.PutCoreSyncSettings(ss);
|
|
|
|
DialogResult = DialogResult.OK;
|
|
Close();
|
|
}
|
|
|
|
public static void DoDialog(IWin32Window owner, string title)
|
|
{
|
|
using (var dlg = new GenericCoreConfig { Text = title })
|
|
dlg.ShowDialog(owner);
|
|
}
|
|
|
|
public static void DoDialog(IWin32Window owner, string title, bool hidesettings, bool hidesyncsettings)
|
|
{
|
|
using (var dlg = new GenericCoreConfig(hidesettings, hidesyncsettings) { Text = title })
|
|
dlg.ShowDialog(owner);
|
|
}
|
|
|
|
private void propertyGrid2_PropertyValueChanged(object s, PropertyValueChangedEventArgs e)
|
|
{
|
|
syncsettingschanged = true;
|
|
}
|
|
|
|
private void GenericCoreConfig_Load(object sender, EventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
private void buttonDefaults_Click(object sender, EventArgs e)
|
|
{
|
|
// the new config objects guarantee that the default constructor gives a default-settings object
|
|
if (s != null)
|
|
{
|
|
s = Activator.CreateInstance(s.GetType());
|
|
propertyGrid1.SelectedObject = s;
|
|
}
|
|
if (ss != null)
|
|
{
|
|
ss = Activator.CreateInstance(ss.GetType());
|
|
propertyGrid2.SelectedObject = ss;
|
|
syncsettingschanged = true;
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|