Skip to content

Commit

Permalink
implement ask save dialog when document is dirty
Browse files Browse the repository at this point in the history
  • Loading branch information
MikiraSora committed Feb 19, 2022
1 parent 1b2a859 commit 3b47322
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 1 deletion.
12 changes: 12 additions & 0 deletions OngekiFumenEditor/Base/OngekiFumen.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ public FumenMetaInfo MetaInfo
}
}

public virtual event PropertyChangedEventHandler ObjectModifiedChanged;

public BulletPalleteList BulletPalleteList { get; } = new();
public BpmList BpmList { get; } = new();
public LaneList Lanes { get; } = new();
Expand Down Expand Up @@ -165,6 +167,8 @@ public void AddObject(OngekiObjectBase obj)
Log.LogWarn($"add-in list target not found, object type : {obj?.GetType()?.GetTypeName()}");
return;
}

obj.PropertyChanged += OnOngekiObjectModify;
}

public void RemoveObject(OngekiObjectBase obj)
Expand Down Expand Up @@ -230,6 +234,14 @@ public void RemoveObject(OngekiObjectBase obj)
Log.LogWarn($"delete list target not found, object type : {obj?.GetType()?.GetTypeName()}");
return;
}

obj.PropertyChanged -= OnOngekiObjectModify;
}

private void OnOngekiObjectModify(object sender, PropertyChangedEventArgs e)
{
//Log.LogDebug($"Modified property name: {e.PropertyName} , Obj : {sender}");
ObjectModifiedChanged?.Invoke(sender, e);
}

public IEnumerable<IDisplayableObject> GetAllDisplayableObjects()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using Caliburn.Micro;
using Gemini.Framework;
using Gemini.Modules.Shell.Commands;
using Microsoft.Win32;
using OngekiFumenEditor.Base;
using OngekiFumenEditor.Modules.AudioPlayerToolViewer;
Expand Down Expand Up @@ -102,18 +103,25 @@ public OngekiFumen Fumen
{
EditorProjectData.Fumen.BpmList.OnChangedEvent -= OnTimeSignatureListChanged;
EditorProjectData.Fumen.MeterChanges.OnChangedEvent -= OnTimeSignatureListChanged;
EditorProjectData.Fumen.ObjectModifiedChanged -= OnFumenObjectModifiedChanged;
}
if (value is not null)
{
value.BpmList.OnChangedEvent += OnTimeSignatureListChanged;
value.MeterChanges.OnChangedEvent += OnTimeSignatureListChanged;
value.ObjectModifiedChanged += OnFumenObjectModifiedChanged;
}
EditorProjectData.Fumen = value;
Redraw(RedrawTarget.All);
NotifyOfPropertyChange(() => Fumen);
}
}

private void OnFumenObjectModifiedChanged(object sender, PropertyChangedEventArgs e)
{
IsDirty = true;
}

private double canvasWidth = default;
public double CanvasWidth
{
Expand Down
2 changes: 1 addition & 1 deletion gemini

0 comments on commit 3b47322

Please sign in to comment.