コード例 #1
0
        void startButton_MouseClick(object sender, MouseEventArgs e)
        {
            trace.TraceInformation("RelationFinderPanel::startButton_MouseClick()" + DateTime.Now);
            if (familyTree.GetHomeIndividual() == null)
            {
                MessageBox.Show("Error: No root / base person selected!");
                return;
            }
            if (selectedIndividual != null)
            {
                int noOfGenerations            = AncestorStatistics.AllGenerations;
                RelationStackList relationList = new RelationStackList();

                if (resultNoCtrl.SelectedItem.ToString() != "All")
                {
                    noOfGenerations = Convert.ToInt32(resultNoCtrl.SelectedItem.ToString());
                }

                AsyncWorkerProgress progress = new AsyncWorkerProgress(RelationProgress);
                //CheckRelation relation = new CheckRelation(familyTree, selectedIndividual.GetXrefName(), familyTree.GetHomeIndividual(), noOfGenerations, ref relationList);
                this.relWorker = new RelationTreeWorker(this,
                                                        progress,
                                                        selectedIndividual.GetXrefName(),
                                                        familyTree.GetHomeIndividual(),
                                                        noOfGenerations,
                                                        familyTree);

                //ShowRelations(relationList.relations);
                //this.relationList = relationList;
            }
            else
            {
                MessageBox.Show("Error: No person selected!");
            }
        }
コード例 #2
0
        public RelationTreeWorker(
            object sender,
            ProgressReporterInterface progress,
            string startPerson1Xref,
            string startPerson2Xref,
            int noOfGenerations,
            FamilyTreeStoreBaseClass familyTree)
        {
            trace = new TraceSource("RelationTreeWorker", SourceLevels.Information);

            //familyTree = stats.familyTree;

            progressReporter = progress;
            //this.stats = stats;
            this.familyTree       = familyTree;
            this.startPerson1Xref = startPerson1Xref;
            this.startPerson2Xref = startPerson2Xref;
            this.noOfGenerations  = noOfGenerations;
            this.relationList     = new RelationStackList();



            backgroundWorker = new BackgroundWorker();

            backgroundWorker.WorkerReportsProgress = true;
            backgroundWorker.DoWork             += new DoWorkEventHandler(DoWork);
            backgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(Completed);
            backgroundWorker.ProgressChanged    += new ProgressChangedEventHandler(ProgressChanged);

            backgroundWorker.RunWorkerAsync();
        }
コード例 #3
0
        public void RelationProgress(int progressPercent, string text = null)
        {
            trace.TraceInformation("RelationFinderViewPanel::RelationProgress(" + progressPercent + ")");
            parentForm.TextCallback(progressPercent, text);

            if (progressPercent < 0)
            {
                //AddToListView(ref resultList, stats);        if (relWorker != null)
                RelationStackList relations = relWorker.GetRelationStack();
                if (relations != null)
                {
                    this.relationList = relations;
                    ShowRelations(this.relationList);

                    SaveListToFile("relations_" + FamilyUtility.MakeFilename(familyTree.GetSourceFileName() + "_" + DateTime.Now.ToString() + "_" + resultNoCtrl.SelectedItem.ToString() + "_gen_" + ".fsrel"), relationList);
                }
                relWorker = null;


                //SaveListToFile(utility.GetCurrentDirectory() + "\\" + FamilyUtility.MakeFilename("relations_" + familyTree.GetSourceFileName() + "_" + DateTime.Now.ToString() + "_" + resultNoCtrl.SelectedItem.ToString() + "_gen_" + (checkDescendants ? "_desc_" : "") + ".fss"));
                resultNoCtrl.Enabled = true;
                stopButton.Enabled   = false;
                startButton.Enabled  = true;
                //descendants.Enabled = true;
            }
        }
コード例 #4
0
        private void ExportListToFile(string filename, RelationStackList relationList, bool html)
        {
            StreamWriter exportFile = new StreamWriter(filename);

            exportFile.Write(relationList.ToString(familyTree, html));

            exportFile.Close();
        }
コード例 #5
0
 void stopButton_MouseClick(object sender, MouseEventArgs e)
 {
     trace.TraceInformation("RelationFinderPanel::stopButton_MouseClick():" + DateTime.Now);
     if (stopButton.Visible)
     {
         relationList = null;
         ResetGui();
     }
 }
コード例 #6
0
        private void SaveListConents(RelationStackList relationList)
        {
            SaveFileDialog fileDlg = new SaveFileDialog();

            fileDlg.Filter           = "Relation List|*.fsrel";
            fileDlg.InitialDirectory = utility.GetCurrentDirectory();

            if (fileDlg.ShowDialog(this) == System.Windows.Forms.DialogResult.OK)
            {
                SaveListToFile(fileDlg.FileName, relationList);
            }
        }
コード例 #7
0
        private void SaveListToFile(string filename, RelationStackList relationList)
        {
            try
            {
                FileStream saveList = new FileStream(filename, FileMode.Create);

                DataContractSerializer serializer = new DataContractSerializer(typeof(RelationStackList));

                serializer.WriteObject(saveList, relationList);
                saveList.Close();
            }
            catch (Exception e)
            {
                Debug.WriteLine("Error creating file " + filename + " exception " + e.ToString());
            }
        }
コード例 #8
0
        private void ExportListContents(RelationStackList relationList, bool html)
        {
            SaveFileDialog fileDlg = new SaveFileDialog();

            if (html)
            {
                fileDlg.Filter = "Relation List|*.html";
            }
            else
            {
                fileDlg.Filter = "Relation List|*.txt";
            }
            fileDlg.InitialDirectory = utility.GetCurrentDirectory();

            if (fileDlg.ShowDialog(this) == System.Windows.Forms.DialogResult.OK)
            {
                ExportListToFile(fileDlg.FileName, relationList, html);
            }
        }
コード例 #9
0
        /*public void AnalyseProgress(int progressPercent, string text = null)
         * {
         * trace.TraceInformation("RelationFinderPanel::AnalyseProgress(" + progressPercent + ")");
         * if (progressPercent < 0)
         * {
         *  //AddToListView(ref resultList, stats);
         *
         *  if (relWorker != null)
         *  {
         *    RelationStackList relations = relWorker.GetRelationStack();
         *    if (relations != null)
         *    {
         *      this.relationList = relations;
         *      ShowRelations(this.relationList);
         *
         *      SaveListToFile("relations_" + familyTree.GetSourceFileName() + "_" + FamilyUtility.MakeFilename(DateTime.Now.ToString()) + "_" + resultNoCtrl.SelectedItem.ToString() + "_gen_" + ".fsrel", relationList);
         *    }
         *    relWorker = null;
         *  }
         *  ResetGui();
         *
         * }
         * }*/

        private void ShowRelations(RelationStackList relations)
        {
            resultList.Nodes.Clear();
            if (relationList != null)
            {
                foreach (RelationStack rel in relations.relations)
                {
                    TreeNode treeRel = new TreeNode(rel.CalculateRelation(familyTree, false));

                    foreach (Relation relative in rel)
                    {
                        TreeNode person = new TreeNode(relative.ToString(familyTree, true, false));

                        person.Tag = relative.personXref;
                        treeRel.Nodes.Add(person);
                    }
                    treeRel.Expand();

                    resultList.Nodes.Add(treeRel);
                }
            }
        }