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()); } }
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); }
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); }
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); }
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); }
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(); }
public static bool DeleteIndividualPortrait(IBaseWindow baseWin, GEDCOMIndividualRecord iRec) { GEDCOMMultimediaLink mmLink = iRec.GetPrimaryMultimediaLink(); if (mmLink == null) { return(false); } mmLink.IsPrimary = false; return(true); }
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); }
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); }
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); } }
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; } }