public override void Init() { DBBaseName = PanelMode == PanelType.Materials ? "MaterialsGrid" : PanelMode == PanelType.Commodities ? "CommoditiesGrid" : "MicroResourcesGrid"; dataGridViewMC.MakeDoubleBuffered(); extCheckBoxWordWrap.Checked = GetSetting(dbWrapText, false); UpdateWordWrap(); extCheckBoxWordWrap.Click += extCheckBoxWordWrap_Click; var enumlist = new Enum[] { EDTx.UserControlMaterialCommodities_NameCol, EDTx.UserControlMaterialCommodities_ShortName, EDTx.UserControlMaterialCommodities_Category, EDTx.UserControlMaterialCommodities_Type, EDTx.UserControlMaterialCommodities_Number, EDTx.UserControlMaterialCommodities_Price }; var enumlisttt = new Enum[] { EDTx.UserControlMaterialCommodities_buttonFilter_ToolTip, EDTx.UserControlMaterialCommodities_textBoxItems1_ToolTip, EDTx.UserControlMaterialCommodities_textBoxItems2_ToolTip, EDTx.UserControlMaterialCommodities_checkBoxShowZeros_ToolTip, EDTx.UserControlMaterialCommodities_extCheckBoxWordWrap_ToolTip }; BaseUtils.Translator.Instance.TranslateControls(this, enumlist, null, "UserControlMaterialCommodities"); BaseUtils.Translator.Instance.TranslateTooltip(toolTip, enumlisttt, this, "UserControlMaterialCommodities"); cfs = new JournalFilterSelector(); cfs.AddAllNone(); MaterialCommodityMicroResourceType[] items; Tuple <MaterialCommodityMicroResourceType.ItemType, string>[] types; Price.Tag = Number.Tag = "Num"; // these tell the sorter to do numeric sorting if (PanelMode == PanelType.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 = MaterialCommodityMicroResourceType.GetMaterials(true); types = MaterialCommodityMicroResourceType.GetTypes((x) => x.IsMaterial, true); var cats = MaterialCommodityMicroResourceType.GetCategories((x) => x.IsMaterial, true); foreach (var t in cats) { string[] members = MaterialCommodityMicroResourceType.GetFDNameMembersOfCategory(t.Item1, true); cfs.AddGroupOption(String.Join(";", members) + ";", t.Item2); } } else if (PanelMode == PanelType.MicroResources) { dataGridViewMC.ContextMenuStrip = null; dataGridViewMC.Columns.Remove(Type); Number.HeaderText = "Ship Locker".T(EDTx.UserControlMaterialCommodities_ShipLocker); Price.HeaderText = "BackPack".T(EDTx.UserControlMaterialCommodities_BackPack); labelItems1.Text = "Total".T(EDTx.UserControlMaterialCommodities_Total); textBoxItems2.Visible = labelItems2.Visible = false; items = MaterialCommodityMicroResourceType.GetMicroResources(true); types = MaterialCommodityMicroResourceType.GetTypes((x) => x.IsMicroResources, true); var cats = MaterialCommodityMicroResourceType.GetCategories((x) => x.IsMicroResources, true); foreach (var t in cats) { string[] members = MaterialCommodityMicroResourceType.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 = MaterialCommodityMicroResourceType.GetCommodities(true); types = MaterialCommodityMicroResourceType.GetTypes((x) => x.IsCommodity, true); MaterialCommodityMicroResourceType[] 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 = MaterialCommodityMicroResourceType.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; }
private void Display(uint?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(); MaterialCommodityMicroResourceType[] allitems = PanelMode == PanelType.Materials ? MaterialCommodityMicroResourceType.GetMaterials(true) : PanelMode == PanelType.MicroResources ? MaterialCommodityMicroResourceType.GetMicroResources(true) : MaterialCommodityMicroResourceType.GetCommodities(true); foreach (MaterialCommodityMicroResourceType mcd in allitems) // we go thru all items.. { if (all || filter.Contains(mcd.FDName)) // and see if they are in the filter { object[] rowobj; MaterialCommodityMicroResource m = discoveryform.history.MaterialCommoditiesMicroResources.Get(mcl.Value, mcd.FDName); // at generation mcl, find fdname. if (showzeros || (m != null && m.NonZero)) // if display zero, or we have some.. { string s = ""; if (PanelMode == PanelType.Materials) { s = Recipes.UsedInRecipesByFDName(mcd.FDName, Environment.NewLine); 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 if (PanelMode == PanelType.MicroResources) { rowobj = new[] { mcd.Name, mcd.Shortname, mcd.TranslatedCategory, m != null ? m.Counts[0].ToString() : "0", m != null ? m.Counts[1].ToString() : "0" }; } else { s = Recipes.UsedInRecipesByFDName(mcd.FDName, Environment.NewLine); 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); } var mcllist = discoveryform.history.MaterialCommoditiesMicroResources.Get(mcl.Value); var counts = MaterialCommoditiesMicroResourceList.Count(mcllist); if (PanelMode == PanelType.Materials) { textBoxItems1.Text = counts[(int)MaterialCommodityMicroResourceType.CatType.Encoded].ToString(); textBoxItems2.Text = (counts[(int)MaterialCommodityMicroResourceType.CatType.Raw] + counts[(int)MaterialCommodityMicroResourceType.CatType.Manufactured]).ToString(); } else if (PanelMode == PanelType.MicroResources) { textBoxItems1.Text = (counts[(int)MaterialCommodityMicroResourceType.CatType.Data] + counts[(int)MaterialCommodityMicroResourceType.CatType.Component] + counts[(int)MaterialCommodityMicroResourceType.CatType.Item] + counts[(int)MaterialCommodityMicroResourceType.CatType.Consumable]).ToString(); } else { textBoxItems1.Text = counts[(int)MaterialCommodityMicroResourceType.CatType.Commodity].ToString(); } }