1
0
Fork 0
mirror of https://github.com/hawkeye-stan/msfs-popout-panel-manager.git synced 2024-11-29 01:00:13 +00:00
msfs-popout-panel-manager/UI/UserControlApplySettings.cs
2021-10-17 12:18:45 -04:00

105 lines
4 KiB
C#

using System;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Windows.Forms;
namespace MSFSPopoutPanelManager
{
public partial class UserControlApplySettings : UserControlCommon
{
private BindingList<PanelDestinationInfo> _panelInfoList;
public UserControlApplySettings(PanelManager panelManager) : base(panelManager)
{
InitializeComponent();
panelManager.OnAnalysisCompleted += PanelManager_OnAnalysisCompleted;
panelManager.OnPanelSettingsChanged += PanelManager_OnAnalysisCompleted;
}
public event EventHandler OnRestart;
private void PanelManager_OnAnalysisCompleted(object sender, EventArgs e)
{
_panelInfoList = new BindingList<PanelDestinationInfo>(PanelManager.CurrentPanelProfile.PanelSettings.PanelDestinationList.OrderBy(x => x.PanelName).ToList());
dataGridViewPanels.AutoGenerateColumns = false;
dataGridViewPanels.AutoSize = false;
dataGridViewPanels.DataSource = _panelInfoList;
checkBoxAlwaysOnTop.Checked = PanelManager.CurrentPanelProfile.PanelSettings.AlwaysOnTop;
checkBoxHidePanelTitleBar.Checked = PanelManager.CurrentPanelProfile.PanelSettings.HidePanelTitleBar;
}
private void buttonRestart_Click(object sender, EventArgs e)
{
OnRestart?.Invoke(this, null);
PanelManager.UpdatePanelLocationUI();
}
private void buttonApplySettings_Click(object sender, EventArgs e)
{
PanelManager.ApplyPanelSettings();
}
private void buttonSaveSettings_Click(object sender, EventArgs e)
{
PanelManager.SavePanelSettings();
}
private void checkBoxHidePanelTitleBar_CheckedChanged(object sender, EventArgs e)
{
PanelManager.CurrentPanelProfile.PanelSettings.HidePanelTitleBar = checkBoxHidePanelTitleBar.Checked;
}
private void checkBoxAlwaysOnTop_CheckedChanged(object sender, EventArgs e)
{
PanelManager.CurrentPanelProfile.PanelSettings.AlwaysOnTop = checkBoxAlwaysOnTop.Checked;
}
private void dataGridViewPanels_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
var panelName = Convert.ToString(dataGridViewPanels[0, e.RowIndex].FormattedValue);
var left = Convert.ToInt32(dataGridViewPanels[1, e.RowIndex].FormattedValue);
var top = Convert.ToInt32(dataGridViewPanels[2, e.RowIndex].FormattedValue);
var width = Convert.ToInt32(dataGridViewPanels[3, e.RowIndex].FormattedValue);
var height = Convert.ToInt32(dataGridViewPanels[4, e.RowIndex].FormattedValue);
var panel = PanelManager.CurrentPanelProfile.PanelSettings.PanelDestinationList.Find(x => x.PanelName == panelName);
PInvoke.MoveWindow(panel.PanelHandle, left, top, width, height, true);
}
private void dataGridViewPanels_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (e.ColumnIndex == 0)
{
DataGridView dgv = sender as DataGridView;
PanelDestinationInfo data = dgv.Rows[e.RowIndex].DataBoundItem as PanelDestinationInfo;
if(!data.IsOpened && data.PanelType == WindowType.Custom_Popout)
{
dataGridViewPanels.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.PaleVioletRed;
}
}
}
private void dataGridViewPanels_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
// must be numbers
if(e.ColumnIndex >= 1 && e.ColumnIndex <= 4)
{
int i = 0;
bool result = int.TryParse(Convert.ToString(e.FormattedValue), out i);
if (!result)
e.Cancel = true;
}
}
}
}