Пример #1
0
 protected virtual void OnBtnLoadClicked(object sender, System.EventArgs e)
 {
     if (tour == null)
     {
         MiscHelpers.ShowMessage(this, "None selected.", MessageType.Error);
         return;
     }
     if (MiscHelpers.AskYesNo(this, "This will overwrite ALL data! Continue?") == ResponseType.Yes)
     {
         Tournament.I = tour;
         ShowRanking.I.UpdateAll();
         MiscHelpers.ShowMessage(this, "Backup loaded successfully.", MessageType.Info);
     }
 }
Пример #2
0
        protected virtual void OnBtnDebaterRemoveClicked(object sender, EventArgs e)
        {
            if (treeDebaters.Selection.CountSelectedRows() == 0)
            {
                return;
            }

            // display warning and hint
            if (Tournament.I.Rounds.Count > 0 &&
                MiscHelpers.AskYesNo(this, "Deleting with existing rounds can lead to inconsistent data. " +
                                     "Better try renaming of existing debaters or swapping their roles. Continue anyway?")
                == ResponseType.No)
            {
                return;
            }
            else if (MiscHelpers.AskYesNo(this, "Do you really want to remove this entry?") ==
                     ResponseType.No)
            {
                return;
            }

            // delete the selected rows
            List <TreeIter> storeIters = new List <TreeIter>();

            foreach (TreePath path in treeDebaters.Selection.GetSelectedRows())
            {
                TreeIter iter;
                if (treeDebaters.Model.GetIter(out iter, path))
                {
                    TreeIter storeIter = ConvertModelIterToStoreIter(iter);
                    storeIters.Add(storeIter);
                }
            }
            foreach (TreeIter iter in storeIters)
            {
                RemoveDebaterFromRounds(iter);
                TreeIter refIter = iter;
                store.Remove(ref refIter);
            }
            UpdateDebatersInfo();
            SaveDebaters();
        }
Пример #3
0
        protected virtual void OnBtnImportCSVClicked(object sender, System.EventArgs e)
        {
            if (cbOverwrite.Active)
            {
                if (MiscHelpers.AskYesNo(this,
                                         "This clears all " +
                                         "entered Data for " +
                                         "overwritten Debaters. " +
                                         "Continue?")
                    == ResponseType.No)
                {
                    return;
                }
            }
            // make a backup before!
            Tournament.I.Save();
            // start import
            List <Debater> debaters = Tournament.I.Debaters;
            int            line     = 0;

            try {
                CsvReader csv = new CsvReader(new StreamReader(labelFile.Text),
                                              cbHasHeaders.Active, ',', '"', '\\', '#',
                                              ValueTrimmingOptions.All);

                int dups = 0;
                int ok   = 0;
                while (csv.ReadNextRecord())
                {
                    line++;
                    EditableDebater d = new EditableDebater();

                    d.Name = new Name(csv[sbFirstName.ValueAsInt], csv[sbLastName.ValueAsInt]);

                    // Club
                    try {
                        if (cbCity.Active)
                        {
                            d.Club = new Club(csv[sbClub.ValueAsInt], csv[sbCity.ValueAsInt]);
                        }
                        else
                        {
                            d.Club = new Club(csv[sbClub.ValueAsInt]);
                        }
                    }
                    catch {
                        d.Club = new Club("None");
                        d.BlackList.RemoveClub("None");
                    }

                    // Age or from Birthday
                    try {
                        if (cbAge.Active)
                        {
                            d.Age = uint.Parse(csv [sbAge.ValueAsInt]);
                        }

                        if (cbBirthday.Active)
                        {
                            DateTime bday = DateTime.ParseExact(csv[sbBirthday.ValueAsInt],
                                                                entryBdayFormat.Text,
                                                                null);
                            DateTime now = DateTime.Today;
                            int      age = now.Year - bday.Year;
                            if (bday > now.AddYears(-age))
                            {
                                age--;
                            }
                            d.Age = (uint)age;
                        }
                    }
                    catch {}

                    // Role
                    if (cbRole.Active)
                    {
                        if (rbTeamMember.Active)
                        {
                            d.Role = OPDtabData.Role.Parse(csv [sbRole.ValueAsInt]);
                        }
                        else if (rbJudge.Active)
                        {
                            int judgeQuality = 0;
                            try {
                                judgeQuality = (int)uint.Parse(csv[sbRole.ValueAsInt]);
                            }
                            catch {}
                            d.Role.JudgeQuality = judgeQuality;
                        }
                    }

                    // ExtraInfo
                    d.ExtraInfo = entryExtraInfoDefault.Text;
                    if (cbExtraInfo.Active)
                    {
                        d.ExtraInfo = csv[sbExtraInfo.ValueAsInt] == "" ?
                                      entryExtraInfoDefault.Text : csv[sbExtraInfo.ValueAsInt];
                    }

                    // BlackList
                    if (cbBlackList.Active)
                    {
                        d.BlackList = DebaterPattern.Parse(csv[sbBlackList.ValueAsInt]);
                    }


                    // save it
                    int i = debaters.FindLastIndex(delegate(Debater de) {
                        return(de.Equals(d));
                    });

                    if (i < 0)
                    {
                        debaters.Add(new Debater(d));
                        ok++;
                    }
                    else
                    {
                        Console.WriteLine("Duplicate: " + d + ", " + debaters[i]);
                        dups++;
                        if (cbOverwrite.Active)
                        {
                            debaters[i] = new Debater(d);
                            ok++;
                        }
                    }
                }

                string action = cbOverwrite.Active ? "overwritten" : "discarded";
                MiscHelpers.ShowMessage(this, "Imported " + ok + ", " + action + " " + dups + " duplicates.",
                                        MessageType.Info);
            }
            catch (Exception ex) {
                MiscHelpers.ShowMessage(this, "Error encountered in line " + line.ToString() + ": " + ex.Message,
                                        MessageType.Error);
            }
        }