Better windows positioning

This commit is contained in:
Michael Bucari-Tovo 2022-05-09 17:15:16 -06:00
parent 201ecebda9
commit 8763d63a93
5 changed files with 28 additions and 22 deletions

View File

@ -126,8 +126,8 @@ namespace AppScaffolding
if (!config.Exists(nameof(config.AutoScan))) if (!config.Exists(nameof(config.AutoScan)))
config.AutoScan = true; config.AutoScan = true;
if (!config.Exists(nameof(config.HiddenGridColumns))) if (!config.Exists(nameof(config.GridColumnsVisibilities)))
config.HiddenGridColumns = new Dictionary<string, bool>(); config.GridColumnsVisibilities = new Dictionary<string, bool>();
if (!config.Exists(nameof(config.GridColumnsDisplayIndices))) if (!config.Exists(nameof(config.GridColumnsDisplayIndices)))
config.GridColumnsDisplayIndices = new Dictionary<string, int>(); config.GridColumnsDisplayIndices = new Dictionary<string, int>();

View File

@ -181,10 +181,10 @@ namespace LibationFileManager
} }
[Description("A Dictionary of GridView data property names and bool indicating its column's visibility in ProductsGrid")] [Description("A Dictionary of GridView data property names and bool indicating its column's visibility in ProductsGrid")]
public Dictionary<string, bool> HiddenGridColumns public Dictionary<string, bool> GridColumnsVisibilities
{ {
get => persistentDictionary.GetNonString<Dictionary<string, bool>>(nameof(HiddenGridColumns)); get => persistentDictionary.GetNonString<Dictionary<string, bool>>(nameof(GridColumnsVisibilities));
set => persistentDictionary.SetNonString(nameof(HiddenGridColumns), value); set => persistentDictionary.SetNonString(nameof(GridColumnsVisibilities), value);
} }
[Description("A Dictionary of GridView data property names and int indicating its column's display index in ProductsGrid")] [Description("A Dictionary of GridView data property names and int indicating its column's display index in ProductsGrid")]

View File

@ -58,6 +58,6 @@
#endregion #endregion
public System.Windows.Forms.TextBox textBox1; private System.Windows.Forms.TextBox textBox1;
} }
} }

View File

@ -13,18 +13,17 @@ namespace LibationWinForms
{ {
public partial class DescriptionDisplay : Form public partial class DescriptionDisplay : Form
{ {
public Point SpawnLocation { get; init; }
public string DescriptionText { get => textBox1.Text; set => textBox1.Text = value; }
public DescriptionDisplay() public DescriptionDisplay()
{ {
InitializeComponent(); InitializeComponent();
textBox1.LostFocus += (_, _) => Close(); textBox1.LostFocus += (_, _) => Close();
this.Shown += DescriptionDisplay_Shown; Shown += DescriptionDisplay_Shown;
var textHeight = TextRenderer.MeasureText("\n", textBox1.Font).Height; var textHeight = TextRenderer.MeasureText("\n", textBox1.Font).Height;
} }
[DllImport("user32.dll")]
static extern bool HideCaret(IntPtr hWnd);
private void DescriptionDisplay_Shown(object sender, EventArgs e) private void DescriptionDisplay_Shown(object sender, EventArgs e)
{ {
textBox1.DeselectAll(); textBox1.DeselectAll();
@ -37,6 +36,12 @@ namespace LibationWinForms
int lineCount = textBox1.GetLineFromCharIndex(int.MaxValue) + 2; int lineCount = textBox1.GetLineFromCharIndex(int.MaxValue) + 2;
Height = Height - textBox1.Height + lineCount * TextRenderer.MeasureText(textBox1.Text, textBox1.Font).Height; Height = Height - textBox1.Height + lineCount * TextRenderer.MeasureText(textBox1.Text, textBox1.Font).Height;
int screenHeight = Screen.PrimaryScreen.WorkingArea.Height;
Location = new Point(SpawnLocation.X + 10, Math.Min(SpawnLocation.Y, screenHeight - Height));
} }
[DllImport("user32.dll")]
static extern bool HideCaret(IntPtr hWnd);
} }
} }

View File

@ -69,16 +69,17 @@ namespace LibationWinForms
else if (propertyName == tagAndDetailsGVColumn.DataPropertyName) else if (propertyName == tagAndDetailsGVColumn.DataPropertyName)
Details_Click(getGridEntry(e.RowIndex)); Details_Click(getGridEntry(e.RowIndex));
else if (propertyName == descriptionGVColumn.DataPropertyName) else if (propertyName == descriptionGVColumn.DataPropertyName)
DescriptionClick(getGridEntry(e.RowIndex)); DescriptionClick(getGridEntry(e.RowIndex), _dataGridView.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex,false));
} }
private void DescriptionClick(GridEntry liveGridEntry) private void DescriptionClick(GridEntry liveGridEntry, Rectangle cell)
{ {
var displayWindow = new DescriptionDisplay(); var displayWindow = new DescriptionDisplay
displayWindow.Text = $"{liveGridEntry.Title} description"; {
displayWindow.Load += (_, _) => displayWindow.RestoreSizeAndLocation(Configuration.Instance); Text = $"{liveGridEntry.Title} description",
displayWindow.FormClosing += (_, _) => displayWindow.SaveSizeAndLocation(Configuration.Instance); SpawnLocation = cell.Location + cell.Size,
displayWindow.textBox1.Text = liveGridEntry.LongDescription; DescriptionText = liveGridEntry.LongDescription
};
displayWindow.Show(this); displayWindow.Show(this);
} }
@ -245,7 +246,7 @@ namespace LibationWinForms
//Restore Grid Display Settings //Restore Grid Display Settings
var config = Configuration.Instance; var config = Configuration.Instance;
var hiddenGridColumns = config.HiddenGridColumns; var gridColumnsVisibilities = config.GridColumnsVisibilities;
var displayIndices = config.GridColumnsDisplayIndices; var displayIndices = config.GridColumnsDisplayIndices;
var gridColumnsWidths = config.GridColumnsWidths; var gridColumnsWidths = config.GridColumnsWidths;
@ -254,7 +255,7 @@ namespace LibationWinForms
foreach (DataGridViewColumn column in _dataGridView.Columns) foreach (DataGridViewColumn column in _dataGridView.Columns)
{ {
var itemName = column.DataPropertyName; var itemName = column.DataPropertyName;
var visible = !hiddenGridColumns.GetValueOrDefault(itemName, false); var visible = gridColumnsVisibilities.GetValueOrDefault(itemName, true);
var menuItem = new ToolStripMenuItem() var menuItem = new ToolStripMenuItem()
{ {
@ -316,9 +317,9 @@ namespace LibationWinForms
var config = Configuration.Instance; var config = Configuration.Instance;
var dictionary = config.HiddenGridColumns; var dictionary = config.GridColumnsVisibilities;
dictionary[propertyName] = visible; dictionary[propertyName] = column.Visible;
config.HiddenGridColumns = dictionary; config.GridColumnsVisibilities = dictionary;
} }
} }