Create OptionsWindow for docked settings panel

Co-authored-by: Kvarkas <3611964+Kvarkas@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]
2025-10-07 15:22:20 +00:00
parent 6b35cd3aee
commit 5d150115a8
3 changed files with 97 additions and 4 deletions

View File

@@ -28,6 +28,7 @@ namespace mRemoteNG.App
internal static ErrorAndInfoWindow ErrorsForm { get; set; } = new ErrorAndInfoWindow();
private static UpdateWindow UpdateForm { get; set; } = new UpdateWindow();
internal static SSHTransferWindow SshtransferForm { get; private set; } = new SSHTransferWindow();
internal static OptionsWindow OptionsFormWindow { get; private set; }
public static void Show(WindowType windowType)
@@ -44,8 +45,10 @@ namespace mRemoteNG.App
_adimportForm.Show(dockPanel);
break;
case WindowType.Options:
FrmMain.OptionsForm.SetActivatedPage(Language.StartupExit);
FrmMain.OptionsForm.Visible = true;
if (OptionsFormWindow == null || OptionsFormWindow.IsDisposed)
OptionsFormWindow = new OptionsWindow();
OptionsFormWindow.SetActivatedPage(Language.StartupExit);
OptionsFormWindow.Show(dockPanel);
break;
case WindowType.SSHTransfer:
if (SshtransferForm == null || SshtransferForm.IsDisposed)

View File

@@ -398,8 +398,9 @@ namespace mRemoteNG.UI.Forms
if (CTaskDialog.CommandButtonResult != 1) return;
OptionsForm.SetActivatedPage(Language.Updates);
OptionsForm.ShowDialog(this);
App.Windows.Show(WindowType.Options);
if (App.Windows.OptionsFormWindow != null)
App.Windows.OptionsFormWindow.SetActivatedPage(Language.Updates);
}
private async Task CheckForUpdates()

View File

@@ -0,0 +1,89 @@
using System;
using System.Runtime.Versioning;
using System.Windows.Forms;
using mRemoteNG.Themes;
using mRemoteNG.UI.Forms;
using WeifenLuo.WinFormsUI.Docking;
using mRemoteNG.Resources.Language;
namespace mRemoteNG.UI.Window
{
[SupportedOSPlatform("windows")]
public partial class OptionsWindow : BaseWindow
{
private FrmOptions _optionsForm;
#region Public Methods
public OptionsWindow() : this(new DockContent())
{
}
public OptionsWindow(DockContent panel)
{
WindowType = WindowType.Options;
DockPnl = panel;
InitializeComponent();
Icon = Resources.ImageConverter.GetImageAsIcon(Properties.Resources.Settings_16x);
FontOverrider.FontOverride(this);
}
#endregion
#region Form Stuff
private void Options_Load(object sender, EventArgs e)
{
ApplyTheme();
ThemeManager.getInstance().ThemeChanged += ApplyTheme;
ApplyLanguage();
LoadOptionsForm();
}
private new void ApplyTheme()
{
if (!ThemeManager.getInstance().ActiveAndExtended) return;
base.ApplyTheme();
}
private void ApplyLanguage()
{
Text = Language.Options;
TabText = Language.Options;
}
private void LoadOptionsForm()
{
if (_optionsForm == null || _optionsForm.IsDisposed)
{
_optionsForm = FrmMain.OptionsForm;
_optionsForm.TopLevel = false;
_optionsForm.FormBorderStyle = FormBorderStyle.None;
_optionsForm.Dock = DockStyle.Fill;
Controls.Add(_optionsForm);
_optionsForm.Show();
}
}
public void SetActivatedPage(string pageName)
{
_optionsForm?.SetActivatedPage(pageName);
}
#endregion
private void InitializeComponent()
{
SuspendLayout();
//
// OptionsWindow
//
ClientSize = new System.Drawing.Size(800, 600);
Name = "OptionsWindow";
Text = Language.Options;
TabText = Language.Options;
Load += Options_Load;
ResumeLayout(false);
}
}
}