Adjust program to use one instance for loading files (can be disabled in config)
This commit is contained in:
parent
9a70890924
commit
e15e00c2c0
Binary file not shown.
@ -244,6 +244,9 @@ namespace Toolbox.Library
|
|||||||
case "CustomPicureBoxBGColor":
|
case "CustomPicureBoxBGColor":
|
||||||
TryParseHexColor(node, ref Runtime.CustomPicureBoxBGColor);
|
TryParseHexColor(node, ref Runtime.CustomPicureBoxBGColor);
|
||||||
break;
|
break;
|
||||||
|
case "UseSingleInstance":
|
||||||
|
bool.TryParse(node.InnerText, out Runtime.UseSingleInstance);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -368,6 +371,8 @@ namespace Toolbox.Library
|
|||||||
XmlNode mainSettingsNode = doc.CreateElement("MAINFORM");
|
XmlNode mainSettingsNode = doc.CreateElement("MAINFORM");
|
||||||
parentNode.AppendChild(mainSettingsNode);
|
parentNode.AppendChild(mainSettingsNode);
|
||||||
|
|
||||||
|
|
||||||
|
mainSettingsNode.AppendChild(createNode(doc, "UseSingleInstance", Runtime.UseSingleInstance.ToString()));
|
||||||
mainSettingsNode.AppendChild(createNode(doc, "UseDirectXTexDecoder", Runtime.UseDirectXTexDecoder.ToString()));
|
mainSettingsNode.AppendChild(createNode(doc, "UseDirectXTexDecoder", Runtime.UseDirectXTexDecoder.ToString()));
|
||||||
mainSettingsNode.AppendChild(createNode(doc, "AlwaysCompressOnSave", Runtime.AlwaysCompressOnSave.ToString()));
|
mainSettingsNode.AppendChild(createNode(doc, "AlwaysCompressOnSave", Runtime.AlwaysCompressOnSave.ToString()));
|
||||||
mainSettingsNode.AppendChild(createNode(doc, "DisplayViewport", Runtime.DisplayViewport.ToString()));
|
mainSettingsNode.AppendChild(createNode(doc, "DisplayViewport", Runtime.DisplayViewport.ToString()));
|
||||||
|
@ -106,6 +106,7 @@ namespace Toolbox.Library.Forms
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void SelectFirstNode() { if (ObjectTree != null) ObjectTree.SelectFirstNode(); }
|
public void SelectFirstNode() { if (ObjectTree != null) ObjectTree.SelectFirstNode(); }
|
||||||
|
public void SelectNode(TreeNode node) { if (ObjectTree != null) ObjectTree.SelectNode(node); }
|
||||||
|
|
||||||
public void SortTreeAscending() { if (ObjectTree != null) ObjectTree.SortTreeAscending(); }
|
public void SortTreeAscending() { if (ObjectTree != null) ObjectTree.SortTreeAscending(); }
|
||||||
|
|
||||||
|
@ -58,6 +58,8 @@ namespace Toolbox.Library.Forms
|
|||||||
FileRoot.Nodes.Add(n);
|
FileRoot.Nodes.Add(n);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SelectNode(FileRoot);
|
||||||
|
|
||||||
for (int i = 0; i < FileRoot.FileNodes.Count; i++)
|
for (int i = 0; i < FileRoot.FileNodes.Count; i++)
|
||||||
{
|
{
|
||||||
if (FileRoot.FileNodes[i].Item1.OpenFileFormatOnLoad)
|
if (FileRoot.FileNodes[i].Item1.OpenFileFormatOnLoad)
|
||||||
@ -563,6 +565,11 @@ namespace Toolbox.Library.Forms
|
|||||||
treeViewCustom1.Sort();
|
treeViewCustom1.Sort();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void SelectNode(TreeNode node)
|
||||||
|
{
|
||||||
|
treeViewCustom1.SelectedNode = node;
|
||||||
|
}
|
||||||
|
|
||||||
private void splitter1_Resize(object sender, EventArgs e)
|
private void splitter1_Resize(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -15,10 +15,9 @@ namespace Toolbox.Library
|
|||||||
|
|
||||||
public class Runtime
|
public class Runtime
|
||||||
{
|
{
|
||||||
|
public static bool UseSingleInstance = true;
|
||||||
public static bool UseDirectXTexDecoder = true;
|
public static bool UseDirectXTexDecoder = true;
|
||||||
|
|
||||||
public static bool DEVELOPER_DEBUG_MODE = false;
|
public static bool DEVELOPER_DEBUG_MODE = false;
|
||||||
|
|
||||||
public static bool AlwaysCompressOnSave = false;
|
public static bool AlwaysCompressOnSave = false;
|
||||||
|
|
||||||
public static class ResourceTables
|
public static class ResourceTables
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -51,8 +51,6 @@ namespace Toolbox
|
|||||||
FormThemes.ActivePreset = FormThemes.Preset.Dark;
|
FormThemes.ActivePreset = FormThemes.Preset.Dark;
|
||||||
|
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
|
||||||
LoadConfig();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void UpdateForm()
|
public void UpdateForm()
|
||||||
@ -65,7 +63,7 @@ namespace Toolbox
|
|||||||
}
|
}
|
||||||
|
|
||||||
//Use for files opened with program
|
//Use for files opened with program
|
||||||
public List<string> openedFiles = new List<string>();
|
public List<string> OpenedFiles = new List<string>();
|
||||||
|
|
||||||
private void Form1_Load(object sender, EventArgs e)
|
private void Form1_Load(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
@ -122,13 +120,13 @@ namespace Toolbox
|
|||||||
ReloadFiles();
|
ReloadFiles();
|
||||||
LoadPluginFileContextMenus();
|
LoadPluginFileContextMenus();
|
||||||
|
|
||||||
foreach (string file in openedFiles)
|
foreach (string file in OpenedFiles)
|
||||||
{
|
{
|
||||||
if (File.Exists(file))
|
if (File.Exists(file))
|
||||||
OpenFile(file);
|
OpenFile(file);
|
||||||
}
|
}
|
||||||
|
|
||||||
openedFiles.Clear();
|
OpenedFiles.Clear();
|
||||||
|
|
||||||
if (Runtime.UseDebugDomainExceptionHandler)
|
if (Runtime.UseDebugDomainExceptionHandler)
|
||||||
{
|
{
|
||||||
@ -137,6 +135,17 @@ namespace Toolbox
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void OpenFiles()
|
||||||
|
{
|
||||||
|
foreach (string file in OpenedFiles)
|
||||||
|
{
|
||||||
|
if (File.Exists(file))
|
||||||
|
OpenFile(file);
|
||||||
|
}
|
||||||
|
|
||||||
|
OpenedFiles.Clear();
|
||||||
|
}
|
||||||
|
|
||||||
private void ReloadFiles()
|
private void ReloadFiles()
|
||||||
{
|
{
|
||||||
SupportedFormats = FileManager.GetFileFormats();
|
SupportedFormats = FileManager.GetFileFormats();
|
||||||
@ -324,8 +333,6 @@ namespace Toolbox
|
|||||||
}
|
}
|
||||||
|
|
||||||
SetFormatSettings(GetActiveIFileFormat());
|
SetFormatSettings(GetActiveIFileFormat());
|
||||||
|
|
||||||
((ObjectEditor)editor).SelectFirstNode();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void AddObjectEditorFile(TreeNode file, ObjectEditor editor, bool ClearFiles)
|
private void AddObjectEditorFile(TreeNode file, ObjectEditor editor, bool ClearFiles)
|
||||||
@ -333,6 +340,7 @@ namespace Toolbox
|
|||||||
TabDupeIndex = 0;
|
TabDupeIndex = 0;
|
||||||
editor.MdiParent = this;
|
editor.MdiParent = this;
|
||||||
editor.AddNode(file, ClearFiles);
|
editor.AddNode(file, ClearFiles);
|
||||||
|
editor.SelectNode(file);
|
||||||
|
|
||||||
if (file is TreeNodeFile)
|
if (file is TreeNodeFile)
|
||||||
{
|
{
|
||||||
@ -558,7 +566,7 @@ namespace Toolbox
|
|||||||
|
|
||||||
#region Form Settings and plugin menus
|
#region Form Settings and plugin menus
|
||||||
|
|
||||||
private void LoadConfig()
|
public static void LoadConfig()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -6,6 +6,7 @@ using System.Windows.Forms;
|
|||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
using Microsoft.VisualBasic.ApplicationServices;
|
||||||
|
|
||||||
namespace Toolbox
|
namespace Toolbox
|
||||||
{
|
{
|
||||||
@ -35,10 +36,6 @@ namespace Toolbox
|
|||||||
var domain = AppDomain.CurrentDomain;
|
var domain = AppDomain.CurrentDomain;
|
||||||
domain.AssemblyResolve += LoadAssembly;
|
domain.AssemblyResolve += LoadAssembly;
|
||||||
|
|
||||||
MainForm form = new MainForm();
|
|
||||||
form.openedFiles = Files;
|
|
||||||
|
|
||||||
|
|
||||||
bool LoadedDX = TryLoadDirectXTex();
|
bool LoadedDX = TryLoadDirectXTex();
|
||||||
if (!LoadedDX && !Toolbox.Library.Runtime.UseDirectXTexDecoder)
|
if (!LoadedDX && !Toolbox.Library.Runtime.UseDirectXTexDecoder)
|
||||||
{
|
{
|
||||||
@ -49,10 +46,53 @@ namespace Toolbox
|
|||||||
System.Diagnostics.Process.Start("https://www.microsoft.com/en-us/download/details.aspx?id=35");
|
System.Diagnostics.Process.Start("https://www.microsoft.com/en-us/download/details.aspx?id=35");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Toolbox.Library.Runtime.UseDirectXTexDecoder= LoadedDX;
|
|
||||||
|
|
||||||
|
MainForm.LoadConfig();
|
||||||
|
|
||||||
|
if (Toolbox.Library.Runtime.UseSingleInstance)
|
||||||
|
{
|
||||||
|
SingleInstanceController controller = new SingleInstanceController();
|
||||||
|
controller.Run(args);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MainForm form = new MainForm();
|
||||||
|
form.OpenedFiles = Files;
|
||||||
Application.Run(form);
|
Application.Run(form);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class SingleInstanceController : WindowsFormsApplicationBase
|
||||||
|
{
|
||||||
|
public SingleInstanceController()
|
||||||
|
{
|
||||||
|
IsSingleInstance = true;
|
||||||
|
Startup += OnStart;
|
||||||
|
StartupNextInstance += Program_StartupNextInstance;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnStart(object sender, StartupEventArgs e)
|
||||||
|
{
|
||||||
|
List<string> args = new List<string>();
|
||||||
|
foreach (string arg in e.CommandLine)
|
||||||
|
args.Add(arg);
|
||||||
|
|
||||||
|
Toolbox.MainForm.Instance.OpenedFiles = args;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Program_StartupNextInstance(object sender, StartupNextInstanceEventArgs e)
|
||||||
|
{
|
||||||
|
e.BringToForeground = true;
|
||||||
|
MainForm form = MainForm as MainForm;
|
||||||
|
form.OpenedFiles = e.CommandLine.ToList();
|
||||||
|
form.OpenFiles();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void OnCreateMainForm()
|
||||||
|
{
|
||||||
|
MainForm = new MainForm();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static bool TryLoadZSTD()
|
private static bool TryLoadZSTD()
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user