Example #1
0
        private bool AcceptChanges()
        {
            GEDCOMFileReferenceWithTitle fileRef = fMediaRec.FileReferences[0];

            if (fIsNew)
            {
                GKComboItem    item = (GKComboItem)cmbStoreType.SelectedValue;
                MediaStoreType gst  = (MediaStoreType)item.Tag;

                if ((gst == MediaStoreType.mstArchive || gst == MediaStoreType.mstStorage) && !fBase.Context.CheckBasePath())
                {
                    return(false);
                }

                bool result = fBase.Context.MediaSave(fileRef, txtFile.Text, gst);

                if (!result)
                {
                    return(false);
                }
            }

            fileRef.MediaType = (GEDCOMMediaType)cmbMediaType.SelectedIndex;
            fileRef.Title     = txtName.Text;

            ControlsRefresh();

            CommitChanges();
            fBase.NotifyRecord(fMediaRec, RecordAction.raEdit);

            return(true);
        }
Example #2
0
        private void ControlsRefresh()
        {
            GEDCOMFileReferenceWithTitle fileRef = fMediaRec.FileReferences[0];

            fIsNew = (fileRef.StringValue == "");

            txtName.Text = fileRef.Title;
            cmbMediaType.SelectedIndex = (int)fileRef.MediaType;
            txtFile.Text = fileRef.StringValue;

            if (fIsNew)
            {
                RefreshStoreTypes(GlobalOptions.Instance.AllowMediaStoreReferences, true, MediaStoreType.mstReference);
            }
            else
            {
                MediaStore mediaStore = fBase.Context.GetStoreType(fileRef);
                RefreshStoreTypes((mediaStore.StoreType == MediaStoreType.mstReference),
                                  (mediaStore.StoreType == MediaStoreType.mstArchive), mediaStore.StoreType);
            }

            btnFileSelect.Enabled = fIsNew;
            cmbStoreType.Enabled  = fIsNew;

            fNotesList.UpdateSheet();
            fSourcesList.UpdateSheet();
        }
Example #3
0
        protected override object GetColumnValueEx(int colType, int colSubtype, bool isVisible)
        {
            GEDCOMFileReferenceWithTitle fileRef = fRec.FileReferences[0];

            object result = null;

            switch ((MultimediaColumnType)colType)
            {
            case MultimediaColumnType.ctTitle:
                result = fileRef.Title;
                break;

            case MultimediaColumnType.ctMediaType:
                result = LangMan.LS(GKData.MediaTypes[(int)fileRef.MediaType]);
                break;

            case MultimediaColumnType.ctFileRef:
                result = fileRef.StringValue;
                break;

            case MultimediaColumnType.ctChangeDate:
                result = fRec.ChangeDate.ChangeDateTime;
                break;
            }
            return(result);
        }
Example #4
0
        public void ProcessPortraits(IImageView imageCtl, GEDCOMFileReferenceWithTitle fileRef)
        {
            var mmRec = fileRef.Parent as GEDCOMMultimediaRecord;

            var linksList = new List <GEDCOMObject>();

            GKUtils.SearchRecordLinks(linksList, mmRec.Owner, mmRec);

            bool showRegions = false;

            foreach (var link in linksList)
            {
                var mmLink = link as GEDCOMMultimediaLink;
                if (mmLink != null && mmLink.IsPrimary)
                {
                    var    indiRec  = mmLink.Parent as GEDCOMIndividualRecord;
                    string indiName = GKUtils.GetNameString(indiRec, true, false);
                    var    region   = mmLink.CutoutPosition.Value;

                    imageCtl.AddNamedRegion(indiName, region);
                    showRegions = true;
                }
            }

            imageCtl.ShowNamedRegionTips = showRegions;
        }
Example #5
0
        public void SetViewImage(IImage img, GEDCOMFileReferenceWithTitle fileRef)
        {
            var imageCtl = new GKUI.Components.ImageView();

            imageCtl.OpenImage(img);

            fController.ProcessPortraits(imageCtl, fileRef);

            SetViewControl(imageCtl);
        }
Example #6
0
        public void SetViewImage(Image img, GEDCOMFileReferenceWithTitle fileRef)
        {
            ImageView imageCtl = new ImageView();

            imageCtl.OpenImage(img);

            ProcessPortraits(imageCtl, fileRef);

            SetViewControl(imageCtl);
        }
Example #7
0
        public override bool CheckFilter()
        {
            GEDCOMFileReferenceWithTitle fileRef = fRec.FileReferences[0];

            bool res = (QuickFilter == "*" || IsMatchesMask(fileRef.Title, QuickFilter));

            res = res && CheckCommonFilter();

            return(res);
        }
Example #8
0
        public void ShowMedia(GEDCOMMultimediaRecord mediaRec, bool modal)
        {
            if (mediaRec == null)
            {
                throw new ArgumentNullException("mediaRec");
            }

            GEDCOMFileReferenceWithTitle fileRef = mediaRec.FileReferences[0];
            MultimediaKind mmKind = GKUtils.GetMultimediaKind(fileRef.MultimediaFormat);

            if (mmKind == MultimediaKind.mkNone)
            {
                return;
            }

            bool externalViewer = !GlobalOptions.Instance.EmbeddedMediaPlayer &&
                                  ((mmKind == MultimediaKind.mkAudio || mmKind == MultimediaKind.mkVideo));

            if (externalViewer)
            {
                string targetFile = fContext.MediaLoad(fileRef);
                GKUtils.LoadExtFile(targetFile);
            }
            else
            {
                //var mediaViewer = AppHost.Container.Resolve<IMediaViewerWin>(this);
                MediaViewerWin mediaViewer = new MediaViewerWin(this);
                try {
                    try {
                        mediaViewer.FileRef = fileRef;
                        if (modal)
                        {
                            mediaViewer.Show();
                        }
                        else
                        {
                            mediaViewer.ShowInTaskbar = true;
                            mediaViewer.Show();
                        }
                    } finally {
                        if (modal)
                        {
                            mediaViewer.Dispose();
                        }
                    }
                } catch (Exception ex) {
                    if (mediaViewer != null)
                    {
                        mediaViewer.Dispose();
                    }
                    Logger.LogWrite("BaseWinSDI.ShowMedia(): " + ex.Message);
                }
            }
        }
Example #9
0
        public void SetViewImage(IImage img, GEDCOMFileReferenceWithTitle fileRef)
        {
            var imageCtl = new GKUI.Components.ImageView();

            imageCtl.OpenImage(img);

            fController.ProcessPortraits(imageCtl, fileRef);

            fTimer = AppHost.Instance.CreateTimer(100.0f, InitViewer_Tick);
            fTimer.Start();

            SetViewControl(imageCtl);
        }
Example #10
0
        private void LoadList()
        {
            GEDCOMRecord record;
            var          enumerator = fBase.Context.Tree.GetEnumerator(GEDCOMRecordType.rtMultimedia);

            while (enumerator.MoveNext(out record))
            {
                GEDCOMMultimediaRecord       mediaRec = (GEDCOMMultimediaRecord)record;
                GEDCOMFileReferenceWithTitle fileRef  = mediaRec.FileReferences[0];

                MultimediaKind mmKind = GKUtils.GetMultimediaKind(fileRef.MultimediaFormat);
                if (mmKind == MultimediaKind.mkImage)
                {
                    fFileRefs.Add(fileRef);
                }
            }
        }
Example #11
0
        public override void Setup()
        {
            base.Setup();

            fBase = new BaseWindowStub();

            GEDCOMMultimediaRecord mmRec = fBase.Context.Tree.CreateMultimedia();

            mmRec.AddTag("FILE", "", null);
            fileRef       = mmRec.FileReferences[0];
            fileRef.Title = "File Title 2";
            fileRef.LinkFile("shaytan_plant.jpg");
            fileRef.MediaType = GEDCOMMediaType.mtPhoto;

            fDialog = new MediaViewerWin(fBase);
            fDialog.Show();
        }
        private void SetFileRef()
        {
            if (fCurrentIndex < 0 || fCurrentIndex >= fFileRefs.Count)
            {
                return;
            }

            // Only images are in the list
            GEDCOMFileReferenceWithTitle fileRef = fFileRefs[fCurrentIndex];

            fCurrentText = fileRef.Title;

            IImage img = fBase.Context.LoadMediaImage(fileRef, false);

            if (img != null)
            {
                fView.SetImage(img);
            }

            UpdateView();
        }
Example #13
0
        private void SetFileRef()
        {
            if (fCurrentIndex < 0 || fCurrentIndex >= fFileRefs.Count)
            {
                return;
            }

            // Only images are in the list
            GEDCOMFileReferenceWithTitle fileRef = fFileRefs[fCurrentIndex];

            fCurrentText = fileRef.Title;

            IImage img = fBase.Context.LoadMediaImage(fileRef, false);

            if (img != null)
            {
                fImageCtl.Image = ((ImageHandler)img).Handle;
                fImageCtl.ZoomToFit();
            }

            UpdateControls();
        }
Example #14
0
        private void ProcessPortraits(GKUI.Components.ImageView imageCtl, GEDCOMFileReferenceWithTitle fileRef)
        {
            var mmRec = fileRef.Parent as GEDCOMMultimediaRecord;

            var linksList = new List <GEDCOMObject>();

            GKUtils.SearchRecordLinks(linksList, mmRec.Owner, mmRec);

            foreach (var link in linksList)
            {
                var mmLink = link as GEDCOMMultimediaLink;
                if (mmLink != null && mmLink.IsPrimary)
                {
                    var    indiRec  = mmLink.Parent as GEDCOMIndividualRecord;
                    string indiName = GKUtils.GetNameString(indiRec, true, false);
                    var    region   = UIHelper.Rt2Rt(mmLink.CutoutPosition.Value);

                    imageCtl.NamedRegions.Add(new NamedRegion(indiName, region));
                }
            }

            imageCtl.ShowNamedRegionTips = (imageCtl.NamedRegions.Count > 0);
        }
Example #15
0
        public override void UpdateContents()
        {
            var dataOwner = fDataOwner as IGEDCOMStructWithLists;

            if (fSheetList == null || dataOwner == null)
            {
                return;
            }

            try
            {
                fSheetList.ClearItems();

                foreach (GEDCOMMultimediaLink mmLink in dataOwner.MultimediaLinks)
                {
                    GEDCOMMultimediaRecord mmRec = mmLink.Value as GEDCOMMultimediaRecord;
                    if (mmRec == null)
                    {
                        continue;
                    }

                    if (mmRec.FileReferences.Count == 0)
                    {
                        continue;
                    }

                    GEDCOMFileReferenceWithTitle fileRef = mmRec.FileReferences[0];

                    fSheetList.AddItem(mmLink, new object[] { fileRef.Title,
                                                              LangMan.LS(GKData.MediaTypes[(int)fileRef.MediaType]) });
                }
            }
            catch (Exception ex)
            {
                Logger.LogWrite("MediaLinksListModel.UpdateContents(): " + ex.Message);
            }
        }
        public override bool Accept()
        {
            try {
                GEDCOMFileReferenceWithTitle fileRef = fMediaRec.FileReferences[0];

                if (fIsNew)
                {
                    MediaStoreType gst = (MediaStoreType)fView.StoreType.SelectedTag;

                    if ((gst == MediaStoreType.mstArchive || gst == MediaStoreType.mstStorage) && !fBase.Context.CheckBasePath())
                    {
                        return(false);
                    }

                    bool result = fBase.Context.MediaSave(fileRef, fView.File.Text, gst);

                    if (!result)
                    {
                        return(false);
                    }
                }

                fileRef.MediaType = (GEDCOMMediaType)fView.MediaType.SelectedIndex;
                fileRef.Title     = fView.Name.Text;

                UpdateControls();

                fLocalUndoman.Commit();
                fBase.NotifyRecord(fMediaRec, RecordAction.raEdit);

                return(true);
            } catch (Exception ex) {
                Logger.LogWrite("MediaEditDlgController.Accept(): " + ex.Message);
                return(false);
            }
        }
Example #17
0
        public static void FillContext(IBaseContext context)
        {
            // a null result if the record is not defined
            GEDCOMCustomEvent evt = context.CreateEventEx(null, "BIRT", "xxxxx", "xxxxx");

            Assert.IsNull(evt);

            // first individual
            GEDCOMIndividualRecord iRec = context.CreatePersonEx("Ivan", "Ivanovich", "Ivanov", GEDCOMSex.svMale, true);

            Assert.IsNotNull(iRec);

            evt = iRec.FindEvent("BIRT");
            Assert.IsNotNull(evt);
            evt.Date.ParseString("28 DEC 1990");
            evt.Place.StringValue = "Ivanovo";

            GEDCOMCustomEvent evtd = context.CreateEventEx(iRec, "DEAT", "28 DEC 2010", "Ivanovo");

            Assert.IsNotNull(evtd);

            // second individual, wife
            GEDCOMIndividualRecord iRec2 = context.CreatePersonEx("Maria", "Petrovna", "Ivanova", GEDCOMSex.svFemale, true);

            evt = iRec2.FindEvent("BIRT");
            Assert.IsNotNull(evt);
            evt.Date.ParseString("17 MAR 1990");
            evt.Place.StringValue = "Ivanovo";

            iRec.AddAssociation("spouse", iRec2);

            // third individual, child
            GEDCOMIndividualRecord iRec3 = context.CreatePersonEx("Anna", "Ivanovna", "Ivanova", GEDCOMSex.svFemale, true);

            evt = iRec3.FindEvent("BIRT");
            Assert.IsNotNull(evt);
            evt.Date.ParseString("11 FEB 2010");
            evt.Place.StringValue = "Ivanovo";

            // their family
            GEDCOMFamilyRecord famRec = context.Tree.CreateFamily();

            Assert.IsNotNull(famRec);
            famRec.AddSpouse(iRec);
            famRec.AddSpouse(iRec2);
            famRec.AddChild(iRec3);

            context.CreateEventEx(famRec, "MARR", "01 JAN 2000", "unknown");

            // individual outside the family
            GEDCOMIndividualRecord iRec4 = context.CreatePersonEx("Alex", "", "Petrov", GEDCOMSex.svMale, true);

            evt = iRec4.FindEvent("BIRT");
            Assert.IsNotNull(evt);
            evt.Date.ParseString("15 JUN 1989");
            evt.Place.StringValue = "Far Forest";

            evt = context.CreateEventEx(iRec4, "RESI", "12 FEB", "Far Forest");
            Assert.IsNotNull(evt);

            // fifth
            GEDCOMIndividualRecord iRec5 = context.CreatePersonEx("Anna", "", "Jones", GEDCOMSex.svFemale, false);

            Assert.IsNotNull(iRec5);

            // group for tests
            GEDCOMGroupRecord groupRec = context.Tree.CreateGroup();

            groupRec.GroupName = "GroupTest";
            Assert.IsNotNull(groupRec, "group1 != null");
            groupRec.AddMember(iRec);

            // location for tests
            GEDCOMLocationRecord locRec = context.Tree.CreateLocation();

            locRec.LocationName = "Test Location";
            locRec.Map.Lati     = 5.11111;
            locRec.Map.Long     = 7.99999;
            Assert.IsNotNull(locRec, "locRec != null");

            // repository for tests
            GEDCOMRepositoryRecord repoRec = context.Tree.CreateRepository();

            repoRec.RepositoryName = "Test repository";
            Assert.IsNotNull(repoRec, "repoRec != null");

            // research for tests
            GEDCOMResearchRecord resRec = context.Tree.CreateResearch();

            resRec.ResearchName = "Test research";
            Assert.IsNotNull(resRec, "resRec != null");

            // source for tests
            GEDCOMSourceRecord srcRec = context.Tree.CreateSource();

            srcRec.FiledByEntry = "Test source";
            Assert.IsNotNull(srcRec, "srcRec != null");
            iRec.AddSource(srcRec, "p1", 0);

            // note for tests
            GEDCOMNoteRecord noteRec = context.Tree.CreateNote();

            noteRec.SetNoteText("Test note");
            Assert.IsNotNull(noteRec, "noteRec != null");
            iRec.AddNote(noteRec);

            // task for tests
            GEDCOMTaskRecord tskRec = context.Tree.CreateTask();

            tskRec.Goal = "Test task";
            Assert.IsNotNull(tskRec, "tskRec != null");

            // media for tests
            GEDCOMMultimediaRecord mediaRec = context.Tree.CreateMultimedia();

            mediaRec.AddTag("FILE", "", null);
            GEDCOMFileReferenceWithTitle fileRef = mediaRec.FileReferences[0];

            fileRef.Title = "Test multimedia";
            fileRef.LinkFile("sample.png");
            Assert.IsNotNull(mediaRec, "mediaRec != null");
            iRec.AddMultimedia(mediaRec);

            // communication for tests
            GEDCOMCommunicationRecord commRec = context.Tree.CreateCommunication();

            commRec.CommName = "Test communication";
            Assert.IsNotNull(commRec, "commRec != null");
        }
Example #18
0
        private void SetFileRef(GEDCOMFileReferenceWithTitle value)
        {
            fFileRef = value;
            Title    = fFileRef.Title;
            Control ctl = null;

            MultimediaKind mmKind = GKUtils.GetMultimediaKind(fFileRef.MultimediaFormat);

            try {
                switch (mmKind)
                {
                case MultimediaKind.mkImage:
                {
                    IImage img = fBase.Context.LoadMediaImage(fFileRef, false);
                    if (img != null)
                    {
                        SetViewImage(((ImageHandler)img).Handle, fFileRef);
                    }
                    break;
                }

                case MultimediaKind.mkAudio:
                case MultimediaKind.mkVideo:
                {
                    string targetFile = fBase.Context.MediaLoad(fFileRef);
                    SetViewMedia(targetFile);
                    break;
                }

                case MultimediaKind.mkText:
                {
                    Stream fs = fBase.Context.MediaLoad(fFileRef, false);

                    switch (fFileRef.MultimediaFormat)
                    {
                    case GEDCOMMultimediaFormat.mfTXT:
                    {
                        TextArea txtBox = new TextArea();
                        txtBox.ReadOnly = true;

                        try {
                            // FIXME: fix encoding! and test other!!!
                            using (StreamReader strd = new StreamReader(fs, Encoding.GetEncoding(1251))) {
                                txtBox.Text = strd.ReadToEnd();
                            }
                        } catch (Exception ex) {
                            Logger.LogWrite("MediaViewerWin.SetFileRef.1(): " + ex.Message);
                        }

                        ctl = txtBox;
                        SetViewControl(ctl);
                    }
                    break;

                    case GEDCOMMultimediaFormat.mfRTF:
                    {
                        RichTextArea rtfBox = new RichTextArea();
                        rtfBox.ReadOnly = true;

                        try {
                            using (StreamReader strd = new StreamReader(fs)) {
                                rtfBox.Text = strd.ReadToEnd();
                            }
                        } catch (Exception ex) {
                            Logger.LogWrite("MediaViewerWin.SetFileRef.2(): " + ex.Message);
                        }

                        ctl = rtfBox;
                        SetViewControl(ctl);
                    }
                    break;

                    case GEDCOMMultimediaFormat.mfHTM:
                    {
                        var browser = new WebView();

                        try {
                            browser.LoadHtml(fs);

                            /*using (StreamReader strd = new StreamReader(fs)) {
                             *  browser.DocumentText = strd.ReadToEnd();
                             *  // didn't work, because didn't defines codepage from page's header (?!)
                             * }*/
                        } catch (Exception ex) {
                            Logger.LogWrite("MediaViewerWin.SetFileRef.3(): " + ex.Message);
                        }

                        ctl = browser;
                        SetViewControl(ctl);
                    }
                    break;
                    }
                    if (fs != null && !(ctl is WebView))
                    {
                        fs.Dispose();
                    }

                    break;
                }
                }
            } catch (Exception ex) {
                if (ctl != null)
                {
                    ctl.Dispose();
                }

                Logger.LogWrite("MediaViewerWin.SetFileRef(): " + ex.Message);
            }
        }