private void PopulateFields(string recordName) { bool bitFlag; Model = new SpellModel(); DetailModel = new List <SpellDetailsModel>(); if (recordName != string.Empty) { Model.Initialize(recordName); DetailModel = SpellDetailsModel.GetAll(Model.Id); } //basic fields SpellNameInputBox.Text = Model.SpellName; SpellSchoolComboBox.SelectedItem = SpellSchoolModel.GetNameFromId(Model.SpellSchoolId); SpellIconInputBox.Text = Model.IconFilename; DescriptionPreview.Navigate("about:blank"); DescriptionPreview.Document.OpenNew(false); DescriptionPreview.Document.Write(Model.Description); DescriptionPreview.Refresh(); RangeInputComboBox.SelectedItem = Model.SpellRange; for (int i = 0; i < ComponentCheckListBox.Items.Count; i++) { bitFlag = ((Model.SpellComponents & (1 << i)) > 0); ComponentCheckListBox.SetItemChecked(i, bitFlag); } for (int i = 0; i < MetamagicFeatCheckListBox.Items.Count; i++) { bitFlag = ((Model.MetamagicFeats & (1 << i)) > 0); MetamagicFeatCheckListBox.SetItemChecked(i, bitFlag); } for (int i = 0; i < TargetCheckListBox.Items.Count; i++) { bitFlag = ((Model.Targets & (1 << i)) > 0); TargetCheckListBox.SetItemChecked(i, bitFlag); } DurationInputTextBox.Text = Model.Duration; SavingThrowComboBox.SelectedItem = Model.SavingThrow; if (Model.SpellResistance == true) { SpellResistanceComboBox.SelectedItem = "Yes"; } else { SpellResistanceComboBox.SelectedItem = "No"; } ModDateLabel.Text = Model.LastUpdatedDate.ToString(); ModVersionLabel.Text = Model.LastUpdatedVersion; RecordGUIDLabel.Text = Model.Id.ToString(); //the icon SpellIcon = new IconClass("Spells\\" + Model.IconFilename); SpellIcon.SetLocation(this.Width, this.Height, IconLocation); //the spell detail panel //Delete/Remove Current Controls for (int i = 0; i < SpellDetailSubPanel.Controls.Count; i++) { SpellDetailSubPanel.Controls[i].Dispose(); } SpellDetailSubPanel.Controls.Clear(); SpellDetailClassComboBox.Clear(); SpellDetailLevelComboBox.Clear(); SpellDetailCoolDownTextBox.Clear(); SpellDetailSPCostUpDownBox.Clear(); SpellDetailDeleteButton.Clear(); //reload the panel SpellDetailRecordCount = 0; foreach (SpellDetailsModel detail in DetailModel) { AddSpellDetailRecordUI(detail); } DatabaseName = Model.SpellName; //invalidate the screen to make sure everything gets updated (icon, etc). Invalidate(); }
/// <summary> /// Handle an input change on a checkbox input /// </summary> /// <param name="sender"></param> /// <param name="Type"></param> private void CheckBoxChange(object sender, InputType type, ItemCheckEventArgs e) { ushort bitField; switch (type) { case InputType.Component: { bitField = 0; for (ushort i = 0; i < ComponentCheckListBox.Items.Count; i++) { if (ComponentCheckListBox.GetItemChecked(i)) { bitField = (ushort)(bitField | (1 << i)); } } if (e.NewValue == CheckState.Checked) { bitField = (ushort)(bitField | (1 << e.Index)); } else { bitField -= (ushort)(1 << e.Index); } Model.SpellComponents = bitField; DataHasChanged = true; break; } case InputType.MetamagicFeat: { bitField = 0; for (ushort i = 0; i < MetamagicFeatCheckListBox.Items.Count; i++) { if (MetamagicFeatCheckListBox.GetItemChecked(i)) { bitField = (ushort)(bitField | (1 << i)); } } if (e.NewValue == CheckState.Checked) { bitField = (ushort)(bitField | (1 << e.Index)); } else { bitField -= (ushort)(1 << e.Index); } Model.MetamagicFeats = bitField; DataHasChanged = true; break; } case InputType.Target: { bitField = 0; for (ushort i = 0; i < TargetCheckListBox.Items.Count; i++) { if (TargetCheckListBox.GetItemChecked(i)) { bitField = (ushort)(bitField | (1 << i)); } } if (e.NewValue == CheckState.Checked) { bitField = (ushort)(bitField | (1 << e.Index)); } else { bitField -= (ushort)(1 << e.Index); } Model.Targets = bitField; DataHasChanged = true; break; } } }