mirror of
https://github.com/mRemoteNG/mRemoteNG.git
synced 2026-02-17 22:11:48 +08:00
91 lines
2.9 KiB
C#
91 lines
2.9 KiB
C#
using mRemoteNG.App;
|
|
using mRemoteNG.App.Info;
|
|
using mRemoteNG.UI.Forms;
|
|
using mRemoteNG.UI.Window;
|
|
using System;
|
|
using System.IO;
|
|
using mRemoteNG.Messages;
|
|
using WeifenLuo.WinFormsUI.Docking;
|
|
using System.Runtime.Versioning;
|
|
|
|
namespace mRemoteNG.Config.Settings
|
|
{
|
|
[SupportedOSPlatform("windows")]
|
|
public class DockPanelLayoutLoader
|
|
{
|
|
private readonly FrmMain _mainForm;
|
|
private readonly MessageCollector _messageCollector;
|
|
|
|
public DockPanelLayoutLoader(FrmMain mainForm, MessageCollector messageCollector)
|
|
{
|
|
if (mainForm == null)
|
|
throw new ArgumentNullException(nameof(mainForm));
|
|
if (messageCollector == null)
|
|
throw new ArgumentNullException(nameof(messageCollector));
|
|
|
|
_mainForm = mainForm;
|
|
_messageCollector = messageCollector;
|
|
}
|
|
|
|
public void LoadPanelsFromXml()
|
|
{
|
|
try
|
|
{
|
|
while (_mainForm.pnlDock.Contents.Count > 0)
|
|
{
|
|
DockContent dc = (DockContent)_mainForm.pnlDock.Contents[0];
|
|
dc.Close();
|
|
}
|
|
|
|
#if !PORTABLE
|
|
string oldPath =
|
|
Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "\\" + GeneralAppInfo.ProductName + "\\" + SettingsFileInfo.LayoutFileName;
|
|
#endif
|
|
string newPath = SettingsFileInfo.SettingsPath + "\\" + SettingsFileInfo.LayoutFileName;
|
|
if (File.Exists(newPath))
|
|
{
|
|
_mainForm.pnlDock.LoadFromXml(newPath, GetContentFromPersistString);
|
|
#if !PORTABLE
|
|
}
|
|
else if (File.Exists(oldPath))
|
|
{
|
|
_mainForm.pnlDock.LoadFromXml(oldPath, GetContentFromPersistString);
|
|
#endif
|
|
}
|
|
else
|
|
{
|
|
_mainForm.SetDefaultLayout();
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_messageCollector.AddExceptionMessage("LoadPanelsFromXML failed", ex);
|
|
}
|
|
}
|
|
|
|
private IDockContent? GetContentFromPersistString(string persistString)
|
|
{
|
|
// pnlLayout.xml persistence XML fix for refactoring to mRemoteNG
|
|
if (persistString.StartsWith("mRemote."))
|
|
persistString = persistString.Replace("mRemote.", "mRemoteNG.");
|
|
|
|
try
|
|
{
|
|
if (persistString == typeof(ConfigWindow).ToString())
|
|
return AppWindows.ConfigForm;
|
|
|
|
if (persistString == typeof(ConnectionTreeWindow).ToString())
|
|
return AppWindows.TreeForm;
|
|
|
|
if (persistString == typeof(ErrorAndInfoWindow).ToString())
|
|
return AppWindows.ErrorsForm;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_messageCollector.AddExceptionMessage("GetContentFromPersistString failed", ex);
|
|
}
|
|
|
|
return null;
|
|
}
|
|
}
|
|
} |