Skip to content

Commit

Permalink
Added the feature to enter user's references in family, media, source…
Browse files Browse the repository at this point in the history
… and repository records
  • Loading branch information
Serg-Norseman committed Jul 25, 2024
1 parent a502c5d commit 48db916
Show file tree
Hide file tree
Showing 38 changed files with 347 additions and 131 deletions.
1 change: 1 addition & 0 deletions locales/help_enu/gkhHistory.html
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ <h1>Change log</h1>

<p>
<b>14.06.2024 [v2.30.1 &amp; v3.6.1]</b><ul>
<li>Added the feature to enter user's references in family, media, source and repository records.
<li>Added the option to include page numbers of sources in pedigrees.
<li>Added place analyzer/constructor to locations management tool.
<li>Added a section for links to subordinate locations in the location information panel.
Expand Down
1 change: 1 addition & 0 deletions locales/help_rus/gkhHistory.html
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ <h1>История версий</h1>

<p>
<b>14.06.2024 [v2.30.1 &amp; v3.6.1]</b><ul>
<li>Добавлена возможность ввода пользовательских ссылок в записях семей, мультимедиа, источников и архивов.
<li>Добавлена опция включения номеров страниц источников в родословные росписи.
<li>Добавлен анализатор/конструктор мест в инструмент управления местами.
<li>Добавлена секция ссылок на подчиненные места в панель информации мест.
Expand Down
3 changes: 3 additions & 0 deletions projects/GKCore/GKCore.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,8 @@
<Link>GlobalSuppressions.cs</Link>
</Compile>
<Compile Include="AssemblyInfo.cs" />
<Compile Include="GKCore\Controllers\SourceCallNumberDlgController.cs" />
<Compile Include="GKCore\Design\Views\ISourceCallNumberEditDlg.cs" />
<Compile Include="GKCore\Design\Views\ILocExpertDlg.cs" />
<Compile Include="GKCore\Controllers\EventDefEditDlgController.cs" />
<Compile Include="GKCore\Controllers\LocExpertDlgController.cs" />
Expand Down Expand Up @@ -544,6 +546,7 @@
<Compile Include="GKCore\Interfaces\IScrollableContainer.cs" />
<Compile Include="GKCore\EventDefinitions.cs" />
<Compile Include="GKCore\Types\GKPageSize.cs" />
<Compile Include="GKCore\Lists\URefsListModel.cs" />
</ItemGroup>
<Import Project="GKCore.props" />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
Expand Down
5 changes: 5 additions & 0 deletions projects/GKCore/GKCore/Controllers/FamilyEditDlgController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ public override void Init(IBaseWindow baseWin)
fView.NotesList.ListModel = new NoteLinksListModel(fView, baseWin, fLocalUndoman);
fView.MediaList.ListModel = new MediaLinksListModel(fView, baseWin, fLocalUndoman);
fView.SourcesList.ListModel = new SourceCitationsListModel(fView, baseWin, fLocalUndoman);
fView.UserRefList.ListModel = new URefsListModel(fView, baseWin, fLocalUndoman);
}

public override void Done()
Expand All @@ -78,6 +79,7 @@ public override void Done()
fView.NotesList.ListModel.SaveSettings();
fView.MediaList.ListModel.SaveSettings();
fView.SourcesList.ListModel.SaveSettings();
fView.UserRefList.ListModel.SaveSettings();
}

public void SetTarget(TargetMode targetType, GDMIndividualRecord target)
Expand Down Expand Up @@ -124,6 +126,7 @@ public override void UpdateView()
fView.NotesList.ListModel.DataOwner = fFamilyRecord;
fView.MediaList.ListModel.DataOwner = fFamilyRecord;
fView.SourcesList.ListModel.DataOwner = fFamilyRecord;
fView.UserRefList.ListModel.DataOwner = fFamilyRecord;

if (fFamilyRecord == null) {
fView.MarriageStatus.Enabled = false;
Expand Down Expand Up @@ -164,6 +167,7 @@ private void UpdateControls()
fView.NotesList.UpdateSheet();
fView.MediaList.UpdateSheet();
fView.SourcesList.UpdateSheet();
fView.UserRefList.UpdateSheet();
}

public async void AddHusband()
Expand Down Expand Up @@ -219,6 +223,7 @@ public override void SetLocale()
GetControl<ITabPage>("pageNotes").Text = LangMan.LS(LSID.RPNotes);
GetControl<ITabPage>("pageMultimedia").Text = LangMan.LS(LSID.RPMultimedia);
GetControl<ITabPage>("pageSources").Text = LangMan.LS(LSID.RPSources);
GetControl<ITabPage>("pageUserRefs").Text = LangMan.LS(LSID.UserRefs);
GetControl<ILabel>("lblRestriction").Text = LangMan.LS(LSID.Restriction);

SetToolTip("btnHusbandAdd", LangMan.LS(LSID.HusbandAddTip));
Expand Down
5 changes: 5 additions & 0 deletions projects/GKCore/GKCore/Controllers/MediaEditDlgController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -67,12 +67,14 @@ public override void Init(IBaseWindow baseWin)

fView.NotesList.ListModel = new NoteLinksListModel(fView, baseWin, fLocalUndoman);
fView.SourcesList.ListModel = new SourceCitationsListModel(fView, baseWin, fLocalUndoman);
fView.UserRefList.ListModel = new URefsListModel(fView, baseWin, fLocalUndoman);
}

public override void Done()
{
fView.NotesList.ListModel.SaveSettings();
fView.SourcesList.ListModel.SaveSettings();
fView.UserRefList.ListModel.SaveSettings();
}

public override bool Accept()
Expand Down Expand Up @@ -119,6 +121,7 @@ public override void UpdateView()
{
fView.NotesList.ListModel.DataOwner = fMultimediaRecord;
fView.SourcesList.ListModel.DataOwner = fMultimediaRecord;
fView.UserRefList.ListModel.DataOwner = fMultimediaRecord;

UpdateControls();
}
Expand Down Expand Up @@ -153,6 +156,7 @@ private void UpdateControls()

fView.NotesList.UpdateSheet();
fView.SourcesList.UpdateSheet();
fView.UserRefList.UpdateSheet();
}

private void UpdateFileStore(bool isNew, MediaStoreType storeType)
Expand Down Expand Up @@ -244,6 +248,7 @@ public override void SetLocale()
GetControl<ITabPage>("pageCommon").Text = LangMan.LS(LSID.Common);
GetControl<ITabPage>("pageNotes").Text = LangMan.LS(LSID.RPNotes);
GetControl<ITabPage>("pageSources").Text = LangMan.LS(LSID.RPSources);
GetControl<ITabPage>("pageUserRefs").Text = LangMan.LS(LSID.UserRefs);
GetControl<ILabel>("lblName").Text = LangMan.LS(LSID.Title);
GetControl<ILabel>("lblType").Text = LangMan.LS(LSID.Type);
GetControl<ILabel>("lblStoreType").Text = LangMan.LS(LSID.StoreType);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,11 +58,13 @@ public override void Init(IBaseWindow baseWin)
base.Init(baseWin);

fView.NotesList.ListModel = new NoteLinksListModel(fView, baseWin, fLocalUndoman);
fView.UserRefList.ListModel = new URefsListModel(fView, baseWin, fLocalUndoman);
}

public override void Done()
{
fView.NotesList.ListModel.SaveSettings();
fView.UserRefList.ListModel.SaveSettings();
}

public override bool Accept()
Expand All @@ -86,6 +88,7 @@ public override void UpdateView()
fView.Name.Text = fRepositoryRecord.RepositoryName;

fView.NotesList.ListModel.DataOwner = fRepositoryRecord;
fView.UserRefList.ListModel.DataOwner = fRepositoryRecord;
}

public async void ModifyAddress()
Expand All @@ -100,6 +103,7 @@ public override void SetLocale()
GetControl<IButton>("btnCancel").Text = LangMan.LS(LSID.DlgCancel);
GetControl<ILabel>("lblName").Text = LangMan.LS(LSID.Title);
GetControl<ITabPage>("pageNotes").Text = LangMan.LS(LSID.RPNotes);
GetControl<ITabPage>("pageUserRefs").Text = LangMan.LS(LSID.UserRefs);
GetControl<IButton>("btnAddress").Text = LangMan.LS(LSID.Address) + @"...";
}
}
Expand Down
4 changes: 4 additions & 0 deletions projects/GKCore/GKCore/Controllers/SourceEditDlgController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -60,13 +60,15 @@ public override void Init(IBaseWindow baseWin)
fView.RepositoriesList.ListModel = new SourceRepositoriesListModel(fView, baseWin, fLocalUndoman);
fView.NotesList.ListModel = new NoteLinksListModel(fView, baseWin, fLocalUndoman);
fView.MediaList.ListModel = new MediaLinksListModel(fView, baseWin, fLocalUndoman);
fView.UserRefList.ListModel = new URefsListModel(fView, baseWin, fLocalUndoman);
}

public override void Done()
{
fView.RepositoriesList.ListModel.SaveSettings();
fView.NotesList.ListModel.SaveSettings();
fView.MediaList.ListModel.SaveSettings();
fView.UserRefList.ListModel.SaveSettings();
}

public override bool Accept()
Expand Down Expand Up @@ -116,6 +118,7 @@ public override void UpdateView()
fView.RepositoriesList.ListModel.DataOwner = fSourceRecord;
fView.NotesList.ListModel.DataOwner = fSourceRecord;
fView.MediaList.ListModel.DataOwner = fSourceRecord;
fView.UserRefList.ListModel.DataOwner = fSourceRecord;
}

public override void SetLocale()
Expand All @@ -134,6 +137,7 @@ public override void SetLocale()
GetControl<ITabPage>("pageRepositories").Text = LangMan.LS(LSID.RPRepositories);
GetControl<ITabPage>("pageNotes").Text = LangMan.LS(LSID.RPNotes);
GetControl<ITabPage>("pageMultimedia").Text = LangMan.LS(LSID.RPMultimedia);
GetControl<ITabPage>("pageUserRefs").Text = LangMan.LS(LSID.UserRefs);
}
}
}
3 changes: 2 additions & 1 deletion projects/GKCore/GKCore/Design/Views/IFamilyEditDlg.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/*
* "GEDKeeper", the personal genealogical database editor.
* Copyright (C) 2009-2023 by Sergey V. Zhdanovskih.
* Copyright (C) 2009-2024 by Sergey V. Zhdanovskih.
*
* This file is part of "GEDKeeper".
*
Expand Down Expand Up @@ -40,6 +40,7 @@ public interface IFamilyEditDlg : ICommonDialog, IBaseEditor
ISheetList SourcesList { get; }
ISheetList ChildrenList { get; }
ISheetList EventsList { get; }
ISheetList UserRefList { get; }

IComboBox MarriageStatus { get; }
IComboBox Restriction { get; }
Expand Down
3 changes: 2 additions & 1 deletion projects/GKCore/GKCore/Design/Views/IMediaEditDlg.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/*
* "GEDKeeper", the personal genealogical database editor.
* Copyright (C) 2009-2023 by Sergey V. Zhdanovskih.
* Copyright (C) 2009-2024 by Sergey V. Zhdanovskih.
*
* This file is part of "GEDKeeper".
*
Expand Down Expand Up @@ -31,6 +31,7 @@ public interface IMediaEditDlg : ICommonDialog, IBaseEditor

ISheetList NotesList { get; }
ISheetList SourcesList { get; }
ISheetList UserRefList { get; }

IComboBox MediaType { get; }
IComboBox StoreType { get; }
Expand Down
3 changes: 2 additions & 1 deletion projects/GKCore/GKCore/Design/Views/IRepositoryEditDlg.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/*
* "GEDKeeper", the personal genealogical database editor.
* Copyright (C) 2009-2023 by Sergey V. Zhdanovskih.
* Copyright (C) 2009-2024 by Sergey V. Zhdanovskih.
*
* This file is part of "GEDKeeper".
*
Expand Down Expand Up @@ -30,6 +30,7 @@ public interface IRepositoryEditDlg : ICommonDialog, IBaseEditor
GDMRepositoryRecord RepositoryRecord { get; set; }

ISheetList NotesList { get; }
ISheetList UserRefList { get; }
ITextBox Name { get; }
}
}
1 change: 1 addition & 0 deletions projects/GKCore/GKCore/Design/Views/ISourceEditDlg.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ public interface ISourceEditDlg : ICommonDialog, IBaseEditor
ISheetList NotesList { get; }
ISheetList MediaList { get; }
ISheetList RepositoriesList { get; }
ISheetList UserRefList { get; }

ITextBox ShortTitle { get; }
ITextBox Author { get; }
Expand Down
97 changes: 0 additions & 97 deletions projects/GKCore/GKCore/Lists/IndividualListModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1178,101 +1178,4 @@ public override async Task Modify(object sender, ModifyEventArgs eArgs)
}
}
}


/// <summary>
///
/// </summary>
public sealed class URefsListModel : SheetModel<GDMUserReference>
{
public URefsListModel(IView owner, IBaseWindow baseWin, ChangeTracker undoman) : base(owner, baseWin, undoman, CreateListColumns())
{
AllowedActions = EnumSet<RecordAction>.Create(RecordAction.raAdd, RecordAction.raEdit, RecordAction.raDelete);
}

public static ListColumns CreateListColumns()
{
var result = new ListColumns(GKListType.stUserRefs);

result.AddColumn(LSID.Reference, 300, false);
result.AddColumn(LSID.Type, 200, false);

result.ResetDefaults();
return result;
}

protected override object GetColumnValueEx(int colType, int colSubtype, bool isVisible)
{
object result = null;
switch (colType) {
case 0:
result = fFetchedRec.StringValue;
break;
case 1:
result = fFetchedRec.ReferenceType;
break;
}
return result;
}

public override void UpdateContents()
{
var iRec = fDataOwner as GDMIndividualRecord;
if (iRec == null) return;

try {
UpdateStructList(iRec.UserReferences);
} catch (Exception ex) {
Logger.WriteError("URefsListModel.UpdateContents()", ex);
}
}

public override async Task Modify(object sender, ModifyEventArgs eArgs)
{
var iRec = fDataOwner as GDMIndividualRecord;
if (fBaseWin == null || iRec == null) return;

GDMUserReference userRef = eArgs.ItemData as GDMUserReference;

bool result = false;

switch (eArgs.Action) {
case RecordAction.raAdd:
case RecordAction.raEdit: {
bool exists = (userRef != null);
if (!exists) {
userRef = new GDMUserReference();
}

using (var dlg = AppHost.ResolveDialog<IUserRefEditDlg>(fBaseWin)) {
dlg.UserReference = userRef;
result = await AppHost.Instance.ShowModalAsync(dlg, fOwner, false);
}

if (!exists) {
if (result) {
result = fUndoman.DoOrdinaryOperation(OperationType.otIndividualURefAdd, iRec, userRef);
} else {
userRef.Dispose();
}
}
}
break;

case RecordAction.raDelete: {
string confirmation = !string.IsNullOrEmpty(userRef.StringValue) ? userRef.StringValue : userRef.ReferenceType;
if (await AppHost.StdDialogs.ShowQuestion(LangMan.LS(LSID.RemoveUserRefQuery, confirmation))) {
result = fUndoman.DoOrdinaryOperation(OperationType.otIndividualURefRemove, iRec, userRef);
fBaseWin.Context.Modified = true;
}
break;
}
}

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

0 comments on commit 48db916

Please sign in to comment.