diff --git a/bin/Debug/snacks.csv b/bin/Debug/snacks.csv index 623b03b..428f937 100644 --- a/bin/Debug/snacks.csv +++ b/bin/Debug/snacks.csv @@ -1 +1,8 @@ -test,0.03,1,H:\Students_Folder\Charlie Hatch\Semesters\Multi-Semester\App Dev\Projects\Advanced Appdev\Snack-Shack-2\presetImages\2fer.jpg +test,0.05,2,H:\Students_Folder\Charlie Hatch\Semesters\Multi-Semester\App Dev\Projects\Advanced Appdev\Snack-Shack\presetImages\2fer.jpg,0 +test,0.07,1,H:\Students_Folder\Charlie Hatch\Semesters\Multi-Semester\App Dev\Projects\Advanced Appdev\Snack-Shack\presetImages\airheads.jpg,1 +Test,0.06,9,H:\Students_Folder\Charlie Hatch\Semesters\Multi-Semester\App Dev\Projects\Advanced Appdev\Snack-Shack\presetImages\2fer.jpg,2 +test,0.05,0,H:\Students_Folder\Charlie Hatch\Semesters\Multi-Semester\App Dev\Projects\Advanced Appdev\Snack-Shack\presetImages\airheads.jpg,3 +2*fer,0.99,39,H:\Students_Folder\Charlie Hatch\Semesters\Multi-Semester\App Dev\Projects\Advanced Appdev\Snack-Shack\presetImages\2fer.jpg,4 +Airheads,0.99,16,H:\Students_Folder\Charlie Hatch\Semesters\Multi-Semester\App Dev\Projects\Advanced Appdev\Snack-Shack\presetImages\airheads.jpg,5 +Almond Joy,0.99,13,H:\Students_Folder\Charlie Hatch\Semesters\Multi-Semester\App Dev\Projects\Advanced Appdev\Snack-Shack\presetImages\almondjoy.png,6 +MilkyWay,0.07,7,H:\Students_Folder\Charlie Hatch\Semesters\Multi-Semester\App Dev\Projects\Advanced Appdev\Snack-Shack\presetImages\MilkyWay.jpg,7 diff --git a/constants.cs b/constants.cs index f8ca0bb..48a359b 100644 --- a/constants.cs +++ b/constants.cs @@ -7,6 +7,7 @@ internal static class constants //pre-defined constants internal const char entrySep = ','; //seperation character internal const string preMadeErrorMsg = "I'm sorry dave, I'm afraid I can't do that"; //pre-made error message internal const decimal minPrice = 0.05M; + internal const decimal minQuantity = 0M; /*internal static string fileSepString() //give the seperation character as a string { char.ToString(fileSepChar_con); diff --git a/frm_snackInvent.Designer.cs b/frm_snackInvent.Designer.cs index ed1f14f..c42a74b 100644 --- a/frm_snackInvent.Designer.cs +++ b/frm_snackInvent.Designer.cs @@ -44,10 +44,12 @@ private void InitializeComponent() this.col_snackQuantity = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.col_snackIcon = new System.Windows.Forms.DataGridViewImageColumn(); this.col_iconPath = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.col_icon = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.btn_add = new System.Windows.Forms.Button(); this.panel1 = new System.Windows.Forms.Panel(); this.statusStrip1 = new System.Windows.Forms.StatusStrip(); this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel(); + this.btn_clearEntry = new System.Windows.Forms.Button(); ((System.ComponentModel.ISupportInitialize)(this.nud_snackPrice)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.nud_snackQuantity)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pb_snackIcon)).BeginInit(); @@ -154,14 +156,18 @@ private void InitializeComponent() this.col_snackPrice, this.col_snackQuantity, this.col_snackIcon, - this.col_iconPath}); + this.col_iconPath, + this.col_icon}); this.dgv_invent.Dock = System.Windows.Forms.DockStyle.Bottom; this.dgv_invent.Location = new System.Drawing.Point(0, 211); + this.dgv_invent.MultiSelect = false; this.dgv_invent.Name = "dgv_invent"; this.dgv_invent.ReadOnly = true; this.dgv_invent.RowHeadersVisible = false; + this.dgv_invent.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; this.dgv_invent.Size = new System.Drawing.Size(800, 217); this.dgv_invent.TabIndex = 9; + this.dgv_invent.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgv_selectEdit); // // col_snackName // @@ -197,6 +203,13 @@ private void InitializeComponent() this.col_iconPath.ReadOnly = true; this.col_iconPath.Visible = false; // + // col_icon + // + this.col_icon.HeaderText = "snack index"; + this.col_icon.Name = "col_icon"; + this.col_icon.ReadOnly = true; + this.col_icon.Visible = false; + // // btn_add // this.btn_add.Location = new System.Drawing.Point(4, 179); @@ -217,7 +230,7 @@ private void InitializeComponent() this.panel1.Controls.Add(this.nud_snackQuantity); this.panel1.Controls.Add(this.nud_snackPrice); this.panel1.Controls.Add(this.label2); - this.panel1.Location = new System.Drawing.Point(4, 12); + this.panel1.Location = new System.Drawing.Point(0, 0); this.panel1.Name = "panel1"; this.panel1.Size = new System.Drawing.Size(200, 100); this.panel1.TabIndex = 0; @@ -238,11 +251,22 @@ private void InitializeComponent() this.toolStripStatusLabel1.Size = new System.Drawing.Size(118, 17); this.toolStripStatusLabel1.Text = "toolStripStatusLabel1"; // + // btn_clearEntry + // + this.btn_clearEntry.Location = new System.Drawing.Point(125, 182); + this.btn_clearEntry.Name = "btn_clearEntry"; + this.btn_clearEntry.Size = new System.Drawing.Size(75, 23); + this.btn_clearEntry.TabIndex = 12; + this.btn_clearEntry.Text = "Clear Entry"; + this.btn_clearEntry.UseVisualStyleBackColor = true; + this.btn_clearEntry.Click += new System.EventHandler(this.btn_clearEntry_Click); + // // frm_snackInvent // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(800, 450); + this.Controls.Add(this.btn_clearEntry); this.Controls.Add(this.dgv_invent); this.Controls.Add(this.statusStrip1); this.Controls.Add(this.panel1); @@ -289,6 +313,8 @@ private void InitializeComponent() private System.Windows.Forms.DataGridViewTextBoxColumn col_snackQuantity; private System.Windows.Forms.DataGridViewImageColumn col_snackIcon; private System.Windows.Forms.DataGridViewTextBoxColumn col_iconPath; + private System.Windows.Forms.DataGridViewTextBoxColumn col_icon; + private System.Windows.Forms.Button btn_clearEntry; } } diff --git a/frm_snackInvent.cs b/frm_snackInvent.cs index 1d1b497..5a3114b 100644 --- a/frm_snackInvent.cs +++ b/frm_snackInvent.cs @@ -51,10 +51,11 @@ private void btn_add_Click(object sender, EventArgs e) snack.price = Convert.ToDouble(nud_snackPrice.Value); snack.amount = Convert.ToInt32(nud_snackQuantity.Value); snack.imagepath = txt_imagePath.Text; + snack.index = Program.snacks.Count; Program.snacks.Add(snack); //add to list - dgv_invent.Rows.Add(snack.name, snack.price, snack.amount, Image.FromFile(snack.imagepath), snack.imagepath); //add into table + dgv_invent.Rows.Add(snack.name, snack.price, snack.amount, Image.FromFile(snack.imagepath), snack.imagepath, snack.index); //add into table toolStripStatusLabel1.Text = string.Format("Successfully added {0}", snack.name); //show name of snack added @@ -62,7 +63,7 @@ private void btn_add_Click(object sender, EventArgs e) txt_imagePath.Text = ""; txt_snackName.Text = ""; nud_snackPrice.Value = constants.minPrice; - nud_snackQuantity.Value = 0; + nud_snackQuantity.Value = constants.minQuantity; pb_snackIcon.Image = null; } } @@ -78,7 +79,7 @@ private void frm_snackInvent_FormClosing(object sender, FormClosingEventArgs e) foreach (var snack in Program.snacks) { //snack name, price, quantity, imagepath - sw.WriteLine(snack.name + constants.entrySep + snack.price + constants.entrySep + snack.amount + constants.entrySep + snack.imagepath); //write in csv format + sw.WriteLine(snack.name + constants.entrySep + snack.price + constants.entrySep + snack.amount + constants.entrySep + snack.imagepath + constants.entrySep + snack.index); //write in csv format count++; //increment count toolStripStatusLabel1.Text = String.Format("Wrote {0} snacks to file", count); //show how many entries have been written so far @@ -87,7 +88,7 @@ private void frm_snackInvent_FormClosing(object sender, FormClosingEventArgs e) } catch (Exception ex) //catch exception { - MessageBox.Show("Error during file write", "", MessageBoxButtons.OK, MessageBoxIcon.Error); + MessageBox.Show(ex.ToString(), "Error during file write", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void frm_snackInvent_Load(object sender, EventArgs e) @@ -105,7 +106,7 @@ private void frm_snackInvent_Load(object sender, EventArgs e) while(!sr.EndOfStream) { snackInvent snack = new snackInvent(); //make new class - //order is: snackname, price, quantity, imagepath + //order is: snackname, price, quantity, imagepath, index string line = sr.ReadLine(); //read line string[] arr = line.Split(constants.entrySep); //split into an array based on the csv format @@ -115,20 +116,70 @@ private void frm_snackInvent_Load(object sender, EventArgs e) snack.price = double.Parse(arr[1]); snack.amount = Int32.Parse(arr[2]); snack.imagepath = arr[3]; + snack.index = int.Parse(arr[4]); count++; toolStripStatusLabel1.Text = String.Format("Loaded {0} snacks from file", count); //show how many snacks loaded at this point Program.snacks.Add(snack); //add class into list - dgv_invent.Rows.Add(snack.name, snack.price, snack.amount, Image.FromFile(snack.imagepath), snack.imagepath); //add class to table + dgv_invent.Rows.Add(snack.name, snack.price, snack.amount, Image.FromFile(snack.imagepath), snack.imagepath, snack.index); //add class to table } } } } catch (Exception ex) //catch exception { - MessageBox.Show("Error during file read", "", MessageBoxButtons.OK, MessageBoxIcon.Error); + MessageBox.Show(ex.ToString(), "Error during file write", MessageBoxButtons.OK, MessageBoxIcon.Error); } } + + + private void dgv_selectEdit(object sender, DataGridViewCellEventArgs e) + { + if (dgv_invent == null) + { + return; //output nothing + } //make sure there is something selected + var row = dgv_invent.CurrentRow; //set a variable to the contents of the current row + var indText = row.Cells[5].Value.ToString(); //get the index value from what was clicked + var ind = int.Parse(indText); + var item = Program.snacks[ind]; + if (item != null) + { + txt_imagePath.Text = item.imagepath; + pb_snackIcon.ImageLocation = item.imagepath; + var price = Convert.ToDecimal(item.price); + if (price >= constants.minPrice) + { + } else + { + price = constants.minPrice; + } + nud_snackPrice.Value= price; + var amount = Convert.ToDecimal(item.amount); + if(amount >= constants.minQuantity) + { + + } else + { + amount = 0; + } + nud_snackQuantity.Value= amount; + } //check if it exists + btn_add.Text = "Edit Entry"; //change button text + } //populate text boxes with the content of the selected row + + private void btn_clearEntry_Click(object sender, EventArgs e) + { + txt_imagePath.Text = ""; + txt_snackName.Text = ""; + nud_snackPrice.Value = constants.minPrice; + nud_snackQuantity.Value = constants.minQuantity; + pb_snackIcon.Image = null; + if (dgv_invent.CurrentRow != null) + { + dgv_invent.ClearSelection(); //deselect row + } //if a row is selected (which therefore means it was editing an entry), deselect all rows + } } -} +} \ No newline at end of file diff --git a/frm_snackInvent.resx b/frm_snackInvent.resx index 37bf960..5be264a 100644 --- a/frm_snackInvent.resx +++ b/frm_snackInvent.resx @@ -135,6 +135,9 @@ True + + True + 156, 17 diff --git a/snackInvent.cs b/snackInvent.cs index cf1e947..856729e 100644 --- a/snackInvent.cs +++ b/snackInvent.cs @@ -6,7 +6,6 @@ internal class snackInvent internal double price; //cost of snack internal int amount; //quantity of snack internal string imagepath; //path of image - //internal int index; - //the index of the entry + internal int index; //the index of the entry } }