示例#1
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);
        }
示例#2
0
        public static bool AddIndividualMother(IBaseWindow baseWin, ChangeTracker localUndoman, GDMIndividualRecord person)
        {
            bool result = false;

            GDMIndividualRecord mother = baseWin.Context.SelectPerson(person, TargetMode.tmChild, GDMSex.svFemale);

            if (mother != null)
            {
                GDMFamilyRecord family = baseWin.Context.GetChildFamily(person, true, mother);
                if (family != null)
                {
                    if (family.Wife.Value == null)
                    {
                        // new family
                        result = localUndoman.DoOrdinaryOperation(OperationType.otFamilySpouseAttach, family, mother);
                    }
                    else
                    {
                        // selected family with wife
                        Logger.LogWrite("BaseController.AddMother(): fail, because family already has mother");
                        result = true;
                    }
                }
            }

            return(result);
        }
示例#3
0
        public static bool AddIndividualFather(IBaseWindow baseWin, ChangeTracker localUndoman, GDMIndividualRecord person)
        {
            bool result = false;

            GDMIndividualRecord father = baseWin.Context.SelectPerson(person, TargetMode.tmChild, GDMSex.svMale);

            if (father != null)
            {
                GDMFamilyRecord family = baseWin.Context.GetChildFamily(person, true, father);
                if (family != null)
                {
                    var husb = baseWin.Context.Tree.GetPtrValue <GDMIndividualRecord>(family.Husband);
                    if (husb == null)
                    {
                        // new family
                        result = localUndoman.DoOrdinaryOperation(OperationType.otFamilySpouseAttach, family, father);
                    }
                    else
                    {
                        // selected family with husband
                        Logger.WriteError("BaseController.AddFather(): fail, because family already has father");
                        result = true;
                    }
                }
            }

            return(result);
        }
示例#4
0
        public static bool DeleteIndividualPortrait(IBaseWindow baseWin, ChangeTracker localUndoman, GDMIndividualRecord iRec)
        {
            GDMMultimediaLink mmLink = iRec.GetPrimaryMultimediaLink();

            if (mmLink != null)
            {
                return(localUndoman.DoOrdinaryOperation(OperationType.otIndividualPortraitDetach, iRec, mmLink));
            }
            return(false);
        }
示例#5
0
        public static bool AddFamilyWife(IBaseWindow baseWin, ChangeTracker localUndoman, GDMFamilyRecord family)
        {
            bool result = false;

            GDMIndividualRecord wife = baseWin.Context.SelectPerson(family.Husband.Individual, TargetMode.tmSpouse, GDMSex.svFemale);

            if (wife != null && family.Wife.IsEmpty())
            {
                result = localUndoman.DoOrdinaryOperation(OperationType.otFamilySpouseAttach, family, wife);
            }

            return(result);
        }
示例#6
0
        public static bool AddFamilyHusband(IBaseWindow baseWin, ChangeTracker localUndoman, GDMFamilyRecord family)
        {
            bool result = false;

            GDMIndividualRecord husband = baseWin.Context.SelectPerson(null, TargetMode.tmNone, GDMSex.svMale);

            if (husband != null && family.Husband.StringValue == "")
            {
                result = localUndoman.DoOrdinaryOperation(OperationType.otFamilySpouseAttach, family, husband);
            }

            return(result);
        }
示例#7
0
        public static bool AddFamilyWife(IBaseWindow baseWin, ChangeTracker localUndoman, GEDCOMFamilyRecord family)
        {
            bool result = false;

            GEDCOMIndividualRecord wife = baseWin.Context.SelectPerson(null, TargetMode.tmNone, GEDCOMSex.svFemale);

            if (wife != null && family.Wife.StringValue == "")
            {
                result = localUndoman.DoOrdinaryOperation(OperationType.otFamilySpouseAttach, family, wife);
            }

            return(result);
        }
示例#8
0
        public static bool AddFamilyHusband(IBaseWindow baseWin, ChangeTracker localUndoman, GDMFamilyRecord family)
        {
            bool result = false;

            var wife = baseWin.Context.Tree.GetPtrValue(family.Wife);
            GDMIndividualRecord husband = baseWin.Context.SelectPerson(wife, TargetMode.tmSpouse, GDMSex.svMale);

            if (husband != null && family.Husband.IsEmpty())
            {
                result = localUndoman.DoOrdinaryOperation(OperationType.otFamilySpouseAttach, family, husband);
            }

            return(result);
        }
示例#9
0
        public static bool DeleteIndividualFather(IBaseWindow baseWin, ChangeTracker localUndoman, GDMIndividualRecord person)
        {
            bool result = false;

            if (AppHost.StdDialogs.ShowQuestionYN(LangMan.LS(LSID.LSID_DetachFatherQuery)))
            {
                GDMFamilyRecord family = baseWin.Context.GetChildFamily(person, false, null);
                if (family != null)
                {
                    GDMIndividualRecord father = family.Husband.Individual;
                    result = localUndoman.DoOrdinaryOperation(OperationType.otFamilySpouseDetach, family, father);
                }
            }

            return(result);
        }
示例#10
0
        public static bool DeleteFamilyWife(IBaseWindow baseWin, ChangeTracker localUndoman, GDMFamilyRecord family)
        {
            bool result = false;

            GDMIndividualRecord wife = family.Wife.Individual;

            if (!baseWin.Context.IsAvailableRecord(wife))
            {
                return(false);
            }

            if (AppHost.StdDialogs.ShowQuestionYN(LangMan.LS(LSID.LSID_DetachWifeQuery)))
            {
                result = localUndoman.DoOrdinaryOperation(OperationType.otFamilySpouseDetach, family, wife);
            }

            return(result);
        }
示例#11
0
        public static bool DeleteFamilyHusband(IBaseWindow baseWin, ChangeTracker localUndoman, GDMFamilyRecord family)
        {
            bool result = false;

            GDMIndividualRecord husband = baseWin.Context.Tree.GetPtrValue(family.Husband);

            if (!baseWin.Context.IsAvailableRecord(husband))
            {
                return(false);
            }

            if (AppHost.StdDialogs.ShowQuestionYN(LangMan.LS(LSID.LSID_DetachHusbandQuery)))
            {
                result = localUndoman.DoOrdinaryOperation(OperationType.otFamilySpouseDetach, family, husband);
            }

            return(result);
        }
示例#12
0
        public static bool ModifySourceCitation(IBaseWindow baseWin, ChangeTracker undoman, IGEDCOMStructWithLists _struct, ref GEDCOMSourceCitation cit)
        {
            bool result;

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

                using (var dlg = AppHost.Container.Resolve <ISourceCitEditDlg>())
                {
                    dlg.InitDialog(baseWin);

                    bool exists = cit != null;
                    if (!exists)
                    {
                        cit = new GEDCOMSourceCitation(tree, _struct as GEDCOMObject, "", "");
                    }

                    dlg.SourceCitation = cit;
                    result             = AppHost.Instance.ShowModalX(dlg, false);

                    if (!exists)
                    {
                        if (result)
                        {
                            //_struct.SourceCitations.Add(cit);
                            result = undoman.DoOrdinaryOperation(OperationType.otRecordSourceCitAdd, (GEDCOMObject)_struct, cit);
                        }
                        else
                        {
                            cit.Dispose();
                        }
                    }
                }
            } finally {
                baseWin.Context.EndUpdate();
            }

            return(result);
        }
示例#13
0
        public static bool ModifySourceCitation(IBaseWindow baseWin, ChangeTracker undoman,
                                                IGDMStructWithSourceCitations _struct, ref GDMSourceCitation cit)
        {
            bool result;

            try {
                baseWin.Context.BeginUpdate();

                using (var dlg = AppHost.ResolveDialog <ISourceCitEditDlg>(baseWin)) {
                    bool exists = cit != null;
                    if (!exists)
                    {
                        cit = new GDMSourceCitation();
                    }

                    dlg.SourceCitation = cit;
                    result             = AppHost.Instance.ShowModalX(dlg, false);

                    if (!exists)
                    {
                        if (result)
                        {
                            result = undoman.DoOrdinaryOperation(OperationType.otRecordSourceCitAdd, (GDMObject)_struct, cit);
                        }
                        else
                        {
                            cit.Dispose();
                        }
                    }
                }
            } finally {
                baseWin.Context.EndUpdate();
            }

            return(result);
        }