mirror of
https://github.com/mRemoteNG/mRemoteNG.git
synced 2026-02-17 22:11:48 +08:00
improve speed for the display of the options page
rather than create the options page on demand, instantiate the options page immediately upon app start though in the background using idle time.
This commit is contained in:
@@ -1,7 +1,10 @@
|
||||
using System;
|
||||
#region Usings
|
||||
using System;
|
||||
using mRemoteNG.Resources.Language;
|
||||
using mRemoteNG.UI;
|
||||
using mRemoteNG.UI.Forms;
|
||||
using mRemoteNG.UI.Window;
|
||||
#endregion
|
||||
|
||||
namespace mRemoteNG.App
|
||||
{
|
||||
@@ -39,11 +42,8 @@ namespace mRemoteNG.App
|
||||
_adimportForm.Show(dockPanel);
|
||||
break;
|
||||
case WindowType.Options:
|
||||
using (var optionsForm = new FrmOptions())
|
||||
{
|
||||
optionsForm.ShowDialog(dockPanel);
|
||||
}
|
||||
|
||||
FrmMain.OptionsForm.SetActivatedPage(Language.StartupExit);
|
||||
FrmMain.OptionsForm.Visible = true;
|
||||
break;
|
||||
case WindowType.SSHTransfer:
|
||||
if (SshtransferForm == null || SshtransferForm.IsDisposed)
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using Microsoft.Win32;
|
||||
#region Usings
|
||||
using Microsoft.Win32;
|
||||
using mRemoteNG.App;
|
||||
using mRemoteNG.App.Info;
|
||||
using mRemoteNG.App.Initialization;
|
||||
@@ -30,9 +31,8 @@ using System.Windows.Forms;
|
||||
using mRemoteNG.UI.Panels;
|
||||
using WeifenLuo.WinFormsUI.Docking;
|
||||
using mRemoteNG.UI.Controls;
|
||||
|
||||
using mRemoteNG.Resources.Language;
|
||||
|
||||
#endregion
|
||||
|
||||
// ReSharper disable MemberCanBePrivate.Global
|
||||
|
||||
@@ -54,6 +54,7 @@ namespace mRemoteNG.UI.Forms
|
||||
private readonly IList<IMessageWriter> _messageWriters = new List<IMessageWriter>();
|
||||
private readonly ThemeManager _themeManager;
|
||||
private readonly FileBackupPruner _backupPruner = new FileBackupPruner();
|
||||
public static FrmOptions OptionsForm;
|
||||
|
||||
internal FullscreenHandler Fullscreen { get; set; }
|
||||
|
||||
@@ -64,11 +65,12 @@ namespace mRemoteNG.UI.Forms
|
||||
{
|
||||
_showFullPathInTitle = Properties.OptionsAppearancePage.Default.ShowCompleteConsPathInTitle;
|
||||
InitializeComponent();
|
||||
|
||||
Screen targetScreen = (Screen.AllScreens.Length > 1) ? Screen.AllScreens[1] : Screen.AllScreens[0];
|
||||
|
||||
Rectangle viewport = targetScreen.WorkingArea;
|
||||
|
||||
// normaly it should be screens[1] however due DPI apply 1 size "same" as default with 100%
|
||||
// normally it should be screens[1] however due DPI apply 1 size "same" as default with 100%
|
||||
this.Left = viewport.Left + (targetScreen.Bounds.Size.Width / 2) - (this.Width / 2);
|
||||
this.Top = viewport.Top + (targetScreen.Bounds.Size.Height / 2) - (this.Height / 2);
|
||||
|
||||
@@ -81,7 +83,7 @@ namespace mRemoteNG.UI.Forms
|
||||
|
||||
_advancedWindowMenu = new AdvancedWindowMenu(this);
|
||||
}
|
||||
|
||||
|
||||
#region Properties
|
||||
|
||||
public FormWindowState PreviousWindowState { get; set; }
|
||||
@@ -216,6 +218,8 @@ namespace mRemoteNG.UI.Forms
|
||||
Fullscreen.Value = true;
|
||||
}
|
||||
|
||||
OptionsForm = new FrmOptions();
|
||||
|
||||
if (!Properties.OptionsTabsPanelsPage.Default.CreateEmptyPanelOnStartUp) return;
|
||||
var panelName = !string.IsNullOrEmpty(Properties.OptionsTabsPanelsPage.Default.StartUpPanelName) ? Properties.OptionsTabsPanelsPage.Default.StartUpPanelName : Language.NewPanel;
|
||||
|
||||
@@ -356,10 +360,8 @@ namespace mRemoteNG.UI.Forms
|
||||
|
||||
if (CTaskDialog.CommandButtonResult != 1) return;
|
||||
|
||||
using (var optionsForm = new FrmOptions(Language.Updates))
|
||||
{
|
||||
optionsForm.ShowDialog(this);
|
||||
}
|
||||
OptionsForm.SetActivatedPage(Language.Updates);
|
||||
OptionsForm.ShowDialog(this);
|
||||
}
|
||||
|
||||
private async Task CheckForUpdates()
|
||||
|
||||
24
mRemoteNG/UI/Forms/frmOptions.Designer.cs
generated
24
mRemoteNG/UI/Forms/frmOptions.Designer.cs
generated
@@ -30,16 +30,15 @@ namespace mRemoteNG.UI.Forms
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmOptions));
|
||||
this.pnlBottom = new System.Windows.Forms.Panel();
|
||||
this.btnApply = new MrngButton();
|
||||
this.btnCancel = new MrngButton();
|
||||
this.btnOK = new MrngButton();
|
||||
this.btnApply = new mRemoteNG.UI.Controls.MrngButton();
|
||||
this.btnCancel = new mRemoteNG.UI.Controls.MrngButton();
|
||||
this.btnOK = new mRemoteNG.UI.Controls.MrngButton();
|
||||
this.splitter1 = new System.Windows.Forms.Splitter();
|
||||
this.splitter2 = new System.Windows.Forms.Splitter();
|
||||
this.pnlMain = new System.Windows.Forms.Panel();
|
||||
this.lstOptionPages = new mRemoteNG.UI.Controls.MrngListView();
|
||||
this.PageName = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn()));
|
||||
this.PageName = new BrightIdeasSoftware.OLVColumn();
|
||||
this.pnlBottom.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.lstOptionPages)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
@@ -57,18 +56,18 @@ namespace mRemoteNG.UI.Forms
|
||||
//
|
||||
// btnApply
|
||||
//
|
||||
this.btnApply._mice = MrngButton.MouseState.OUT;
|
||||
this.btnApply._mice = mRemoteNG.UI.Controls.MrngButton.MouseState.OUT;
|
||||
this.btnApply.Location = new System.Drawing.Point(677, 5);
|
||||
this.btnApply.Name = "btnApply";
|
||||
this.btnApply.Size = new System.Drawing.Size(75, 23);
|
||||
this.btnApply.TabIndex = 2;
|
||||
this.btnApply.Text = "Apply";
|
||||
this.btnApply.UseVisualStyleBackColor = true;
|
||||
this.btnApply.Click += new System.EventHandler(this.BtnOK_Click);
|
||||
this.btnApply.Click += new System.EventHandler(this.BtnApply_Click);
|
||||
//
|
||||
// btnCancel
|
||||
//
|
||||
this.btnCancel._mice = MrngButton.MouseState.OUT;
|
||||
this.btnCancel._mice = mRemoteNG.UI.Controls.MrngButton.MouseState.OUT;
|
||||
this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.btnCancel.Location = new System.Drawing.Point(596, 5);
|
||||
this.btnCancel.Name = "btnCancel";
|
||||
@@ -80,7 +79,7 @@ namespace mRemoteNG.UI.Forms
|
||||
//
|
||||
// btnOK
|
||||
//
|
||||
this.btnOK._mice = MrngButton.MouseState.OUT;
|
||||
this.btnOK._mice = mRemoteNG.UI.Controls.MrngButton.MouseState.OUT;
|
||||
this.btnOK.DialogResult = System.Windows.Forms.DialogResult.OK;
|
||||
this.btnOK.Location = new System.Drawing.Point(515, 5);
|
||||
this.btnOK.Name = "btnOK";
|
||||
@@ -123,13 +122,11 @@ namespace mRemoteNG.UI.Forms
|
||||
this.lstOptionPages.CellEditUseWholeCell = false;
|
||||
this.lstOptionPages.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
|
||||
this.PageName});
|
||||
this.lstOptionPages.Cursor = System.Windows.Forms.Cursors.Default;
|
||||
this.lstOptionPages.DecorateLines = true;
|
||||
this.lstOptionPages.Dock = System.Windows.Forms.DockStyle.Left;
|
||||
this.lstOptionPages.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.lstOptionPages.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
||||
this.lstOptionPages.FullRowSelect = true;
|
||||
this.lstOptionPages.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None;
|
||||
this.lstOptionPages.HideSelection = false;
|
||||
this.lstOptionPages.LabelWrap = false;
|
||||
this.lstOptionPages.Location = new System.Drawing.Point(0, 0);
|
||||
this.lstOptionPages.MultiSelect = false;
|
||||
@@ -162,7 +159,7 @@ namespace mRemoteNG.UI.Forms
|
||||
this.Controls.Add(this.lstOptionPages);
|
||||
this.Controls.Add(this.splitter1);
|
||||
this.Controls.Add(this.pnlBottom);
|
||||
this.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D;
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
@@ -170,6 +167,7 @@ namespace mRemoteNG.UI.Forms
|
||||
this.ShowInTaskbar = false;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "mRemoteNG Options";
|
||||
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FrmOptions_FormClosing);
|
||||
this.Load += new System.EventHandler(this.FrmOptions_Load);
|
||||
this.pnlBottom.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.lstOptionPages)).EndInit();
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using mRemoteNG.UI.Forms.OptionsPages;
|
||||
#region Usings
|
||||
using mRemoteNG.UI.Forms.OptionsPages;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
@@ -8,35 +9,55 @@ using mRemoteNG.Themes;
|
||||
using System.Configuration;
|
||||
using mRemoteNG.Properties;
|
||||
using mRemoteNG.Resources.Language;
|
||||
#endregion
|
||||
|
||||
namespace mRemoteNG.UI.Forms
|
||||
{
|
||||
public partial class FrmOptions : Form
|
||||
{
|
||||
private Dictionary<string, OptionsPage> _pages;
|
||||
private readonly string _pageName;
|
||||
private readonly DisplayProperties _display = new DisplayProperties();
|
||||
private int _currentIndex = 0;
|
||||
private readonly List<OptionsPage> _optionPages = new();
|
||||
private string _pageName;
|
||||
private readonly DisplayProperties _display = new();
|
||||
private readonly List<string> _optionPageObjectNames;
|
||||
|
||||
public FrmOptions() : this(Language.StartupExit)
|
||||
{
|
||||
}
|
||||
|
||||
public FrmOptions(string pn)
|
||||
private FrmOptions(string pageName)
|
||||
{
|
||||
Cursor.Current = Cursors.WaitCursor;
|
||||
Application.DoEvents();
|
||||
InitializeComponent();
|
||||
Icon = Resources.ImageConverter.GetImageAsIcon(Properties.Resources.Settings_16x);
|
||||
_pageName = pn;
|
||||
_pageName = pageName;
|
||||
Cursor.Current = Cursors.Default;
|
||||
|
||||
_optionPageObjectNames = new List<string>
|
||||
{
|
||||
nameof(StartupExitPage),
|
||||
nameof(AppearancePage),
|
||||
nameof(ConnectionsPage),
|
||||
nameof(TabsPanelsPage),
|
||||
nameof(NotificationsPage),
|
||||
nameof(CredentialsPage),
|
||||
nameof(SqlServerPage),
|
||||
nameof(UpdatesPage),
|
||||
nameof(ThemePage),
|
||||
nameof(SecurityPage),
|
||||
nameof(AdvancedPage),
|
||||
nameof(BackupPage)
|
||||
};
|
||||
|
||||
InitOptionsPagesToListView();
|
||||
}
|
||||
|
||||
private void FrmOptions_Load(object sender, EventArgs e)
|
||||
{
|
||||
CompileListOfOptionsPages();
|
||||
this.Visible = true;
|
||||
FontOverrider.FontOverride(this);
|
||||
AddOptionsPagesToListView();
|
||||
SetInitiallyActivatedPage();
|
||||
SetActivatedPage();
|
||||
//ApplyLanguage();
|
||||
// Handle the main page here and the individual pages in
|
||||
// AddOptionsPagesToListView() -- one less foreach loop....
|
||||
@@ -67,57 +88,137 @@ namespace mRemoteNG.UI.Forms
|
||||
}
|
||||
}
|
||||
#endif
|
||||
private void CompileListOfOptionsPages()
|
||||
{
|
||||
_pages = new Dictionary<string, OptionsPage>{};
|
||||
|
||||
if (Properties.OptionsStartupExitPage.Default.cbStartupExitPageInOptionMenu == true || Properties.rbac.Default.ActiveRole == "AdminRole")
|
||||
_pages.Add(typeof(StartupExitPage).Name, new StartupExitPage { Dock = DockStyle.Fill });
|
||||
if (Properties.OptionsAppearancePage.Default.cbAppearancePageInOptionMenu == true || Properties.rbac.Default.ActiveRole == "AdminRole")
|
||||
_pages.Add(typeof(AppearancePage).Name, new AppearancePage { Dock = DockStyle.Fill });
|
||||
if (Properties.OptionsConnectionsPage.Default.cbConnectionsPageInOptionMenu == true || Properties.rbac.Default.ActiveRole == "AdminRole")
|
||||
_pages.Add(typeof(ConnectionsPage).Name, new ConnectionsPage { Dock = DockStyle.Fill });
|
||||
if (Properties.OptionsTabsPanelsPage.Default.cbTabsPanelsPageInOptionMenu == true || Properties.rbac.Default.ActiveRole == "AdminRole")
|
||||
_pages.Add(typeof(TabsPanelsPage).Name, new TabsPanelsPage { Dock = DockStyle.Fill });
|
||||
if (Properties.OptionsNotificationsPage.Default.cbNotificationsPageInOptionMenu == true || Properties.rbac.Default.ActiveRole == "AdminRole")
|
||||
_pages.Add(typeof(NotificationsPage).Name, new NotificationsPage { Dock = DockStyle.Fill });
|
||||
if (Properties.OptionsCredentialsPage.Default.cbCredentialsPageInOptionMenu == true || Properties.rbac.Default.ActiveRole == "AdminRole")
|
||||
_pages.Add(typeof(CredentialsPage).Name, new CredentialsPage { Dock = DockStyle.Fill });
|
||||
if (Properties.OptionsDBsPage.Default.cbDBsPageInOptionMenu == true || Properties.rbac.Default.ActiveRole == "AdminRole")
|
||||
_pages.Add(typeof(SqlServerPage).Name, new SqlServerPage { Dock = DockStyle.Fill });
|
||||
if (Properties.OptionsUpdatesPage.Default.cbUpdatesPageInOptionMenu == true || Properties.rbac.Default.ActiveRole == "AdminRole")
|
||||
_pages.Add(typeof(UpdatesPage).Name, new UpdatesPage { Dock = DockStyle.Fill });
|
||||
if (Properties.OptionsThemePage.Default.cbThemePageInOptionMenu == true || Properties.rbac.Default.ActiveRole == "AdminRole")
|
||||
_pages.Add(typeof(ThemePage).Name, new ThemePage { Dock = DockStyle.Fill });
|
||||
if (Properties.OptionsSecurityPage.Default.cbSecurityPageInOptionMenu == true || Properties.rbac.Default.ActiveRole == "AdminRole")
|
||||
_pages.Add(typeof(SecurityPage).Name, new SecurityPage { Dock = DockStyle.Fill });
|
||||
if (Properties.OptionsAdvancedPage.Default.cbAdvancedPageInOptionMenu == true || Properties.rbac.Default.ActiveRole == "AdminRole")
|
||||
_pages.Add(typeof(AdvancedPage).Name, new AdvancedPage { Dock = DockStyle.Fill });
|
||||
if (Properties.OptionsBackupPage.Default.cbBacupPageInOptionMenu == true || Properties.rbac.Default.ActiveRole == "AdminRole")
|
||||
_pages.Add(typeof(BackupPage).Name, new BackupPage { Dock = DockStyle.Fill });
|
||||
}
|
||||
|
||||
private void AddOptionsPagesToListView()
|
||||
private void InitOptionsPagesToListView()
|
||||
{
|
||||
lstOptionPages.RowHeight = _display.ScaleHeight(lstOptionPages.RowHeight);
|
||||
lstOptionPages.AllColumns.First().ImageGetter = ImageGetter;
|
||||
|
||||
foreach (var page in _pages.Select(keyValuePair => keyValuePair.Value))
|
||||
InitOptionsPage(_optionPageObjectNames[_currentIndex++]);
|
||||
Application.Idle += new EventHandler(Application_Idle);
|
||||
}
|
||||
|
||||
private void Application_Idle(object sender, EventArgs e)
|
||||
{
|
||||
if (_currentIndex >= _optionPageObjectNames.Count)
|
||||
{
|
||||
page.ApplyLanguage();
|
||||
page.LoadSettings();
|
||||
lstOptionPages.AddObject(page);
|
||||
Application.Idle -= new EventHandler(Application_Idle);
|
||||
}
|
||||
else
|
||||
{
|
||||
InitOptionsPage(_optionPageObjectNames[_currentIndex++]);
|
||||
}
|
||||
}
|
||||
|
||||
private void InitOptionsPage(string pageName)
|
||||
{
|
||||
OptionsPage page = null;
|
||||
|
||||
switch (pageName)
|
||||
{
|
||||
case "StartupExitPage":
|
||||
{
|
||||
if (Properties.OptionsStartupExitPage.Default.cbStartupExitPageInOptionMenu ||
|
||||
Properties.rbac.Default.ActiveRole == "AdminRole")
|
||||
page = new StartupExitPage { Dock = DockStyle.Fill };
|
||||
break;
|
||||
}
|
||||
case "AppearancePage":
|
||||
{
|
||||
if (Properties.OptionsAppearancePage.Default.cbAppearancePageInOptionMenu ||
|
||||
Properties.rbac.Default.ActiveRole == "AdminRole")
|
||||
page = new AppearancePage { Dock = DockStyle.Fill };
|
||||
break;
|
||||
}
|
||||
case "ConnectionsPage":
|
||||
{
|
||||
if (Properties.OptionsConnectionsPage.Default.cbConnectionsPageInOptionMenu ||
|
||||
Properties.rbac.Default.ActiveRole == "AdminRole")
|
||||
page = new ConnectionsPage { Dock = DockStyle.Fill };
|
||||
break;
|
||||
}
|
||||
case "TabsPanelsPage":
|
||||
{
|
||||
if (Properties.OptionsTabsPanelsPage.Default.cbTabsPanelsPageInOptionMenu ||
|
||||
Properties.rbac.Default.ActiveRole == "AdminRole")
|
||||
page = new TabsPanelsPage { Dock = DockStyle.Fill };
|
||||
break;
|
||||
}
|
||||
case "NotificationsPage":
|
||||
{
|
||||
if (Properties.OptionsNotificationsPage.Default.cbNotificationsPageInOptionMenu ||
|
||||
Properties.rbac.Default.ActiveRole == "AdminRole")
|
||||
page = new NotificationsPage { Dock = DockStyle.Fill };
|
||||
break;
|
||||
}
|
||||
case "CredentialsPage":
|
||||
{
|
||||
if (Properties.OptionsCredentialsPage.Default.cbCredentialsPageInOptionMenu ||
|
||||
Properties.rbac.Default.ActiveRole == "AdminRole")
|
||||
page = new CredentialsPage { Dock = DockStyle.Fill };
|
||||
break;
|
||||
}
|
||||
case "SqlServerPage":
|
||||
{
|
||||
if (Properties.OptionsDBsPage.Default.cbDBsPageInOptionMenu ||
|
||||
Properties.rbac.Default.ActiveRole == "AdminRole")
|
||||
page = new SqlServerPage { Dock = DockStyle.Fill };
|
||||
break;
|
||||
}
|
||||
case "UpdatesPage":
|
||||
{
|
||||
if (Properties.OptionsUpdatesPage.Default.cbUpdatesPageInOptionMenu ||
|
||||
Properties.rbac.Default.ActiveRole == "AdminRole")
|
||||
page = new UpdatesPage { Dock = DockStyle.Fill };
|
||||
break;
|
||||
}
|
||||
case "ThemePage":
|
||||
{
|
||||
if (Properties.OptionsThemePage.Default.cbThemePageInOptionMenu ||
|
||||
Properties.rbac.Default.ActiveRole == "AdminRole")
|
||||
page = new ThemePage { Dock = DockStyle.Fill };
|
||||
break;
|
||||
}
|
||||
case "SecurityPage":
|
||||
{
|
||||
if (Properties.OptionsSecurityPage.Default.cbSecurityPageInOptionMenu ||
|
||||
Properties.rbac.Default.ActiveRole == "AdminRole")
|
||||
page = new SecurityPage { Dock = DockStyle.Fill };
|
||||
break;
|
||||
}
|
||||
case "AdvancedPage":
|
||||
{
|
||||
if (Properties.OptionsAdvancedPage.Default.cbAdvancedPageInOptionMenu ||
|
||||
Properties.rbac.Default.ActiveRole == "AdminRole")
|
||||
page = new AdvancedPage { Dock = DockStyle.Fill };
|
||||
break;
|
||||
}
|
||||
case "BackupPage":
|
||||
{
|
||||
if (Properties.OptionsBackupPage.Default.cbBacupPageInOptionMenu ||
|
||||
Properties.rbac.Default.ActiveRole == "AdminRole")
|
||||
page = new BackupPage { Dock = DockStyle.Fill };
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (page == null) return;
|
||||
page.ApplyLanguage();
|
||||
page.LoadSettings();
|
||||
_optionPages.Add(page);
|
||||
lstOptionPages.AddObject(page);
|
||||
}
|
||||
|
||||
private object ImageGetter(object rowobject)
|
||||
{
|
||||
var page = rowobject as OptionsPage;
|
||||
OptionsPage page = rowobject as OptionsPage;
|
||||
return page?.PageIcon == null ? _display.ScaleImage(Properties.Resources.F1Help_16x) : _display.ScaleImage(page.PageIcon);
|
||||
}
|
||||
|
||||
private void SetInitiallyActivatedPage()
|
||||
public void SetActivatedPage(string pageName = default)
|
||||
{
|
||||
_pageName = pageName ?? Language.StartupExit;
|
||||
|
||||
var isSet = false;
|
||||
for (var i = 0; i < lstOptionPages.Items.Count; i++)
|
||||
{
|
||||
@@ -131,14 +232,20 @@ namespace mRemoteNG.UI.Forms
|
||||
lstOptionPages.Items[0].Selected = true;
|
||||
}
|
||||
|
||||
/*
|
||||
* This gets called by both OK and Apply buttons.
|
||||
* OK sets DialogResult = OK, Apply does not (None).
|
||||
* Apply will no close the dialog.
|
||||
*/
|
||||
private void BtnOK_Click(object sender, EventArgs e)
|
||||
{
|
||||
foreach (var page in _pages.Values)
|
||||
SaveOptions();
|
||||
this.Visible = false;
|
||||
}
|
||||
|
||||
private void BtnApply_Click(object sender, EventArgs e)
|
||||
{
|
||||
SaveOptions();
|
||||
}
|
||||
|
||||
private void SaveOptions()
|
||||
{
|
||||
foreach (var page in _optionPages)
|
||||
{
|
||||
Debug.WriteLine(page.PageName);
|
||||
page.SaveSettings();
|
||||
@@ -148,7 +255,6 @@ namespace mRemoteNG.UI.Forms
|
||||
Settings.Default.Save();
|
||||
}
|
||||
|
||||
|
||||
private void LstOptionPages_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
pnlMain.Controls.Clear();
|
||||
@@ -160,7 +266,13 @@ namespace mRemoteNG.UI.Forms
|
||||
|
||||
private void BtnCancel_Click(object sender, EventArgs e)
|
||||
{
|
||||
Close();
|
||||
this.Visible = false;
|
||||
}
|
||||
|
||||
private void FrmOptions_FormClosing(object sender, FormClosingEventArgs e)
|
||||
{
|
||||
e.Cancel = true;
|
||||
this.Visible = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user