private void SetMultimediaLink(GEDCOMMultimediaLink value)
        {
            fMultimediaLink = value;
            if (fMultimediaLink == null || fMultimediaLink.Value == null)
            {
                return;
            }

            GEDCOMMultimediaRecord mmRec = (GEDCOMMultimediaRecord)fMultimediaLink.Value;

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

            if (img == null)
            {
                return;
            }

            imageView1.OpenImage(((ImageHandler)img).Handle);

            if (fMultimediaLink.IsPrimaryCutout)
            {
                ExtRect rt = fMultimediaLink.CutoutPosition.Value;
                imageView1.SelectionRegion = new RectangleF(rt.Left, rt.Top, rt.GetWidth(), rt.GetHeight());
            }
        }
Beispiel #2
0
        private bool ProcessIndividualPortrait(bool redo)
        {
            GEDCOMIndividualRecord iRec   = fObj as GEDCOMIndividualRecord;
            GEDCOMMultimediaLink   mmLink = fNewVal as GEDCOMMultimediaLink;

            if (iRec == null || mmLink == null)
            {
                return(false);
            }

            if (fType == OperationType.otIndividualPortraitDetach)
            {
                redo = !redo;
            }

            if (redo)
            {
                mmLink.IsPrimary = true;
            }
            else
            {
                mmLink.IsPrimary = false;
            }

            return(true);
        }
Beispiel #3
0
        public static bool AddIndividualPortrait(IBaseWindow baseWin, ChangeTracker localUndoman, GEDCOMIndividualRecord iRec)
        {
            bool result = false;

            GEDCOMMultimediaRecord mmRec = baseWin.Context.SelectRecord(GEDCOMRecordType.rtMultimedia, null) as GEDCOMMultimediaRecord;

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

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

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

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

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

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

            return(result);
        }
Beispiel #4
0
        public static bool AddIndividualPortrait(IBaseWindow baseWin, GEDCOMIndividualRecord iRec)
        {
            bool result = false;

            GEDCOMMultimediaRecord mmRec = baseWin.Context.SelectRecord(GEDCOMRecordType.rtMultimedia, null) as GEDCOMMultimediaRecord;

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

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

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

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

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

            return(result);
        }
Beispiel #5
0
        public static bool DeleteIndividualPortrait(IBaseWindow baseWin, ChangeTracker localUndoman, GEDCOMIndividualRecord iRec)
        {
            GEDCOMMultimediaLink mmLink = iRec.GetPrimaryMultimediaLink();

            if (mmLink != null)
            {
                return(localUndoman.DoOrdinaryOperation(OperationType.otIndividualPortraitDetach, iRec, mmLink));
            }
            return(false);
        }
Beispiel #6
0
        public override void Setup()
        {
            base.Setup();

            fBase           = new BaseWindowStub();
            fContext        = fBase.Context;
            fMultimediaLink = new GEDCOMMultimediaLink(fContext.Tree, null, "", "");

            fDialog = new PortraitSelectDlg(fBase);
            fDialog.MultimediaLink = fMultimediaLink;
            fDialog.Show();
        }
Beispiel #7
0
        public static bool DeleteIndividualPortrait(IBaseWindow baseWin, GEDCOMIndividualRecord iRec)
        {
            GEDCOMMultimediaLink mmLink = iRec.GetPrimaryMultimediaLink();

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

            mmLink.IsPrimary = false;
            return(true);
        }
Beispiel #8
0
        private bool ProcessRecordMediaRemove(bool redo)
        {
            IGEDCOMStructWithLists swl       = fObj as IGEDCOMStructWithLists;
            GEDCOMMultimediaLink   mediaLink = fNewVal as GEDCOMMultimediaLink;

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

            if (result)
            {
                if (redo)
                {
                    swl.MultimediaLinks.Extract(mediaLink); // bugfix(no delete!)
                }
                else
                {
                    swl.MultimediaLinks.Add(mediaLink);
                }
            }
            return(result);
        }
Beispiel #9
0
        private bool ProcessRecordMediaAdd(bool redo)
        {
            IGEDCOMStructWithLists swl      = fObj as IGEDCOMStructWithLists;
            GEDCOMMultimediaRecord mediaRec = fNewVal as GEDCOMMultimediaRecord;

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

            if (result)
            {
                if (redo)
                {
                    GEDCOMMultimediaLink mmLink = swl.AddMultimedia(mediaRec);
                    fOldVal = mmLink;
                }
                else
                {
                    GEDCOMMultimediaLink mmLink = fOldVal as GEDCOMMultimediaLink;
                    swl.MultimediaLinks.Delete(mmLink);
                }
            }
            return(result);
        }
Beispiel #10
0
        public void RemoveObsolete(GEDCOMMultimediaLink mmLink)
        {
            if (mmLink == null)
            {
                return;
            }

            try {
                string imageUID   = mmLink.GetUID();
                string cachedFile = GetCachedFilename(imageUID);

                if (fMemoryCache.ContainsKey(cachedFile))
                {
                    fMemoryCache.Remove(cachedFile);
                }

                if (File.Exists(cachedFile))
                {
                    File.Delete(cachedFile);
                }
            } catch (Exception ex) {
                Logger.LogWrite("PortraitsCache.RemoveObsolete(): " + ex.Message);
            }
        }
Beispiel #11
0
        public override void Modify(object sender, ModifyEventArgs eArgs)
        {
            var dataOwner = fDataOwner as IGEDCOMStructWithLists;

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

            GEDCOMMultimediaLink mmLink = eArgs.ItemData as GEDCOMMultimediaLink;

            bool result = false;

            GEDCOMMultimediaRecord mmRec;

            switch (eArgs.Action)
            {
            case RecordAction.raAdd:
                mmRec = fBaseWin.Context.SelectRecord(GEDCOMRecordType.rtMultimedia, new object[0]) as GEDCOMMultimediaRecord;
                if (mmRec != null)
                {
                    result = fUndoman.DoOrdinaryOperation(OperationType.otRecordMediaAdd, (GEDCOMObject)dataOwner, mmRec);
                }
                break;

            case RecordAction.raEdit:
                if (mmLink != null)
                {
                    mmRec  = mmLink.Value as GEDCOMMultimediaRecord;
                    result = BaseController.ModifyMedia(fBaseWin, ref mmRec);
                }
                break;

            case RecordAction.raDelete:
                if (AppHost.StdDialogs.ShowQuestionYN(LangMan.LS(LSID.LSID_DetachMultimediaQuery)))
                {
                    result = fUndoman.DoOrdinaryOperation(OperationType.otRecordMediaRemove, (GEDCOMObject)dataOwner, mmLink);
                }
                break;

            case RecordAction.raMoveUp:
            case RecordAction.raMoveDown:
            {
                int idx = dataOwner.MultimediaLinks.IndexOf(mmLink);

                switch (eArgs.Action)
                {
                case RecordAction.raMoveUp:
                    dataOwner.MultimediaLinks.Exchange(idx - 1, idx);
                    break;

                case RecordAction.raMoveDown:
                    dataOwner.MultimediaLinks.Exchange(idx, idx + 1);
                    break;
                }

                result = true;
            }
            break;
            }

            if (result)
            {
                fBaseWin.Context.Modified = true;
                eArgs.IsChanged           = true;
            }
        }