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
}
}