|
@@ -1,5 +1,6 @@
|
|
|
using System.IO;
|
|
|
using PixiEditor.DrawingApi.Core.ColorsImpl;
|
|
|
+using PixiEditor.Extensions.Palettes;
|
|
|
using PixiEditor.Models.DataHolders;
|
|
|
using PixiEditor.Models.DataHolders.Palettes;
|
|
|
using PixiEditor.Models.IO;
|
|
@@ -12,10 +13,6 @@ internal delegate void CacheUpdate(RefreshType refreshType, Palette itemAffected
|
|
|
|
|
|
internal class LocalPalettesFetcher : PaletteListDataSource
|
|
|
{
|
|
|
- public static string PathToPalettesFolder { get; } = Path.Join(
|
|
|
- Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),
|
|
|
- "PixiEditor", "Palettes");
|
|
|
-
|
|
|
private List<Palette> cachedPalettes;
|
|
|
|
|
|
public event CacheUpdate CacheUpdated;
|
|
@@ -27,7 +24,7 @@ internal class LocalPalettesFetcher : PaletteListDataSource
|
|
|
public override void Initialize()
|
|
|
{
|
|
|
InitDir();
|
|
|
- watcher = new FileSystemWatcher(PathToPalettesFolder);
|
|
|
+ watcher = new FileSystemWatcher(Paths.PathToPalettesFolder);
|
|
|
watcher.Filter = "*.pal";
|
|
|
watcher.Changed += FileSystemChanged;
|
|
|
watcher.Deleted += FileSystemChanged;
|
|
@@ -78,21 +75,21 @@ internal class LocalPalettesFetcher : PaletteListDataSource
|
|
|
finalFileName += ".pal";
|
|
|
}
|
|
|
|
|
|
- return File.Exists(Path.Join(PathToPalettesFolder, finalFileName));
|
|
|
+ return File.Exists(Path.Join(Paths.PathToPalettesFolder, finalFileName));
|
|
|
}
|
|
|
|
|
|
public static string GetNonExistingName(string currentName, bool appendExtension = false)
|
|
|
{
|
|
|
string newName = Path.GetFileNameWithoutExtension(currentName);
|
|
|
|
|
|
- if (File.Exists(Path.Join(PathToPalettesFolder, newName + ".pal")))
|
|
|
+ if (File.Exists(Path.Join(Paths.PathToPalettesFolder, newName + ".pal")))
|
|
|
{
|
|
|
int number = 1;
|
|
|
while (true)
|
|
|
{
|
|
|
string potentialName = $"{newName} ({number})";
|
|
|
number++;
|
|
|
- if (File.Exists(Path.Join(PathToPalettesFolder, potentialName + ".pal")))
|
|
|
+ if (File.Exists(Path.Join(Paths.PathToPalettesFolder, potentialName + ".pal")))
|
|
|
continue;
|
|
|
newName = potentialName;
|
|
|
break;
|
|
@@ -108,7 +105,7 @@ internal class LocalPalettesFetcher : PaletteListDataSource
|
|
|
public async Task SavePalette(string fileName, Color[] colors)
|
|
|
{
|
|
|
watcher.EnableRaisingEvents = false;
|
|
|
- string path = Path.Join(PathToPalettesFolder, fileName);
|
|
|
+ string path = Path.Join(Paths.PathToPalettesFolder, fileName);
|
|
|
InitDir();
|
|
|
await JascFileParser.SaveFile(path, new PaletteFileData(colors));
|
|
|
watcher.EnableRaisingEvents = true;
|
|
@@ -118,8 +115,8 @@ internal class LocalPalettesFetcher : PaletteListDataSource
|
|
|
|
|
|
public async Task DeletePalette(string name)
|
|
|
{
|
|
|
- if (!Directory.Exists(PathToPalettesFolder)) return;
|
|
|
- string path = Path.Join(PathToPalettesFolder, name);
|
|
|
+ if (!Directory.Exists(Paths.PathToPalettesFolder)) return;
|
|
|
+ string path = Path.Join(Paths.PathToPalettesFolder, name);
|
|
|
if (!File.Exists(path)) return;
|
|
|
|
|
|
watcher.EnableRaisingEvents = false;
|
|
@@ -131,11 +128,11 @@ internal class LocalPalettesFetcher : PaletteListDataSource
|
|
|
|
|
|
public void RenamePalette(string oldFileName, string newFileName)
|
|
|
{
|
|
|
- if (!Directory.Exists(PathToPalettesFolder))
|
|
|
+ if (!Directory.Exists(Paths.PathToPalettesFolder))
|
|
|
return;
|
|
|
|
|
|
- string oldPath = Path.Join(PathToPalettesFolder, oldFileName);
|
|
|
- string newPath = Path.Join(PathToPalettesFolder, newFileName);
|
|
|
+ string oldPath = Path.Join(Paths.PathToPalettesFolder, oldFileName);
|
|
|
+ string newPath = Path.Join(Paths.PathToPalettesFolder, newFileName);
|
|
|
if (!File.Exists(oldPath) || File.Exists(newPath))
|
|
|
return;
|
|
|
|
|
@@ -149,7 +146,7 @@ internal class LocalPalettesFetcher : PaletteListDataSource
|
|
|
public async Task RefreshCacheAll()
|
|
|
{
|
|
|
string[] files = DirectoryExtensions.GetFiles(
|
|
|
- PathToPalettesFolder,
|
|
|
+ Paths.PathToPalettesFolder,
|
|
|
string.Join("|", AvailableParsers.SelectMany(x => x.SupportedFileExtensions)),
|
|
|
SearchOption.TopDirectoryOnly);
|
|
|
cachedPalettes = await ParseAll(files);
|
|
@@ -321,7 +318,7 @@ internal class LocalPalettesFetcher : PaletteListDataSource
|
|
|
{
|
|
|
var palette = new Palette(
|
|
|
fileData.Title,
|
|
|
- new List<string>(fileData.GetHexColors()),
|
|
|
+ new List<PaletteColor>(fileData.GetPaletteColors()),
|
|
|
Path.GetFileName(file))
|
|
|
{
|
|
|
IsFavourite = isFavourite
|
|
@@ -337,9 +334,9 @@ internal class LocalPalettesFetcher : PaletteListDataSource
|
|
|
|
|
|
private static void InitDir()
|
|
|
{
|
|
|
- if (!Directory.Exists(PathToPalettesFolder))
|
|
|
+ if (!Directory.Exists(Paths.PathToPalettesFolder))
|
|
|
{
|
|
|
- Directory.CreateDirectory(PathToPalettesFolder);
|
|
|
+ Directory.CreateDirectory(Paths.PathToPalettesFolder);
|
|
|
}
|
|
|
}
|
|
|
}
|