protected void ListMenuItemsSelected(List <string> Items)
        {
            if (Items == null)
            {
                return;
            }

            string Name;

            for (int I = 0; I < Items.Count; I++)
            {
                switch (ItemSelectionChoice)
                {
                case ItemSelectionChoices.Personality:
                    Name = Items[I].Substring(0, Items[0].Length - 5).Substring(33);
                    txtPersonality.Text = Name;
                    break;

                case ItemSelectionChoices.SetBattleTheme:
                    Name = Items[I].Substring(0, Items[0].Length - 4).Substring(17);
                    txtBattleTheme.Text = Name;
                    break;

                case ItemSelectionChoices.AceBonus:
                    if (Items[I] == null)
                    {
                        txtAceBonus.Text = "None";
                    }
                    else
                    {
                        Name             = Items[I].Substring(0, Items[0].Length - 5).Substring(Items[0].LastIndexOf("Skills") + 7);
                        txtAceBonus.Text = Name;
                    }
                    break;

                case ItemSelectionChoices.Slave:
                    if (Items[I] == null)
                    {
                        txtSlave.Text = "None";
                    }
                    else
                    {
                        Name          = Items[I].Substring(0, Items[0].Length - 4).Substring(19);
                        txtSlave.Text = Name;
                    }
                    break;

                    #region Skills

                case ItemSelectionChoices.Skill1:
                    if (Items[I] == null)
                    {
                        txtPilotSkill1.Text = "None";
                    }
                    else
                    {
                        Name = Items[I].Substring(0, Items[I].Length - 5).Substring(26);
                        txtPilotSkill1.Text       = Name;
                        ArraySkillLevelsEditor[0] = new SkillLevelsEditor(Name);
                    }
                    break;

                case ItemSelectionChoices.Skill2:
                    if (Items[I] == null)
                    {
                        txtPilotSkill2.Text = "None";
                    }
                    else
                    {
                        Name = Items[I].Substring(0, Items[I].Length - 5).Substring(26);
                        txtPilotSkill2.Text       = Name;
                        ArraySkillLevelsEditor[1] = new SkillLevelsEditor(Name);
                    }
                    break;

                case ItemSelectionChoices.Skill3:
                    if (Items[I] == null)
                    {
                        txtPilotSkill3.Text = "None";
                    }
                    else
                    {
                        Name = Items[I].Substring(0, Items[I].Length - 5).Substring(26);
                        txtPilotSkill3.Text       = Name;
                        ArraySkillLevelsEditor[2] = new SkillLevelsEditor(Name);
                    }
                    break;

                case ItemSelectionChoices.Skill4:
                    if (Items[I] == null)
                    {
                        txtPilotSkill4.Text = "None";
                    }
                    else
                    {
                        Name = Items[I].Substring(0, Items[I].Length - 5).Substring(26);
                        txtPilotSkill4.Text       = Name;
                        ArraySkillLevelsEditor[3] = new SkillLevelsEditor(Name);
                    }
                    break;

                case ItemSelectionChoices.Skill5:
                    if (Items[I] == null)
                    {
                        txtPilotSkill5.Text = "None";
                    }
                    else
                    {
                        Name = Items[I].Substring(0, Items[I].Length - 5).Substring(26);
                        txtPilotSkill5.Text       = Name;
                        ArraySkillLevelsEditor[4] = new SkillLevelsEditor(Name);
                    }
                    break;

                case ItemSelectionChoices.Skill6:
                    if (Items[I] == null)
                    {
                        txtPilotSkill6.Text = "None";
                    }
                    else
                    {
                        Name = Items[I].Substring(0, Items[I].Length - 5).Substring(26);
                        txtPilotSkill6.Text       = Name;
                        ArraySkillLevelsEditor[5] = new SkillLevelsEditor(Name);
                    }
                    break;

                    #endregion

                    #region Spirits

                case ItemSelectionChoices.Spirit1:
                    if (Items[I] == null)
                    {
                        txtPilotSpirit1.Text = "None";
                    }
                    else
                    {
                        Name = Items[I].Substring(0, Items[I].Length - 5).Substring(27);
                        if (Name != null)
                        {
                            txtPilotSpirit1.Text = Name;
                        }
                    }
                    break;

                case ItemSelectionChoices.Spirit2:
                    if (Items[I] == null)
                    {
                        txtPilotSpirit2.Text = "None";
                    }
                    else
                    {
                        Name = Items[I].Substring(0, Items[I].Length - 5).Substring(27);
                        if (Name != null)
                        {
                            txtPilotSpirit2.Text = Name;
                        }
                    }
                    break;

                case ItemSelectionChoices.Spirit3:
                    if (Items[I] == null)
                    {
                        txtPilotSpirit3.Text = "None";
                    }
                    else
                    {
                        Name = Items[I].Substring(0, Items[I].Length - 5).Substring(27);
                        if (Name != null)
                        {
                            txtPilotSpirit3.Text = Name;
                        }
                    }
                    break;

                case ItemSelectionChoices.Spirit4:
                    if (Items[I] == null)
                    {
                        txtPilotSpirit4.Text = "None";
                    }
                    else
                    {
                        Name = Items[I].Substring(0, Items[I].Length - 5).Substring(27);
                        if (Name != null)
                        {
                            txtPilotSpirit4.Text = Name;
                        }
                    }
                    break;

                case ItemSelectionChoices.Spirit5:
                    if (Items[I] == null)
                    {
                        txtPilotSpirit5.Text = "None";
                    }
                    else
                    {
                        Name = Items[I].Substring(0, Items[I].Length - 5).Substring(27);
                        if (Name != null)
                        {
                            txtPilotSpirit5.Text = Name;
                        }
                    }
                    break;

                case ItemSelectionChoices.Spirit6:
                    if (Items[I] == null)
                    {
                        txtPilotSpirit6.Text = "None";
                    }
                    else
                    {
                        Name = Items[I].Substring(0, Items[I].Length - 5).Substring(27);
                        if (Name != null)
                        {
                            txtPilotSpirit6.Text = Name;
                        }
                    }
                    break;

                    #endregion
                }
            }
        }
        private void LoadCharacter(string CharacterPath)
        {
            Name = CharacterPath.Substring(0, CharacterPath.Length - 4).Substring(CharacterPath.LastIndexOf("Characters") + 11);
            Character NewCharacter = new Character(Name, null, DicRequirement, DicEffect, DicAutomaticSkillTarget, DicManualSkillTarget);

            QuoteEditor      = new CharacterQuotesEditor();
            StatsEditor      = new CharacterStatsEditor(NewCharacter);
            frmDetailsEditor = new DetailsEditor();

            frmDetailsEditor.txtPortrait.Text = NewCharacter.PortraitPath;
            for (int B = 0; B < NewCharacter.ArrayPortraitBustPath.Length; ++B)
            {
                frmDetailsEditor.lstBust.Items.Add(NewCharacter.ArrayPortraitBustPath[B]);
            }
            for (int B = 0; B < NewCharacter.ArrayPortraitBoxPath.Length; ++B)
            {
                frmDetailsEditor.lstBox.Items.Add(NewCharacter.ArrayPortraitBoxPath[B]);
            }
            frmDetailsEditor.txtTags.Text = NewCharacter.Tags;

            this.Text = NewCharacter.Name + " - Project Eternity Character Editor";

            //Update the editor's members.
            txtName.Text        = NewCharacter.Name;
            txtEXP.Value        = NewCharacter.EXPValue;
            cbCanPilot.Checked  = NewCharacter.CanPilot;
            txtPersonality.Text = NewCharacter.Personality.Name;
            txtBattleTheme.Text = NewCharacter.BattleThemeName;
            if (NewCharacter.AceBonus != null)
            {
                txtAceBonus.Text = NewCharacter.AceBonus.Name;
            }
            if (NewCharacter.Slave != null)
            {
                txtSlave.Text = NewCharacter.Slave.FullName;
            }

            List <char> ListGrade = new List <char> {
                'S', 'A', 'B', 'C', 'D'
            };

            cbAirRank.SelectedIndex   = ListGrade.IndexOf(NewCharacter.TerrainGrade.TerrainGradeAir);
            cbLandRank.SelectedIndex  = ListGrade.IndexOf(NewCharacter.TerrainGrade.TerrainGradeLand);
            cbSeaRank.SelectedIndex   = ListGrade.IndexOf(NewCharacter.TerrainGrade.TerrainGradeSea);
            cbSpaceRank.SelectedIndex = ListGrade.IndexOf(NewCharacter.TerrainGrade.TerrainGradeSpace);

            for (int S = 0; S < NewCharacter.ArrayPilotSpirit.Length; ++S)
            {
                switch (S)
                {
                case 0:
                    txtPilotSpirit1.Text              = NewCharacter.ArrayPilotSpirit[S].FullName;
                    txtPilotSpirit1SP.Text            = NewCharacter.ArrayPilotSpirit[S].SPCost.ToString();
                    txtPilotSpirit1LevelRequired.Text = NewCharacter.ArrayPilotSpirit[S].LevelRequirement.ToString();
                    break;

                case 1:
                    txtPilotSpirit2.Text              = NewCharacter.ArrayPilotSpirit[S].FullName;
                    txtPilotSpirit2SP.Text            = NewCharacter.ArrayPilotSpirit[S].SPCost.ToString();
                    txtPilotSpirit2LevelRequired.Text = NewCharacter.ArrayPilotSpirit[S].LevelRequirement.ToString();
                    break;

                case 2:
                    txtPilotSpirit3.Text              = NewCharacter.ArrayPilotSpirit[S].FullName;
                    txtPilotSpirit3SP.Text            = NewCharacter.ArrayPilotSpirit[S].SPCost.ToString();
                    txtPilotSpirit3LevelRequired.Text = NewCharacter.ArrayPilotSpirit[S].LevelRequirement.ToString();
                    break;

                case 3:
                    txtPilotSpirit4.Text              = NewCharacter.ArrayPilotSpirit[S].FullName;
                    txtPilotSpirit4SP.Text            = NewCharacter.ArrayPilotSpirit[S].SPCost.ToString();
                    txtPilotSpirit4LevelRequired.Text = NewCharacter.ArrayPilotSpirit[S].LevelRequirement.ToString();
                    break;

                case 4:
                    txtPilotSpirit5.Text              = NewCharacter.ArrayPilotSpirit[S].FullName;
                    txtPilotSpirit5SP.Text            = NewCharacter.ArrayPilotSpirit[S].SPCost.ToString();
                    txtPilotSpirit5LevelRequired.Text = NewCharacter.ArrayPilotSpirit[S].LevelRequirement.ToString();
                    break;

                case 5:
                    txtPilotSpirit6.Text              = NewCharacter.ArrayPilotSpirit[S].FullName;
                    txtPilotSpirit6SP.Text            = NewCharacter.ArrayPilotSpirit[S].SPCost.ToString();
                    txtPilotSpirit6LevelRequired.Text = NewCharacter.ArrayPilotSpirit[S].LevelRequirement.ToString();
                    break;
                }
            }

            ArraySkillLevelsEditor = new SkillLevelsEditor[6];
            for (int S = 0; S < NewCharacter.ArrayPilotSkill.Length; ++S)
            {
                if (NewCharacter.ArrayPilotSkill[S] != null)
                {
                    ArraySkillLevelsEditor[S] = new SkillLevelsEditor(NewCharacter.ArrayPilotSkill[S].RelativePath, NewCharacter.ArrayPilotSkillLevels[S]);
                }

                switch (S)
                {
                case 0:
                    txtPilotSkill1.Text    = NewCharacter.ArrayPilotSkill[S].RelativePath;
                    ckLockedSkill1.Checked = NewCharacter.ArrayPilotSkillLocked[S];
                    btnEditLevels1.Enabled = NewCharacter.ArrayPilotSkill[S] != null;
                    break;

                case 1:
                    txtPilotSkill2.Text    = NewCharacter.ArrayPilotSkill[S].RelativePath;
                    ckLockedSkill2.Checked = NewCharacter.ArrayPilotSkillLocked[S];
                    btnEditLevels2.Enabled = NewCharacter.ArrayPilotSkill[S] != null;
                    break;

                case 2:
                    txtPilotSkill3.Text    = NewCharacter.ArrayPilotSkill[S].RelativePath;
                    ckLockedSkill3.Checked = NewCharacter.ArrayPilotSkillLocked[S];
                    btnEditLevels3.Enabled = NewCharacter.ArrayPilotSkill[S] != null;
                    break;

                case 3:
                    txtPilotSkill4.Text    = NewCharacter.ArrayPilotSkill[S].RelativePath;
                    ckLockedSkill4.Checked = NewCharacter.ArrayPilotSkillLocked[S];
                    btnEditLevels4.Enabled = NewCharacter.ArrayPilotSkill[S] != null;
                    break;

                case 4:
                    txtPilotSkill5.Text    = NewCharacter.ArrayPilotSkill[S].RelativePath;
                    ckLockedSkill5.Checked = NewCharacter.ArrayPilotSkillLocked[S];
                    btnEditLevels5.Enabled = NewCharacter.ArrayPilotSkill[S] != null;
                    break;

                case 5:
                    txtPilotSkill6.Text    = NewCharacter.ArrayPilotSkill[S].RelativePath;
                    ckLockedSkill6.Checked = NewCharacter.ArrayPilotSkillLocked[S];
                    btnEditLevels6.Enabled = NewCharacter.ArrayPilotSkill[S] != null;
                    break;
                }
            }

            frmRelationshipEditor = new RelationshipEditor(NewCharacter.ArrayRelationshipBonus);

            //Versus names
            for (int I = 0; I < NewCharacter.ListQuoteSetVersusName.Count; I++)
            {
                QuoteEditor.lsVersusQuotes.Items.Add(NewCharacter.ListQuoteSetVersusName[I]);
            }

            //Base quotes
            for (int I = 0; I < 6; I++)
            {
                QuoteEditor.lvBaseQuotes.Items[I].Tag = NewCharacter.ArrayBaseQuoteSet[I];
            }

            //Attack quotes
            for (int i = 0; i < NewCharacter.DicAttackQuoteSet.Count; i++)
            {
                KeyValuePair <string, Character.QuoteSet> NewQuoteSet = NewCharacter.DicAttackQuoteSet.ElementAt(i);
                QuoteEditor.dgvQuoteSets.Rows.Add(NewQuoteSet.Key);
                QuoteEditor.dgvQuoteSets.Rows[i].Tag = NewQuoteSet.Value;
            }
        }