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 RomCheater.Logging; using RomCheater.PluginFramework.Core; using RomCheater.PluginFramework.Interfaces; namespace RomCheater { public partial class RomCheaterConfigDialog : Form { private PluginLoader loader = null; public RomCheaterConfigDialog() { InitializeComponent(); } public RomCheaterConfigDialog(PluginLoader loader) : this() { this.loader = loader; } private void RomCheaterConfigDialog_Load(object sender, EventArgs e) { logger.Info.WriteLine("Loading user settings..."); load_loggerflags(); setup_plugin_entries(); logger.Info.WriteLine("Loaded user settings."); } private void setup_plugin_entries() { foreach (IConfigPlugin c in loader.LoadedConfigPlugins) { comboConfigPlugins.Items.Add(string.Format("{0} [{1}]",c.Name, c.Id.ToString())); } foreach (IInputPlugin c in loader.LoadedInputPlugins) { comboInputPlugins.Items.Add(string.Format("{0} [{1}]", c.Name, c.Id.ToString())); } foreach (IWindowPlugin c in loader.LoadedWindowPlugins) { comboWindowPlugins.Items.Add(string.Format("{0} [{1}]", c.Name, c.Id.ToString())); } if (loader.LoadedConfigPlugins.Count == 0) { comboConfigPlugins.Items.Add(string.Format("{0} [{1}]", "None", new Guid().ToString())); } if (loader.LoadedInputPlugins.Count == 0) { comboInputPlugins.Items.Add(string.Format("{0} [{1}]", "None", new Guid().ToString())); } if (loader.LoadedWindowPlugins.Count == 0) { comboWindowPlugins.Items.Add(string.Format("{0} [{1}]", "None", new Guid().ToString())); } comboConfigPlugins.SelectedIndex = 0; comboInputPlugins.SelectedIndex = 0; comboWindowPlugins.SelectedIndex = 0; // select each plugin base on the last plugin foreach (string item in comboConfigPlugins.Items) { if (item == RomCheater.Properties.Settings.Default.LastConfigPlugin) { logger.Debug.WriteLine(" loading LastConfigPlugin: {0}", RomCheater.Properties.Settings.Default.LastConfigPlugin); comboConfigPlugins.SelectedIndex = comboConfigPlugins.Items.IndexOf(item); break; } } foreach (string item in comboInputPlugins.Items) { if (item == RomCheater.Properties.Settings.Default.LastInputPlugin) { logger.Debug.WriteLine(" loading LastInputPlugin: {0}", RomCheater.Properties.Settings.Default.LastInputPlugin); comboInputPlugins.SelectedIndex = comboInputPlugins.Items.IndexOf(item); break; } } foreach (string item in comboWindowPlugins.Items) { if (item == RomCheater.Properties.Settings.Default.LastWindowPlugin) { logger.Debug.WriteLine(" loading LastWindowPlugin: {0}", RomCheater.Properties.Settings.Default.LastWindowPlugin); comboWindowPlugins.SelectedIndex = comboWindowPlugins.Items.IndexOf(item); break; } } } private void load_loggerflags() { logger.Debug.WriteLine("Loading logger flags..."); loggerflags logflags = (loggerflags)Logging.Properties.Settings.Default.LoggingFlags; foreach (loggerflags flags in Enum.GetValues(typeof(loggerflags))) { if (flags == loggerflags.ALL || flags == loggerflags.NONE || flags == loggerflags.DEFAULT) continue; string name = flags.ToString(); int value = (int)flags; CheckBox chkloggerflags = new CheckBox(); chkloggerflags.Name = name; chkloggerflags.Text = name; chkloggerflags.Tag = value; grpLoggingFlags_flow.Controls.Add(chkloggerflags); logger.Debug.WriteLine("\tAdding logger flag: {0} value: 0x{1:x4}", name, value); if (logflags.HasFlag((loggerflags)value)) { chkloggerflags.Checked = true; logger.Debug.WriteLine("\tTurning on logger flag: {0} value: 0x{1:x4}", name, value); } } grpLoggingFlags.AutoSize = true; grpLoggingFlags.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; logger.Debug.WriteLine("Loaded logger flags."); } private void btnSave_Click(object sender, EventArgs e) { logger.Info.WriteLine("Saving user settings..."); SaveSettings(); this.Close(); } private void btnCancel_Click(object sender, EventArgs e) { this.Close(); } private void SaveSettings() { SaveLoggingFlags(); SaveSelectedPlugins(); RomCheater.Properties.Settings.Default.Save(); Logging.Properties.Settings.Default.Save(); logger.Info.WriteLine("Saved user settings."); } private void SaveSelectedPlugins() { logger.Debug.WriteLine(" Setting LastConfigPlugin to {0}", comboConfigPlugins.Items[comboConfigPlugins.SelectedIndex].ToString()); RomCheater.Properties.Settings.Default.LastConfigPlugin = comboConfigPlugins.Items[comboConfigPlugins.SelectedIndex].ToString(); logger.Debug.WriteLine(" Setting LastInputPlugin to {0}", comboInputPlugins.Items[comboConfigPlugins.SelectedIndex].ToString()); RomCheater.Properties.Settings.Default.LastInputPlugin = comboInputPlugins.Items[comboConfigPlugins.SelectedIndex].ToString(); logger.Debug.WriteLine(" Setting LastWindowPlugin to {0}", comboWindowPlugins.Items[comboConfigPlugins.SelectedIndex].ToString()); RomCheater.Properties.Settings.Default.LastWindowPlugin = comboWindowPlugins.Items[comboConfigPlugins.SelectedIndex].ToString(); } private void SaveLoggingFlags() { logger.Debug.WriteLine("Saving Logger flags..."); loggerflags logflags = loggerflags.NONE; foreach (CheckBox cb in grpLoggingFlags_flow.Controls) { if (!cb.Checked) continue; int value = Convert.ToInt32(cb.Tag); logflags = logflags | (loggerflags)value; logger.Debug.WriteLine("\tAdding flag: {0} value: 0x{1:x4} LoggingFlags=0x{2:x4}", cb.Text, value, (int)logflags); } Logging.Properties.Settings.Default.LoggingFlags = (int)logflags; logger.Debug.WriteLine("Saved Logger flags."); } } }