public string DisplayMaterial(string name, double percent, MaterialCommoditiesList historicmatlist = null, MaterialCommoditiesList currentmatlist = null)
        {
            StringBuilder scanText = new StringBuilder();

            MaterialCommodityDB mc = MaterialCommodityDB.GetCachedMaterial(name);

            if (mc != null)
            {
                MaterialCommodities historic = historicmatlist?.Find(mc.name);
                MaterialCommodities current  = Object.ReferenceEquals(historicmatlist, currentmatlist) ? null : currentmatlist?.Find(mc.name);
                int?limit = MaterialCommodityDB.MaterialLimit(mc);

                string matinfo = historic?.count.ToString() ?? "0";
                if (limit != null)
                {
                    matinfo += "/" + limit.Value.ToString();
                }

                if (current != null && (historic == null || historic.count != current.count))
                {
                    matinfo += " Cur " + current.count.ToString();
                }

                scanText.AppendFormat("{0} ({1}) {2} {3}% {4}\n", mc.name, mc.shortname, mc.type, percent.ToString("N1"), matinfo);
            }
            else
            {
                scanText.AppendFormat("{0} {1}%\n", System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(name.ToLower()),
                                      percent.ToString("N1"));
            }

            return(scanText.ToNullSafeString());
        }
Example #2
0
        // curmats may be null
        Point CreateMaterialNodes(List <ExtPictureBox.ImageElement> pc, JournalScan sn, MaterialCommoditiesList curmats, HistoryList hl, Point matpos, Size matsize)
        {
            Point startpos  = matpos;
            Point maximum   = matpos;
            int   noperline = 0;

            bool noncommon = ShowMaterialsRare;

            string matclicktext = sn.DisplayMaterials(2, curmats, hl.GetLast?.MaterialCommodity);

            foreach (KeyValuePair <string, double> sd in sn.Materials)
            {
                string tooltip = sn.DisplayMaterial(sd.Key, sd.Value, curmats, hl.GetLast?.MaterialCommodity);

                Color  fillc = Color.Yellow;
                string abv   = sd.Key.Substring(0, 1);

                MaterialCommodityData mc = MaterialCommodityData.GetByFDName(sd.Key);

                if (mc != null)
                {
                    abv   = mc.Shortname;
                    fillc = mc.Colour;

                    if (HideFullMaterials)                 // check full
                    {
                        int?limit = mc.MaterialLimit();
                        MaterialCommodities matnow = curmats?.Find(mc);  // allow curmats = null

                        // debug if (matnow != null && mc.shortname == "Fe")  matnow.count = 10000;

                        if (matnow != null && limit != null && matnow.Count >= limit)        // and limit
                        {
                            continue;
                        }
                    }

                    if (noncommon && mc.IsCommonMaterial)
                    {
                        continue;
                    }
                }

                CreateMaterialImage(pc, matpos, matsize, abv, tooltip + "\n\n" + "All " + matclicktext, tooltip, fillc, Color.Black);

                maximum = new Point(Math.Max(maximum.X, matpos.X + matsize.Width), Math.Max(maximum.Y, matpos.Y + matsize.Height));

                if (++noperline == 4)
                {
                    matpos    = new Point(startpos.X, matpos.Y + matsize.Height + materiallinespacerxy);
                    noperline = 0;
                }
                else
                {
                    matpos.X += matsize.Width + materiallinespacerxy;
                }
            }

            return(maximum);
        }
Example #3
0
        private void comboBoxCustomAdd_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (ignoresi)
            {
                return;
            }

            int i = comboBoxCustomAdd.SelectedIndex;

            if (i < mclist.Count)
            {
                MaterialCommodities mc = mclist[i];

                int j = 0;

                for (; j < dataGridViewMC.Rows.Count; j++)
                {
                    if (((string)(dataGridViewMC.Rows[j].Cells[namecol].Value)).Equals(mc.name))
                    {
                        break;
                    }
                }

                if (j == dataGridViewMC.Rows.Count)
                {
                    if (materials)
                    {
                        object[] rowobj = { mc.name, mc.shortname, mc.category, mc.type, "0" };
                        dataGridViewMC.Rows.Add(rowobj);
                    }
                    else
                    {
                        object[] rowobj = { mc.name, mc.type, "0", "0" };
                        dataGridViewMC.Rows.Add(rowobj);
                    }

                    labelNoItems.Visible = false;
                }
            }
            else
            {
                dataGridViewMC.Rows.Add();
                DataGridViewRow rw = dataGridViewMC.Rows[dataGridViewMC.Rows.Count - 1];
                rw.Cells[typecol].ReadOnly = true;
                if (materials)
                {
                    rw.Cells[abvcol].ReadOnly = true;
                }

                labelNoItems.Visible = false;
            }

            ignoresi = true;
            comboBoxCustomAdd.SelectedIndex = -1;
            comboBoxCustomAdd.Text          = "Select another";
            ignoresi = false;
        }
        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();
            }
        }
Example #5
0
        // curmats may be null
        Point CreateMaterialNodes(List <ExtPictureBox.ImageElement> pc, JournalScan sn, MaterialCommoditiesList curmats, HistoryList hl, Point matpos, Size matsize)
        {
            Point startpos  = matpos;
            Point maximum   = matpos;
            int   noperline = 0;

            string matclicktext = sn.DisplayMaterials(2, curmats, hl.GetLast?.MaterialCommodity);

            foreach (KeyValuePair <string, double> sd in sn.Materials)
            {
                string tooltip = sn.DisplayMaterial(sd.Key, sd.Value, curmats, hl.GetLast?.MaterialCommodity);

                Color  fillc = Color.Yellow;
                string abv   = sd.Key.Substring(0, 1);

                MaterialCommodityData mc = MaterialCommodityData.GetByFDName(sd.Key);

                if (mc != null)
                {
                    abv   = mc.Shortname;
                    fillc = mc.Colour;

                    if (HideFullMaterials)                 // check full
                    {
                        int?limit = mc.MaterialLimit();
                        MaterialCommodities matnow = curmats?.Find(mc);  // allow curmats = null

                        // debug if (matnow != null && mc.shortname == "Fe")  matnow.count = 10000;

                        if (matnow != null && limit != null && matnow.Count >= limit)        // and limit
                        {
                            continue;
                        }
                    }

                    if (ShowOnlyMaterialsRare && mc.IsCommonMaterial)
                    {
                        continue;
                    }
                }

                System.Drawing.Imaging.ColorMap colormap = new System.Drawing.Imaging.ColorMap();
                colormap.OldColor = Color.White;    // this is the marker colour to replace
                colormap.NewColor = fillc;

                Bitmap mat = BaseUtils.BitMapHelpers.ReplaceColourInBitmap((Bitmap)Icons.Controls.Scan_Bodies_Material, new System.Drawing.Imaging.ColorMap[] { colormap });

                BaseUtils.BitMapHelpers.DrawTextCentreIntoBitmap(ref mat, abv, stdfont, Color.Black);

                ExtPictureBox.ImageElement ie = new ExtPictureBox.ImageElement(
                    new Rectangle(matpos.X, matpos.Y, matsize.Width, matsize.Height), mat, tooltip + "\n\n" + "All " + matclicktext, tooltip);

                pc.Add(ie);

                maximum = new Point(Math.Max(maximum.X, matpos.X + matsize.Width), Math.Max(maximum.Y, matpos.Y + matsize.Height));

                if (++noperline == 4)
                {
                    matpos    = new Point(startpos.X, matpos.Y + matsize.Height + materiallinespacerxy);
                    noperline = 0;
                }
                else
                {
                    matpos.X += matsize.Width + materiallinespacerxy;
                }
            }

            return(maximum);
        }
        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();
            }
        }
Example #7
0
        private void buttonExtApply_Click(object sender, EventArgs e)
        {
            List <MaterialCommodities> mcchange = new List <MaterialCommodities>();

            bool updateddb = false;

            for (int i = 0; i < last_mc.Count; i++)
            {
                string name = (string)dataGridViewMC.Rows[i].Cells[namecol].Value;
                string abv  = (abvcol >= 0) ? (string)dataGridViewMC.Rows[i].Cells[abvcol].Value : last_mc[i].shortname;
                string cat  = (catcol >= 0) ? (string)dataGridViewMC.Rows[i].Cells[catcol].Value : last_mc[i].category;
                string type = (string)dataGridViewMC.Rows[i].Cells[typecol].Value;

                if (!last_mc[i].name.Equals(name) || !last_mc[i].shortname.Equals(abv) || !last_mc[i].category.Equals(cat) ||
                    !last_mc[i].type.Equals(type))
                {
                    //System.Diagnostics.Debug.WriteLine("Row " + i + " changed text");
                    MaterialCommodities.ChangeDbText(last_mc[i].fdname, name, abv, cat, type);
                    updateddb = true;
                }

                int numvalue = 0;
                int.TryParse((string)dataGridViewMC.Rows[i].Cells[numcol].Value, out numvalue);

                double price       = 0;
                bool   pricechange = false;

                if (!materials)
                {
                    double.TryParse((string)dataGridViewMC.Rows[i].Cells[pricecol].Value, out price);
                    pricechange = Math.Abs(last_mc[i].price - price) >= 0.01;
                }

                if (last_mc[i].count != numvalue || pricechange)
                {
                    mcchange.Add(new MaterialCommodities(0, last_mc[i].category, last_mc[i].name, last_mc[i].fdname, "", "", Color.Red, 0, numvalue, (pricechange) ? price : 0));
                    //System.Diagnostics.Debug.WriteLine("Row " + i + " changed number");
                }
            }

            for (int i = last_mc.Count; i < dataGridViewMC.Rows.Count; i++)                // these have been added
            {
                string name   = (string)dataGridViewMC.Rows[i].Cells[namecol].Value;
                string cat    = (materials) ? (string)dataGridViewMC.Rows[i].Cells[catcol].Value : MaterialCommodities.CommodityCategory;
                string fdname = Tools.FDName(name);

                int  numvalue = 0;
                bool numok    = int.TryParse((string)dataGridViewMC.Rows[i].Cells[numcol].Value, out numvalue);

                double price = 0;

                if (!materials)
                {
                    double.TryParse((string)dataGridViewMC.Rows[i].Cells[pricecol].Value, out price);
                }

                if (numok && cat.Length > 0 && name.Length > 0)
                {
                    mcchange.Add(new MaterialCommodities(0, cat, name, fdname, "", "", Color.Red, 0, numvalue, price));
                }
            }

            DisableEditing();

            if (OnChangedCount != null)
            {
                OnChangedCount(mcchange);
            }
            else if (updateddb && OnRequestRefresh != null)
            {
                OnRequestRefresh();
            }
        }
Example #8
0
        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();
            }
        }