mirror of
https://github.com/aelurum/AssetStudio.git
synced 2025-05-25 05:40:21 -04:00
remember the last opened path, close #646
This commit is contained in:
parent
53720e37ab
commit
4345885cc9
@ -82,6 +82,9 @@ namespace AssetStudioGUI
|
|||||||
private int nextGObject;
|
private int nextGObject;
|
||||||
private List<TreeNode> treeSrcResults = new List<TreeNode>();
|
private List<TreeNode> treeSrcResults = new List<TreeNode>();
|
||||||
|
|
||||||
|
private string openDirectoryBackup = string.Empty;
|
||||||
|
private string saveDirectoryBackup = string.Empty;
|
||||||
|
|
||||||
[DllImport("gdi32.dll")]
|
[DllImport("gdi32.dll")]
|
||||||
private static extern IntPtr AddFontMemResourceEx(IntPtr pbFont, uint cbFont, IntPtr pdv, [In] ref uint pcFonts);
|
private static extern IntPtr AddFontMemResourceEx(IntPtr pbFont, uint cbFont, IntPtr pdv, [In] ref uint pcFonts);
|
||||||
|
|
||||||
@ -131,9 +134,11 @@ namespace AssetStudioGUI
|
|||||||
|
|
||||||
private async void loadFile_Click(object sender, EventArgs e)
|
private async void loadFile_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
|
openFileDialog1.InitialDirectory = openDirectoryBackup;
|
||||||
if (openFileDialog1.ShowDialog() == DialogResult.OK)
|
if (openFileDialog1.ShowDialog() == DialogResult.OK)
|
||||||
{
|
{
|
||||||
ResetForm();
|
ResetForm();
|
||||||
|
openDirectoryBackup = Path.GetDirectoryName(openFileDialog1.FileNames[0]);
|
||||||
assetsManager.SpecifyUnityVersion = specifyUnityVersion.Text;
|
assetsManager.SpecifyUnityVersion = specifyUnityVersion.Text;
|
||||||
await Task.Run(() => assetsManager.LoadFiles(openFileDialog1.FileNames));
|
await Task.Run(() => assetsManager.LoadFiles(openFileDialog1.FileNames));
|
||||||
BuildAssetStructures();
|
BuildAssetStructures();
|
||||||
@ -143,9 +148,11 @@ namespace AssetStudioGUI
|
|||||||
private async void loadFolder_Click(object sender, EventArgs e)
|
private async void loadFolder_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
var openFolderDialog = new OpenFolderDialog();
|
var openFolderDialog = new OpenFolderDialog();
|
||||||
|
openFolderDialog.InitialFolder = openDirectoryBackup;
|
||||||
if (openFolderDialog.ShowDialog(this) == DialogResult.OK)
|
if (openFolderDialog.ShowDialog(this) == DialogResult.OK)
|
||||||
{
|
{
|
||||||
ResetForm();
|
ResetForm();
|
||||||
|
openDirectoryBackup = openFolderDialog.Folder;
|
||||||
assetsManager.SpecifyUnityVersion = specifyUnityVersion.Text;
|
assetsManager.SpecifyUnityVersion = specifyUnityVersion.Text;
|
||||||
await Task.Run(() => assetsManager.LoadFolder(openFolderDialog.Folder));
|
await Task.Run(() => assetsManager.LoadFolder(openFolderDialog.Folder));
|
||||||
BuildAssetStructures();
|
BuildAssetStructures();
|
||||||
@ -352,7 +359,7 @@ namespace AssetStudioGUI
|
|||||||
var versionPath = Path.Combine(savePath, item.Group.Header);
|
var versionPath = Path.Combine(savePath, item.Group.Header);
|
||||||
Directory.CreateDirectory(versionPath);
|
Directory.CreateDirectory(versionPath);
|
||||||
|
|
||||||
var saveFile = $"{versionPath}\\{item.SubItems[1].Text} {item.Text}.txt";
|
var saveFile = $"{versionPath}{Path.DirectorySeparatorChar}{item.SubItems[1].Text} {item.Text}.txt";
|
||||||
File.WriteAllText(saveFile, item.ToString());
|
File.WriteAllText(saveFile, item.ToString());
|
||||||
|
|
||||||
Progress.Report(++i, count);
|
Progress.Report(++i, count);
|
||||||
@ -1308,9 +1315,11 @@ namespace AssetStudioGUI
|
|||||||
if (animator != null)
|
if (animator != null)
|
||||||
{
|
{
|
||||||
var saveFolderDialog = new OpenFolderDialog();
|
var saveFolderDialog = new OpenFolderDialog();
|
||||||
|
saveFolderDialog.InitialFolder = saveDirectoryBackup;
|
||||||
if (saveFolderDialog.ShowDialog(this) == DialogResult.OK)
|
if (saveFolderDialog.ShowDialog(this) == DialogResult.OK)
|
||||||
{
|
{
|
||||||
var exportPath = saveFolderDialog.Folder + "\\Animator\\";
|
saveDirectoryBackup = saveFolderDialog.Folder;
|
||||||
|
var exportPath = Path.Combine(saveFolderDialog.Folder, "Animator") + Path.DirectorySeparatorChar;
|
||||||
ExportAnimatorWithAnimationClip(animator, animationList, exportPath);
|
ExportAnimatorWithAnimationClip(animator, animationList, exportPath);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1331,9 +1340,11 @@ namespace AssetStudioGUI
|
|||||||
if (sceneTreeView.Nodes.Count > 0)
|
if (sceneTreeView.Nodes.Count > 0)
|
||||||
{
|
{
|
||||||
var saveFolderDialog = new OpenFolderDialog();
|
var saveFolderDialog = new OpenFolderDialog();
|
||||||
|
saveFolderDialog.InitialFolder = saveDirectoryBackup;
|
||||||
if (saveFolderDialog.ShowDialog(this) == DialogResult.OK)
|
if (saveFolderDialog.ShowDialog(this) == DialogResult.OK)
|
||||||
{
|
{
|
||||||
var exportPath = saveFolderDialog.Folder + "\\GameObject\\";
|
saveDirectoryBackup = saveFolderDialog.Folder;
|
||||||
|
var exportPath = Path.Combine(saveFolderDialog.Folder, "GameObject") + Path.DirectorySeparatorChar;
|
||||||
List<AssetItem> animationList = null;
|
List<AssetItem> animationList = null;
|
||||||
if (animation)
|
if (animation)
|
||||||
{
|
{
|
||||||
@ -1372,8 +1383,10 @@ namespace AssetStudioGUI
|
|||||||
saveFileDialog.FileName = gameObjects[0].m_Name + " (merge).fbx";
|
saveFileDialog.FileName = gameObjects[0].m_Name + " (merge).fbx";
|
||||||
saveFileDialog.AddExtension = false;
|
saveFileDialog.AddExtension = false;
|
||||||
saveFileDialog.Filter = "Fbx file (*.fbx)|*.fbx";
|
saveFileDialog.Filter = "Fbx file (*.fbx)|*.fbx";
|
||||||
|
saveFileDialog.InitialDirectory = saveDirectoryBackup;
|
||||||
if (saveFileDialog.ShowDialog() == DialogResult.OK)
|
if (saveFileDialog.ShowDialog() == DialogResult.OK)
|
||||||
{
|
{
|
||||||
|
saveDirectoryBackup = Path.GetDirectoryName(saveFileDialog.FileName);
|
||||||
var exportPath = saveFileDialog.FileName;
|
var exportPath = saveFileDialog.FileName;
|
||||||
List<AssetItem> animationList = null;
|
List<AssetItem> animationList = null;
|
||||||
if (animation)
|
if (animation)
|
||||||
@ -1464,8 +1477,10 @@ namespace AssetStudioGUI
|
|||||||
if (sceneTreeView.Nodes.Count > 0)
|
if (sceneTreeView.Nodes.Count > 0)
|
||||||
{
|
{
|
||||||
var saveFolderDialog = new OpenFolderDialog();
|
var saveFolderDialog = new OpenFolderDialog();
|
||||||
|
saveFolderDialog.InitialFolder = saveDirectoryBackup;
|
||||||
if (saveFolderDialog.ShowDialog(this) == DialogResult.OK)
|
if (saveFolderDialog.ShowDialog(this) == DialogResult.OK)
|
||||||
{
|
{
|
||||||
|
saveDirectoryBackup = saveFolderDialog.Folder;
|
||||||
var savePath = saveFolderDialog.Folder + Path.DirectorySeparatorChar;
|
var savePath = saveFolderDialog.Folder + Path.DirectorySeparatorChar;
|
||||||
ExportSplitObjects(savePath, sceneTreeView.Nodes);
|
ExportSplitObjects(savePath, sceneTreeView.Nodes);
|
||||||
}
|
}
|
||||||
@ -1524,10 +1539,11 @@ namespace AssetStudioGUI
|
|||||||
if (exportableAssets.Count > 0)
|
if (exportableAssets.Count > 0)
|
||||||
{
|
{
|
||||||
var saveFolderDialog = new OpenFolderDialog();
|
var saveFolderDialog = new OpenFolderDialog();
|
||||||
|
saveFolderDialog.InitialFolder = saveDirectoryBackup;
|
||||||
if (saveFolderDialog.ShowDialog(this) == DialogResult.OK)
|
if (saveFolderDialog.ShowDialog(this) == DialogResult.OK)
|
||||||
{
|
{
|
||||||
timer.Stop();
|
timer.Stop();
|
||||||
|
saveDirectoryBackup = saveFolderDialog.Folder;
|
||||||
List<AssetItem> toExportAssets = null;
|
List<AssetItem> toExportAssets = null;
|
||||||
switch (type)
|
switch (type)
|
||||||
{
|
{
|
||||||
@ -1557,10 +1573,11 @@ namespace AssetStudioGUI
|
|||||||
if (exportableAssets.Count > 0)
|
if (exportableAssets.Count > 0)
|
||||||
{
|
{
|
||||||
var saveFolderDialog = new OpenFolderDialog();
|
var saveFolderDialog = new OpenFolderDialog();
|
||||||
|
saveFolderDialog.InitialFolder = saveDirectoryBackup;
|
||||||
if (saveFolderDialog.ShowDialog(this) == DialogResult.OK)
|
if (saveFolderDialog.ShowDialog(this) == DialogResult.OK)
|
||||||
{
|
{
|
||||||
timer.Stop();
|
timer.Stop();
|
||||||
|
saveDirectoryBackup = saveFolderDialog.Folder;
|
||||||
List<AssetItem> toExportAssets = null;
|
List<AssetItem> toExportAssets = null;
|
||||||
switch (type)
|
switch (type)
|
||||||
{
|
{
|
||||||
|
@ -29,9 +29,11 @@ namespace AssetStudioGUI
|
|||||||
frm.GetOptions(out var options);
|
frm.GetOptions(out var options);
|
||||||
options |= NativeMethods.FOS_PICKFOLDERS | NativeMethods.FOS_FORCEFILESYSTEM | NativeMethods.FOS_NOVALIDATE | NativeMethods.FOS_NOTESTFILECREATE | NativeMethods.FOS_DONTADDTORECENT;
|
options |= NativeMethods.FOS_PICKFOLDERS | NativeMethods.FOS_FORCEFILESYSTEM | NativeMethods.FOS_NOVALIDATE | NativeMethods.FOS_NOTESTFILECREATE | NativeMethods.FOS_DONTADDTORECENT;
|
||||||
frm.SetOptions(options);
|
frm.SetOptions(options);
|
||||||
if (Title != null)
|
if (!string.IsNullOrEmpty(Title))
|
||||||
|
{
|
||||||
frm.SetTitle(Title);
|
frm.SetTitle(Title);
|
||||||
if (InitialFolder != null)
|
}
|
||||||
|
if (!string.IsNullOrEmpty(InitialFolder))
|
||||||
{
|
{
|
||||||
var riid = new Guid("43826D1E-E718-42EE-BC55-A1E261C37BFE"); //IShellItem
|
var riid = new Guid("43826D1E-E718-42EE-BC55-A1E261C37BFE"); //IShellItem
|
||||||
if (NativeMethods.SHCreateItemFromParsingName(InitialFolder, IntPtr.Zero, ref riid, out var directoryShellItem) == NativeMethods.S_OK)
|
if (NativeMethods.SHCreateItemFromParsingName(InitialFolder, IntPtr.Zero, ref riid, out var directoryShellItem) == NativeMethods.S_OK)
|
||||||
@ -39,7 +41,7 @@ namespace AssetStudioGUI
|
|||||||
frm.SetFolder(directoryShellItem);
|
frm.SetFolder(directoryShellItem);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (DefaultFolder != null)
|
if (!string.IsNullOrEmpty(DefaultFolder))
|
||||||
{
|
{
|
||||||
var riid = new Guid("43826D1E-E718-42EE-BC55-A1E261C37BFE"); //IShellItem
|
var riid = new Guid("43826D1E-E718-42EE-BC55-A1E261C37BFE"); //IShellItem
|
||||||
if (NativeMethods.SHCreateItemFromParsingName(DefaultFolder, IntPtr.Zero, ref riid, out var directoryShellItem) == NativeMethods.S_OK)
|
if (NativeMethods.SHCreateItemFromParsingName(DefaultFolder, IntPtr.Zero, ref riid, out var directoryShellItem) == NativeMethods.S_OK)
|
||||||
|
@ -531,13 +531,13 @@ namespace AssetStudioGUI
|
|||||||
//处理非法文件名
|
//处理非法文件名
|
||||||
var filename = FixFileName(j.Text);
|
var filename = FixFileName(j.Text);
|
||||||
//每个文件存放在单独的文件夹
|
//每个文件存放在单独的文件夹
|
||||||
var targetPath = $"{savePath}{filename}\\";
|
var targetPath = $"{savePath}{filename}{Path.DirectorySeparatorChar}";
|
||||||
//重名文件处理
|
//重名文件处理
|
||||||
for (int i = 1; ; i++)
|
for (int i = 1; ; i++)
|
||||||
{
|
{
|
||||||
if (Directory.Exists(targetPath))
|
if (Directory.Exists(targetPath))
|
||||||
{
|
{
|
||||||
targetPath = $"{savePath}{filename} ({i})\\";
|
targetPath = $"{savePath}{filename} ({i}){Path.DirectorySeparatorChar}";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user