User is now prompted to save, per case 268.

Signed-off-by: Melissa Avery-Weir <melissa.avery@wellsfargo.com>
This commit is contained in:
Melissa Avery-Weir
2011-09-27 12:28:03 -04:00
parent cd047b1085
commit 66cc12356a
3 changed files with 142 additions and 51 deletions

View File

@@ -1,4 +1,5 @@
namespace d20_SRD_Spell_Lists {
using System.ComponentModel;
namespace d20_SRD_Spell_Lists {
partial class FrmMain {
/// <summary>
/// Required designer variable.
@@ -23,9 +24,9 @@
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent() {
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmMain));
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.lblExtra9 = new System.Windows.Forms.Label();
this.lblExtra8 = new System.Windows.Forms.Label();
@@ -622,6 +623,7 @@
this.newToolStripButton.Name = "newToolStripButton";
this.newToolStripButton.Size = new System.Drawing.Size(23, 22);
this.newToolStripButton.Text = "&New";
this.newToolStripButton.Click += new System.EventHandler(this.newToolStripButton_Click);
//
// openToolStripButton
//
@@ -780,10 +782,10 @@
// editColumn
//
this.editColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.AllCells;
dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
dataGridViewCellStyle1.BackColor = System.Drawing.Color.White;
dataGridViewCellStyle1.NullValue = ((object)(resources.GetObject("dataGridViewCellStyle1.NullValue")));
this.editColumn.DefaultCellStyle = dataGridViewCellStyle1;
dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
dataGridViewCellStyle3.BackColor = System.Drawing.Color.White;
dataGridViewCellStyle3.NullValue = ((object)(resources.GetObject("dataGridViewCellStyle3.NullValue")));
this.editColumn.DefaultCellStyle = dataGridViewCellStyle3;
this.editColumn.HeaderText = "";
this.editColumn.Image = global::d20_SRD_Spell_Lists.Properties.Resources.pencil;
this.editColumn.Name = "editColumn";
@@ -846,10 +848,10 @@
// dataGridViewImageColumn1
//
this.dataGridViewImageColumn1.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.AllCells;
dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
dataGridViewCellStyle2.BackColor = System.Drawing.Color.Gray;
dataGridViewCellStyle2.NullValue = ((object)(resources.GetObject("dataGridViewCellStyle2.NullValue")));
this.dataGridViewImageColumn1.DefaultCellStyle = dataGridViewCellStyle2;
dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
dataGridViewCellStyle4.BackColor = System.Drawing.Color.Gray;
dataGridViewCellStyle4.NullValue = ((object)(resources.GetObject("dataGridViewCellStyle4.NullValue")));
this.dataGridViewImageColumn1.DefaultCellStyle = dataGridViewCellStyle4;
this.dataGridViewImageColumn1.HeaderText = "";
this.dataGridViewImageColumn1.Image = global::d20_SRD_Spell_Lists.Properties.Resources.edit_16;
this.dataGridViewImageColumn1.Name = "dataGridViewImageColumn1";
@@ -875,6 +877,7 @@
this.Controls.Add(this.mainToolStrip);
this.Name = "FrmMain";
this.Text = "D&D 3.5 SRD Spell Lists";
this.Closing += new CancelEventHandler(this.FrmMain_Closing);
this.tableLayoutPanel1.ResumeLayout(false);
this.tableLayoutPanel1.PerformLayout();
this.groupBox1.ResumeLayout(false);

View File

@@ -18,6 +18,7 @@ namespace d20_SRD_Spell_Lists {
private Character character;
private string characterFile;
private bool loadingCharacter;
private bool dirtyCharacter;
private PrintingDataGridViewProvider printProvider;
public FrmMain() {
@@ -27,6 +28,7 @@ namespace d20_SRD_Spell_Lists {
spells = new MasterSpellSet();
spellsDataGridView.AutoGenerateColumns = false;
loadingCharacter = false;
dirtyCharacter = false;
setupAttributes();
setupClassList();
@@ -87,6 +89,8 @@ namespace d20_SRD_Spell_Lists {
offerNewSpells();
}
}
dirtyCharacter = true;
}
private void offerNewSpells() {
@@ -169,29 +173,50 @@ namespace d20_SRD_Spell_Lists {
XmlSerializer serializer = new XmlSerializer(typeof(Character));
using (TextWriter writer = new StreamWriter(characterFile)) {
serializer.Serialize(writer, character);
dirtyCharacter = false;
}
}
private void txtCharacter_TextChanged(object sender, EventArgs e) {
character.Name = txtCharacter.Text;
dirtyCharacter = true;
}
private bool promptSaveAndContinue() {
if (dirtyCharacter) {
string msg = "Do you want to save your current character?";
string title = "Save?";
var result = MessageBox.Show(msg, title, MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
if (result == System.Windows.Forms.DialogResult.Yes) {
saveToolStripButton.PerformClick();
return true;
} else if (result == System.Windows.Forms.DialogResult.Cancel) {
return false;
}
}
return true;
}
private void openToolStripButton_Click(object sender, EventArgs e) {
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "Character files (*.xml)|*.xml|All files (*.*)|*.*";
ofd.FilterIndex = 1;
ofd.RestoreDirectory = true;
if (promptSaveAndContinue()) {
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "Character files (*.xml)|*.xml|All files (*.*)|*.*";
ofd.FilterIndex = 1;
ofd.RestoreDirectory = true;
if (ofd.ShowDialog() == DialogResult.OK) {
try {
characterFile = ofd.FileName;
loadingCharacter = true;
loadCharacter();
loadValues();
} catch (Exception ex) {
MessageBox.Show("Error: Could not read the character file. Original error: " + ex.Message);
} finally {
loadingCharacter = false;
if (ofd.ShowDialog() == DialogResult.OK) {
try {
characterFile = ofd.FileName;
loadingCharacter = true;
loadCharacter();
loadValues();
} catch (Exception ex) {
MessageBox.Show("Error: Could not read the character file. Original error: " + ex.Message);
} finally {
loadingCharacter = false;
dirtyCharacter = false;
}
}
}
}
@@ -217,6 +242,7 @@ namespace d20_SRD_Spell_Lists {
character.Spells.Add(addForm.spell);
character.Spells.Sort(new SpellInequalityComparer());
refreshSpellList();
dirtyCharacter = true;
}
}
@@ -228,6 +254,7 @@ namespace d20_SRD_Spell_Lists {
if (result == System.Windows.Forms.DialogResult.OK) {
character.Spells[character.Spells.IndexOf(editItem)] = editForm.spell;
refreshSpellList();
dirtyCharacter = true;
}
} else if (isDeleteButtonCell(e)) {
Spell deleteItem = (Spell)spellsDataGridView.Rows[e.RowIndex].DataBoundItem;
@@ -237,6 +264,7 @@ namespace d20_SRD_Spell_Lists {
if (result == System.Windows.Forms.DialogResult.Yes) {
character.Spells.Remove(deleteItem);
refreshSpellList();
dirtyCharacter = true;
}
}
}
@@ -281,5 +309,44 @@ namespace d20_SRD_Spell_Lists {
spellsDataGridView.Columns["editColumn"].Visible = true;
spellsDataGridView.Columns["deleteColumn"].Visible = true;
}
protected override bool ProcessCmdKey(ref Message msg, Keys keyData) {
switch (keyData) {
case (Keys.Control | Keys.O):
openToolStripButton.PerformClick();
return true;
case (Keys.Control | Keys.S):
saveToolStripButton.PerformClick();
return true;
case (Keys.Control | Keys.N):
newToolStripButton.PerformClick();
return true;
case (Keys.Control | Keys.P):
printToolStripButton.PerformClick();
return true;
case (Keys.Control | Keys.H):
helpToolStripButton.PerformClick();
return true;
default:
return base.ProcessCmdKey(ref msg, keyData);
}
}
private void newToolStripButton_Click(object sender, EventArgs e) {
if (promptSaveAndContinue()) {
loadingCharacter = true;
character = new Character();
character.SpellCastingAttribute = 10;
loadValues();
charClassComboBox.SelectedIndex = 0;
loadingCharacter = false;
}
}
private void FrmMain_Closing(object sender, CancelEventArgs e) {
if (sender != this || !promptSaveAndContinue()) {
e.Cancel = true;
}
}
}
}

View File

@@ -138,22 +138,43 @@
<metadata name="editColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="deleteColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="prepColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="levelColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="spellNameColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="componentColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="descColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="editColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="dataGridViewCellStyle1.NullValue" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<data name="dataGridViewCellStyle3.NullValue" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
Qk32AgAAAAAAADYAAAAoAAAADgAAABAAAAABABgAAAAAAAAAAADEDgAAxA4AAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYGEgoTGw8bGw8bGw8bGw8bGw8bGw8bG
w8bGw8bGw8bGw8bGw8bGw8YAAAABgYSChP///////////////////////////////////////////8bD
xgAAAAGBhIKE////////////////////////////////////////////xsPGAAAAAYGEgoT/////////
///////////////////////////////////Gw8YAAAABgYSChP//////////////////////////////
/////////////8bDxgAAAAGBhIKE////////////AAD/AAD/////////AAD/AAD/////////xsPGAAAA
AYGEgoT///////////////8AAP8AAP8AAP8AAP/////////////Gw8YAAAABgYSChP//////////////
/////wAA/wAA/////////////////8bDxgAAAAGBhIKE////////////////AAD/AAD/AAD/AAD/////
////////xsPGAAAAAYGEgoT///////////8AAP8AAP////////8AAP8AAP/////////Gw8YAAAABgYSC
hP///////////////////////////////////////////8bDxgAAAAGBhIKE////////////////////
////////////////////////xsPGAAAAAYGEgoT/////////////////////////////////////////
///Gw8YAAAABgYSChP///////////////////////////////////////////8bDxgAAAAGBhIKEhIKE
hIKEhIKEhIKEhIKEhIKEhIKEhIKEhIKEhIKEhIKEhIKEhIKEAYE=
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEgoTGw8bGw8bGw8bGw8bGw8bGw8bG
w8bGw8bGw8bGw8bGw8bGw8YAAAAAAISChP///////////////////////////////////////////8bD
xgAAAAAAhIKE////////////////////////////////////////////xsPGAAAAAACEgoT/////////
///////////////////////////////////Gw8YAAAAAAISChP//////////////////////////////
/////////////8bDxgAAAAAAhIKE////////////AAD/AAD/////////AAD/AAD/////////xsPGAAAA
AACEgoT///////////////8AAP8AAP8AAP8AAP/////////////Gw8YAAAAAAISChP//////////////
/////wAA/wAA/////////////////8bDxgAAAAAAhIKE////////////////AAD/AAD/AAD/AAD/////
////////xsPGAAAAAACEgoT///////////8AAP8AAP////////8AAP8AAP/////////Gw8YAAAAAAISC
hP///////////////////////////////////////////8bDxgAAAAAAhIKE////////////////////
////////////////////////xsPGAAAAAACEgoT/////////////////////////////////////////
///Gw8YAAAAAAISChP///////////////////////////////////////////8bDxgAAAAAAhIKEhIKE
hIKEhIKEhIKEhIKEhIKEhIKEhIKEhIKEhIKEhIKEhIKEhIKEAAA=
</value>
</data>
<metadata name="deleteColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
@@ -162,21 +183,21 @@
<metadata name="printDoc.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>130, 17</value>
</metadata>
<data name="dataGridViewCellStyle2.NullValue" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<data name="dataGridViewCellStyle4.NullValue" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
Qk32AgAAAAAAADYAAAAoAAAADgAAABAAAAABABgAAAAAAAAAAADEDgAAxA4AAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYGEgoTGw8bGw8bGw8bGw8bGw8bGw8bG
w8bGw8bGw8bGw8bGw8bGw8YAAAABgYSChP///////////////////////////////////////////8bD
xgAAAAGBhIKE////////////////////////////////////////////xsPGAAAAAYGEgoT/////////
///////////////////////////////////Gw8YAAAABgYSChP//////////////////////////////
/////////////8bDxgAAAAGBhIKE////////////AAD/AAD/////////AAD/AAD/////////xsPGAAAA
AYGEgoT///////////////8AAP8AAP8AAP8AAP/////////////Gw8YAAAABgYSChP//////////////
/////wAA/wAA/////////////////8bDxgAAAAGBhIKE////////////////AAD/AAD/AAD/AAD/////
////////xsPGAAAAAYGEgoT///////////8AAP8AAP////////8AAP8AAP/////////Gw8YAAAABgYSC
hP///////////////////////////////////////////8bDxgAAAAGBhIKE////////////////////
////////////////////////xsPGAAAAAYGEgoT/////////////////////////////////////////
///Gw8YAAAABgYSChP///////////////////////////////////////////8bDxgAAAAGBhIKEhIKE
hIKEhIKEhIKEhIKEhIKEhIKEhIKEhIKEhIKEhIKEhIKEhIKEAYE=
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEgoTGw8bGw8bGw8bGw8bGw8bGw8bG
w8bGw8bGw8bGw8bGw8bGw8YAAAAAAISChP///////////////////////////////////////////8bD
xgAAAAAAhIKE////////////////////////////////////////////xsPGAAAAAACEgoT/////////
///////////////////////////////////Gw8YAAAAAAISChP//////////////////////////////
/////////////8bDxgAAAAAAhIKE////////////AAD/AAD/////////AAD/AAD/////////xsPGAAAA
AACEgoT///////////////8AAP8AAP8AAP8AAP/////////////Gw8YAAAAAAISChP//////////////
/////wAA/wAA/////////////////8bDxgAAAAAAhIKE////////////////AAD/AAD/AAD/AAD/////
////////xsPGAAAAAACEgoT///////////8AAP8AAP////////8AAP8AAP/////////Gw8YAAAAAAISC
hP///////////////////////////////////////////8bDxgAAAAAAhIKE////////////////////
////////////////////////xsPGAAAAAACEgoT/////////////////////////////////////////
///Gw8YAAAAAAISChP///////////////////////////////////////////8bDxgAAAAAAhIKEhIKE
hIKEhIKEhIKEhIKEhIKEhIKEhIKEhIKEhIKEhIKEhIKEhIKEAAA=
</value>
</data>
</root>