diff --git a/Jenkinsfile b/Jenkinsfile index 951d1b6d5..689d8f4ef 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -5,11 +5,7 @@ node('windows') { def vsExtensionsDir = "C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\Common7\\IDE\\CommonExtensions\\Microsoft\\TestWindow" stage 'Checkout Branch' - checkout([ - $class: 'GitSCM', - branches: scm.branches, - userRemoteConfigs: scm.userRemoteConfigs - ]) + checkout scm stage 'Restore NuGet Packages' def nugetPath = "C:\\nuget.exe" diff --git a/README.MD b/README.MD index 4d9d7fe00..f2ce96154 100644 --- a/README.MD +++ b/README.MD @@ -1,16 +1,20 @@ +# Welcome to the mRemoteNG project! + [![Twitter Follow](https://img.shields.io/twitter/follow/mRemoteNG.svg?style=social&label=Follow)](https://twitter.com/intent/follow?screen_name=mRemoteNG) - - [![Join the chat at https://gitter.im/mRemoteNG/PublicChat/](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/mRemoteNG/PublicChat) - [![PayPal](https://img.shields.io/badge/%24-PayPal-blue.svg)](https://www.paypal.me/DavidSparer) -[![Build Status](http://ec2-52-39-111-114.us-west-2.compute.amazonaws.com:8080/buildStatus/icon?job=mRemoteNG/mRemoteNG/develop)](http://ec2-52-39-111-114.us-west-2.compute.amazonaws.com:8080/job/mRemoteNG/job/mRemoteNG/job/develop/) -[![Issues In Progress](https://badge.waffle.io/mRemoteNG/mRemoteNG.png?label=In%20Progress&title=In%20Progress)](https://waffle.io/mRemoteNG/mRemoteNG) -[![Github Releases (by Release)](https://img.shields.io/github/downloads/mRemoteNG/mRemoteNG/v1.74/total.svg)](https://github.com/mRemoteNG/mRemoteNG/releases/tag/v1.74) - [![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/529/badge)](https://bestpractices.coreinfrastructure.org/projects/529) +[![Issues In Progress](https://badge.waffle.io/mRemoteNG/mRemoteNG.png?label=In%20Progress&title=In%20Progress)](https://waffle.io/mRemoteNG/mRemoteNG) + +| Update Channel | Build Status | Downloads | +| ---------------|--------------|-----------| +| Stable | [![Build Status](https://jenkins.mremoteng.org/buildStatus/icon?job=mRemoteNG/mRemoteNG/master)](https://jenkins.mremoteng.org/job/mRemoteNG/job/mRemoteNG/job/master/) | [![Github Releases (by Release)](https://img.shields.io/github/downloads/mRemoteNG/mRemoteNG/v1.74/total.svg)](https://github.com/mRemoteNG/mRemoteNG/releases/tag/v1.74) | +| Beta | [![Build Status](https://jenkins.mremoteng.org/buildStatus/icon?job=mRemoteNG/mRemoteNG/beta_channel)](https://jenkins.mremoteng.org/job/mRemoteNG/job/mRemoteNG/job/beta_channel/) | [![Github Releases (by Release)](https://img.shields.io/github/downloads/mRemoteNG/mRemoteNG/v1.75Beta3/total.svg)](https://github.com/mRemoteNG/mRemoteNG/releases/tag/v1.75Beta3) | +| Development | [![Build Status](https://jenkins.mremoteng.org/buildStatus/icon?job=mRemoteNG/mRemoteNG/develop)](https://jenkins.mremoteng.org/job/mRemoteNG/job/mRemoteNG/job/develop/) | - | + + mRemoteNG is the next generation of mRemote, a full-featured, multi-tab remote connections manager. diff --git a/mRemoteV1/App/CompatibilityChecker.cs b/mRemoteV1/App/CompatibilityChecker.cs index a7e29265c..c69da026d 100644 --- a/mRemoteV1/App/CompatibilityChecker.cs +++ b/mRemoteV1/App/CompatibilityChecker.cs @@ -8,24 +8,23 @@ using System.Windows.Forms; namespace mRemoteNG.App { - public class CompatibilityChecker + public static class CompatibilityChecker { - public void CheckCompatibility() + public static void CheckCompatibility() { CheckFipsPolicy(); CheckLenovoAutoScrollUtility(); } - private void CheckFipsPolicy() + private static void CheckFipsPolicy() { - if (FipsPolicyEnabledForServer2003() || FipsPolicyEnabledForServer2008AndNewer()) - { - MessageBox.Show(frmMain.Default, string.Format(Language.strErrorFipsPolicyIncompatible, GeneralAppInfo.ProductName, GeneralAppInfo.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error)); - Environment.Exit(1); - } + Logger.Instance.InfoFormat("Checking FIPS Policy..."); + if (!FipsPolicyEnabledForServer2003() && !FipsPolicyEnabledForServer2008AndNewer()) return; + MessageBox.Show(frmMain.Default, string.Format(Language.strErrorFipsPolicyIncompatible, GeneralAppInfo.ProductName, GeneralAppInfo.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error)); + Environment.Exit(1); } - private bool FipsPolicyEnabledForServer2003() + private static bool FipsPolicyEnabledForServer2003() { var regKey = Registry.LocalMachine.OpenSubKey("System\\CurrentControlSet\\Control\\Lsa"); var fipsPolicy = regKey?.GetValue("FIPSAlgorithmPolicy"); @@ -34,7 +33,7 @@ namespace mRemoteNG.App return (int)fipsPolicy != 0; } - private bool FipsPolicyEnabledForServer2008AndNewer() + private static bool FipsPolicyEnabledForServer2008AndNewer() { var regKey = Registry.LocalMachine.OpenSubKey("System\\CurrentControlSet\\Control\\Lsa\\FIPSAlgorithmPolicy"); var fipsPolicy = regKey?.GetValue("Enabled"); @@ -43,12 +42,14 @@ namespace mRemoteNG.App return (int)fipsPolicy != 0; } - private void CheckLenovoAutoScrollUtility() + private static void CheckLenovoAutoScrollUtility() { + Logger.Instance.InfoFormat("Checking Lenovo AutoScroll Utility..."); + if (!Settings.Default.CompatibilityWarnLenovoAutoScrollUtility) return; - Process[] proccesses = new Process[] { }; + var proccesses = new Process[] { }; try { proccesses = Process.GetProcessesByName("virtscrl"); @@ -58,12 +59,10 @@ namespace mRemoteNG.App Runtime.MessageCollector.AddExceptionMessage("Error in CheckLenovoAutoScrollUtility", ex); } - if (proccesses.Length > 0) - { - CTaskDialog.MessageBox(Application.ProductName, Language.strCompatibilityProblemDetected, string.Format(Language.strCompatibilityLenovoAutoScrollUtilityDetected, Application.ProductName), "", "", Language.strCheckboxDoNotShowThisMessageAgain, ETaskDialogButtons.Ok, ESysIcons.Warning, ESysIcons.Warning); - if (CTaskDialog.VerificationChecked) - Settings.Default.CompatibilityWarnLenovoAutoScrollUtility = false; - } + if (proccesses.Length <= 0) return; + CTaskDialog.MessageBox(Application.ProductName, Language.strCompatibilityProblemDetected, string.Format(Language.strCompatibilityLenovoAutoScrollUtilityDetected, Application.ProductName), "", "", Language.strCheckboxDoNotShowThisMessageAgain, ETaskDialogButtons.Ok, ESysIcons.Warning, ESysIcons.Warning); + if (CTaskDialog.VerificationChecked) + Settings.Default.CompatibilityWarnLenovoAutoScrollUtility = false; } } } diff --git a/mRemoteV1/App/Startup.cs b/mRemoteV1/App/Startup.cs index cd067324a..163669376 100644 --- a/mRemoteV1/App/Startup.cs +++ b/mRemoteV1/App/Startup.cs @@ -22,14 +22,12 @@ namespace mRemoteNG.App { public class Startup { - private CompatibilityChecker _compatibilityChecker; private AppUpdater _appUpdate; public static Startup Instance { get; } = new Startup(); private Startup() { - _compatibilityChecker = new CompatibilityChecker(); _appUpdate = new AppUpdater(); } @@ -41,12 +39,12 @@ namespace mRemoteNG.App { Debug.Print("---------------------------" + Environment.NewLine + "[START] - " + Convert.ToString(DateTime.Now, CultureInfo.InvariantCulture)); LogStartupData(); - _compatibilityChecker.CheckCompatibility(); + CompatibilityChecker.CheckCompatibility(); ParseCommandLineArgs(); IeBrowserEmulation.Register(); GetConnectionIcons(); - DefaultConnectionInfo.Instance.LoadFrom(Settings.Default, (a)=>"ConDefault"+a); - DefaultConnectionInheritance.Instance.LoadFrom(Settings.Default, (a)=>"InhDefault"+a); + DefaultConnectionInfo.Instance.LoadFrom(Settings.Default, a=>"ConDefault"+a); + DefaultConnectionInheritance.Instance.LoadFrom(Settings.Default, a=>"InhDefault"+a); } public void SetDefaultLayout() @@ -67,23 +65,23 @@ namespace mRemoteNG.App frmMain.Default.pnlDock.Visible = true; } - private void GetConnectionIcons() + private static void GetConnectionIcons() { - string iPath = GeneralAppInfo.HomePath + "\\Icons\\"; + var iPath = GeneralAppInfo.HomePath + "\\Icons\\"; if (Directory.Exists(iPath) == false) { return; } - foreach (string f in Directory.GetFiles(iPath, "*.ico", SearchOption.AllDirectories)) + foreach (var f in Directory.GetFiles(iPath, "*.ico", SearchOption.AllDirectories)) { - FileInfo fInfo = new FileInfo(f); + var fInfo = new FileInfo(f); Array.Resize(ref ConnectionIcon.Icons, ConnectionIcon.Icons.Length + 1); ConnectionIcon.Icons.SetValue(fInfo.Name.Replace(".ico", ""), ConnectionIcon.Icons.Length - 1); } } - private void LogStartupData() + private static void LogStartupData() { if (!Settings.Default.WriteLogFile) return; LogApplicationData(); @@ -93,17 +91,17 @@ namespace mRemoteNG.App LogCultureData(); } - private void LogSystemData() + private static void LogSystemData() { - string osData = GetOperatingSystemData(); - string architecture = GetArchitectureData(); + var osData = GetOperatingSystemData(); + var architecture = GetArchitectureData(); Logger.Instance.InfoFormat(string.Join(" ", Array.FindAll(new[] { osData, architecture }, s => !string.IsNullOrEmpty(Convert.ToString(s))))); } - private string GetOperatingSystemData() + private static string GetOperatingSystemData() { - string osVersion = string.Empty; - string servicePack = string.Empty; + var osVersion = string.Empty; + var servicePack = string.Empty; try { @@ -118,13 +116,13 @@ namespace mRemoteNG.App { Logger.Instance.WarnFormat($"Error retrieving operating system information from WMI. {ex.Message}"); } - string osData = string.Join(" ", new string[] { osVersion, servicePack }); + var osData = string.Join(" ", new string[] { osVersion, servicePack }); return osData; } - private string GetOSServicePack(string servicePack, ManagementObject managementObject) + private static string GetOSServicePack(string servicePack, ManagementObject managementObject) { - int servicePackNumber = Convert.ToInt32(managementObject.GetPropertyValue("ServicePackMajorVersion")); + var servicePackNumber = Convert.ToInt32(managementObject.GetPropertyValue("ServicePackMajorVersion")); if (servicePackNumber != 0) { servicePack = $"Service Pack {servicePackNumber}"; @@ -132,15 +130,15 @@ namespace mRemoteNG.App return servicePack; } - private string GetArchitectureData() + private static string GetArchitectureData() { - string architecture = string.Empty; + var architecture = string.Empty; try { foreach (var o in new ManagementObjectSearcher("SELECT * FROM Win32_Processor WHERE DeviceID=\'CPU0\'").Get()) { var managementObject = (ManagementObject) o; - int addressWidth = Convert.ToInt32(managementObject.GetPropertyValue("AddressWidth")); + var addressWidth = Convert.ToInt32(managementObject.GetPropertyValue("AddressWidth")); architecture = $"{addressWidth}-bit"; } } @@ -151,7 +149,7 @@ namespace mRemoteNG.App return architecture; } - private void LogApplicationData() + private static void LogApplicationData() { #if !PORTABLE Logger.Instance.InfoFormat($"{Application.ProductName} {Application.ProductVersion} starting."); @@ -161,17 +159,17 @@ namespace mRemoteNG.App #endif } - private void LogCmdLineArgs() + private static void LogCmdLineArgs() { Logger.Instance.InfoFormat($"Command Line: {Environment.GetCommandLineArgs()}"); } - private void LogCLRData() + private static void LogCLRData() { Logger.Instance.InfoFormat($"Microsoft .NET CLR {Environment.Version}"); } - private void LogCultureData() + private static void LogCultureData() { Logger.Instance.InfoFormat( $"System Culture: {Thread.CurrentThread.CurrentUICulture.Name}/{Thread.CurrentThread.CurrentUICulture.NativeName}"); @@ -197,7 +195,7 @@ namespace mRemoteNG.App return; } - DateTime nextUpdateCheck = Convert.ToDateTime(Settings.Default.CheckForUpdatesLastCheck.Add(TimeSpan.FromDays(Convert.ToDouble(Settings.Default.CheckForUpdatesFrequencyDays)))); + var nextUpdateCheck = Convert.ToDateTime(Settings.Default.CheckForUpdatesLastCheck.Add(TimeSpan.FromDays(Convert.ToDouble(Settings.Default.CheckForUpdatesFrequencyDays)))); if (!Settings.Default.UpdatePending && DateTime.UtcNow < nextUpdateCheck) { return; @@ -240,13 +238,13 @@ namespace mRemoteNG.App } - private void ParseCommandLineArgs() + private static void ParseCommandLineArgs() { try { - CmdArgumentsInterpreter cmd = new CmdArgumentsInterpreter(Environment.GetCommandLineArgs()); + var cmd = new CmdArgumentsInterpreter(Environment.GetCommandLineArgs()); - string ConsParam = ""; + var ConsParam = ""; if (cmd["cons"] != null) { ConsParam = "cons"; @@ -256,7 +254,7 @@ namespace mRemoteNG.App ConsParam = "c"; } - string ResetPosParam = ""; + var ResetPosParam = ""; if (cmd["resetpos"] != null) { ResetPosParam = "resetpos"; @@ -266,7 +264,7 @@ namespace mRemoteNG.App ResetPosParam = "rp"; } - string ResetPanelsParam = ""; + var ResetPanelsParam = ""; if (cmd["resetpanels"] != null) { ResetPanelsParam = "resetpanels"; @@ -276,7 +274,7 @@ namespace mRemoteNG.App ResetPanelsParam = "rpnl"; } - string ResetToolbarsParam = ""; + var ResetToolbarsParam = ""; if (cmd["resettoolbar"] != null) { ResetToolbarsParam = "resettoolbar"; @@ -293,7 +291,7 @@ namespace mRemoteNG.App ResetToolbarsParam = "rtbr"; } - string NoReconnectParam = ""; + var NoReconnectParam = ""; if (cmd["noreconnect"] != null) { NoReconnectParam = "noreconnect"; diff --git a/mRemoteV1/Config/Serializers/ActiveDirectoryDeserializer.cs b/mRemoteV1/Config/Serializers/ActiveDirectoryDeserializer.cs index f98beb5f2..c8835c92d 100644 --- a/mRemoteV1/Config/Serializers/ActiveDirectoryDeserializer.cs +++ b/mRemoteV1/Config/Serializers/ActiveDirectoryDeserializer.cs @@ -66,7 +66,7 @@ namespace mRemoteNG.Config.Serializers // check/continue here so we don't create empty connection objects if(!_importSubOU) continue; - ActiveDirectoryImporter.Import(ldapResult.Path, parentContainer); + ActiveDirectoryImporter.Import(ldapResult.Path, parentContainer, _importSubOU); continue; } diff --git a/mRemoteV1/Resources/Help/QuickConnect.htm b/mRemoteV1/Resources/Help/QuickConnect.htm index 943e82e9a..3f784d495 100644 --- a/mRemoteV1/Resources/Help/QuickConnect.htm +++ b/mRemoteV1/Resources/Help/QuickConnect.htm @@ -1,13 +1,60 @@ - - - - Quick Connect - - - - -

- Sorry, not yet...

- - + + + + Quick Connect + + + + +

+ The Quick Connect functionality of mRemoteNG allows you to quickly connect to a remote host using a variety of network protocols. +

+ +

+ Use Cases +

+ +

+ The primary use case for Quick Connect is to connect to remote hosts when you already remember the DNS hostname/IP address and the appropriate protocol for the connection. +
+
+ An additional use case is to connect to remote hosts saved as a connection quickly. +

+ +

+ Prerequisites +

+ + +

OR

+ + +

+ Using QuickConnect +

+ +

+ To use Quick Connect, ensure the Quick Connect toolbar is enabled by selecting View and then Quick Connect Toolbar. +
+ Next, input a DNS host name or IP address into the box labeled "Connect". This box will also save previous entries during your session. +
+ Quick Connect Toolbar +
+
+ Quick Connect Toolbar +
+
+ Select the appropriate network protocol by clicking the arrow next to the Connect box. +
+ Quick Connect Toolbar +
+
+ If you wish to use an existing connection, select the globe icon next to the protocol button and select the appropriate connection. +

+ \ No newline at end of file diff --git a/mRemoteV1/Resources/Help/Screenshots/Quick Connect/01.png b/mRemoteV1/Resources/Help/Screenshots/Quick Connect/01.png new file mode 100644 index 000000000..3fa15b94d Binary files /dev/null and b/mRemoteV1/Resources/Help/Screenshots/Quick Connect/01.png differ diff --git a/mRemoteV1/Resources/Help/Screenshots/Quick Connect/02.png b/mRemoteV1/Resources/Help/Screenshots/Quick Connect/02.png new file mode 100644 index 000000000..897788fd6 Binary files /dev/null and b/mRemoteV1/Resources/Help/Screenshots/Quick Connect/02.png differ diff --git a/mRemoteV1/Resources/Help/Screenshots/Quick Connect/03.png b/mRemoteV1/Resources/Help/Screenshots/Quick Connect/03.png new file mode 100644 index 000000000..2d662fd52 Binary files /dev/null and b/mRemoteV1/Resources/Help/Screenshots/Quick Connect/03.png differ diff --git a/mRemoteV1/Resources/Help/Screenshots/Quickconnect/01.png b/mRemoteV1/Resources/Help/Screenshots/Quickconnect/01.png new file mode 100644 index 000000000..3fa15b94d Binary files /dev/null and b/mRemoteV1/Resources/Help/Screenshots/Quickconnect/01.png differ diff --git a/mRemoteV1/Resources/Help/Screenshots/Quickconnect/02.png b/mRemoteV1/Resources/Help/Screenshots/Quickconnect/02.png new file mode 100644 index 000000000..897788fd6 Binary files /dev/null and b/mRemoteV1/Resources/Help/Screenshots/Quickconnect/02.png differ diff --git a/mRemoteV1/Resources/Help/Screenshots/Quickconnect/03.png b/mRemoteV1/Resources/Help/Screenshots/Quickconnect/03.png new file mode 100644 index 000000000..2d662fd52 Binary files /dev/null and b/mRemoteV1/Resources/Help/Screenshots/Quickconnect/03.png differ diff --git a/mRemoteV1/UI/Window/ActiveDirectoryImportWindow.Designer.cs b/mRemoteV1/UI/Window/ActiveDirectoryImportWindow.Designer.cs index 1713a9584..b842e70c6 100644 --- a/mRemoteV1/UI/Window/ActiveDirectoryImportWindow.Designer.cs +++ b/mRemoteV1/UI/Window/ActiveDirectoryImportWindow.Designer.cs @@ -64,9 +64,9 @@ namespace mRemoteNG.UI.Window | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.ActiveDirectoryTree.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.ActiveDirectoryTree.Domain = "tant-a01"; + this.ActiveDirectoryTree.Domain = "DOMAIN"; this.ActiveDirectoryTree.Location = new System.Drawing.Point(12, 52); - this.ActiveDirectoryTree.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.ActiveDirectoryTree.Margin = new System.Windows.Forms.Padding(4); this.ActiveDirectoryTree.Name = "ActiveDirectoryTree"; this.ActiveDirectoryTree.SelectedNode = null; this.ActiveDirectoryTree.Size = new System.Drawing.Size(506, 280); diff --git a/mRemoteV1/UI/Window/ActiveDirectoryImportWindow.cs b/mRemoteV1/UI/Window/ActiveDirectoryImportWindow.cs index f97dc9534..373806c54 100644 --- a/mRemoteV1/UI/Window/ActiveDirectoryImportWindow.cs +++ b/mRemoteV1/UI/Window/ActiveDirectoryImportWindow.cs @@ -8,81 +8,96 @@ using mRemoteNG.Container; namespace mRemoteNG.UI.Window { - public partial class ActiveDirectoryImportWindow - { + public partial class ActiveDirectoryImportWindow + { + private string CurrentDomain; + #region Constructors - public ActiveDirectoryImportWindow(DockContent panel) - { - InitializeComponent(); - Runtime.FontOverride(this); - WindowType = WindowType.ActiveDirectoryImport; - DockPnl = panel; - } + + public ActiveDirectoryImportWindow(DockContent panel) + { + InitializeComponent(); + Runtime.FontOverride(this); + WindowType = WindowType.ActiveDirectoryImport; + DockPnl = panel; + CurrentDomain = Environment.UserDomainName; + } + #endregion - + #region Private Methods + #region Event Handlers - private void ADImport_Load(object sender, EventArgs e) - { - ApplyLanguage(); - txtDomain.Text = ActiveDirectoryTree.Domain; - EnableDisableImportButton(); - } + private void ADImport_Load(object sender, EventArgs e) + { + ApplyLanguage(); + txtDomain.Text = CurrentDomain; + ActiveDirectoryTree.Domain = CurrentDomain; + EnableDisableImportButton(); + + // Domain doesn't refresh on load, so it defaults to DOMAIN without this... + ChangeDomain(); + } - private void btnImport_Click(object sender, EventArgs e) - { - var selectedNode = Windows.TreeForm.SelectedNode; - ContainerInfo importDestination; - if (selectedNode != null) - importDestination = selectedNode as ContainerInfo ?? selectedNode.Parent; - else - importDestination = Runtime.ConnectionTreeModel.RootNodes.First(); + private void btnImport_Click(object sender, EventArgs e) + { + var selectedNode = Windows.TreeForm.SelectedNode; + ContainerInfo importDestination; + if (selectedNode != null) + importDestination = selectedNode as ContainerInfo ?? selectedNode.Parent; + else + importDestination = Runtime.ConnectionTreeModel.RootNodes.First(); - Import.ImportFromActiveDirectory(ActiveDirectoryTree.ADPath, importDestination, chkSubOU.Checked); - } + Import.ImportFromActiveDirectory(ActiveDirectoryTree.ADPath, importDestination, chkSubOU.Checked); + } + /* private static void txtDomain_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e) { if (e.KeyCode == Keys.Enter) e.IsInputKey = true; } + */ - private void txtDomain_KeyDown(object sender, KeyEventArgs e) - { - if (e.KeyCode != Keys.Enter) return; - ChangeDomain(); - e.SuppressKeyPress = true; - } + private void txtDomain_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode != Keys.Enter) return; + ChangeDomain(); + e.SuppressKeyPress = true; + } - private void btnChangeDomain_Click(object sender, EventArgs e) - { - ChangeDomain(); - } + private void btnChangeDomain_Click(object sender, EventArgs e) + { + ChangeDomain(); + } + + private void ActiveDirectoryTree_ADPathChanged(object sender) + { + EnableDisableImportButton(); + } - private void ActiveDirectoryTree_ADPathChanged(object sender) - { - EnableDisableImportButton(); - } #endregion - - private void ApplyLanguage() - { - btnImport.Text = Language.strButtonImport; - lblDomain.Text = Language.strLabelDomain; - btnChangeDomain.Text = Language.strButtonChange; - } - - private void ChangeDomain() - { - ActiveDirectoryTree.Domain = txtDomain.Text; - ActiveDirectoryTree.Refresh(); - } - - private void EnableDisableImportButton() - { - btnImport.Enabled = !string.IsNullOrEmpty(ActiveDirectoryTree.ADPath); - } + + private void ApplyLanguage() + { + btnImport.Text = Language.strButtonImport; + lblDomain.Text = Language.strLabelDomain; + btnChangeDomain.Text = Language.strButtonChange; + } + + private void ChangeDomain() + { + CurrentDomain = txtDomain.Text; + ActiveDirectoryTree.Domain = CurrentDomain; + ActiveDirectoryTree.Refresh(); + } + + private void EnableDisableImportButton() + { + btnImport.Enabled = !string.IsNullOrEmpty(ActiveDirectoryTree.ADPath); + } + #endregion private void btnClose_Click(object sender, EventArgs e) diff --git a/mRemoteV1/mRemoteV1.csproj b/mRemoteV1/mRemoteV1.csproj index 65fb2a1b5..66c7866f5 100644 --- a/mRemoteV1/mRemoteV1.csproj +++ b/mRemoteV1/mRemoteV1.csproj @@ -763,6 +763,15 @@ PreserveNewest + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + PreserveNewest