private void Display(MaterialCommoditiesList mcl) // update display. mcl can be null { last_mcl = mcl; DataGridViewColumn sortcolprev = dataGridViewMC.SortedColumn != null ? dataGridViewMC.SortedColumn : dataGridViewMC.Columns[0]; SortOrder sortorderprev = dataGridViewMC.SortedColumn != null ? dataGridViewMC.SortOrder : SortOrder.Ascending; int firstline = dataGridViewMC.SafeFirstDisplayedScrollingRowIndex(); dataGridViewMC.Rows.Clear(); textBoxItems1.Text = textBoxItems2.Text = ""; if (mcl == null) { return; } //System.Diagnostics.Debug.WriteLine("Display mcl " + mcl.GetHashCode()); string filters = GetSetting(dbFilter, "All"); //System.Diagnostics.Debug.WriteLine("Filter is " + filters); string[] filter = filters.SplitNoEmptyStartFinish(';'); bool all = filter.Length > 0 && filter[0] == "All"; bool showzeros = checkBoxShowZeros.Checked; dataViewScrollerPanel.SuspendLayout(); MaterialCommodityData[] allitems = materials ? MaterialCommodityData.GetMaterials(true) : MaterialCommodityData.GetCommodities(true); foreach (MaterialCommodityData mcd in allitems) // we go thru all items.. { if (all || filter.Contains(mcd.FDName)) // and see if they are in the filter { object[] rowobj; MaterialCommodities m = mcl.List.Find(x => string.Equals(x.Details.FDName, mcd.FDName, StringComparison.InvariantCultureIgnoreCase)); // and we see if we actually have some at this time if (showzeros || (m != null && m.Count > 0)) // if display zero, or we have some.. { string s = Recipes.UsedInRecipesByFDName(mcd.FDName, Environment.NewLine); if (materials) { int limit = mcd.MaterialLimit() ?? 0; rowobj = new[] { mcd.Name, mcd.Shortname, mcd.TranslatedCategory, mcd.TranslatedType + (limit > 0 ? " (" + limit.ToString() + ")" : ""), m != null?m.Count.ToString() : "0", s }; } else { rowobj = new[] { mcd.Name, mcd.TranslatedType, m != null?m.Count.ToString() : "0", m != null?m.Price.ToString("0.#") : "-", s }; } dataGridViewMC.Rows.Add(rowobj); dataGridViewMC.Rows[dataGridViewMC.RowCount - 1].Cells[dataGridViewMC.ColumnCount - 1].ToolTipText = s; dataGridViewMC.Rows[dataGridViewMC.RowCount - 1].Tag = s; } } } dataViewScrollerPanel.ResumeLayout(); dataGridViewMC.Sort(sortcolprev, (sortorderprev == SortOrder.Descending) ? ListSortDirection.Descending : ListSortDirection.Ascending); dataGridViewMC.Columns[sortcolprev.Index].HeaderCell.SortGlyphDirection = sortorderprev; if (firstline >= 0 && firstline < dataGridViewMC.RowCount) { dataGridViewMC.SafeFirstDisplayedScrollingRowIndex(firstline); } if (materials) { textBoxItems1.Text = mcl.DataCount.ToString(); textBoxItems2.Text = mcl.MaterialsCount.ToString(); } else { textBoxItems1.Text = mcl.CargoCount.ToString(); } }
public override void Init() { DBBaseName = materials ? "MaterialsGrid" : "CommoditiesGrid"; dataGridViewMC.MakeDoubleBuffered(); extCheckBoxWordWrap.Checked = GetSetting(dbWrapText, false); UpdateWordWrap(); extCheckBoxWordWrap.Click += extCheckBoxWordWrap_Click; BaseUtils.Translator.Instance.Translate(this); BaseUtils.Translator.Instance.Translate(toolTip, this); cfs = new FilterSelector(); cfs.AddAllNone(); MaterialCommodityData[] items; Tuple <MaterialCommodityData.ItemType, string>[] types; if (materials) { dataGridViewMC.Columns[5].HeaderText = "Recipes".T(EDTx.UserControlMaterialCommodities_Recipes); labelItems1.Text = "Data".T(EDTx.UserControlMaterialCommodities_Data); labelItems2.Text = "Mats".T(EDTx.UserControlMaterialCommodities_Mats); items = MaterialCommodityData.GetMaterials(true); types = MaterialCommodityData.GetTypes((x) => !x.IsCommodity, true); var cats = MaterialCommodityData.GetCategories((x) => !x.IsCommodity, true); foreach (var t in cats) { string[] members = MaterialCommodityData.GetFDNameMembersOfCategory(t.Item1, true); cfs.AddGroupOption(String.Join(";", members) + ";", t.Item2); } } else { dataGridViewMC.Columns.Remove(dataGridViewMC.Columns[1]); //remove cat DataGridViewColumn c = dataGridViewMC.Columns[1]; // reassign column 1 to end and call recipes c.HeaderText = "Recipes".T(EDTx.UserControlMaterialCommodities_Recipes); c.DisplayIndex = 4; // need to change its display pos dataGridViewMC.Columns.Remove(c); // and to place it at the end otherwise it does not fill in the right order dataGridViewMC.Columns.Add(c); labelItems1.Text = "Total".T(EDTx.UserControlMaterialCommodities_Total); textBoxItems2.Visible = labelItems2.Visible = false; checkBoxShowZeros.Location = new Point(textBoxItems1.Right + 8, checkBoxShowZeros.Top); items = MaterialCommodityData.GetCommodities(true); types = MaterialCommodityData.GetTypes((x) => x.IsCommodity, true); MaterialCommodityData[] rare = items.Where(x => x.IsRareCommodity).ToArray(); cfs.AddGroupOption(String.Join(";", rare.Select(x => x.FDName).ToArray()) + ";", "Rare".T(EDTx.UserControlMaterialCommodities_Rare)); } foreach (var t in types) { string[] members = MaterialCommodityData.GetFDNameMembersOfType(t.Item1, true); cfs.AddGroupOption(String.Join(";", members) + ";", t.Item2); } foreach (var x in items) { cfs.AddStandardOption(x.FDName, x.Name); } checkBoxShowZeros.Checked = !GetSetting(dbClearZero, true); // used to be clear zeros, now its show zeros, invert checkBoxShowZeros.CheckedChanged += CheckBoxClear_CheckedChanged; cfs.SaveSettings += FilterChanged; }
public override void Init() { dataGridViewMC.MakeDoubleBuffered(); dataGridViewMC.DefaultCellStyle.WrapMode = DataGridViewTriState.False; dataGridViewMC.RowTemplate.Height = 26; BaseUtils.Translator.Instance.Translate(this); BaseUtils.Translator.Instance.Translate(toolTip, this); cfs = new FilterSelector(DbFilterSave); MaterialCommodityData[] items; string[] types; if (materials) { dataGridViewMC.Columns.Remove(dataGridViewMC.Columns[5]); // to give name,shortname abv,category,type,number labelItems1.Text = "Data".Tx(this); labelItems2.Text = "Mats".Tx(this); items = MaterialCommodityData.GetMaterials(true); types = MaterialCommodityData.GetTypes((x) => !x.IsCommodity, true); MaterialCommodityData[] raw = items.Where(x => x.IsRaw).ToArray(); cfs.AddGroupOption(String.Join(";", raw.Select(x => x.FDName).ToArray()) + ";", "Raw"); MaterialCommodityData[] enc = items.Where(x => x.IsEncoded).ToArray(); cfs.AddGroupOption(String.Join(";", enc.Select(x => x.FDName).ToArray()) + ";", "Encoded"); MaterialCommodityData[] manu = items.Where(x => x.IsManufactured).ToArray(); cfs.AddGroupOption(String.Join(";", manu.Select(x => x.FDName).ToArray()) + ";", "Manufactured"); } else { dataGridViewMC.Columns.Remove(dataGridViewMC.Columns[1]); //shortname dataGridViewMC.Columns.Remove(dataGridViewMC.Columns[1]); //then category to give name,type,number, avg price labelItems1.Text = "Total".Tx(this); textBoxItems2.Visible = labelItems2.Visible = false; checkBoxClear.Location = new Point(textBoxItems1.Right + 8, checkBoxClear.Top); items = MaterialCommodityData.GetCommodities(true); types = MaterialCommodityData.GetTypes((x) => x.IsCommodity, true); MaterialCommodityData[] rare = items.Where(x => x.IsRareCommodity).ToArray(); cfs.AddGroupOption(String.Join(";", rare.Select(x => x.FDName).ToArray()) + ";", "Rare"); } foreach (string t in types) { string[] members = MaterialCommodityData.GetFDNameMembersOfType(t, true); cfs.AddGroupOption(String.Join(";", members) + ";", t); } foreach (var x in items) { cfs.AddStandardOption(x.FDName, x.Name); } checkBoxClear.Checked = EliteDangerousCore.DB.SQLiteDBClass.GetSettingBool(DbClearZeroSave, true); checkBoxClear.CheckedChanged += CheckBoxClear_CheckedChanged; cfs.Closing += FilterChanged; }
private void Display(MaterialCommoditiesList mcl) { dataGridViewMC.Rows.Clear(); textBoxItems1.Text = textBoxItems2.Text = ""; if (mcl == null) { return; } string[] filter = EliteDangerousCore.DB.SQLiteDBClass.GetSettingString(DbFilterSave, "All").SplitNoEmptyStartFinish(';'); bool all = filter.Length > 0 && filter[0] == "All"; bool clearzero = checkBoxClear.Checked; MaterialCommodityData[] allitems = materials ? MaterialCommodityData.GetMaterials(true) : MaterialCommodityData.GetCommodities(true); foreach (MaterialCommodityData mcd in allitems) // we go thru all items.. { if (all || filter.Contains(mcd.FDName)) // and see if they are in the filter { object[] rowobj; MaterialCommodities m = mcl.List.Find(x => x.Details.Name == mcd.Name); // and we see if we actually have some at this time if (!clearzero || (m != null && m.Count > 0)) // if display zero, or we have some.. { if (materials) { int limit = mcd.MaterialLimit() ?? 0; rowobj = new[] { mcd.Name, mcd.Shortname, mcd.TranslatedCategory, mcd.TranslatedType + (limit > 0 ? " (" + limit.ToString() + ")" : ""), m != null?m.Count.ToString() : "0" }; } else { rowobj = new[] { mcd.Name, mcd.TranslatedType, m != null?m.Count.ToString() : "0", m != null?m.Price.ToString("0.#") : "-" }; } dataGridViewMC.Rows.Add(rowobj); } } } if (dataGridViewMC.SortedColumn != null && dataGridViewMC.SortOrder != SortOrder.None) { dataGridViewMC.Sort(dataGridViewMC.SortedColumn, dataGridViewMC.SortOrder == SortOrder.Descending ? ListSortDirection.Descending : ListSortDirection.Ascending); } if (materials) { textBoxItems1.Text = mcl.DataCount.ToStringInvariant(); textBoxItems2.Text = mcl.MaterialsCount.ToStringInvariant(); } else { textBoxItems1.Text = mcl.CargoCount.ToStringInvariant(); } }
public override void Init() { dataGridViewMC.MakeDoubleBuffered(); dataGridViewMC.DefaultCellStyle.WrapMode = DataGridViewTriState.False; BaseUtils.Translator.Instance.Translate(this); BaseUtils.Translator.Instance.Translate(toolTip, this); cfs = new FilterSelector(DbFilterSave); MaterialCommodityData[] items; Tuple <string, string>[] types; cfs.AddAllNone(); if (materials) { dataGridViewMC.Columns.Remove(dataGridViewMC.Columns[5]); // to give name,shortname abv,category,type,number labelItems1.Text = "Data".T(EDTx.UserControlMaterialCommodities_Data); labelItems2.Text = "Mats".T(EDTx.UserControlMaterialCommodities_Mats); items = MaterialCommodityData.GetMaterials(true); types = MaterialCommodityData.GetTypes((x) => !x.IsCommodity, true); Tuple <string, string>[] cats = MaterialCommodityData.GetCategories((x) => !x.IsCommodity, true); foreach (var t in cats) { string[] members = MaterialCommodityData.GetFDNameMembersOfCategory(t.Item1, true); cfs.AddGroupOption(String.Join(";", members) + ";", t.Item2); } } else { dataGridViewMC.Columns.Remove(dataGridViewMC.Columns[1]); //shortname dataGridViewMC.Columns.Remove(dataGridViewMC.Columns[1]); //then category to give name,type,number, avg price labelItems1.Text = "Total".T(EDTx.UserControlMaterialCommodities_Total); textBoxItems2.Visible = labelItems2.Visible = false; checkBoxClear.Location = new Point(textBoxItems1.Right + 8, checkBoxClear.Top); items = MaterialCommodityData.GetCommodities(true); types = MaterialCommodityData.GetTypes((x) => x.IsCommodity, true); MaterialCommodityData[] rare = items.Where(x => x.IsRareCommodity).ToArray(); cfs.AddGroupOption(String.Join(";", rare.Select(x => x.FDName).ToArray()) + ";", "Rare".T(EDTx.UserControlMaterialCommodities_Rare)); } foreach (var t in types) { string[] members = MaterialCommodityData.GetFDNameMembersOfType(t.Item1, true); cfs.AddGroupOption(String.Join(";", members) + ";", t.Item2); } foreach (var x in items) { cfs.AddStandardOption(x.FDName, x.Name); } checkBoxClear.Checked = EliteDangerousCore.DB.SQLiteDBClass.GetSettingBool(DbClearZeroSave, true); checkBoxClear.CheckedChanged += CheckBoxClear_CheckedChanged; cfs.SaveSettings += FilterChanged; }
private void Display(MaterialCommoditiesList mcl) { if (mcl == last_mcl) // same list, nothing to do { //System.Diagnostics.Debug.WriteLine("Same mcl " + mcl?.GetHashCode()); return; } last_mcl = mcl; //System.Diagnostics.Debug.WriteLine("Display mcl " + mcl.GetHashCode()); DataGridViewColumn sortcolprev = dataGridViewMC.SortedColumn != null ? dataGridViewMC.SortedColumn : dataGridViewMC.Columns[0]; SortOrder sortorderprev = dataGridViewMC.SortedColumn != null ? dataGridViewMC.SortOrder : SortOrder.Ascending; int firstline = dataGridViewMC.FirstDisplayedScrollingRowIndex; dataGridViewMC.Rows.Clear(); textBoxItems1.Text = textBoxItems2.Text = ""; if (mcl == null) { return; } string[] filter = EliteDangerousCore.DB.UserDatabase.Instance.GetSettingString(DbFilterSave, "All").SplitNoEmptyStartFinish(';'); bool all = filter.Length > 0 && filter[0] == "All"; bool clearzero = checkBoxClear.Checked; MaterialCommodityData[] allitems = materials ? MaterialCommodityData.GetMaterials(true) : MaterialCommodityData.GetCommodities(true); foreach (MaterialCommodityData mcd in allitems) // we go thru all items.. { if (all || filter.Contains(mcd.FDName)) // and see if they are in the filter { object[] rowobj; MaterialCommodities m = mcl.List.Find(x => x.Details.Name == mcd.Name); // and we see if we actually have some at this time if (!clearzero || (m != null && m.Count > 0)) // if display zero, or we have some.. { if (materials) { int limit = mcd.MaterialLimit() ?? 0; rowobj = new[] { mcd.Name, mcd.Shortname, mcd.TranslatedCategory, mcd.TranslatedType + (limit > 0 ? " (" + limit.ToString() + ")" : ""), m != null?m.Count.ToString() : "0" }; } else { rowobj = new[] { mcd.Name, mcd.TranslatedType, m != null?m.Count.ToString() : "0", m != null?m.Price.ToString("0.#") : "-" }; } string s = Recipes.UsedInSythesisByFDName(mcd.FDName, Environment.NewLine); string e = Recipes.UsedInEngineeringByFDName(mcd.FDName, Environment.NewLine); s = s.AppendPrePad(e, Environment.NewLine); string b = Recipes.UsedInTechBrokerUnlocksByFDName(mcd.FDName, Environment.NewLine); s = s.AppendPrePad(b, Environment.NewLine); string se = Recipes.UsedInSpecialEffectsyFDName(mcd.FDName, Environment.NewLine); s = s.AppendPrePad(se, Environment.NewLine); dataGridViewMC.Rows.Add(rowobj); dataGridViewMC.Rows[dataGridViewMC.RowCount - 1].Cells[0].ToolTipText = s; dataGridViewMC.Rows[dataGridViewMC.RowCount - 1].Tag = s; } } } dataGridViewMC.Sort(sortcolprev, (sortorderprev == SortOrder.Descending) ? ListSortDirection.Descending : ListSortDirection.Ascending); dataGridViewMC.Columns[sortcolprev.Index].HeaderCell.SortGlyphDirection = sortorderprev; if (firstline >= 0 && firstline < dataGridViewMC.RowCount) { dataGridViewMC.FirstDisplayedScrollingRowIndex = firstline; } if (materials) { textBoxItems1.Text = mcl.DataCount.ToString(); textBoxItems2.Text = mcl.MaterialsCount.ToString(); } else { textBoxItems1.Text = mcl.CargoCount.ToString(); } }
public override void Init() { dataGridViewMC.MakeDoubleBuffered(); BaseUtils.Translator.Instance.Translate(this); BaseUtils.Translator.Instance.Translate(toolTip, this); cfs = new FilterSelector(DbFilterSave); MaterialCommodityData[] items; Tuple <MaterialCommodityData.ItemType, string>[] types; cfs.AddAllNone(); if (materials) { dataGridViewMC.Columns[5].HeaderText = "Recipes".T(EDTx.UserControlMaterialCommodities_Recipes); labelItems1.Text = "Data".T(EDTx.UserControlMaterialCommodities_Data); labelItems2.Text = "Mats".T(EDTx.UserControlMaterialCommodities_Mats); items = MaterialCommodityData.GetMaterials(true); types = MaterialCommodityData.GetTypes((x) => !x.IsCommodity, true); var cats = MaterialCommodityData.GetCategories((x) => !x.IsCommodity, true); foreach (var t in cats) { string[] members = MaterialCommodityData.GetFDNameMembersOfCategory(t.Item1, true); cfs.AddGroupOption(String.Join(";", members) + ";", t.Item2); } } else { dataGridViewMC.Columns.Remove(dataGridViewMC.Columns[1]); //remove cat DataGridViewColumn c = dataGridViewMC.Columns[1]; // reassign column 1 to end and call recipes c.HeaderText = "Recipes".T(EDTx.UserControlMaterialCommodities_Recipes); c.DisplayIndex = 4; // need to change its display pos dataGridViewMC.Columns.Remove(c); // and to place it at the end otherwise it does not fill in the right order dataGridViewMC.Columns.Add(c); labelItems1.Text = "Total".T(EDTx.UserControlMaterialCommodities_Total); textBoxItems2.Visible = labelItems2.Visible = false; checkBoxClear.Location = new Point(textBoxItems1.Right + 8, checkBoxClear.Top); items = MaterialCommodityData.GetCommodities(true); types = MaterialCommodityData.GetTypes((x) => x.IsCommodity, true); MaterialCommodityData[] rare = items.Where(x => x.IsRareCommodity).ToArray(); cfs.AddGroupOption(String.Join(";", rare.Select(x => x.FDName).ToArray()) + ";", "Rare".T(EDTx.UserControlMaterialCommodities_Rare)); } foreach (var t in types) { string[] members = MaterialCommodityData.GetFDNameMembersOfType(t.Item1, true); cfs.AddGroupOption(String.Join(";", members) + ";", t.Item2); } foreach (var x in items) { cfs.AddStandardOption(x.FDName, x.Name); } checkBoxClear.Checked = EliteDangerousCore.DB.UserDatabase.Instance.GetSettingBool(DbClearZeroSave, true); checkBoxClear.CheckedChanged += CheckBoxClear_CheckedChanged; extCheckBoxTruncateText.Checked = EliteDangerousCore.DB.UserDatabase.Instance.GetSettingBool(DbTruncateText, true); extCheckBoxTruncateText.CheckedChanged += TruncateText_CheckedChanged; dataGridViewMC.DefaultCellStyle.WrapMode = DataGridViewTriState.True; dataGridViewMC.AutoSizeRowsMode = extCheckBoxTruncateText.Checked ? DataGridViewAutoSizeRowsMode.None : DataGridViewAutoSizeRowsMode.AllCells; cfs.SaveSettings += FilterChanged; }