diff --git a/BallanceTasEditor/BallanceTasEditor/Backend/FileWatcher.cs b/BallanceTasEditor/BallanceTasEditor/Backend/FileWatcher.cs new file mode 100644 index 0000000..4a1c5e3 --- /dev/null +++ b/BallanceTasEditor/BallanceTasEditor/Backend/FileWatcher.cs @@ -0,0 +1,190 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace BallanceTasEditor.Backend { + public class FileWatcher : IDisposable { + /// + /// Create a file watcher. + /// + /// + /// This new created file watcher is not watching specified file + /// unless you explicitly call method. + /// + /// The path to watching file. + public FileWatcher(string filepath) { + m_FilePath = filepath; + m_IsWatching = false; + m_EventMutex = new Mutex(); + m_IsEventProcessing = false; + + // Get directory and file info + string directory = Path.GetDirectoryName(filepath) ?? throw new ArgumentException("Invalid file path", nameof(filepath)); + string filename = Path.GetFileName(filepath); + + // Create FileSystemWatcher + m_FileSystemWatcher = new FileSystemWatcher(directory, filename) { + NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.Size | NotifyFilters.FileName, + EnableRaisingEvents = false + }; + m_FileSystemWatcher.Changed += OnFileSystemChanged; + m_FileSystemWatcher.Deleted += OnFileSystemDeleted; + m_FileSystemWatcher.Renamed += OnFileSystemRenamed; + } + + /// + /// The path to watching file. + /// + private string m_FilePath; + /// + /// Whether the file watcher is watching file. + /// + private bool m_IsWatching; + /// + /// The FileSystemWatcher instance. + /// + private readonly FileSystemWatcher m_FileSystemWatcher; + + /// + /// Flag to indicate if disposed. + /// + private bool m_Disposed = false; + + /// + /// Start watching file. + /// + public void Start() { + if (m_Disposed) throw new ObjectDisposedException(nameof(FileWatcher)); + + if (m_IsWatching) { + throw new InvalidOperationException("File watcher is already watching file."); + } else { + m_FileSystemWatcher.EnableRaisingEvents = true; + m_IsWatching = true; + } + } + + /// + /// Stop watching file. + /// + public void Stop() { + if (m_Disposed) throw new ObjectDisposedException(nameof(FileWatcher)); + + if (m_IsWatching) { + m_FileSystemWatcher.EnableRaisingEvents = false; + m_IsWatching = false; + } else { + throw new InvalidOperationException("File watcher is not watching file."); + } + } + + /// + /// Dispose the file watcher and release resources. + /// + public void Dispose() { + if (!m_Disposed) { + // Stop watching. + if (m_IsWatching) { + Stop(); + } + // Dispose members + m_FileSystemWatcher.Dispose(); + m_EventMutex.Dispose(); + m_Disposed = true; + } + } + + /// + /// The event handler when file is modified. + /// + public delegate void FileModifiedHandler(); + /// + /// The event handler when file is deleted. + /// + public delegate void FileDeletedHandler(); + + /// + /// The event when file is modified. + /// + /// + /// Before user process this event completely, + /// there is no any other event will be triggered. + /// + public event FileModifiedHandler? FileModified; + /// + /// The event when file is deleted. + /// + /// + /// Before user process this event completely, + /// there is no any other event will be triggered. + /// + public event FileDeletedHandler? FileDeleted; + + private Mutex m_EventMutex; + private bool m_IsEventProcessing; + + private void OnFileModified() { + if (FileModified is not null) { + lock (m_EventMutex) { + if (m_IsEventProcessing) return; + else m_IsEventProcessing = true; + } + try { + FileModified.Invoke(); + } + finally { + lock (m_EventMutex) { + m_IsEventProcessing = false; + } + } + } + + } + + private void OnFileDeleted() { + if (FileDeleted is not null) { + lock (m_EventMutex) { + if (m_IsEventProcessing) return; + else m_IsEventProcessing = true; + } + try { + FileDeleted.Invoke(); + } + finally { + lock (m_EventMutex) { + m_IsEventProcessing = false; + } + } + } + } + + /// + /// Handler for FileSystemWatcher Changed event. + /// + private void OnFileSystemChanged(object sender, FileSystemEventArgs e) { + // Filter out our own change notifications to avoid infinite loops + if (e.ChangeType == WatcherChangeTypes.Changed) { + OnFileModified(); + } + } + + /// + /// Handler for FileSystemWatcher Deleted event. + /// + private void OnFileSystemDeleted(object sender, FileSystemEventArgs e) { + OnFileDeleted(); + } + + /// + /// Handler for FileSystemWatcher Renamed event. + /// + private void OnFileSystemRenamed(object sender, RenamedEventArgs e) { + // Treat rename as a delete since the original file is gone + OnFileDeleted(); + } + } +} diff --git a/BallanceTasEditor/BallanceTasEditor/Backend/TasFrame.cs b/BallanceTasEditor/BallanceTasEditor/Backend/TasFrame.cs index 189d9a6..f8a6853 100644 --- a/BallanceTasEditor/BallanceTasEditor/Backend/TasFrame.cs +++ b/BallanceTasEditor/BallanceTasEditor/Backend/TasFrame.cs @@ -25,7 +25,7 @@ namespace BallanceTasEditor.Backend { /// /// 描述TAS文件中一帧的结构。 /// - public class TasFrame { + public class TasFrame : IEquatable { /// /// 以指定的FPS,无任何按键初始化当前帧。 /// @@ -43,6 +43,15 @@ namespace BallanceTasEditor.Backend { m_KeyFlags = raw.KeyFlags; } + /// + /// 将原始TAS数据覆写到自身 + /// + /// 要写入的原始TAS数据 + public void FromRaw(RawTasFrame raw) { + m_TimeDelta = raw.TimeDelta; + m_KeyFlags = raw.KeyFlags; + } + /// /// 转换为原始TAS数据。 /// @@ -156,6 +165,38 @@ namespace BallanceTasEditor.Backend { m_KeyFlags = 0; } + /// + /// 指示当前对象是否等于另一个 TasFrame 对象。 + /// + /// 要比较的 TasFrame 对象。 + /// 如果两个对象相等则为 true,否则为 false。 + public bool Equals(TasFrame? other) { + return other is not null && + m_TimeDelta == other.m_TimeDelta && + m_KeyFlags == other.m_KeyFlags; + } + + /// + /// 指示当前对象是否等于另一个对象。 + /// + /// 要比较的对象。 + /// 如果两个对象相等则为 true,否则为 false。 + public override bool Equals(object? obj) { + if (obj is TasFrame other) { + return Equals(other); + } else { + return false; + } + } + + /// + /// 返回此实例的哈希代码。 + /// + /// 32 位有符号整数哈希代码。 + public override int GetHashCode() { + return HashCode.Combine(m_TimeDelta, m_KeyFlags); + } + } /// diff --git a/BallanceTasEditor/BallanceTasEditor/BallanceTasEditor.csproj b/BallanceTasEditor/BallanceTasEditor/BallanceTasEditor.csproj index 73ee33d..5aab69b 100644 --- a/BallanceTasEditor/BallanceTasEditor/BallanceTasEditor.csproj +++ b/BallanceTasEditor/BallanceTasEditor/BallanceTasEditor.csproj @@ -10,7 +10,7 @@ - + @@ -19,4 +19,8 @@ + + + + diff --git a/BallanceTasEditor/BallanceTasEditor/Assets/About.ico b/BallanceTasEditor/BallanceTasEditor/Frontend/Assets/About.ico similarity index 100% rename from BallanceTasEditor/BallanceTasEditor/Assets/About.ico rename to BallanceTasEditor/BallanceTasEditor/Frontend/Assets/About.ico diff --git a/BallanceTasEditor/BallanceTasEditor/Assets/AddFrame.ico b/BallanceTasEditor/BallanceTasEditor/Frontend/Assets/AddFrame.ico similarity index 100% rename from BallanceTasEditor/BallanceTasEditor/Assets/AddFrame.ico rename to BallanceTasEditor/BallanceTasEditor/Frontend/Assets/AddFrame.ico diff --git a/BallanceTasEditor/BallanceTasEditor/Assets/App.ico b/BallanceTasEditor/BallanceTasEditor/Frontend/Assets/App.ico similarity index 100% rename from BallanceTasEditor/BallanceTasEditor/Assets/App.ico rename to BallanceTasEditor/BallanceTasEditor/Frontend/Assets/App.ico diff --git a/BallanceTasEditor/BallanceTasEditor/Assets/Cancel.ico b/BallanceTasEditor/BallanceTasEditor/Frontend/Assets/Cancel.ico similarity index 100% rename from BallanceTasEditor/BallanceTasEditor/Assets/Cancel.ico rename to BallanceTasEditor/BallanceTasEditor/Frontend/Assets/Cancel.ico diff --git a/BallanceTasEditor/BallanceTasEditor/Assets/ClearKeys.ico b/BallanceTasEditor/BallanceTasEditor/Frontend/Assets/ClearKeys.ico similarity index 100% rename from BallanceTasEditor/BallanceTasEditor/Assets/ClearKeys.ico rename to BallanceTasEditor/BallanceTasEditor/Frontend/Assets/ClearKeys.ico diff --git a/BallanceTasEditor/BallanceTasEditor/Assets/CloseFile.ico b/BallanceTasEditor/BallanceTasEditor/Frontend/Assets/CloseFile.ico similarity index 100% rename from BallanceTasEditor/BallanceTasEditor/Assets/CloseFile.ico rename to BallanceTasEditor/BallanceTasEditor/Frontend/Assets/CloseFile.ico diff --git a/BallanceTasEditor/BallanceTasEditor/Assets/CopyFrame.ico b/BallanceTasEditor/BallanceTasEditor/Frontend/Assets/CopyFrame.ico similarity index 100% rename from BallanceTasEditor/BallanceTasEditor/Assets/CopyFrame.ico rename to BallanceTasEditor/BallanceTasEditor/Frontend/Assets/CopyFrame.ico diff --git a/BallanceTasEditor/BallanceTasEditor/Assets/Count.ico b/BallanceTasEditor/BallanceTasEditor/Frontend/Assets/Count.ico similarity index 100% rename from BallanceTasEditor/BallanceTasEditor/Assets/Count.ico rename to BallanceTasEditor/BallanceTasEditor/Frontend/Assets/Count.ico diff --git a/BallanceTasEditor/BallanceTasEditor/Assets/CutFrame.ico b/BallanceTasEditor/BallanceTasEditor/Frontend/Assets/CutFrame.ico similarity index 100% rename from BallanceTasEditor/BallanceTasEditor/Assets/CutFrame.ico rename to BallanceTasEditor/BallanceTasEditor/Frontend/Assets/CutFrame.ico diff --git a/BallanceTasEditor/BallanceTasEditor/Assets/DeleteFrame.ico b/BallanceTasEditor/BallanceTasEditor/Frontend/Assets/DeleteFrame.ico similarity index 100% rename from BallanceTasEditor/BallanceTasEditor/Assets/DeleteFrame.ico rename to BallanceTasEditor/BallanceTasEditor/Frontend/Assets/DeleteFrame.ico diff --git a/BallanceTasEditor/BallanceTasEditor/Assets/DrawMode.ico b/BallanceTasEditor/BallanceTasEditor/Frontend/Assets/DrawMode.ico similarity index 100% rename from BallanceTasEditor/BallanceTasEditor/Assets/DrawMode.ico rename to BallanceTasEditor/BallanceTasEditor/Frontend/Assets/DrawMode.ico diff --git a/BallanceTasEditor/BallanceTasEditor/Assets/EditorLayout.ico b/BallanceTasEditor/BallanceTasEditor/Frontend/Assets/EditorLayout.ico similarity index 100% rename from BallanceTasEditor/BallanceTasEditor/Assets/EditorLayout.ico rename to BallanceTasEditor/BallanceTasEditor/Frontend/Assets/EditorLayout.ico diff --git a/BallanceTasEditor/BallanceTasEditor/Assets/Exit.ico b/BallanceTasEditor/BallanceTasEditor/Frontend/Assets/Exit.ico similarity index 100% rename from BallanceTasEditor/BallanceTasEditor/Assets/Exit.ico rename to BallanceTasEditor/BallanceTasEditor/Frontend/Assets/Exit.ico diff --git a/BallanceTasEditor/BallanceTasEditor/Assets/FillMode.ico b/BallanceTasEditor/BallanceTasEditor/Frontend/Assets/FillMode.ico similarity index 100% rename from BallanceTasEditor/BallanceTasEditor/Assets/FillMode.ico rename to BallanceTasEditor/BallanceTasEditor/Frontend/Assets/FillMode.ico diff --git a/BallanceTasEditor/BallanceTasEditor/Assets/FlipCell.ico b/BallanceTasEditor/BallanceTasEditor/Frontend/Assets/FlipCell.ico similarity index 100% rename from BallanceTasEditor/BallanceTasEditor/Assets/FlipCell.ico rename to BallanceTasEditor/BallanceTasEditor/Frontend/Assets/FlipCell.ico diff --git a/BallanceTasEditor/BallanceTasEditor/Assets/Fps.ico b/BallanceTasEditor/BallanceTasEditor/Frontend/Assets/Fps.ico similarity index 100% rename from BallanceTasEditor/BallanceTasEditor/Assets/Fps.ico rename to BallanceTasEditor/BallanceTasEditor/Frontend/Assets/Fps.ico diff --git a/BallanceTasEditor/BallanceTasEditor/Assets/Goto.ico b/BallanceTasEditor/BallanceTasEditor/Frontend/Assets/Goto.ico similarity index 100% rename from BallanceTasEditor/BallanceTasEditor/Assets/Goto.ico rename to BallanceTasEditor/BallanceTasEditor/Frontend/Assets/Goto.ico diff --git a/BallanceTasEditor/BallanceTasEditor/Assets/NewFile.ico b/BallanceTasEditor/BallanceTasEditor/Frontend/Assets/NewFile.ico similarity index 100% rename from BallanceTasEditor/BallanceTasEditor/Assets/NewFile.ico rename to BallanceTasEditor/BallanceTasEditor/Frontend/Assets/NewFile.ico diff --git a/BallanceTasEditor/BallanceTasEditor/Assets/NextItem.ico b/BallanceTasEditor/BallanceTasEditor/Frontend/Assets/NextItem.ico similarity index 100% rename from BallanceTasEditor/BallanceTasEditor/Assets/NextItem.ico rename to BallanceTasEditor/BallanceTasEditor/Frontend/Assets/NextItem.ico diff --git a/BallanceTasEditor/BallanceTasEditor/Assets/NextPage.ico b/BallanceTasEditor/BallanceTasEditor/Frontend/Assets/NextPage.ico similarity index 100% rename from BallanceTasEditor/BallanceTasEditor/Assets/NextPage.ico rename to BallanceTasEditor/BallanceTasEditor/Frontend/Assets/NextPage.ico diff --git a/BallanceTasEditor/BallanceTasEditor/Assets/Ok.ico b/BallanceTasEditor/BallanceTasEditor/Frontend/Assets/Ok.ico similarity index 100% rename from BallanceTasEditor/BallanceTasEditor/Assets/Ok.ico rename to BallanceTasEditor/BallanceTasEditor/Frontend/Assets/Ok.ico diff --git a/BallanceTasEditor/BallanceTasEditor/Assets/OpenFile.ico b/BallanceTasEditor/BallanceTasEditor/Frontend/Assets/OpenFile.ico similarity index 100% rename from BallanceTasEditor/BallanceTasEditor/Assets/OpenFile.ico rename to BallanceTasEditor/BallanceTasEditor/Frontend/Assets/OpenFile.ico diff --git a/BallanceTasEditor/BallanceTasEditor/Assets/PasteFrame.ico b/BallanceTasEditor/BallanceTasEditor/Frontend/Assets/PasteFrame.ico similarity index 100% rename from BallanceTasEditor/BallanceTasEditor/Assets/PasteFrame.ico rename to BallanceTasEditor/BallanceTasEditor/Frontend/Assets/PasteFrame.ico diff --git a/BallanceTasEditor/BallanceTasEditor/Assets/Preference.ico b/BallanceTasEditor/BallanceTasEditor/Frontend/Assets/Preference.ico similarity index 100% rename from BallanceTasEditor/BallanceTasEditor/Assets/Preference.ico rename to BallanceTasEditor/BallanceTasEditor/Frontend/Assets/Preference.ico diff --git a/BallanceTasEditor/BallanceTasEditor/Assets/PreviousItem.ico b/BallanceTasEditor/BallanceTasEditor/Frontend/Assets/PreviousItem.ico similarity index 100% rename from BallanceTasEditor/BallanceTasEditor/Assets/PreviousItem.ico rename to BallanceTasEditor/BallanceTasEditor/Frontend/Assets/PreviousItem.ico diff --git a/BallanceTasEditor/BallanceTasEditor/Assets/PreviousPage.ico b/BallanceTasEditor/BallanceTasEditor/Frontend/Assets/PreviousPage.ico similarity index 100% rename from BallanceTasEditor/BallanceTasEditor/Assets/PreviousPage.ico rename to BallanceTasEditor/BallanceTasEditor/Frontend/Assets/PreviousPage.ico diff --git a/BallanceTasEditor/BallanceTasEditor/Assets/Redo.ico b/BallanceTasEditor/BallanceTasEditor/Frontend/Assets/Redo.ico similarity index 100% rename from BallanceTasEditor/BallanceTasEditor/Assets/Redo.ico rename to BallanceTasEditor/BallanceTasEditor/Frontend/Assets/Redo.ico diff --git a/BallanceTasEditor/BallanceTasEditor/Assets/ReportBug.ico b/BallanceTasEditor/BallanceTasEditor/Frontend/Assets/ReportBug.ico similarity index 100% rename from BallanceTasEditor/BallanceTasEditor/Assets/ReportBug.ico rename to BallanceTasEditor/BallanceTasEditor/Frontend/Assets/ReportBug.ico diff --git a/BallanceTasEditor/BallanceTasEditor/Assets/SaveFile.ico b/BallanceTasEditor/BallanceTasEditor/Frontend/Assets/SaveFile.ico similarity index 100% rename from BallanceTasEditor/BallanceTasEditor/Assets/SaveFile.ico rename to BallanceTasEditor/BallanceTasEditor/Frontend/Assets/SaveFile.ico diff --git a/BallanceTasEditor/BallanceTasEditor/Assets/SaveFileAs.ico b/BallanceTasEditor/BallanceTasEditor/Frontend/Assets/SaveFileAs.ico similarity index 100% rename from BallanceTasEditor/BallanceTasEditor/Assets/SaveFileAs.ico rename to BallanceTasEditor/BallanceTasEditor/Frontend/Assets/SaveFileAs.ico diff --git a/BallanceTasEditor/BallanceTasEditor/Assets/SaveFileThenRunGame.ico b/BallanceTasEditor/BallanceTasEditor/Frontend/Assets/SaveFileThenRunGame.ico similarity index 100% rename from BallanceTasEditor/BallanceTasEditor/Assets/SaveFileThenRunGame.ico rename to BallanceTasEditor/BallanceTasEditor/Frontend/Assets/SaveFileThenRunGame.ico diff --git a/BallanceTasEditor/BallanceTasEditor/Assets/SelectMode.ico b/BallanceTasEditor/BallanceTasEditor/Frontend/Assets/SelectMode.ico similarity index 100% rename from BallanceTasEditor/BallanceTasEditor/Assets/SelectMode.ico rename to BallanceTasEditor/BallanceTasEditor/Frontend/Assets/SelectMode.ico diff --git a/BallanceTasEditor/BallanceTasEditor/Assets/SetCell.ico b/BallanceTasEditor/BallanceTasEditor/Frontend/Assets/SetCell.ico similarity index 100% rename from BallanceTasEditor/BallanceTasEditor/Assets/SetCell.ico rename to BallanceTasEditor/BallanceTasEditor/Frontend/Assets/SetCell.ico diff --git a/BallanceTasEditor/BallanceTasEditor/Assets/SetFps.ico b/BallanceTasEditor/BallanceTasEditor/Frontend/Assets/SetFps.ico similarity index 100% rename from BallanceTasEditor/BallanceTasEditor/Assets/SetFps.ico rename to BallanceTasEditor/BallanceTasEditor/Frontend/Assets/SetFps.ico diff --git a/BallanceTasEditor/BallanceTasEditor/Assets/Undo.ico b/BallanceTasEditor/BallanceTasEditor/Frontend/Assets/Undo.ico similarity index 100% rename from BallanceTasEditor/BallanceTasEditor/Assets/Undo.ico rename to BallanceTasEditor/BallanceTasEditor/Frontend/Assets/Undo.ico diff --git a/BallanceTasEditor/BallanceTasEditor/Assets/UnsetCell.ico b/BallanceTasEditor/BallanceTasEditor/Frontend/Assets/UnsetCell.ico similarity index 100% rename from BallanceTasEditor/BallanceTasEditor/Assets/UnsetCell.ico rename to BallanceTasEditor/BallanceTasEditor/Frontend/Assets/UnsetCell.ico diff --git a/BallanceTasEditor/BallanceTasEditor/Converters/GenericConverter.cs b/BallanceTasEditor/BallanceTasEditor/Frontend/Converters/GenericConverter.cs similarity index 92% rename from BallanceTasEditor/BallanceTasEditor/Converters/GenericConverter.cs rename to BallanceTasEditor/BallanceTasEditor/Frontend/Converters/GenericConverter.cs index 860999a..43ca0dc 100644 --- a/BallanceTasEditor/BallanceTasEditor/Converters/GenericConverter.cs +++ b/BallanceTasEditor/BallanceTasEditor/Frontend/Converters/GenericConverter.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Globalization; using System.Linq; @@ -7,7 +7,7 @@ using System.Threading.Tasks; using System.Windows; using System.Windows.Data; -namespace BallanceTasEditor.Converters { +namespace BallanceTasEditor.Frontend.Converters { [ValueConversion(typeof(int), typeof(string))] public class FpsConverter : IValueConverter { public static FpsConverter Instance = new FpsConverter(); @@ -15,7 +15,7 @@ namespace BallanceTasEditor.Converters { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (value is int tv) { if (tv <= 0) return DependencyProperty.UnsetValue; - else return Utils.FpsConverter.ToDelta(tv).ToString(); + else return Backend.FpsConverter.ToDelta(tv).ToString(); } else { return DependencyProperty.UnsetValue; } diff --git a/BallanceTasEditor/BallanceTasEditor/Converters/StringifyConverter.cs b/BallanceTasEditor/BallanceTasEditor/Frontend/Converters/StringifyConverter.cs similarity index 94% rename from BallanceTasEditor/BallanceTasEditor/Converters/StringifyConverter.cs rename to BallanceTasEditor/BallanceTasEditor/Frontend/Converters/StringifyConverter.cs index 3bbb84c..4dc9bd5 100644 --- a/BallanceTasEditor/BallanceTasEditor/Converters/StringifyConverter.cs +++ b/BallanceTasEditor/BallanceTasEditor/Frontend/Converters/StringifyConverter.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Globalization; using System.Linq; @@ -7,7 +7,7 @@ using System.Threading.Tasks; using System.Windows; using System.Windows.Data; -namespace BallanceTasEditor.Converters { +namespace BallanceTasEditor.Frontend.Converters { [ValueConversion(typeof(int?), typeof(string))] public class StringifyIntegerConverter : IValueConverter { diff --git a/BallanceTasEditor/BallanceTasEditor/Styles/AccessoryIcon.cs b/BallanceTasEditor/BallanceTasEditor/Frontend/Styles/AccessoryIcon.cs similarity index 97% rename from BallanceTasEditor/BallanceTasEditor/Styles/AccessoryIcon.cs rename to BallanceTasEditor/BallanceTasEditor/Frontend/Styles/AccessoryIcon.cs index 4bc0877..1042eb8 100644 --- a/BallanceTasEditor/BallanceTasEditor/Styles/AccessoryIcon.cs +++ b/BallanceTasEditor/BallanceTasEditor/Frontend/Styles/AccessoryIcon.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -7,7 +7,7 @@ using System.Windows; using System.Windows.Controls; using System.Windows.Media; -namespace BallanceTasEditor.Styles { +namespace BallanceTasEditor.Frontend.Styles { public class AccessoryIcon { public static ImageSource GetIcon(DependencyObject obj) { diff --git a/BallanceTasEditor/BallanceTasEditor/Styles/AccessoryIconControl.xaml b/BallanceTasEditor/BallanceTasEditor/Frontend/Styles/AccessoryIconControl.xaml similarity index 90% rename from BallanceTasEditor/BallanceTasEditor/Styles/AccessoryIconControl.xaml rename to BallanceTasEditor/BallanceTasEditor/Frontend/Styles/AccessoryIconControl.xaml index 49c11e7..9b81796 100644 --- a/BallanceTasEditor/BallanceTasEditor/Styles/AccessoryIconControl.xaml +++ b/BallanceTasEditor/BallanceTasEditor/Frontend/Styles/AccessoryIconControl.xaml @@ -1,6 +1,6 @@ - + xmlns:local="clr-namespace:BallanceTasEditor.Frontend.Styles">