示例#1
0
        public void Test_Video()
        {
            string targetName = TestUtils.GetTempFilePath("test_video.3gp");

            Assembly assembly = typeof(CoreTests).Assembly;
            Stream   vidstm   = assembly.GetManifestResourceStream("GKTests.Resources.test_video.3gp");

            GKUtils.CopyFile(vidstm, new FileInfo(targetName), null);
            Assert.IsTrue(File.Exists(targetName));

            GDMMultimediaRecord mmRecV = fBase.Context.Tree.CreateMultimedia();

            mmRecV.FileReferences.Add(new GDMFileReferenceWithTitle(mmRecV));
            var fileRefV = mmRecV.FileReferences[0];

            fileRefV.Title = "File Title 2";
            fileRefV.LinkFile(targetName);
            fileRefV.MediaType        = GDMMediaType.mtVideo;
            fileRefV.MultimediaFormat = GDMMultimediaFormat.mfMKV;

            fDialog.FileRef = fileRefV;
            Assert.AreEqual(fileRefV, fDialog.FileRef);

            fDialog.SetViewMedia(targetName);
            fDialog.Refresh();

            ClickButton("btnPlay", fDialog);
            ClickButton("btnPause", fDialog);
            ClickButton("btnMute", fDialog);
            ClickButton("btnStop", fDialog);

            KeyDownForm(fDialog.Name, Keys.Escape);
        }
示例#2
0
        public void Test_Video()
        {
            string targetName = TestUtils.PrepareTestFile("test_video.3gp");

            try {
                Assert.IsTrue(File.Exists(targetName));

                GDMMultimediaRecord mmRecV = fBase.Context.Tree.CreateMultimedia();
                mmRecV.FileReferences.Add(new GDMFileReferenceWithTitle(mmRecV));
                var fileRefV = mmRecV.FileReferences[0];

                fileRefV.Title = "File Title 2";
                fileRefV.LinkFile(targetName);
                fileRefV.MediaType        = GDMMediaType.mtVideo;
                fileRefV.MultimediaFormat = GDMMultimediaFormat.mfMKV;

                fDialog.FileRef = fileRefV;
                Assert.AreEqual(fileRefV, fDialog.FileRef);

                fDialog.SetViewMedia(targetName);
                fDialog.Refresh();

                ClickButton("btnPlay", fDialog);
                ClickButton("btnPause", fDialog);
                ClickButton("btnMute", fDialog);
                ClickButton("btnStop", fDialog);

                KeyDownForm(fDialog.Name, Keys.Escape);
            } finally {
                TestUtils.RemoveTestFile(targetName);
            }
        }
示例#3
0
        private static void TransformMultimediaLink(GDMTree tree, GDMMultimediaLink mmLink)
        {
            string title = mmLink.Title;
            GDMMultimediaRecord mmRec = tree.CreateMultimedia();

            int num = mmLink.FileReferences.Count;

            for (int i = 0; i < num; i++)
            {
                GDMFileReference          srcFileRef = mmLink.FileReferences[i];
                GDMFileReferenceWithTitle tgtFileRef = new GDMFileReferenceWithTitle(mmRec);

                tgtFileRef.LinkFile(srcFileRef.StringValue);

                if (srcFileRef.MultimediaFormat != GDMMultimediaFormat.mfNone)
                {
                    tgtFileRef.MultimediaFormat = srcFileRef.MultimediaFormat;
                }
                if (srcFileRef.MediaType != GDMMediaType.mtUnknown)
                {
                    tgtFileRef.MediaType = srcFileRef.MediaType;
                }
                tgtFileRef.Title = title;

                mmRec.FileReferences.Add(tgtFileRef);
            }

            mmLink.Clear();
            mmLink.Value = mmRec;
        }
示例#4
0
        private static void CheckMultimediaRecord(GDMMultimediaRecord mmRec, GEDCOMFormat format, int fileVer)
        {
            for (int i = 0; i < mmRec.FileReferences.Count; i++)
            {
                GDMFileReferenceWithTitle fileRef = mmRec.FileReferences[i];

                GDMMultimediaFormat mmFormat = fileRef.MultimediaFormat;
                if (mmFormat == GDMMultimediaFormat.mfUnknown || mmFormat == GDMMultimediaFormat.mfNone)
                {
                    // tag 'FORM' can be corrupted or GEDCOMCore in past not recognize format attempt recovery
                    fileRef.MultimediaFormat = GDMFileReference.RecognizeFormat(fileRef.StringValue);
                }

                if (format == GEDCOMFormat.gf_Native && fileVer == 39)
                {
                    // the transition to normalized names after GKv39
                    // only for not direct references AND not relative references (platform specific paths)

                    var mediaStore = GKUtils.GetStoreType(fileRef);
                    if (mediaStore.StoreType != MediaStoreType.mstReference &&
                        mediaStore.StoreType != MediaStoreType.mstRelativeReference)
                    {
                        fileRef.StringValue = FileHelper.NormalizeFilename(fileRef.StringValue);
                    }
                }
            }
        }
示例#5
0
        public static bool AddIndividualPortrait(IBaseWindow baseWin, ChangeTracker localUndoman, GDMIndividualRecord iRec)
        {
            bool result = false;

            GDMMultimediaRecord mmRec = baseWin.Context.SelectRecord(GDMRecordType.rtMultimedia, null) as GDMMultimediaRecord;

            if (mmRec == null)
            {
                return(false);
            }

            // remove previous portrait link
            GDMMultimediaLink mmLink = iRec.GetPrimaryMultimediaLink();

            if (mmLink != null)
            {
                mmLink.IsPrimary = false;
            }

            // set new portrait link
            mmLink = iRec.SetPrimaryMultimediaLink(mmRec);

            // select portrait area
            using (var selectDlg = AppHost.ResolveDialog <IPortraitSelectDlg>(baseWin)) {
                selectDlg.MultimediaLink = mmLink;
                result = AppHost.Instance.ShowModalX(selectDlg, false);
            }

            if (result)
            {
                result = localUndoman.DoOrdinaryOperation(OperationType.otIndividualPortraitAttach, iRec, mmLink);
            }

            return(result);
        }
示例#6
0
        public override void UpdateContents()
        {
            var dataOwner = fDataOwner as IGDMStructWithMultimediaLinks;

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

            try {
                fSheetList.ClearItems();

                foreach (GDMMultimediaLink mmLink in dataOwner.MultimediaLinks)
                {
                    GDMMultimediaRecord mmRec = fBaseContext.Tree.GetPtrValue <GDMMultimediaRecord>(mmLink);
                    if (mmRec == null)
                    {
                        continue;
                    }

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

                    GDMFileReferenceWithTitle fileRef = mmRec.FileReferences[0];

                    fSheetList.AddItem(mmLink, new object[] { fileRef.Title,
                                                              LangMan.LS(GKData.MediaTypes[(int)fileRef.MediaType]) });
                }
            } catch (Exception ex) {
                Logger.WriteError("MediaLinksListModel.UpdateContents()", ex);
            }
        }
示例#7
0
        public void Test_Standart()
        {
            Assembly assembly = typeof(CoreTests).Assembly;

            using (Stream inStream = assembly.GetManifestResourceStream("GKTests.Resources.TGC55CLF.GED")) {
                using (GDMTree tree = new GDMTree()) {
                    var gedcomProvider = new GEDCOMProvider(tree);
                    gedcomProvider.LoadFromStreamExt(inStream, inStream);

                    Assert.AreEqual(GEDCOMFormat.gf_Unknown, tree.Format);

                    GDMMultimediaRecord mmRec1 = tree.XRefIndex_Find("M1") as GDMMultimediaRecord;
                    Assert.IsNotNull(mmRec1);

                    GDMTag blobTag = mmRec1.FindTag("BLOB", 0);
                    Assert.IsNotNull(blobTag);
                    var strBlob = GEDCOMUtils.GetTagStrings(blobTag).Text;
                    Assert.IsNotNull(strBlob);
                    MemoryStream blobStream = GEDCOMUtils.DecodeBlob(strBlob.Replace("\r\n", ""));
                    Assert.IsNotNull(blobStream);

                    // unsupported apple's `pict` format

                    /*using (FileStream file = new FileStream("d:\\image.pict", FileMode.Create, FileAccess.Write)) {
                     *  blobStream.WriteTo(file);
                     *  blobStream.Close();
                     * }*/

                    using (MemoryStream outStream = new MemoryStream()) {
                        gedcomProvider = new GEDCOMProvider(tree);
                        gedcomProvider.SaveToStreamExt(outStream, GEDCOMCharacterSet.csASCII);
                    }
                }
            }
        }
示例#8
0
        public void ShowMedia(GDMMultimediaRecord mediaRec, bool modal)
        {
            if (mediaRec == null)
            {
                throw new ArgumentNullException("mediaRec");
            }

            GDMFileReferenceWithTitle 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);
                }
            }
        }
示例#9
0
        public override void Setup()
        {
            WFAppHost.ConfigureBootstrap(false);

            fBase             = new BaseWindowStub();
            fMultimediaRecord = new GDMMultimediaRecord(fBase.Context.Tree);
            fMultimediaRecord.FileReferences.Add(new GDMFileReferenceWithTitle());

            fDialog          = new MediaEditDlg(fBase);
            fDialog.MediaRec = fMultimediaRecord;
            fDialog.Show();
        }
示例#10
0
        public void Test_MediaLoadSave()
        {
            string sourFile = TestUtils.PrepareTestFile("shaytan_plant.jpg");
            string gedFile = TestUtils.GetTempFilePath("test_mm.ged");
            string stgDirectory = string.Empty, arcFileName = string.Empty;

            try {
                using (BaseContext ctx = new BaseContext(null)) {
                    Assert.IsTrue(ctx.IsUnknown());

                    Assert.AreEqual(false, ctx.MediaSave(null, "", MediaStoreType.mstReference));
                    Assert.AreEqual(null, ctx.LoadMediaImage(null, false));
                    Assert.AreEqual(null, ctx.LoadMediaImage(null, 0, 0, ExtRect.Empty, false));
                    Assert.AreEqual(null, ctx.GetPrimaryBitmap(null, 0, 0, false));
                    Assert.AreEqual(null, ctx.GetPrimaryBitmapUID(null));

                    ctx.FileSave(gedFile);
                    Assert.AreEqual(true, ctx.CheckBasePath()); // need path for archive and storage

                    var mmRecR = new GDMMultimediaRecord(ctx.Tree);
                    mmRecR.FileReferences.Add(new GDMFileReferenceWithTitle());
                    Assert.AreEqual(true, ctx.MediaSave(mmRecR.FileReferences[0], sourFile, MediaStoreType.mstReference));
                    Assert.IsNotNull(ctx.LoadMediaImage(mmRecR.FileReferences[0], false));
                    Assert.IsNotNull(ctx.MediaLoad(mmRecR.FileReferences[0]));

                    var mmRecA = new GDMMultimediaRecord(ctx.Tree);
                    mmRecA.FileReferences.Add(new GDMFileReferenceWithTitle());
                    Assert.AreEqual(true, ctx.MediaSave(mmRecA.FileReferences[0], sourFile, MediaStoreType.mstArchive));
                    Assert.IsNotNull(ctx.LoadMediaImage(mmRecA.FileReferences[0], false));
                    Assert.IsNotNull(ctx.MediaLoad(mmRecA.FileReferences[0]));
                    arcFileName = ctx.GetArcFileName();

                    var mmRecS = new GDMMultimediaRecord(ctx.Tree);
                    mmRecS.FileReferences.Add(new GDMFileReferenceWithTitle());
                    Assert.AreEqual(true, ctx.MediaSave(mmRecS.FileReferences[0], sourFile, MediaStoreType.mstStorage));
                    Assert.IsNotNull(ctx.LoadMediaImage(mmRecS.FileReferences[0], false));
                    Assert.IsNotNull(ctx.MediaLoad(mmRecS.FileReferences[0]));
                    stgDirectory = ctx.GetStgFolder(false);

                    var mmRecRl = new GDMMultimediaRecord(ctx.Tree);
                    mmRecRl.FileReferences.Add(new GDMFileReferenceWithTitle());
                    Assert.AreEqual(true, ctx.MediaSave(mmRecRl.FileReferences[0], sourFile, MediaStoreType.mstRelativeReference));
                    Assert.IsNotNull(ctx.LoadMediaImage(mmRecRl.FileReferences[0], false));
                    Assert.IsNotNull(ctx.MediaLoad(mmRecRl.FileReferences[0]));
                }
            } finally {
                TestUtils.RemoveTestFile(sourFile);
                TestUtils.RemoveTestFile(gedFile);
                TestUtils.RemoveTestFile(arcFileName);
                TestUtils.RemoveTestDirectory(stgDirectory);
            }
        }
示例#11
0
        public GDMMultimediaLink AddMultimedia(GDMMultimediaRecord mediaRec)
        {
            GDMMultimediaLink result = null;

            if (mediaRec != null)
            {
                result       = new GDMMultimediaLink(this);
                result.Value = mediaRec;
                fMultimediaLinks.Add(result);
            }

            return(result);
        }
示例#12
0
        public void ShowMedia(GDMMultimediaRecord mediaRec, bool modal)
        {
            if (mediaRec == null)
            {
                throw new ArgumentNullException("mediaRec");
            }

            GDMFileReferenceWithTitle fileRef = mediaRec.FileReferences[0];

            if (fileRef == null)
            {
                return;
            }

            if (!GKUtils.UseEmbeddedViewer(fileRef.MultimediaFormat))
            {
                string targetFile = fContext.MediaLoad(fileRef);
                GKUtils.LoadExtFile(targetFile);
            }
            else
            {
                //var mediaViewer = AppHost.Container.Resolve<IMediaViewerWin>(this);
                MediaViewerWin mediaViewer = new MediaViewerWin(this);
                try {
                    try {
                        mediaViewer.Multimedia = mediaRec;
                        mediaViewer.FileRef    = fileRef;
                        if (modal)
                        {
                            mediaViewer.ShowDialog();
                        }
                        else
                        {
                            mediaViewer.ShowInTaskbar = true;
                            mediaViewer.Show();
                        }
                    } finally {
                        if (modal)
                        {
                            mediaViewer.Dispose();
                        }
                    }
                } catch (Exception ex) {
                    if (mediaViewer != null)
                    {
                        mediaViewer.Dispose();
                    }
                    Logger.WriteError("BaseWinSDI.ShowMedia()", ex);
                }
            }
        }
示例#13
0
        public override void Setup()
        {
            fBase = new BaseWindowStub();

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

            mmRec.FileReferences.Add(new GDMFileReferenceWithTitle(mmRec));
            fileRef = mmRec.FileReferences[0];

            fileRef.Title = "File Title 2";
            fileRef.LinkFile("shaytan_plant.jpg");
            fileRef.MediaType = GDMMediaType.mtPhoto;

            fDialog = new MediaViewerWin(fBase);
            fDialog.Show();
        }
示例#14
0
 public void SelectSummaryLink(string linkName)
 {
     if (linkName.StartsWith("view_"))
     {
         string xref = linkName.Remove(0, 5);
         GDMMultimediaRecord mmRec = fContext.Tree.XRefIndex_Find(xref) as GDMMultimediaRecord;
         if (mmRec != null)
         {
             fView.ShowMedia(mmRec, false);
         }
     }
     else
     {
         SelectRecordByXRef(linkName);
     }
 }
示例#15
0
        public void LoadList()
        {
            GDMRecord record;
            var       enumerator = fBase.Context.Tree.GetEnumerator(GDMRecordType.rtMultimedia);

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

                MultimediaKind mmKind = GKUtils.GetMultimediaKind(fileRef.MultimediaFormat);
                if (mmKind == MultimediaKind.mkImage)
                {
                    fFileRefs.Add(fileRef);
                }
            }
        }
示例#16
0
        public static bool ModifyMedia(IBaseWindow baseWin, ref GDMMultimediaRecord mediaRec)
        {
            bool result;

            try {
                baseWin.Context.BeginUpdate();
                GDMTree tree = baseWin.Context.Tree;

                using (var dlg = AppHost.ResolveDialog <IMediaEditDlg>(baseWin)) {
                    bool exists = mediaRec != null;
                    if (!exists)
                    {
                        mediaRec = new GDMMultimediaRecord(tree);
                        mediaRec.FileReferences.Add(new GDMFileReferenceWithTitle(mediaRec));
                        mediaRec.InitNew();
                    }

                    try {
                        baseWin.Context.LockRecord(mediaRec);

                        dlg.MediaRec = mediaRec;
                        result       = (AppHost.Instance.ShowModalX(dlg, false));
                    } finally {
                        baseWin.Context.UnlockRecord(mediaRec);
                    }

                    if (!exists)
                    {
                        if (result)
                        {
                            tree.AddRecord(mediaRec);
                        }
                        else
                        {
                            mediaRec.Dispose();
                            mediaRec = null;
                        }
                    }
                }
            } finally {
                baseWin.Context.EndUpdate();
            }

            return(result);
        }
示例#17
0
        private bool ProcessRecordMediaAdd(bool redo)
        {
            IGEDCOMStructWithLists swl      = fObj as IGEDCOMStructWithLists;
            GDMMultimediaRecord    mediaRec = fNewVal as GDMMultimediaRecord;

            bool result = (swl != null && mediaRec != null);

            if (result)
            {
                if (redo)
                {
                    GDMMultimediaLink mmLink = swl.AddMultimedia(mediaRec);
                    fOldVal = mmLink;
                }
                else
                {
                    GDMMultimediaLink mmLink = fOldVal as GDMMultimediaLink;
                    swl.MultimediaLinks.Delete(mmLink);
                }
            }
            return(result);
        }
        public override void UpdateView()
        {
            if (fMultimediaLink == null || fMultimediaLink.Value == null)
            {
                return;
            }

            GDMMultimediaRecord mmRec = (GDMMultimediaRecord)fMultimediaLink.Value;

            IImage img = fBase.Context.LoadMediaImage(mmRec.FileReferences[0], false);

            if (img == null)
            {
                return;
            }

            fView.ImageCtl.OpenImage(img);

            if (fMultimediaLink.IsPrimaryCutout)
            {
                fView.ImageCtl.SelectionRegion = fMultimediaLink.CutoutPosition.Value;
            }
        }
示例#19
0
        public void SelectLink(string linkName)
        {
            if (linkName.StartsWith("http"))
            {
                GKUtils.LoadExtFile(linkName);
                return;
            }

            if (linkName.StartsWith("view_"))
            {
                string xref = linkName.Remove(0, 5);
                GDMMultimediaRecord mmRec = fBase.Context.Tree.XRefIndex_Find(xref) as GDMMultimediaRecord;
                if (mmRec != null)
                {
                    fBase.ShowMedia(mmRec, false);
                }
            }
            else
            {
                GDMRecord record = Base.Context.Tree.XRefIndex_Find(linkName);
                fView.HyperView.Lines.Assign(fBase.GetRecordContent(record));
            }
        }
示例#20
0
        public override void UpdateContents()
        {
            var dataOwner = fDataOwner as IGEDCOMStructWithLists;

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

            try
            {
                fSheetList.ClearItems();

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

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

                    GDMFileReferenceWithTitle 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);
            }
        }
示例#21
0
        public void Test_LMMultimedia()
        {
            var listManager = new MultimediaListMan(fContext);

            Assert.IsNotNull(listManager);

            GDMMultimediaRecord mediaRec = fContext.Tree.XRefIndex_Find("O1") as GDMMultimediaRecord;

            listManager.Fetch(mediaRec);

            listManager.QuickFilter = "*";
            Assert.IsTrue(listManager.CheckFilter());
            listManager.QuickFilter = "*media*";
            Assert.IsTrue(listManager.CheckFilter());
            listManager.QuickFilter = "*xxxx*";
            Assert.IsFalse(listManager.CheckFilter());

            var lvMock = new ListViewMock();

            listManager.UpdateColumns(lvMock);
            var listItem = new GKListItem("", null);

            listManager.UpdateItem(0, listItem, mediaRec);
        }
示例#22
0
        public static GDMRecord AddRecord(IBaseWindow baseWin, GDMRecordType rt, Target target)
        {
            bool      result = false;
            GDMRecord rec    = null;

            switch (rt)
            {
            case GDMRecordType.rtIndividual:
            {
                // FIXME: legacy code, checkit
                if (target == null)
                {
                    target            = new Target();
                    target.TargetMode = TargetMode.tmParent;
                }

                GDMIndividualRecord indivRec = null;
                result = ModifyIndividual(baseWin, ref indivRec, target.TargetIndividual, target.TargetMode, target.NeedSex);
                rec    = indivRec;
                break;
            }

            case GDMRecordType.rtFamily:
            {
                if (target == null)
                {
                    target = new Target();
                }

                TargetMode famTarget = (target.TargetMode != TargetMode.tmFamilyChild) ? TargetMode.tmNone : target.TargetMode;

                GDMFamilyRecord fam = null;
                result = ModifyFamily(baseWin, ref fam, famTarget, target.TargetIndividual);
                rec    = fam;
                break;
            }

            case GDMRecordType.rtNote:
            {
                GDMNoteRecord note = null;
                result = ModifyNote(baseWin, ref note);
                rec    = note;
                break;
            }

            case GDMRecordType.rtMultimedia:
            {
                GDMMultimediaRecord mmRec = null;
                result = ModifyMedia(baseWin, ref mmRec);
                rec    = mmRec;
                break;
            }

            case GDMRecordType.rtSource:
            {
                GDMSourceRecord src = null;
                result = ModifySource(baseWin, ref src);
                rec    = src;
                break;
            }

            case GDMRecordType.rtRepository:
            {
                GDMRepositoryRecord rep = null;
                result = ModifyRepository(baseWin, ref rep);
                rec    = rep;
                break;
            }

            case GDMRecordType.rtGroup:
            {
                GDMGroupRecord grp = null;
                result = ModifyGroup(baseWin, ref grp);
                rec    = grp;
                break;
            }

            case GDMRecordType.rtResearch:
            {
                GDMResearchRecord rsr = null;
                result = ModifyResearch(baseWin, ref rsr);
                rec    = rsr;
                break;
            }

            case GDMRecordType.rtTask:
            {
                GDMTaskRecord tsk = null;
                result = ModifyTask(baseWin, ref tsk);
                rec    = tsk;
                break;
            }

            case GDMRecordType.rtCommunication:
            {
                GDMCommunicationRecord comm = null;
                result = ModifyCommunication(baseWin, ref comm);
                rec    = comm;
                break;
            }

            case GDMRecordType.rtLocation:
            {
                GDMLocationRecord loc = null;
                result = ModifyLocation(baseWin, ref loc);
                rec    = loc;
                break;
            }
            }

            return((result) ? rec : null);
        }
示例#23
0
        public static GDMMultimediaLink AddMultimedia(this IGDMStructWithMultimediaLinks _struct, GDMMultimediaRecord mediaRec)
        {
            GDMMultimediaLink result = null;

            if (mediaRec != null)
            {
                result      = new GDMMultimediaLink();
                result.XRef = mediaRec.XRef;
                _struct.MultimediaLinks.Add(result);
            }

            return(result);
        }
示例#24
0
 public void ShowMedia(GDMMultimediaRecord mediaRec, bool modal)
 {
 }
示例#25
0
 public override void Fetch(GDMRecord aRec)
 {
     fRec = (aRec as GDMMultimediaRecord);
 }
示例#26
0
        public static void FillContext(IBaseContext context)
        {
            // a null result if the record is not defined
            GDMCustomEvent evt = context.CreateEventEx(null, GEDCOMTagName.BIRT, "xxxxx", "xxxxx");

            Assert.IsNull(evt);

            // first individual (I1)
            GDMIndividualRecord iRec = context.CreatePersonEx("Ivan", "Ivanovich", "Ivanov", GDMSex.svMale, true);

            Assert.IsNotNull(iRec);

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

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

            Assert.IsNotNull(evtd);

            // second individual, wife (I2)
            GDMIndividualRecord iRec2 = context.CreatePersonEx("Maria", "Petrovna", "Ivanova", GDMSex.svFemale, true);

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

            iRec.AddAssociation("spouse", iRec2);

            // third individual, child (I3)
            GDMIndividualRecord iRec3 = context.CreatePersonEx("Anna", "Ivanovna", "Ivanova", GDMSex.svFemale, true);

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

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

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

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

            // individual outside the family (I4)
            GDMIndividualRecord iRec4 = context.CreatePersonEx("Alex", "", "Petrov", GDMSex.svMale, true);

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

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

            // fifth (I5)
            GDMIndividualRecord iRec5 = context.CreatePersonEx("Anna", "", "Jones", GDMSex.svFemale, false);

            Assert.IsNotNull(iRec5);

            // sixth (I6)
            GDMIndividualRecord iRec6 = context.CreatePersonEx("Mary", "", "Jones", GDMSex.svFemale, false);

            Assert.IsNotNull(iRec6);
            evt = context.CreateEventEx(iRec6, GEDCOMTagName.BIRT, "12 FEB 1650", "Far Forest");

            GDMFamilyRecord famRec2 = context.Tree.CreateFamily();

            Assert.IsNotNull(famRec2);
            famRec2.AddSpouse(iRec3);
            //famRec2.AddSpouse(iRec4);
            famRec2.AddChild(iRec5);
            famRec2.AddChild(iRec6);

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

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

            // location for tests
            GDMLocationRecord 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
            GDMRepositoryRecord repoRec = context.Tree.CreateRepository();

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

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

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

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

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

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

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

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

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

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

            mediaRec.FileReferences.Add(new GDMFileReferenceWithTitle());
            GDMFileReferenceWithTitle fileRef = mediaRec.FileReferences[0];

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

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

            commRec.CommName = "Test communication";
            Assert.IsNotNull(commRec, "commRec != null");
        }
示例#27
0
        public void Test_ShowXInfo()
        {
            StringList summary = new StringList();

            summary.Clear();
            GKUtils.ShowFamilyInfo(fContext, null, null);
            GDMFamilyRecord famRec = fContext.Tree.XRefIndex_Find("F1") as GDMFamilyRecord;

            GKUtils.ShowFamilyInfo(fContext, famRec, summary);

            summary.Clear();
            GKUtils.ShowGroupInfo(null, null);
            GDMGroupRecord grpRec = fContext.Tree.XRefIndex_Find("G1") as GDMGroupRecord;

            GKUtils.ShowGroupInfo(grpRec, summary);

            summary.Clear();
            GKUtils.ShowMultimediaInfo(null, null);
            GDMMultimediaRecord mmRec = fContext.Tree.XRefIndex_Find("O1") as GDMMultimediaRecord;

            GKUtils.ShowMultimediaInfo(mmRec, summary);

            summary.Clear();
            GKUtils.ShowNoteInfo(null, null);
            GDMNoteRecord noteRec = fContext.Tree.XRefIndex_Find("N1") as GDMNoteRecord;

            GKUtils.ShowNoteInfo(noteRec, summary);

            summary.Clear();
            GKUtils.ShowPersonInfo(fContext, null, null);
            GDMIndividualRecord indRec = fContext.Tree.XRefIndex_Find("I1") as GDMIndividualRecord;

            GKUtils.ShowPersonInfo(fContext, indRec, summary);

            summary.Clear();
            GKUtils.ShowSourceInfo(null, null);
            GDMSourceRecord srcRec = fContext.Tree.XRefIndex_Find("S1") as GDMSourceRecord;

            GKUtils.ShowSourceInfo(srcRec, summary);

            summary.Clear();
            GKUtils.ShowRepositoryInfo(null, null);
            GDMRepositoryRecord repRec = fContext.Tree.XRefIndex_Find("R1") as GDMRepositoryRecord;

            GKUtils.ShowRepositoryInfo(repRec, summary);

            summary.Clear();
            GKUtils.ShowResearchInfo(null, null);
            GDMResearchRecord resRec = fContext.Tree.XRefIndex_Find("RS1") as GDMResearchRecord;

            GKUtils.ShowResearchInfo(resRec, summary);

            summary.Clear();
            GKUtils.ShowTaskInfo(null, null);
            GDMTaskRecord taskRec = fContext.Tree.XRefIndex_Find("TK1") as GDMTaskRecord;

            GKUtils.ShowTaskInfo(taskRec, summary);

            summary.Clear();
            GKUtils.ShowCommunicationInfo(null, null);
            GDMCommunicationRecord commRec = fContext.Tree.XRefIndex_Find("CM1") as GDMCommunicationRecord;

            GKUtils.ShowCommunicationInfo(commRec, summary);

            summary.Clear();
            GKUtils.ShowLocationInfo(null, null);
            GDMLocationRecord locRec = fContext.Tree.XRefIndex_Find("L1") as GDMLocationRecord;

            GKUtils.ShowLocationInfo(locRec, summary);
        }
示例#28
0
        public static bool EditRecord(IBaseWindow baseWin, GDMRecord rec)
        {
            bool result = false;

            switch (rec.RecordType)
            {
            case GDMRecordType.rtIndividual:
                GDMIndividualRecord ind = rec as GDMIndividualRecord;
                result = ModifyIndividual(baseWin, ref ind, null, TargetMode.tmNone, GDMSex.svUnknown);
                break;

            case GDMRecordType.rtFamily:
                GDMFamilyRecord fam = rec as GDMFamilyRecord;
                result = ModifyFamily(baseWin, ref fam, TargetMode.tmNone, null);
                break;

            case GDMRecordType.rtNote:
                GDMNoteRecord note = rec as GDMNoteRecord;
                result = ModifyNote(baseWin, ref note);
                break;

            case GDMRecordType.rtMultimedia:
                GDMMultimediaRecord mmRec = rec as GDMMultimediaRecord;
                result = ModifyMedia(baseWin, ref mmRec);
                break;

            case GDMRecordType.rtSource:
                GDMSourceRecord src = rec as GDMSourceRecord;
                result = ModifySource(baseWin, ref src);
                break;

            case GDMRecordType.rtRepository:
                GDMRepositoryRecord rep = rec as GDMRepositoryRecord;
                result = ModifyRepository(baseWin, ref rep);
                break;

            case GDMRecordType.rtGroup:
                GDMGroupRecord grp = rec as GDMGroupRecord;
                result = ModifyGroup(baseWin, ref grp);
                break;

            case GDMRecordType.rtResearch:
                GDMResearchRecord rsr = rec as GDMResearchRecord;
                result = ModifyResearch(baseWin, ref rsr);
                break;

            case GDMRecordType.rtTask:
                GDMTaskRecord tsk = rec as GDMTaskRecord;
                result = ModifyTask(baseWin, ref tsk);
                break;

            case GDMRecordType.rtCommunication:
                GDMCommunicationRecord comm = rec as GDMCommunicationRecord;
                result = ModifyCommunication(baseWin, ref comm);
                break;

            case GDMRecordType.rtLocation:
                GDMLocationRecord loc = rec as GDMLocationRecord;
                result = ModifyLocation(baseWin, ref loc);
                break;
            }

            return(result);
        }
示例#29
0
 public static GDMMultimediaLink FindMultimediaLink(this IGDMStructWithMultimediaLinks _struct, GDMMultimediaRecord mmRec)
 {
     if (mmRec != null && _struct.HasMultimediaLinks)
     {
         int num = _struct.MultimediaLinks.Count;
         for (int i = 0; i < num; i++)
         {
             var link = _struct.MultimediaLinks[i];
             if (link.XRef == mmRec.XRef)
             {
                 return(link);
             }
         }
     }
     return(null);
 }
示例#30
0
        public static GDMMultimediaLink AddMultimedia(this IGDMStructWithMultimediaLinks _struct, GDMMultimediaRecord mediaRec)
        {
            GDMMultimediaLink result = null;

            if (mediaRec != null)
            {
                result       = new GDMMultimediaLink((GDMObject)_struct);
                result.Value = mediaRec;
                _struct.MultimediaLinks.Add(result);
            }

            return(result);
        }