void ReadListFromFile()
        {
            OpenFileDialog fileDlg = new OpenFileDialog();

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

            if (fileDlg.ShowDialog(this) == System.Windows.Forms.DialogResult.OK)
            {
                DataContractSerializer serializer = new DataContractSerializer(typeof(RelationStackList));

                FileStream        readFile = new FileStream(fileDlg.FileName, FileMode.Open);
                RelationStackList localRelation;
                localRelation = (RelationStackList)serializer.ReadObject(readFile);

                //stats = localStats;
                //stats.SetFamilyTree(familyTree);
                readFile.Close();

                if (localRelation.sourceTree != null)
                {
                    if (localRelation.sourceTree != familyTree.GetSourceFileName())
                    {
                        MessageBox.Show("Warning: The relation list does not seem to be from the current family tree: " + localRelation.sourceTree + " " + familyTree.GetSourceFileName());
                    }
                }

                ShowRelations(localRelation);

                ResetGui();
            }
        }
Beispiel #2
0
        private void OpenFile(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();

            openFileDialog.InitialDirectory = utility.GetCurrentDirectory();
            //openFileDialog.Filter = "Gedcom Files (*.ged)|*.ged|All Files (*.*)|*.*";
            childForm             = new FamilyForm2();
            openFileDialog.Filter = childForm.GetFileTypeFilter(FamilyFileTypeOperation.Open);

            if (openFileDialog.ShowDialog(this) == DialogResult.OK)
            {
                string FileName = openFileDialog.FileName;

                /*FamilyForm2*/
                childForm.MdiParent = this;
                childForm.Show();

                //trace.TraceInformation("strip: " + childForm.statusStrip1.Text + " " + childForm.statusStrip1.ToString() + " " + childForm.statusStrip1.Visible);

                childForm.OpenFile(FileName);
            }
        }
        private void Parse(string decodeFilename)
        {
            TextParseState state         = TextParseState.Start1;
            int            dashCount     = 0;
            int            lineFeedCount = 0;
            string         parsedId      = "";
            string         parseString   = "";

            FamilyUtility      utility        = new FamilyUtility();
            TextParserSettings parserSettings = GetParserSettings(utility.GetCurrentDirectory() + "\\TextDecoderSettings.xml");

            BufferParseState parseState = new BufferParseState(fileBuffer, parserSettings.pageBreakStrings);


            System.IO.StreamWriter personFile = new System.IO.StreamWriter(decodeFilename, false, Encoding.UTF8, 4096);


            while (!parseState.EndOfFile())
            {
                char ch = parseState.GetNextChar();

                switch (state)
                {
                case TextParseState.Start1:
                    if (ch == '-')
                    {
                        dashCount++;
                    }
                    else if (ch != ' ')
                    {
                        dashCount = 0;
                    }
                    if ((dashCount >= 3) && (ch == ' '))
                    {
                        state     = TextParseState.Start2;
                        dashCount = 0;
                    }
                    break;

                case TextParseState.Start2:
                    if ((ch >= '0') && (ch <= '9') || (ch == '.') || (ch == ':'))
                    {
                        parsedId += ch;
                    }
                    if ((parsedId != "") && (ch == ' '))
                    {
                        state = TextParseState.Start3;
                    }
                    break;

                case TextParseState.Start3:
                    if (ch == '-')
                    {
                        dashCount++;
                    }
                    if (dashCount >= 3)
                    {
                        if (ch == '\r')
                        {
                            state     = TextParseState.ReadPerson;
                            dashCount = 0;
                        }
                    }
                    break;

                case TextParseState.ReadPerson:
                    if ((ch != '\r') && (ch != '\n'))
                    {
                        parseString  += ch;
                        lineFeedCount = 0;
                    }
                    else if (ch == '\r')
                    {
                        if (lineFeedCount++ == 0)
                        {
                            parseString += " ";
                        }

                        /*if(lineFeedCount >= 3)
                         * {
                         * lineFeedCount = 0;
                         * state = TextParseState.DecodePerson;
                         * }*/
                    }

                    if (ch == '-')
                    {
                        dashCount++;
                    }
                    else
                    {
                        dashCount = 0;
                    }
                    if (dashCount >= 3)
                    {
                        dashCount = 0;
                        state     = TextParseState.DecodePerson;
                    }
                    break;

                case TextParseState.DecodePerson:

                    if (parseString.LastIndexOf("---") == (parseString.Length - 3))
                    {
                        parseString = parseString.Substring(0, parseString.Length - 3);
                        //filePos -= 5;
                        parseState.MoveToPreviousLineStart();
                    }
                    personFile.WriteLine(parsedId + ":" + parseString);
                    string newXrefId = xrefMapLists.GetMapper(XrefType.Individual).GetXRef(parsedId, true);
                    ParsePerson(newXrefId, parseString, parserSettings);
                    //backgroundWorker;progresschanged

                    parsedId    = "";
                    parseString = "";
                    state       = TextParseState.Start1;
                    break;
                    //case TextParseState.End:
                    //  break;
                }
                if (parseState.UpdateProgress())
                {
                    backgroundWorker.ReportProgress((int)parseState.GetProgress(), "Importing...");
                }
            }

            if ((parsedId.Length > 0) && (parseString.Length > 0))
            {
                string newXrefId = xrefMapLists.GetMapper(XrefType.Individual).GetXRef(parsedId, true);
                personFile.WriteLine(parsedId + ":" + newXrefId + ":" + parseString);
                ParsePerson(newXrefId, parseString, parserSettings);
                parsedId    = "";
                parseString = "";
            }


            personFile.Close();

            backgroundWorker = null;
            trace.TraceInformation("Text file parsing finished at ");
        }
        public CompletenessViewPanel1()
        {
            trace       = new TraceSource("PersonViewPanel1", SourceLevels.Warning);
            controlList = new List <Control>();

            this.Dock  = DockStyle.Fill;
            parentForm = null;
            //descendantGenerationNo = 0;

            settingsButton = new Button();

            settingsButton.Text = "Settings";

            settingsButton.Left = 0;

            this.settingsButton.MouseClick += settingsButton_MouseClick;

            this.Controls.Add(settingsButton);

            startButton = new Button();

            startButton.Text = "Analyse";

            startButton.Name = "Parent";

            startButton.Left = settingsButton.Right;

            this.startButton.MouseClick += startButton_MouseClick;

            this.Controls.Add(startButton);

            stopButton = new Button();

            stopButton.Left = startButton.Right;

            stopButton.Text = "Stop";

            this.stopButton.MouseClick += stopButton_MouseClick;

            stopButton.Enabled = false;
            //stopButton.

            this.Controls.Add(stopButton);

            ancestorGenerationNoCtrl = new DomainUpDown();

            ancestorGenerationNoCtrl.Left = stopButton.Right;

            ancestorGenerationNoCtrl.Items.Add("All g. ancestors");
            for (int i = 20; i >= 5; i--)
            {
                ancestorGenerationNoCtrl.Items.Add(i.ToString() + " g. ancestors");
            }
            ancestorGenerationNoCtrl.SelectedItem = "5 g. ancestors";
            ancestorGenerationNoCtrl.Width        = 100;
            //ancestorGenerationNoCtrl.AutoSize = true;

            this.Controls.Add(ancestorGenerationNoCtrl);

            descendantGenerationNoCtrl          = new DomainUpDown();
            descendantGenerationNoCtrl.Text     = "Descendants";
            descendantGenerationNoCtrl.Left     = ancestorGenerationNoCtrl.Right;
            descendantGenerationNoCtrl.Enabled  = true;
            descendantGenerationNoCtrl.AutoSize = true;
            descendantGenerationNoCtrl.Items.Add("All g. descendants");
            for (int i = 10; i >= 0; i--)
            {
                descendantGenerationNoCtrl.Items.Add(i.ToString() + " g. descendants");
            }
            descendantGenerationNoCtrl.SelectedItem = "0 g. descendants";
            descendantGenerationNoCtrl.Width        = 100;
            this.Controls.Add(descendantGenerationNoCtrl);

            stopButton.Enabled = false;
            //stopButton.

            resultList = new ListView();

            resultList.Top = startButton.Bottom;
            //resultList.Width = 400;
            //resultList.Height = 400;

            resultList.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Bottom | AnchorStyles.Right;
            resultList.Left   = 3;
            //resultList.Margin.Right = 3;
            resultList.Location = new System.Drawing.Point(3, 20);
            resultList.Size     = new System.Drawing.Size(200, 80);
            //resultList.Left = 3;

            //resultList.MultiColumn = true;
            //resultList.ScrollAlwaysVisible = true;
            //resultList.MouseClick += resultList_MouseClick;
            resultList.SelectedIndexChanged += resultList_SelectedIndexChanged;
            resultList.Columns.Add("Name", 120, HorizontalAlignment.Left);
            resultList.Columns.Add("Distance", 40, HorizontalAlignment.Right);
            resultList.Columns.Add("Relation", 40, HorizontalAlignment.Left);
            resultList.Columns.Add("Birth", 80, HorizontalAlignment.Left);
            resultList.Columns.Add("Death", 80, HorizontalAlignment.Left);
            resultList.Columns.Add("Details", 250, HorizontalAlignment.Left);
            resultList.View = View.Details;
            resultList.AllowColumnReorder = true;
            resultList.FullRowSelect      = true;
            resultList.ShowItemToolTips   = true;

            resultList.MouseUp += ResultList_MouseUp;

            /*resultList.ContextMenuStrip = new ContextMenuStrip();
             * ToolStripItem openItem = new ToolStripMenuItem();
             * openItem.Text = "Open...";
             * openItem.MouseUp += ContextMenuStrip_SelectOpen;
             * resultList.ContextMenuStrip.Items.Add(openItem);
             *
             * ToolStripItem saveItem = new ToolStripMenuItem();
             * saveItem.Text = "Save...";
             * saveItem.MouseUp += ContextMenuStrip_SelectSave;
             * resultList.ContextMenuStrip.Items.Add(saveItem);
             *
             * ToolStripItem exportItem = new ToolStripMenuItem();
             * exportItem.Text = "Export to Text...";
             * exportItem.MouseUp += ContextMenuStrip_SelectExport;
             * resultList.ContextMenuStrip.Items.Add(exportItem);*/


            this.Controls.Add(resultList);

            utility = new FamilyUtility();

            limits = GetSanitySettings(utility.GetCurrentDirectory() + "\\SanitySettings.fssan");

            trace.TraceInformation("CompletenessViewPanel1::CompletenessViewPanel1()");
        }
Beispiel #5
0
        public bool DownloadImages2(FamilyTreeStoreBaseClass tree)
        {
            IEnumerator <IndividualClass> individualIterator = tree.SearchPerson();
            List <IndividualClass>        individualList     = new List <IndividualClass>();
            FamilyUtility utility = new FamilyUtility();

            String dirname = utility.GetCurrentDirectory() + "\\" + FamilyUtility.MakeFilename("ImageDownload_" + tree.GetSourceFileName() + "_" + DateTime.Now.ToString());

            Directory.CreateDirectory(dirname);

            List <String> endings = new List <string>();

            endings.Add("_large.jpg");
            endings.Add("_medium.jpg");
            endings.Add("_t.jpg");
            endings.Add("_t2.jpg");

            while (individualIterator.MoveNext())
            {
                individualList.Add(individualIterator.Current);
            }
            foreach (IndividualClass person in individualList)
            {
                IList <MultimediaLinkClass> links = person.GetMultimediaLinkList();

                IList <MultimediaLinkClass> newLinks = new List <MultimediaLinkClass>();
                IList <String> dlLinks     = new List <String>();
                IList <String> dlLinksBase = new List <String>();
                IList <String> dlLinksTrue = new List <String>();

                foreach (MultimediaLinkClass link in links)
                {
                    Boolean webimage = (link.GetLink().ToLower().IndexOf("http:") >= 0) || (link.GetLink().ToLower().IndexOf("https:") >= 0);

                    if (webimage)
                    {
                        dlLinks.Add(link.GetLink());
                    }
                }

                foreach (String link in dlLinks)
                {
                    String basename = link;

                    if (link.ToLower().IndexOf(".jpg") >= 0)
                    {
                        foreach (String ending in endings)
                        {
                            if (link.ToLower().IndexOf(ending) >= 0)
                            {
                                basename = link.Substring(0, link.ToLower().IndexOf(ending));

                                if (dlLinksBase.IndexOf(basename) < 0)
                                {
                                    dlLinksBase.Add(basename);
                                }
                            }
                        }
                    }
                }
                foreach (String link in dlLinksBase)
                {
                    int bestIndex = -1;
                    int index     = 0;
                    while ((bestIndex < 0) && (index < endings.Count))
                    {
                        String newLink = link + endings[index];
                        bestIndex = dlLinks.IndexOf(newLink);
                        dlLinksTrue.Add(newLink);
                        index++;
                    }
                }

                foreach (String link in dlLinksTrue)
                {
                    String filename = dirname + "\\" + FamilyUtility.MakeFilename(person.GetXrefName() + " " + person.GetName() + " " + GetLastPart(link));

                    if (filename.Length > 255)
                    {
                        filename = filename.Substring(0, 255);
                    }
                    filename = filename + ".jpg";
                    //trace.TraceInformation(filename);

                    if (SaveImageLocal(filename, link, ImageFormat.Jpeg))
                    {
                        newLinks.Add(new MultimediaLinkClass("image/jpeg", filename));
                    }
                }
                foreach (MultimediaLinkClass link in newLinks)
                {
                    person.AddMultimediaLink(link);
                }
            }

            return(true);
        }