Merge remote-tracking branch 'origin/v1.78.2-dev' into feature/VaultOpenbao-Connector

# Conflicts:
#	mRemoteNG/Language/Language.resx
This commit is contained in:
massimo.antonello
2025-10-17 14:58:16 +02:00
51 changed files with 754 additions and 302 deletions

View File

@@ -5,8 +5,8 @@
<NoWarn>$(NoWarn);NU1507</NoWarn>
</PropertyGroup>
<ItemGroup>
<PackageVersion Include="AWSSDK.Core" Version="4.0.1" />
<PackageVersion Include="AWSSDK.EC2" Version="4.0.42" />
<PackageVersion Include="AWSSDK.Core" Version="4.0.1.1" />
<PackageVersion Include="AWSSDK.EC2" Version="4.0.43.1" />
<PackageVersion Include="BouncyCastle.Cryptography" Version="2.6.2" />
<PackageVersion Include="Castle.Core" Version="5.2.1" />
<PackageVersion Include="ConsoleControl" Version="1.3.0" />
@@ -17,7 +17,7 @@
<PackageVersion Include="DockPanelSuite.ThemeVS2015" Version="3.1.1" />
<PackageVersion Include="envdte" Version="17.14.40260" />
<PackageVersion Include="Gherkin" Version="36.0.0" />
<PackageVersion Include="Google.Protobuf" Version="3.32.1" />
<PackageVersion Include="Google.Protobuf" Version="3.33.0" />
<PackageVersion Include="LiteDB" Version="5.0.21" />
<PackageVersion Include="log4net" Version="3.2.0" />
<PackageVersion Include="Microsoft.Data.SqlClient" Version="6.1.2" />

View File

@@ -15,7 +15,9 @@ namespace mRemoteNG.App.Info
{
public const string UrlHome = "https://mremoteng.org";
public const string UrlDonate = "https://mremoteng.org/contribute";
public const string UrlForum = "https://www.reddit.com/r/mRemoteNG";
public const string UrlForum = "https://github.com/orgs/mRemoteNG/discussions";
public const string UrlChat = "https://app.element.io/#/room/#mremoteng:matrix.org";
public const string UrlCommunity = "https://www.reddit.com/r/mRemoteNG";
public const string UrlBugs = "https://github.com/mRemoteNG/mRemoteNG/issues/new";
public const string UrlDocumentation = "https://mremoteng.readthedocs.io/en/latest/";
public static readonly string ApplicationVersion = Application.ProductVersion;

View File

@@ -29,7 +29,7 @@ namespace mRemoteNG.Config.Serializers.ConnectionSerializers.Xml
private XAttribute CreateProtectedAttribute(RootNodeInfo rootNodeInfo, ICryptographyProvider cryptographyProvider)
{
XAttribute attribute = new(XName.Get("Protected"), "");
string plainText = rootNodeInfo.Password ? "ThisIsProtected" : "ThisIsNotProtected";
string plainText = (rootNodeInfo.PasswordString != rootNodeInfo.DefaultPassword) ? "ThisIsProtected" : "ThisIsNotProtected";
System.Security.SecureString encryptionPassword = rootNodeInfo.PasswordString.ConvertToSecureString();
attribute.Value = cryptographyProvider.Encrypt(plainText, encryptionPassword);
return attribute;

View File

@@ -320,7 +320,8 @@ namespace mRemoteNG.Connection
ConnectionWindow connectionForm = conForm ?? Runtime.WindowList.FromString(connectionPanel) as ConnectionWindow;
if (connectionForm == null)
connectionForm = _panelAdder.AddPanel(connectionPanel);
// Don't show the panel immediately - it will be shown when first tab is added
connectionForm = _panelAdder.AddPanel(connectionPanel, showImmediately: false);
else
connectionForm.Show(FrmMain.Default.pnlDock);

View File

@@ -213,15 +213,6 @@ namespace mRemoteNG.Resources.Language {
}
}
/// <summary>
/// Looks up a localized string similar to About.
/// </summary>
internal static string About {
get {
return ResourceManager.GetString("About", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Hidden.
/// </summary>
@@ -735,15 +726,6 @@ namespace mRemoteNG.Resources.Language {
}
}
/// <summary>
/// Looks up a localized string similar to Check for Updates.
/// </summary>
internal static string CheckForUpdates {
get {
return ResourceManager.GetString("CheckForUpdates", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Check for updates at startup.
/// </summary>
@@ -1708,15 +1690,6 @@ namespace mRemoteNG.Resources.Language {
}
}
/// <summary>
/// Looks up a localized string similar to Donate.
/// </summary>
internal static string Donate {
get {
return ResourceManager.GetString("Donate", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Do not play.
/// </summary>
@@ -2585,15 +2558,6 @@ namespace mRemoteNG.Resources.Language {
}
}
/// <summary>
/// Looks up a localized string similar to mRemoteNG Help.
/// </summary>
internal static string HelpContents {
get {
return ResourceManager.GetString("HelpContents", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to High.
/// </summary>
@@ -3116,6 +3080,87 @@ namespace mRemoteNG.Resources.Language {
}
}
/// <summary>
/// Looks up a localized string similar to About.
/// </summary>
internal static string MenuItem_About {
get {
return ResourceManager.GetString("MenuItem_About", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to mR Chat.
/// </summary>
internal static string MenuItem_Chat {
get {
return ResourceManager.GetString("MenuItem_Chat", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Check for Updates.
/// </summary>
internal static string MenuItem_CheckForUpdates {
get {
return ResourceManager.GetString("MenuItem_CheckForUpdates", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Community.
/// </summary>
internal static string MenuItem_Community {
get {
return ResourceManager.GetString("MenuItem_Community", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Donate.
/// </summary>
internal static string MenuItem_Donate {
get {
return ResourceManager.GetString("MenuItem_Donate", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to mRemoteNG Help.
/// </summary>
internal static string MenuItem_HelpContents {
get {
return ResourceManager.GetString("MenuItem_HelpContents", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Report an Issue.
/// </summary>
internal static string MenuItem_ReportIssue {
get {
return ResourceManager.GetString("MenuItem_ReportIssue", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Support Forum.
/// </summary>
internal static string MenuItem_SupportForum {
get {
return ResourceManager.GetString("MenuItem_SupportForum", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Website.
/// </summary>
internal static string MenuItem_Website {
get {
return ResourceManager.GetString("MenuItem_Website", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Message.
/// </summary>
@@ -5640,15 +5685,6 @@ namespace mRemoteNG.Resources.Language {
}
}
/// <summary>
/// Looks up a localized string similar to Report a Bug.
/// </summary>
internal static string ReportBug {
get {
return ResourceManager.GetString("ReportBug", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Reset layout.
/// </summary>
@@ -5739,6 +5775,24 @@ namespace mRemoteNG.Resources.Language {
}
}
/// <summary>
/// Looks up a localized string similar to Do you want to save the changes made to the options?.
/// </summary>
internal static string SaveOptionsBeforeClosing {
get {
return ResourceManager.GetString("SaveOptionsBeforeClosing", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Discard.
/// </summary>
internal static string Discard {
get {
return ResourceManager.GetString("Discard", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to SaveConnectionsOnExit.
/// </summary>
@@ -6315,15 +6369,6 @@ namespace mRemoteNG.Resources.Language {
}
}
/// <summary>
/// Looks up a localized string similar to Support Forum.
/// </summary>
internal static string SupportForum {
get {
return ResourceManager.GetString("SupportForum", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Switch to Notifications panel on:.
/// </summary>
@@ -7108,15 +7153,6 @@ namespace mRemoteNG.Resources.Language {
}
}
/// <summary>
/// Looks up a localized string similar to Website.
/// </summary>
internal static string Website {
get {
return ResourceManager.GetString("Website", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to WebView2InitializationFailed.
/// </summary>

View File

@@ -117,7 +117,7 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="About" xml:space="preserve">
<data name="MenuItem_About" xml:space="preserve">
<value>O Aplikaci</value>
</data>
<data name="ActiveDirectory" xml:space="preserve">
@@ -712,7 +712,7 @@ Otevírám nový prázdný soubor seznamu spojení.</value>
<data name="AddConnectionPanel" xml:space="preserve">
<value>Nový panel spojení</value>
</data>
<data name="CheckForUpdates" xml:space="preserve">
<data name="MenuItem_CheckForUpdates" xml:space="preserve">
<value>Vyhledat aktualizace</value>
</data>
<data name="Config" xml:space="preserve">
@@ -733,7 +733,7 @@ Otevírám nový prázdný soubor seznamu spojení.</value>
<data name="DeleteExternalTool" xml:space="preserve">
<value>Smazat vnější nástroj...</value>
</data>
<data name="Donate" xml:space="preserve">
<data name="MenuItem_Donate" xml:space="preserve">
<value>Přispějte</value>
</data>
<data name="DuplicateTab" xml:space="preserve">
@@ -751,7 +751,7 @@ Otevírám nový prázdný soubor seznamu spojení.</value>
<data name="_Help" xml:space="preserve">
<value>&amp;Nápověda</value>
</data>
<data name="HelpContents" xml:space="preserve">
<data name="MenuItem_HelpContents" xml:space="preserve">
<value>Nápověda mRemoteNG</value>
</data>
<data name="LaunchExternalTool" xml:space="preserve">
@@ -793,7 +793,7 @@ Otevírám nový prázdný soubor seznamu spojení.</value>
<data name="RenameTab" xml:space="preserve">
<value>Přejmonovat záložku tabu</value>
</data>
<data name="ReportBug" xml:space="preserve">
<data name="MenuItem_ReportIssue" xml:space="preserve">
<value>Nahlásit chybu</value>
</data>
<data name="ResetLayout" xml:space="preserve">
@@ -823,7 +823,7 @@ Otevírám nový prázdný soubor seznamu spojení.</value>
<data name="StartChat" xml:space="preserve">
<value>Spustit (VNC) chat</value>
</data>
<data name="SupportForum" xml:space="preserve">
<data name="MenuItem_SupportForum" xml:space="preserve">
<value>Diskuzní fórum podpory</value>
</data>
<data name="_Tools" xml:space="preserve">
@@ -838,7 +838,7 @@ Otevírám nový prázdný soubor seznamu spojení.</value>
<data name="ViewOnly" xml:space="preserve">
<value>Pouze prohlížet (VNC)</value>
</data>
<data name="Website" xml:space="preserve">
<data name="MenuItem_Website" xml:space="preserve">
<value>Webová stránka</value>
</data>
<data name="MinimizeToSysTray" xml:space="preserve">

View File

@@ -117,7 +117,7 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="About" xml:space="preserve">
<data name="MenuItem_About" xml:space="preserve">
<value>Über</value>
</data>
<data name="AddNodeFromXmlFailed" xml:space="preserve">
@@ -698,7 +698,7 @@ Starte mit neuer Datei.</value>
<data name="AddConnectionPanel" xml:space="preserve">
<value>Verbindungs-Panel hinzufügen</value>
</data>
<data name="CheckForUpdates" xml:space="preserve">
<data name="MenuItem_CheckForUpdates" xml:space="preserve">
<value>Suche nach Updates</value>
</data>
<data name="Config" xml:space="preserve">
@@ -719,7 +719,7 @@ Starte mit neuer Datei.</value>
<data name="DeleteExternalTool" xml:space="preserve">
<value>Entfernen</value>
</data>
<data name="Donate" xml:space="preserve">
<data name="MenuItem_Donate" xml:space="preserve">
<value>Spenden</value>
</data>
<data name="DuplicateTab" xml:space="preserve">
@@ -737,7 +737,7 @@ Starte mit neuer Datei.</value>
<data name="_Help" xml:space="preserve">
<value>&amp;Hilfe</value>
</data>
<data name="HelpContents" xml:space="preserve">
<data name="MenuItem_HelpContents" xml:space="preserve">
<value>Hilfe</value>
</data>
<data name="LaunchExternalTool" xml:space="preserve">
@@ -779,7 +779,7 @@ Starte mit neuer Datei.</value>
<data name="RenameTab" xml:space="preserve">
<value>Tab umbenennen</value>
</data>
<data name="ReportBug" xml:space="preserve">
<data name="MenuItem_ReportIssue" xml:space="preserve">
<value>Fehler melden</value>
</data>
<data name="ResetLayout" xml:space="preserve">
@@ -809,7 +809,7 @@ Starte mit neuer Datei.</value>
<data name="StartChat" xml:space="preserve">
<value>Chat starten (VNC)</value>
</data>
<data name="SupportForum" xml:space="preserve">
<data name="MenuItem_SupportForum" xml:space="preserve">
<value>Forum</value>
</data>
<data name="_Tools" xml:space="preserve">
@@ -824,7 +824,7 @@ Starte mit neuer Datei.</value>
<data name="ViewOnly" xml:space="preserve">
<value>View-Only-Modus</value>
</data>
<data name="Website" xml:space="preserve">
<data name="MenuItem_Website" xml:space="preserve">
<value>Webseite</value>
</data>
<data name="MinimizeToSysTray" xml:space="preserve">

View File

@@ -117,7 +117,7 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="About" xml:space="preserve">
<data name="MenuItem_About" xml:space="preserve">
<value>Σχετικά με</value>
</data>
<data name="AddNodeFromXmlFailed" xml:space="preserve">

View File

@@ -117,7 +117,7 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="About" xml:space="preserve">
<data name="MenuItem_About" xml:space="preserve">
<value>Acerca de</value>
</data>
<data name="AddNodeFromXmlFailed" xml:space="preserve">
@@ -625,7 +625,7 @@ Arrancando con un nuevo archivo de conexiones.</value>
<data name="AddConnectionPanel" xml:space="preserve">
<value>Agregar Panel de Conexión</value>
</data>
<data name="CheckForUpdates" xml:space="preserve">
<data name="MenuItem_CheckForUpdates" xml:space="preserve">
<value>Comprobar Actualizaciones</value>
</data>
<data name="Config" xml:space="preserve">
@@ -646,7 +646,7 @@ Arrancando con un nuevo archivo de conexiones.</value>
<data name="DeleteExternalTool" xml:space="preserve">
<value>Borrar Herramienta Externa...</value>
</data>
<data name="Donate" xml:space="preserve">
<data name="MenuItem_Donate" xml:space="preserve">
<value>Donar</value>
</data>
<data name="DuplicateTab" xml:space="preserve">
@@ -664,7 +664,7 @@ Arrancando con un nuevo archivo de conexiones.</value>
<data name="_Help" xml:space="preserve">
<value>&amp;Ayuda</value>
</data>
<data name="HelpContents" xml:space="preserve">
<data name="MenuItem_HelpContents" xml:space="preserve">
<value>Ayuda de mRemoteNG</value>
</data>
<data name="LaunchExternalTool" xml:space="preserve">
@@ -706,7 +706,7 @@ Arrancando con un nuevo archivo de conexiones.</value>
<data name="RenameTab" xml:space="preserve">
<value>Renombrar Pestaña</value>
</data>
<data name="ReportBug" xml:space="preserve">
<data name="MenuItem_ReportIssue" xml:space="preserve">
<value>Informar de un Bug</value>
</data>
<data name="ResetLayout" xml:space="preserve">
@@ -736,7 +736,7 @@ Arrancando con un nuevo archivo de conexiones.</value>
<data name="StartChat" xml:space="preserve">
<value>Comenzar Chat (VNC)</value>
</data>
<data name="SupportForum" xml:space="preserve">
<data name="MenuItem_SupportForum" xml:space="preserve">
<value>Foro de Soporte</value>
</data>
<data name="_Tools" xml:space="preserve">
@@ -751,7 +751,7 @@ Arrancando con un nuevo archivo de conexiones.</value>
<data name="ViewOnly" xml:space="preserve">
<value>Solo Ver (VNC)</value>
</data>
<data name="Website" xml:space="preserve">
<data name="MenuItem_Website" xml:space="preserve">
<value>Sitio Web</value>
</data>
<data name="MinimizeToSysTray" xml:space="preserve">

View File

@@ -117,7 +117,7 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="About" xml:space="preserve">
<data name="MenuItem_About" xml:space="preserve">
<value>À propos</value>
</data>
<data name="ActiveDirectory" xml:space="preserve">
@@ -719,7 +719,7 @@ Voir l'article de support Microsoft http://support.microsoft.com/kb/811833 pour
<data name="AddConnectionPanel" xml:space="preserve">
<value>Ajouter un panneau de connexion</value>
</data>
<data name="CheckForUpdates" xml:space="preserve">
<data name="MenuItem_CheckForUpdates" xml:space="preserve">
<value>Rechercher les mises à jour</value>
</data>
<data name="Config" xml:space="preserve">
@@ -740,7 +740,7 @@ Voir l'article de support Microsoft http://support.microsoft.com/kb/811833 pour
<data name="DeleteExternalTool" xml:space="preserve">
<value>Supprimer l'outil externe...</value>
</data>
<data name="Donate" xml:space="preserve">
<data name="MenuItem_Donate" xml:space="preserve">
<value>Faire un don</value>
</data>
<data name="DuplicateTab" xml:space="preserve">
@@ -758,7 +758,7 @@ Voir l'article de support Microsoft http://support.microsoft.com/kb/811833 pour
<data name="_Help" xml:space="preserve">
<value>&amp;Aide</value>
</data>
<data name="HelpContents" xml:space="preserve">
<data name="MenuItem_HelpContents" xml:space="preserve">
<value>Aide mRemoteNG</value>
</data>
<data name="LaunchExternalTool" xml:space="preserve">
@@ -800,7 +800,7 @@ Voir l'article de support Microsoft http://support.microsoft.com/kb/811833 pour
<data name="RenameTab" xml:space="preserve">
<value>Renommer l'onglet</value>
</data>
<data name="ReportBug" xml:space="preserve">
<data name="MenuItem_ReportIssue" xml:space="preserve">
<value>Signaler un bug</value>
</data>
<data name="ResetLayout" xml:space="preserve">
@@ -830,7 +830,7 @@ Voir l'article de support Microsoft http://support.microsoft.com/kb/811833 pour
<data name="StartChat" xml:space="preserve">
<value>Démarrer le chat (VNC)</value>
</data>
<data name="SupportForum" xml:space="preserve">
<data name="MenuItem_SupportForum" xml:space="preserve">
<value>Forum du support</value>
</data>
<data name="_Tools" xml:space="preserve">
@@ -845,7 +845,7 @@ Voir l'article de support Microsoft http://support.microsoft.com/kb/811833 pour
<data name="ViewOnly" xml:space="preserve">
<value>Voir seulement (VNC)</value>
</data>
<data name="Website" xml:space="preserve">
<data name="MenuItem_Website" xml:space="preserve">
<value>Site web</value>
</data>
<data name="MinimizeToSysTray" xml:space="preserve">

View File

@@ -117,7 +117,7 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="About" xml:space="preserve">
<data name="MenuItem_About" xml:space="preserve">
<value>Névjegy</value>
</data>
<data name="Always" xml:space="preserve">
@@ -267,7 +267,7 @@
<data name="LanguageDefault" xml:space="preserve">
<value>(Automatikus észlelés)</value>
</data>
<data name="CheckForUpdates" xml:space="preserve">
<data name="MenuItem_CheckForUpdates" xml:space="preserve">
<value>Frissítés keresése</value>
</data>
<data name="LaunchExternalTool" xml:space="preserve">
@@ -294,7 +294,7 @@
<data name="RenameTab" xml:space="preserve">
<value>Fül átnevezése</value>
</data>
<data name="ReportBug" xml:space="preserve">
<data name="MenuItem_ReportIssue" xml:space="preserve">
<value>Hibabejelentés</value>
</data>
<data name="ResetLayout" xml:space="preserve">
@@ -306,7 +306,7 @@
<data name="SaveConnectionFileAs" xml:space="preserve">
<value>Kapcsolatfájl mentése, mint...</value>
</data>
<data name="Website" xml:space="preserve">
<data name="MenuItem_Website" xml:space="preserve">
<value>Honlap</value>
</data>
<data name="Never" xml:space="preserve">

View File

@@ -117,7 +117,7 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="About" xml:space="preserve">
<data name="MenuItem_About" xml:space="preserve">
<value>Informazioni su</value>
</data>
<data name="AddNodeFromXmlFailed" xml:space="preserve">
@@ -622,7 +622,7 @@ Creazione di un nuovo file delle connessioni.</value>
<data name="AddConnectionPanel" xml:space="preserve">
<value>Aggiungi pannello delle connessioni</value>
</data>
<data name="CheckForUpdates" xml:space="preserve">
<data name="MenuItem_CheckForUpdates" xml:space="preserve">
<value>Verifica la presenza di aggiornamenti</value>
</data>
<data name="Config" xml:space="preserve">
@@ -643,7 +643,7 @@ Creazione di un nuovo file delle connessioni.</value>
<data name="DeleteExternalTool" xml:space="preserve">
<value>Elimina applicazione esterna...</value>
</data>
<data name="Donate" xml:space="preserve">
<data name="MenuItem_Donate" xml:space="preserve">
<value>Effettua una donazione</value>
</data>
<data name="DuplicateTab" xml:space="preserve">
@@ -661,7 +661,7 @@ Creazione di un nuovo file delle connessioni.</value>
<data name="_Help" xml:space="preserve">
<value>&amp;Aiuto</value>
</data>
<data name="HelpContents" xml:space="preserve">
<data name="MenuItem_HelpContents" xml:space="preserve">
<value>Guida di mRemoteNG</value>
</data>
<data name="LaunchExternalTool" xml:space="preserve">
@@ -703,7 +703,7 @@ Creazione di un nuovo file delle connessioni.</value>
<data name="RenameTab" xml:space="preserve">
<value>Rinomina tab</value>
</data>
<data name="ReportBug" xml:space="preserve">
<data name="MenuItem_ReportIssue" xml:space="preserve">
<value>Segnala un bug</value>
</data>
<data name="ResetLayout" xml:space="preserve">
@@ -733,7 +733,7 @@ Creazione di un nuovo file delle connessioni.</value>
<data name="StartChat" xml:space="preserve">
<value>Avvia chat (VNC)</value>
</data>
<data name="SupportForum" xml:space="preserve">
<data name="MenuItem_SupportForum" xml:space="preserve">
<value>Forum di supporto</value>
</data>
<data name="_Tools" xml:space="preserve">
@@ -748,7 +748,7 @@ Creazione di un nuovo file delle connessioni.</value>
<data name="ViewOnly" xml:space="preserve">
<value>Visualizza soltanto (VNC)</value>
</data>
<data name="Website" xml:space="preserve">
<data name="MenuItem_Website" xml:space="preserve">
<value>Sito web</value>
</data>
<data name="MinimizeToSysTray" xml:space="preserve">

View File

@@ -117,7 +117,7 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="About" xml:space="preserve">
<data name="MenuItem_About" xml:space="preserve">
<value>mRemoteNGについて</value>
</data>
<data name="ActiveDirectory" xml:space="preserve">
@@ -723,7 +723,7 @@ Starting with new connections file.</value>
<data name="AddConnectionPanel" xml:space="preserve">
<value>接続表示パネルの追加</value>
</data>
<data name="CheckForUpdates" xml:space="preserve">
<data name="MenuItem_CheckForUpdates" xml:space="preserve">
<value>最新バージョンをチェック</value>
</data>
<data name="Config" xml:space="preserve">
@@ -744,7 +744,7 @@ Starting with new connections file.</value>
<data name="DeleteExternalTool" xml:space="preserve">
<value>外部ツールを削除...</value>
</data>
<data name="Donate" xml:space="preserve">
<data name="MenuItem_Donate" xml:space="preserve">
<value>寄付のお願い</value>
</data>
<data name="DuplicateTab" xml:space="preserve">
@@ -762,7 +762,7 @@ Starting with new connections file.</value>
<data name="_Help" xml:space="preserve">
<value>ヘルプ(&amp;H)</value>
</data>
<data name="HelpContents" xml:space="preserve">
<data name="MenuItem_HelpContents" xml:space="preserve">
<value>mRemoteNGヘルプ</value>
</data>
<data name="LaunchExternalTool" xml:space="preserve">
@@ -804,7 +804,7 @@ Starting with new connections file.</value>
<data name="RenameTab" xml:space="preserve">
<value>タブ名を変更</value>
</data>
<data name="ReportBug" xml:space="preserve">
<data name="MenuItem_ReportIssue" xml:space="preserve">
<value>バグを報告する</value>
</data>
<data name="ResetLayout" xml:space="preserve">
@@ -835,7 +835,7 @@ Starting with new connections file.</value>
<data name="StartChat" xml:space="preserve">
<value>Start Chat (VNC)</value>
</data>
<data name="SupportForum" xml:space="preserve">
<data name="MenuItem_SupportForum" xml:space="preserve">
<value>サポートフォーラム</value>
</data>
<data name="_Tools" xml:space="preserve">
@@ -850,7 +850,7 @@ Starting with new connections file.</value>
<data name="ViewOnly" xml:space="preserve">
<value>View Only (VNC)</value>
</data>
<data name="Website" xml:space="preserve">
<data name="MenuItem_Website" xml:space="preserve">
<value>ウェブサイト(英語)</value>
</data>
<data name="MinimizeToSysTray" xml:space="preserve">

View File

@@ -117,7 +117,7 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="About" xml:space="preserve">
<data name="MenuItem_About" xml:space="preserve">
<value>mRemoteNG 정보</value>
</data>
<data name="ActiveDirectory" xml:space="preserve">
@@ -712,7 +712,7 @@
<data name="AddConnectionPanel" xml:space="preserve">
<value>연결 패널 추가</value>
</data>
<data name="CheckForUpdates" xml:space="preserve">
<data name="MenuItem_CheckForUpdates" xml:space="preserve">
<value>업데이트 확인</value>
</data>
<data name="Config" xml:space="preserve">
@@ -733,7 +733,7 @@
<data name="DeleteExternalTool" xml:space="preserve">
<value>외부 도구를 삭제 ...</value>
</data>
<data name="Donate" xml:space="preserve">
<data name="MenuItem_Donate" xml:space="preserve">
<value>기부</value>
</data>
<data name="DuplicateTab" xml:space="preserve">
@@ -751,7 +751,7 @@
<data name="_Help" xml:space="preserve">
<value>도움말(&amp;H)</value>
</data>
<data name="HelpContents" xml:space="preserve">
<data name="MenuItem_HelpContents" xml:space="preserve">
<value>mRemoteNG 도움말</value>
</data>
<data name="LaunchExternalTool" xml:space="preserve">
@@ -793,7 +793,7 @@
<data name="RenameTab" xml:space="preserve">
<value>탭 이름 바꾸기</value>
</data>
<data name="ReportBug" xml:space="preserve">
<data name="MenuItem_ReportIssue" xml:space="preserve">
<value>버그 신고</value>
</data>
<data name="ResetLayout" xml:space="preserve">
@@ -823,7 +823,7 @@
<data name="StartChat" xml:space="preserve">
<value>채팅 시작 (VNC)</value>
</data>
<data name="SupportForum" xml:space="preserve">
<data name="MenuItem_SupportForum" xml:space="preserve">
<value>지원 포럼</value>
</data>
<data name="_Tools" xml:space="preserve">
@@ -838,7 +838,7 @@
<data name="ViewOnly" xml:space="preserve">
<value>보기 전용 (VNC)</value>
</data>
<data name="Website" xml:space="preserve">
<data name="MenuItem_Website" xml:space="preserve">
<value>웹 사이트</value>
</data>
<data name="MinimizeToSysTray" xml:space="preserve">

View File

@@ -117,7 +117,7 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="About" xml:space="preserve">
<data name="MenuItem_About" xml:space="preserve">
<value>Om</value>
</data>
<data name="AddNodeFromXmlFailed" xml:space="preserve">
@@ -708,7 +708,7 @@ Se Microsofts support-artikkel på http://support.microsoft.com/kb/811833 for me
<data name="AddConnectionPanel" xml:space="preserve">
<value>Legg til tilkoblingspanel</value>
</data>
<data name="CheckForUpdates" xml:space="preserve">
<data name="MenuItem_CheckForUpdates" xml:space="preserve">
<value>Se etter oppdateringer</value>
</data>
<data name="Config" xml:space="preserve">
@@ -729,7 +729,7 @@ Se Microsofts support-artikkel på http://support.microsoft.com/kb/811833 for me
<data name="DeleteExternalTool" xml:space="preserve">
<value>Slett eksternt verktøy...</value>
</data>
<data name="Donate" xml:space="preserve">
<data name="MenuItem_Donate" xml:space="preserve">
<value>Donér</value>
</data>
<data name="DuplicateTab" xml:space="preserve">
@@ -747,7 +747,7 @@ Se Microsofts support-artikkel på http://support.microsoft.com/kb/811833 for me
<data name="_Help" xml:space="preserve">
<value>&amp;Hjelp</value>
</data>
<data name="HelpContents" xml:space="preserve">
<data name="MenuItem_HelpContents" xml:space="preserve">
<value>mRemoteNG-hjelp</value>
</data>
<data name="LaunchExternalTool" xml:space="preserve">
@@ -789,7 +789,7 @@ Se Microsofts support-artikkel på http://support.microsoft.com/kb/811833 for me
<data name="RenameTab" xml:space="preserve">
<value>Gi nytt navn til fane</value>
</data>
<data name="ReportBug" xml:space="preserve">
<data name="MenuItem_ReportIssue" xml:space="preserve">
<value>Rapporter en feil</value>
</data>
<data name="ResetLayout" xml:space="preserve">
@@ -819,7 +819,7 @@ Se Microsofts support-artikkel på http://support.microsoft.com/kb/811833 for me
<data name="StartChat" xml:space="preserve">
<value>Start chat (VNC)</value>
</data>
<data name="SupportForum" xml:space="preserve">
<data name="MenuItem_SupportForum" xml:space="preserve">
<value>Forum for brukerstøtte</value>
</data>
<data name="_Tools" xml:space="preserve">
@@ -834,7 +834,7 @@ Se Microsofts support-artikkel på http://support.microsoft.com/kb/811833 for me
<data name="ViewOnly" xml:space="preserve">
<value>Kun visning (VNC)</value>
</data>
<data name="Website" xml:space="preserve">
<data name="MenuItem_Website" xml:space="preserve">
<value>Nettsted</value>
</data>
<data name="MinimizeToSysTray" xml:space="preserve">

View File

@@ -117,7 +117,7 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="About" xml:space="preserve">
<data name="MenuItem_About" xml:space="preserve">
<value>Over</value>
</data>
<data name="AddNodeFromXmlFailed" xml:space="preserve">
@@ -631,7 +631,7 @@ Beginnen met nieuwe Connectie bestand.</value>
<data name="AddConnectionPanel" xml:space="preserve">
<value>Voeg Connectie Paneel toe</value>
</data>
<data name="CheckForUpdates" xml:space="preserve">
<data name="MenuItem_CheckForUpdates" xml:space="preserve">
<value>Controleer voor beschikbare Updates</value>
</data>
<data name="Config" xml:space="preserve">
@@ -652,7 +652,7 @@ Beginnen met nieuwe Connectie bestand.</value>
<data name="DeleteExternalTool" xml:space="preserve">
<value>Verwijder Externe Applicatie...</value>
</data>
<data name="Donate" xml:space="preserve">
<data name="MenuItem_Donate" xml:space="preserve">
<value>Doneer</value>
</data>
<data name="DuplicateTab" xml:space="preserve">
@@ -670,7 +670,7 @@ Beginnen met nieuwe Connectie bestand.</value>
<data name="_Help" xml:space="preserve">
<value>&amp;Help</value>
</data>
<data name="HelpContents" xml:space="preserve">
<data name="MenuItem_HelpContents" xml:space="preserve">
<value>mRemoteNG Help</value>
</data>
<data name="LaunchExternalTool" xml:space="preserve">
@@ -712,7 +712,7 @@ Beginnen met nieuwe Connectie bestand.</value>
<data name="RenameTab" xml:space="preserve">
<value>Hernoem Tab</value>
</data>
<data name="ReportBug" xml:space="preserve">
<data name="MenuItem_ReportIssue" xml:space="preserve">
<value>Meld een bug</value>
</data>
<data name="ResetLayout" xml:space="preserve">
@@ -742,7 +742,7 @@ Beginnen met nieuwe Connectie bestand.</value>
<data name="StartChat" xml:space="preserve">
<value>Start Chat (VNC)</value>
</data>
<data name="SupportForum" xml:space="preserve">
<data name="MenuItem_SupportForum" xml:space="preserve">
<value>Ondersteunings Forum</value>
</data>
<data name="_Tools" xml:space="preserve">
@@ -757,7 +757,7 @@ Beginnen met nieuwe Connectie bestand.</value>
<data name="ViewOnly" xml:space="preserve">
<value>Alleen bekijken (VNC)</value>
</data>
<data name="Website" xml:space="preserve">
<data name="MenuItem_Website" xml:space="preserve">
<value>Website</value>
</data>
<data name="MinimizeToSysTray" xml:space="preserve">

View File

@@ -117,7 +117,7 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="About" xml:space="preserve">
<data name="MenuItem_About" xml:space="preserve">
<value>O programie</value>
</data>
<data name="ActiveDirectory" xml:space="preserve">
@@ -722,7 +722,7 @@ Więcj informacji w aktykule Wsparcia Windows na stronie https://support.microso
<data name="AddConnectionPanel" xml:space="preserve">
<value>Dodaj panel połączenia</value>
</data>
<data name="CheckForUpdates" xml:space="preserve">
<data name="MenuItem_CheckForUpdates" xml:space="preserve">
<value>Sprawdź aktualizacje</value>
</data>
<data name="Config" xml:space="preserve">
@@ -743,7 +743,7 @@ Więcj informacji w aktykule Wsparcia Windows na stronie https://support.microso
<data name="DeleteExternalTool" xml:space="preserve">
<value>Usuń zewnętrzne narzędzie...</value>
</data>
<data name="Donate" xml:space="preserve">
<data name="MenuItem_Donate" xml:space="preserve">
<value>Darowizna</value>
</data>
<data name="DuplicateTab" xml:space="preserve">
@@ -761,7 +761,7 @@ Więcj informacji w aktykule Wsparcia Windows na stronie https://support.microso
<data name="_Help" xml:space="preserve">
<value>&amp;Pomoc</value>
</data>
<data name="HelpContents" xml:space="preserve">
<data name="MenuItem_HelpContents" xml:space="preserve">
<value>Pomoc mRemoteNG</value>
</data>
<data name="LaunchExternalTool" xml:space="preserve">
@@ -803,7 +803,7 @@ Więcj informacji w aktykule Wsparcia Windows na stronie https://support.microso
<data name="RenameTab" xml:space="preserve">
<value>Zmień nazwę karty</value>
</data>
<data name="ReportBug" xml:space="preserve">
<data name="MenuItem_ReportIssue" xml:space="preserve">
<value>Zgłoś błąd</value>
</data>
<data name="ResetLayout" xml:space="preserve">
@@ -833,7 +833,7 @@ Więcj informacji w aktykule Wsparcia Windows na stronie https://support.microso
<data name="StartChat" xml:space="preserve">
<value>Rozpocznij Chat (VNC)</value>
</data>
<data name="SupportForum" xml:space="preserve">
<data name="MenuItem_SupportForum" xml:space="preserve">
<value>Forum pomocy</value>
</data>
<data name="_Tools" xml:space="preserve">
@@ -848,7 +848,7 @@ Więcj informacji w aktykule Wsparcia Windows na stronie https://support.microso
<data name="ViewOnly" xml:space="preserve">
<value>Tylko pogląd (VNC)</value>
</data>
<data name="Website" xml:space="preserve">
<data name="MenuItem_Website" xml:space="preserve">
<value>Strona WWW</value>
</data>
<data name="MinimizeToSysTray" xml:space="preserve">

View File

@@ -117,7 +117,7 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="About" xml:space="preserve">
<data name="MenuItem_About" xml:space="preserve">
<value>Sobre</value>
</data>
<data name="AddNodeFromXmlFailed" xml:space="preserve">

View File

@@ -117,7 +117,7 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="About" xml:space="preserve">
<data name="MenuItem_About" xml:space="preserve">
<value>Sobre</value>
</data>
<data name="AddNodeFromXmlFailed" xml:space="preserve">
@@ -627,7 +627,7 @@
<data name="AddConnectionPanel" xml:space="preserve">
<value>Adicionar o Painel de Ligação</value>
</data>
<data name="CheckForUpdates" xml:space="preserve">
<data name="MenuItem_CheckForUpdates" xml:space="preserve">
<value>Verificar se há atualizações</value>
</data>
<data name="Config" xml:space="preserve">
@@ -648,7 +648,7 @@
<data name="DeleteExternalTool" xml:space="preserve">
<value>Excluir ferramenta externa...</value>
</data>
<data name="Donate" xml:space="preserve">
<data name="MenuItem_Donate" xml:space="preserve">
<value>Doar</value>
</data>
<data name="DuplicateTab" xml:space="preserve">
@@ -666,7 +666,7 @@
<data name="_Help" xml:space="preserve">
<value>&amp;Ajuda</value>
</data>
<data name="HelpContents" xml:space="preserve">
<data name="MenuItem_HelpContents" xml:space="preserve">
<value>Ajuda mRemoteNG</value>
</data>
<data name="LaunchExternalTool" xml:space="preserve">
@@ -708,7 +708,7 @@
<data name="RenameTab" xml:space="preserve">
<value>Renomear aba</value>
</data>
<data name="ReportBug" xml:space="preserve">
<data name="MenuItem_ReportIssue" xml:space="preserve">
<value>Relatar um erro</value>
</data>
<data name="ResetLayout" xml:space="preserve">
@@ -735,7 +735,7 @@
<data name="StartChat" xml:space="preserve">
<value>Iniciar chat (VNC)</value>
</data>
<data name="SupportForum" xml:space="preserve">
<data name="MenuItem_SupportForum" xml:space="preserve">
<value>Fórum de suporte</value>
</data>
<data name="_Tools" xml:space="preserve">
@@ -750,7 +750,7 @@
<data name="ViewOnly" xml:space="preserve">
<value>Somente ver (VNC)</value>
</data>
<data name="Website" xml:space="preserve">
<data name="MenuItem_Website" xml:space="preserve">
<value>Sítio</value>
</data>
<data name="MinimizeToSysTray" xml:space="preserve">

View File

@@ -117,7 +117,7 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="About" xml:space="preserve">
<data name="MenuItem_About" xml:space="preserve">
<value>About</value>
</data>
<data name="ActiveDirectory" xml:space="preserve">
@@ -731,7 +731,7 @@ See the Microsoft Support article at http://support.microsoft.com/kb/811833 for
<data name="AddConnectionPanel" xml:space="preserve">
<value>Add Connection Panel</value>
</data>
<data name="CheckForUpdates" xml:space="preserve">
<data name="MenuItem_CheckForUpdates" xml:space="preserve">
<value>Check for Updates</value>
</data>
<data name="Config" xml:space="preserve">
@@ -752,7 +752,7 @@ See the Microsoft Support article at http://support.microsoft.com/kb/811833 for
<data name="DeleteExternalTool" xml:space="preserve">
<value>Delete External Tool...</value>
</data>
<data name="Donate" xml:space="preserve">
<data name="MenuItem_Donate" xml:space="preserve">
<value>Donate</value>
</data>
<data name="DuplicateTab" xml:space="preserve">
@@ -770,7 +770,7 @@ See the Microsoft Support article at http://support.microsoft.com/kb/811833 for
<data name="_Help" xml:space="preserve">
<value>&amp;Help</value>
</data>
<data name="HelpContents" xml:space="preserve">
<data name="MenuItem_HelpContents" xml:space="preserve">
<value>mRemoteNG Help</value>
</data>
<data name="LaunchExternalTool" xml:space="preserve">
@@ -812,8 +812,8 @@ See the Microsoft Support article at http://support.microsoft.com/kb/811833 for
<data name="RenameTab" xml:space="preserve">
<value>Rename Tab</value>
</data>
<data name="ReportBug" xml:space="preserve">
<value>Report a Bug</value>
<data name="MenuItem_ReportIssue" xml:space="preserve">
<value>Report an Issue</value>
</data>
<data name="ResetLayout" xml:space="preserve">
<value>Reset layout</value>
@@ -842,7 +842,7 @@ See the Microsoft Support article at http://support.microsoft.com/kb/811833 for
<data name="StartChat" xml:space="preserve">
<value>Start Chat (VNC)</value>
</data>
<data name="SupportForum" xml:space="preserve">
<data name="MenuItem_SupportForum" xml:space="preserve">
<value>Support Forum</value>
</data>
<data name="_Tools" xml:space="preserve">
@@ -857,7 +857,7 @@ See the Microsoft Support article at http://support.microsoft.com/kb/811833 for
<data name="ViewOnly" xml:space="preserve">
<value>View Only</value>
</data>
<data name="Website" xml:space="preserve">
<data name="MenuItem_Website" xml:space="preserve">
<value>Website</value>
</data>
<data name="MinimizeToSysTray" xml:space="preserve">
@@ -1519,6 +1519,12 @@ If you run into such an error, please create a new connection file!</value>
<data name="SaveConnectionsFileBeforeOpeningAnother" xml:space="preserve">
<value>Do you want to save the current connections file before loading another?</value>
</data>
<data name="SaveOptionsBeforeClosing" xml:space="preserve">
<value>Do you want to save the changes made to the options?</value>
</data>
<data name="Discard" xml:space="preserve">
<value>Discard</value>
</data>
<data name="ConnectionsBackupFrequencyDaily" xml:space="preserve">
<value>Daily</value>
</data>
@@ -2509,4 +2515,12 @@ Nightly Channel includes Alphas, Betas &amp; Release Candidates.</value>
<data name="VaultOpenbaoSecretEngineLDAPStatic" xml:space="preserve">
<value>LDAP static role</value>
</data>
<data name="MenuItem_Chat" xml:space="preserve">
<value>mR Chat</value>
<comment>Chat to dev</comment>
</data>
<data name="MenuItem_Community" xml:space="preserve">
<value>Community</value>
<comment>Reddit</comment>
</data>
</root>

View File

@@ -117,7 +117,7 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="About" xml:space="preserve">
<data name="MenuItem_About" xml:space="preserve">
<value>О программе</value>
</data>
<data name="ActiveDirectory" xml:space="preserve">
@@ -719,7 +719,7 @@
<data name="AddConnectionPanel" xml:space="preserve">
<value>Добавить Панель подключения</value>
</data>
<data name="CheckForUpdates" xml:space="preserve">
<data name="MenuItem_CheckForUpdates" xml:space="preserve">
<value>Проверка наличия обновлений</value>
</data>
<data name="Config" xml:space="preserve">
@@ -740,7 +740,7 @@
<data name="DeleteExternalTool" xml:space="preserve">
<value>Удалить внешний инструмент...</value>
</data>
<data name="Donate" xml:space="preserve">
<data name="MenuItem_Donate" xml:space="preserve">
<value>Помочь проекту</value>
</data>
<data name="DuplicateTab" xml:space="preserve">
@@ -758,7 +758,7 @@
<data name="_Help" xml:space="preserve">
<value>&amp;Справка</value>
</data>
<data name="HelpContents" xml:space="preserve">
<data name="MenuItem_HelpContents" xml:space="preserve">
<value>Справка mRemoteNG</value>
</data>
<data name="LaunchExternalTool" xml:space="preserve">
@@ -800,7 +800,7 @@
<data name="RenameTab" xml:space="preserve">
<value>Переименовать закладку</value>
</data>
<data name="ReportBug" xml:space="preserve">
<data name="MenuItem_ReportIssue" xml:space="preserve">
<value>Сообщить об ошибке</value>
</data>
<data name="ResetLayout" xml:space="preserve">
@@ -830,7 +830,7 @@
<data name="StartChat" xml:space="preserve">
<value>Начать чат (VNC)</value>
</data>
<data name="SupportForum" xml:space="preserve">
<data name="MenuItem_SupportForum" xml:space="preserve">
<value>Форум поддержки</value>
</data>
<data name="_Tools" xml:space="preserve">
@@ -845,7 +845,7 @@
<data name="ViewOnly" xml:space="preserve">
<value>Просмотр (VNC)</value>
</data>
<data name="Website" xml:space="preserve">
<data name="MenuItem_Website" xml:space="preserve">
<value>Веб-сайт</value>
</data>
<data name="MinimizeToSysTray" xml:space="preserve">

View File

@@ -117,7 +117,7 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="About" xml:space="preserve">
<data name="MenuItem_About" xml:space="preserve">
<value>Om</value>
</data>
<data name="AddNodeFromXmlFailed" xml:space="preserve">
@@ -710,7 +710,7 @@ Se Microsofts supportartikel på http://support.microsoft.com/kb/811833 för mer
<data name="AddConnectionPanel" xml:space="preserve">
<value>Lägg till anslutningspanel</value>
</data>
<data name="CheckForUpdates" xml:space="preserve">
<data name="MenuItem_CheckForUpdates" xml:space="preserve">
<value>Sök efter uppdateringar</value>
</data>
<data name="Config" xml:space="preserve">
@@ -725,7 +725,7 @@ Se Microsofts supportartikel på http://support.microsoft.com/kb/811833 för mer
<data name="DeleteExternalTool" xml:space="preserve">
<value>Ta bort externt verktyg...</value>
</data>
<data name="Donate" xml:space="preserve">
<data name="MenuItem_Donate" xml:space="preserve">
<value>Donera</value>
</data>
<data name="DuplicateTab" xml:space="preserve">
@@ -743,7 +743,7 @@ Se Microsofts supportartikel på http://support.microsoft.com/kb/811833 för mer
<data name="_Help" xml:space="preserve">
<value>&amp;Hjälp</value>
</data>
<data name="HelpContents" xml:space="preserve">
<data name="MenuItem_HelpContents" xml:space="preserve">
<value>mRemoteNG hjälp</value>
</data>
<data name="LaunchExternalTool" xml:space="preserve">
@@ -785,7 +785,7 @@ Se Microsofts supportartikel på http://support.microsoft.com/kb/811833 för mer
<data name="RenameTab" xml:space="preserve">
<value>Byt namn på flik</value>
</data>
<data name="ReportBug" xml:space="preserve">
<data name="MenuItem_ReportIssue" xml:space="preserve">
<value>Rapportera en bugg</value>
</data>
<data name="ResetLayout" xml:space="preserve">
@@ -812,7 +812,7 @@ Se Microsofts supportartikel på http://support.microsoft.com/kb/811833 för mer
<data name="StartChat" xml:space="preserve">
<value>Starta chatt (VNC)</value>
</data>
<data name="SupportForum" xml:space="preserve">
<data name="MenuItem_SupportForum" xml:space="preserve">
<value>Supportforum</value>
</data>
<data name="_Tools" xml:space="preserve">
@@ -827,7 +827,7 @@ Se Microsofts supportartikel på http://support.microsoft.com/kb/811833 för mer
<data name="ViewOnly" xml:space="preserve">
<value>Visa endast</value>
</data>
<data name="Website" xml:space="preserve">
<data name="MenuItem_Website" xml:space="preserve">
<value>Webbplats</value>
</data>
<data name="MinimizeToSysTray" xml:space="preserve">

View File

@@ -117,7 +117,7 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="About" xml:space="preserve">
<data name="MenuItem_About" xml:space="preserve">
<value>பற்றி</value>
</data>
<data name="ActiveDirectory" xml:space="preserve">
@@ -725,7 +725,7 @@
<data name="AddConnectionPanel" xml:space="preserve">
<value>இணைப்பு பலகையைச் சேர்</value>
</data>
<data name="CheckForUpdates" xml:space="preserve">
<data name="MenuItem_CheckForUpdates" xml:space="preserve">
<value>புதுப்பிப்புகளை சரிபார்</value>
</data>
<data name="Config" xml:space="preserve">
@@ -746,7 +746,7 @@
<data name="DeleteExternalTool" xml:space="preserve">
<value>வெளிப்புற கருவியை நீக்கு...</value>
</data>
<data name="Donate" xml:space="preserve">
<data name="MenuItem_Donate" xml:space="preserve">
<value>நன்கொடை</value>
</data>
<data name="DuplicateTab" xml:space="preserve">
@@ -764,7 +764,7 @@
<data name="_Help" xml:space="preserve">
<value>உதவி</value>
</data>
<data name="HelpContents" xml:space="preserve">
<data name="MenuItem_HelpContents" xml:space="preserve">
<value>பலதொலைஅத உதவி</value>
</data>
<data name="LaunchExternalTool" xml:space="preserve">
@@ -806,7 +806,7 @@
<data name="RenameTab" xml:space="preserve">
<value>தாவலை மறுபெயரிடுங்கள்</value>
</data>
<data name="ReportBug" xml:space="preserve">
<data name="MenuItem_ReportIssue" xml:space="preserve">
<value>ஒரு பிழையைப் புகாரளி</value>
</data>
<data name="ResetLayout" xml:space="preserve">
@@ -836,7 +836,7 @@
<data name="StartChat" xml:space="preserve">
<value>அரட்டையைத் தொடங்கு (விஎன்சி)</value>
</data>
<data name="SupportForum" xml:space="preserve">
<data name="MenuItem_SupportForum" xml:space="preserve">
<value>உதவி மன்றம்</value>
</data>
<data name="_Tools" xml:space="preserve">
@@ -851,7 +851,7 @@
<data name="ViewOnly" xml:space="preserve">
<value>பார்க்க மட்டுமே</value>
</data>
<data name="Website" xml:space="preserve">
<data name="MenuItem_Website" xml:space="preserve">
<value>வலைத்தளம்</value>
</data>
<data name="MinimizeToSysTray" xml:space="preserve">

View File

@@ -117,7 +117,7 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="About" xml:space="preserve">
<data name="MenuItem_About" xml:space="preserve">
<value>Hakkında</value>
</data>
<data name="AddNodeFromXmlFailed" xml:space="preserve">
@@ -693,7 +693,7 @@ PuTTY ve harici araçlar için en fazla bekleme süresi:</value>
<data name="AddConnectionPanel" xml:space="preserve">
<value>Bağlantı Paneli Ekle</value>
</data>
<data name="CheckForUpdates" xml:space="preserve">
<data name="MenuItem_CheckForUpdates" xml:space="preserve">
<value>Güncelleştirmeleri Konrol Et</value>
</data>
<data name="Config" xml:space="preserve">
@@ -708,7 +708,7 @@ PuTTY ve harici araçlar için en fazla bekleme süresi:</value>
<data name="DeleteExternalTool" xml:space="preserve">
<value>Harici Aracı Sil...</value>
</data>
<data name="Donate" xml:space="preserve">
<data name="MenuItem_Donate" xml:space="preserve">
<value>Bağış Yap</value>
</data>
<data name="DuplicateTab" xml:space="preserve">
@@ -726,7 +726,7 @@ PuTTY ve harici araçlar için en fazla bekleme süresi:</value>
<data name="_Help" xml:space="preserve">
<value>&amp;Yardım</value>
</data>
<data name="HelpContents" xml:space="preserve">
<data name="MenuItem_HelpContents" xml:space="preserve">
<value>mRemoteNG Yardım</value>
</data>
<data name="LaunchExternalTool" xml:space="preserve">
@@ -768,7 +768,7 @@ PuTTY ve harici araçlar için en fazla bekleme süresi:</value>
<data name="RenameTab" xml:space="preserve">
<value>Sekmeyi Yeniden Adlandır</value>
</data>
<data name="ReportBug" xml:space="preserve">
<data name="MenuItem_ReportIssue" xml:space="preserve">
<value>Hata Raporla</value>
</data>
<data name="ResetLayout" xml:space="preserve">
@@ -798,7 +798,7 @@ PuTTY ve harici araçlar için en fazla bekleme süresi:</value>
<data name="StartChat" xml:space="preserve">
<value>Sohbet'i Başlat (VNC)</value>
</data>
<data name="SupportForum" xml:space="preserve">
<data name="MenuItem_SupportForum" xml:space="preserve">
<value>Destek Forumu</value>
</data>
<data name="_Tools" xml:space="preserve">
@@ -813,7 +813,7 @@ PuTTY ve harici araçlar için en fazla bekleme süresi:</value>
<data name="ViewOnly" xml:space="preserve">
<value>Yalnızca Gör (VNC)</value>
</data>
<data name="Website" xml:space="preserve">
<data name="MenuItem_Website" xml:space="preserve">
<value>Web Sitesi</value>
</data>
<data name="MinimizeToSysTray" xml:space="preserve">

View File

@@ -117,7 +117,7 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="About" xml:space="preserve">
<data name="MenuItem_About" xml:space="preserve">
<value>Про програму</value>
</data>
<data name="AddNodeFromXmlFailed" xml:space="preserve">
@@ -698,7 +698,7 @@
<data name="AddConnectionPanel" xml:space="preserve">
<value>Додати панель з'єднання</value>
</data>
<data name="CheckForUpdates" xml:space="preserve">
<data name="MenuItem_CheckForUpdates" xml:space="preserve">
<value>Перевірка наявності оновлень</value>
</data>
<data name="Config" xml:space="preserve">
@@ -719,7 +719,7 @@
<data name="DeleteExternalTool" xml:space="preserve">
<value>Видалити зовнішній інструмент…</value>
</data>
<data name="Donate" xml:space="preserve">
<data name="MenuItem_Donate" xml:space="preserve">
<value>Пожертва</value>
</data>
<data name="DuplicateTab" xml:space="preserve">
@@ -737,7 +737,7 @@
<data name="_Help" xml:space="preserve">
<value>&amp;Довідка</value>
</data>
<data name="HelpContents" xml:space="preserve">
<data name="MenuItem_HelpContents" xml:space="preserve">
<value>Довідка mRemoteNG</value>
</data>
<data name="LaunchExternalTool" xml:space="preserve">
@@ -779,7 +779,7 @@
<data name="RenameTab" xml:space="preserve">
<value>Перейменувати вкладку</value>
</data>
<data name="ReportBug" xml:space="preserve">
<data name="MenuItem_ReportIssue" xml:space="preserve">
<value>Повідомити про помилку</value>
</data>
<data name="ResetLayout" xml:space="preserve">
@@ -806,7 +806,7 @@
<data name="StartChat" xml:space="preserve">
<value>Почати чат (VNC)</value>
</data>
<data name="SupportForum" xml:space="preserve">
<data name="MenuItem_SupportForum" xml:space="preserve">
<value>Форум підтримки</value>
</data>
<data name="_Tools" xml:space="preserve">
@@ -821,7 +821,7 @@
<data name="ViewOnly" xml:space="preserve">
<value>Перегляд (VNC)</value>
</data>
<data name="Website" xml:space="preserve">
<data name="MenuItem_Website" xml:space="preserve">
<value>Веб-сайт</value>
</data>
<data name="MinimizeToSysTray" xml:space="preserve">

View File

@@ -117,7 +117,7 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="About" xml:space="preserve">
<data name="MenuItem_About" xml:space="preserve">
<value>关于</value>
</data>
<data name="ActiveDirectory" xml:space="preserve">
@@ -719,7 +719,7 @@
<data name="AddConnectionPanel" xml:space="preserve">
<value>添加连接面板</value>
</data>
<data name="CheckForUpdates" xml:space="preserve">
<data name="MenuItem_CheckForUpdates" xml:space="preserve">
<value>检查更新</value>
</data>
<data name="Config" xml:space="preserve">
@@ -740,7 +740,7 @@
<data name="DeleteExternalTool" xml:space="preserve">
<value>删除外部工具...</value>
</data>
<data name="Donate" xml:space="preserve">
<data name="MenuItem_Donate" xml:space="preserve">
<value>捐赠</value>
</data>
<data name="DuplicateTab" xml:space="preserve">
@@ -758,7 +758,7 @@
<data name="_Help" xml:space="preserve">
<value>帮助(&amp;H)</value>
</data>
<data name="HelpContents" xml:space="preserve">
<data name="MenuItem_HelpContents" xml:space="preserve">
<value>mRemoteNG 帮助</value>
</data>
<data name="LaunchExternalTool" xml:space="preserve">
@@ -800,7 +800,7 @@
<data name="RenameTab" xml:space="preserve">
<value>重命名标签</value>
</data>
<data name="ReportBug" xml:space="preserve">
<data name="MenuItem_ReportIssue" xml:space="preserve">
<value>报告问题</value>
</data>
<data name="ResetLayout" xml:space="preserve">
@@ -830,7 +830,7 @@
<data name="StartChat" xml:space="preserve">
<value>启动 Chat(VNC)</value>
</data>
<data name="SupportForum" xml:space="preserve">
<data name="MenuItem_SupportForum" xml:space="preserve">
<value>支持论坛</value>
</data>
<data name="_Tools" xml:space="preserve">
@@ -845,7 +845,7 @@
<data name="ViewOnly" xml:space="preserve">
<value>仅查看</value>
</data>
<data name="Website" xml:space="preserve">
<data name="MenuItem_Website" xml:space="preserve">
<value>网站</value>
</data>
<data name="MinimizeToSysTray" xml:space="preserve">

View File

@@ -117,7 +117,7 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="About" xml:space="preserve">
<data name="MenuItem_About" xml:space="preserve">
<value>關於</value>
</data>
<data name="AddNodeFromXmlFailed" xml:space="preserve">
@@ -634,7 +634,7 @@
<data name="AddConnectionPanel" xml:space="preserve">
<value>加入連線面板</value>
</data>
<data name="CheckForUpdates" xml:space="preserve">
<data name="MenuItem_CheckForUpdates" xml:space="preserve">
<value>檢查更新</value>
</data>
<data name="Config" xml:space="preserve">
@@ -655,7 +655,7 @@
<data name="DeleteExternalTool" xml:space="preserve">
<value>刪除外部工具...</value>
</data>
<data name="Donate" xml:space="preserve">
<data name="MenuItem_Donate" xml:space="preserve">
<value>捐贈</value>
</data>
<data name="DuplicateTab" xml:space="preserve">
@@ -673,7 +673,7 @@
<data name="_Help" xml:space="preserve">
<value>說明(&amp;H)</value>
</data>
<data name="HelpContents" xml:space="preserve">
<data name="MenuItem_HelpContents" xml:space="preserve">
<value>mRemoteNG 說明</value>
</data>
<data name="LaunchExternalTool" xml:space="preserve">
@@ -715,7 +715,7 @@
<data name="RenameTab" xml:space="preserve">
<value>重新命名索引標籤</value>
</data>
<data name="ReportBug" xml:space="preserve">
<data name="MenuItem_ReportIssue" xml:space="preserve">
<value>報告 Bug</value>
</data>
<data name="ResetLayout" xml:space="preserve">
@@ -745,7 +745,7 @@
<data name="StartChat" xml:space="preserve">
<value>開始聊天 (VNC)</value>
</data>
<data name="SupportForum" xml:space="preserve">
<data name="MenuItem_SupportForum" xml:space="preserve">
<value>支援討論區</value>
</data>
<data name="_Tools" xml:space="preserve">
@@ -760,7 +760,7 @@
<data name="ViewOnly" xml:space="preserve">
<value>只有檢視 (VNC)</value>
</data>
<data name="Website" xml:space="preserve">
<data name="MenuItem_Website" xml:space="preserve">
<value>網站</value>
</data>
<data name="MinimizeToSysTray" xml:space="preserve">

View File

@@ -156,11 +156,7 @@ namespace mRemoteNG.Tools
ExternalToolArgumentParser argParser = new(startConnectionInfo);
process.StartInfo.UseShellExecute = true;
process.StartInfo.FileName = argParser.ParseArguments(FileName);
var parsedArgs = argParser.ParseArguments(Arguments).Split(' ');
foreach (var arg in parsedArgs)
{
process.StartInfo.ArgumentList.Add(arg);
}
process.StartInfo.Arguments = argParser.ParseArguments(Arguments);
if (WorkingDir != "") process.StartInfo.WorkingDirectory = argParser.ParseArguments(WorkingDir);
if (RunElevated) process.StartInfo.Verb = "runas";
}

View File

@@ -45,7 +45,7 @@ namespace mRemoteNG.Tree.Root
[Browsable(false)]
public string PasswordString
{
get => Password ? _customPassword : DefaultPassword;
get => (Password && !string.IsNullOrEmpty(_customPassword)) ? _customPassword : DefaultPassword;
set
{
_customPassword = value;

View File

@@ -810,7 +810,8 @@ namespace mRemoteNG.UI.Controls
ESysIcons.Question);
if (CTaskDialog.VerificationChecked)
{
Settings.Default.ConfirmCloseConnection--;
Settings.Default.ConfirmCloseConnection = (int)ConfirmCloseEnum.Never;
Settings.Default.Save();
}
if (result == DialogResult.No)

View File

@@ -142,14 +142,9 @@
Controls.Add(pbLogo);
Font = new System.Drawing.Font("Segoe UI", 8.25F);
ForeColor = System.Drawing.SystemColors.ControlText;
FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
MaximizeBox = false;
MaximumSize = new System.Drawing.Size(20000, 10000);
MinimizeBox = false;
Name = "frmAbout";
StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
Text = "About";
TopMost = true;
TabText = "About";
((System.ComponentModel.ISupportInitialize)pbLogo).EndInit();
pnlBottom.ResumeLayout(false);
pnlBottom.PerformLayout();

View File

@@ -7,15 +7,16 @@ using System.Reflection;
using mRemoteNG.Properties;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using mRemoteNG.UI.Window;
namespace mRemoteNG.UI.Forms
{
[SupportedOSPlatform("windows")]
public partial class frmAbout : Form
public partial class frmAbout : BaseWindow
{
public static frmAbout Instance { get; set; } = new frmAbout();
private frmAbout()
public frmAbout()
{
InitializeComponent();
Icon = Resources.ImageConverter.GetImageAsIcon(Properties.Resources.UIAboutBox_16x);
@@ -27,7 +28,8 @@ namespace mRemoteNG.UI.Forms
private void ApplyLanguage()
{
lblLicense.Text = Language.ReleasedUnderGPL;
base.Text = Language.About;
base.Text = Language.MenuItem_About;
TabText = Language.MenuItem_About;
llChangelog.Text = Language.Changelog;
llCredits.Text = Language.Credits;
llLicense.Text = Language.License;
@@ -50,9 +52,9 @@ namespace mRemoteNG.UI.Forms
protected override void OnFormClosing(FormClosingEventArgs e)
{
base.OnFormClosing(e);
e.Cancel = true;
Hide();
// Don't cancel close when shown in DockPanel
// This allows the tab to close properly without showing connection close dialog
}
private void llLicense_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)

View File

@@ -56,7 +56,7 @@ namespace mRemoteNG.UI.Forms
labelExceptionMessageHeader.Text = Language.ExceptionMessage;
labelStackTraceHeader.Text = Language.StackTrace;
labelEnvironment.Text = Language.Environment;
buttonCreateBug.Text = Language.ReportBug;
buttonCreateBug.Text = Language.MenuItem_ReportIssue;
buttonCopyAll.Text = Language.CopyAll;
buttonClose.Text = _isFatal
? Language.Exit

View File

@@ -257,8 +257,8 @@ namespace mRemoteNG.UI.Forms.OptionsPages
// tableLayoutPanel2
//
tableLayoutPanel2.ColumnCount = 2;
tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 45F));
tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 55F));
tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.AutoSize));
tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
tableLayoutPanel2.Controls.Add(numRdpReconnectionCount, 1, 0);
tableLayoutPanel2.Controls.Add(numAutoSave, 1, 2);
tableLayoutPanel2.Controls.Add(lblRdpReconnectionCount, 0, 0);

View File

@@ -29,6 +29,17 @@ namespace mRemoteNG.UI.Forms.OptionsPages
* 1) chkSaveConnectionsAfterEveryEdit: never used
*/
chkSaveConnectionsAfterEveryEdit.Visible = false; // Temporary hide control, never used, added: Jun 15, 2024
// Reload settings when page becomes visible to reflect any changes made outside the Options dialog
VisibleChanged += ConnectionsPage_VisibleChanged;
}
private void ConnectionsPage_VisibleChanged(object sender, EventArgs e)
{
if (Visible)
{
LoadSettings();
}
}
public override string PageName

View File

@@ -24,6 +24,12 @@ namespace mRemoteNG.UI.Forms.OptionsPages
public virtual Icon PageIcon { get; protected set; }
public virtual Image IconImage => PageIcon?.ToBitmap();
/// <summary>
/// Indicates whether the settings on this page have been modified.
/// </summary>
[Browsable(false)]
public bool HasChanges { get; set; }
#endregion
#region Public Methods

View File

@@ -79,7 +79,7 @@ namespace mRemoteNG.UI.Forms.OptionsPages
chkIdentifyQuickConnectTabs._mice = MrngCheckBox.MouseState.OUT;
chkIdentifyQuickConnectTabs.AutoSize = true;
chkIdentifyQuickConnectTabs.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
chkIdentifyQuickConnectTabs.Location = new System.Drawing.Point(3, 118);
chkIdentifyQuickConnectTabs.Location = new System.Drawing.Point(3, 72);
chkIdentifyQuickConnectTabs.Name = "chkIdentifyQuickConnectTabs";
chkIdentifyQuickConnectTabs.Size = new System.Drawing.Size(315, 17);
chkIdentifyQuickConnectTabs.TabIndex = 4;
@@ -103,7 +103,7 @@ namespace mRemoteNG.UI.Forms.OptionsPages
chkAlwaysShowPanelSelectionDlg._mice = MrngCheckBox.MouseState.OUT;
chkAlwaysShowPanelSelectionDlg.AutoSize = true;
chkAlwaysShowPanelSelectionDlg.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
chkAlwaysShowPanelSelectionDlg.Location = new System.Drawing.Point(3, 164);
chkAlwaysShowPanelSelectionDlg.Location = new System.Drawing.Point(3, 118);
chkAlwaysShowPanelSelectionDlg.Name = "chkAlwaysShowPanelSelectionDlg";
chkAlwaysShowPanelSelectionDlg.Size = new System.Drawing.Size(347, 17);
chkAlwaysShowPanelSelectionDlg.TabIndex = 6;
@@ -115,7 +115,7 @@ namespace mRemoteNG.UI.Forms.OptionsPages
chkShowLogonInfoOnTabs._mice = MrngCheckBox.MouseState.OUT;
chkShowLogonInfoOnTabs.AutoSize = true;
chkShowLogonInfoOnTabs.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
chkShowLogonInfoOnTabs.Location = new System.Drawing.Point(3, 72);
chkShowLogonInfoOnTabs.Location = new System.Drawing.Point(3, 26);
chkShowLogonInfoOnTabs.Name = "chkShowLogonInfoOnTabs";
chkShowLogonInfoOnTabs.Size = new System.Drawing.Size(226, 17);
chkShowLogonInfoOnTabs.TabIndex = 2;
@@ -127,7 +127,7 @@ namespace mRemoteNG.UI.Forms.OptionsPages
chkDoubleClickClosesTab._mice = MrngCheckBox.MouseState.OUT;
chkDoubleClickClosesTab.AutoSize = true;
chkDoubleClickClosesTab.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
chkDoubleClickClosesTab.Location = new System.Drawing.Point(3, 141);
chkDoubleClickClosesTab.Location = new System.Drawing.Point(3, 95);
chkDoubleClickClosesTab.Name = "chkDoubleClickClosesTab";
chkDoubleClickClosesTab.Size = new System.Drawing.Size(170, 17);
chkDoubleClickClosesTab.TabIndex = 5;
@@ -139,7 +139,7 @@ namespace mRemoteNG.UI.Forms.OptionsPages
chkShowProtocolOnTabs._mice = MrngCheckBox.MouseState.OUT;
chkShowProtocolOnTabs.AutoSize = true;
chkShowProtocolOnTabs.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
chkShowProtocolOnTabs.Location = new System.Drawing.Point(3, 95);
chkShowProtocolOnTabs.Location = new System.Drawing.Point(3, 49);
chkShowProtocolOnTabs.Name = "chkShowProtocolOnTabs";
chkShowProtocolOnTabs.Size = new System.Drawing.Size(180, 17);
chkShowProtocolOnTabs.TabIndex = 3;
@@ -151,7 +151,7 @@ namespace mRemoteNG.UI.Forms.OptionsPages
chkCreateEmptyPanelOnStart._mice = MrngCheckBox.MouseState.OUT;
chkCreateEmptyPanelOnStart.AutoSize = true;
chkCreateEmptyPanelOnStart.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
chkCreateEmptyPanelOnStart.Location = new System.Drawing.Point(3, 187);
chkCreateEmptyPanelOnStart.Location = new System.Drawing.Point(3, 141);
chkCreateEmptyPanelOnStart.Name = "chkCreateEmptyPanelOnStart";
chkCreateEmptyPanelOnStart.Size = new System.Drawing.Size(271, 17);
chkCreateEmptyPanelOnStart.TabIndex = 7;
@@ -162,7 +162,7 @@ namespace mRemoteNG.UI.Forms.OptionsPages
// txtBoxPanelName
//
txtBoxPanelName.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
txtBoxPanelName.Location = new System.Drawing.Point(35, 223);
txtBoxPanelName.Location = new System.Drawing.Point(35, 177);
txtBoxPanelName.Name = "txtBoxPanelName";
txtBoxPanelName.Size = new System.Drawing.Size(213, 22);
txtBoxPanelName.TabIndex = 8;
@@ -170,7 +170,7 @@ namespace mRemoteNG.UI.Forms.OptionsPages
// lblPanelName
//
lblPanelName.AutoSize = true;
lblPanelName.Location = new System.Drawing.Point(32, 207);
lblPanelName.Location = new System.Drawing.Point(32, 161);
lblPanelName.Name = "lblPanelName";
lblPanelName.Size = new System.Drawing.Size(69, 13);
lblPanelName.TabIndex = 9;
@@ -192,7 +192,7 @@ namespace mRemoteNG.UI.Forms.OptionsPages
pnlOptions.Dock = System.Windows.Forms.DockStyle.Top;
pnlOptions.Location = new System.Drawing.Point(0, 30);
pnlOptions.Name = "pnlOptions";
pnlOptions.Size = new System.Drawing.Size(610, 262);
pnlOptions.Size = new System.Drawing.Size(610, 216);
pnlOptions.TabIndex = 10;
//
// lblRegistrySettingsUsedInfo

View File

@@ -89,7 +89,10 @@ namespace mRemoteNG.UI.Forms.OptionsPages
* Properties.OptionsTabsPanelsPage.Default.AlwaysShowConnectionTabs nerver used
*/
//Properties.OptionsTabsPanelsPage.Default.AlwaysShowConnectionTabs = chkAlwaysShowConnectionTabs.Checked;
FrmMain.Default.ShowHidePanelTabs();
// Defer the ShowHidePanelTabs call to avoid corrupting the Options window
// This ensures the call happens after the Options window is closed
FrmMain.Default.BeginInvoke(new System.Windows.Forms.MethodInvoker(() => FrmMain.Default.ShowHidePanelTabs()));
/*
* Comment added: June 16, 2024

View File

@@ -18,6 +18,7 @@ namespace mRemoteNG.UI.Forms.OptionsPages
private readonly ThemeManager _themeManager;
private readonly bool _oriActiveTheming;
private ThemeInfo _oriActiveTheme;
private readonly List<ThemeInfo> modifiedThemes = [];
#endregion
@@ -65,6 +66,8 @@ namespace mRemoteNG.UI.Forms.OptionsPages
// ReSharper disable once CoVariantArrayConversion
cboTheme.Items.AddRange(_themeManager.LoadThemes().OrderBy(x => x.Name).ToArray());
cboTheme.SelectedItem = _themeManager.ActiveTheme;
// Store the original active theme for reverting
_oriActiveTheme = _themeManager.ActiveTheme;
cboTheme_SelectionChangeCommitted(this, new EventArgs());
cboTheme.DisplayMember = "Name";
@@ -107,6 +110,20 @@ namespace mRemoteNG.UI.Forms.OptionsPages
{
base.RevertSettings();
_themeManager.ThemingActive = _oriActiveTheming;
// Clear the modified themes list without saving
modifiedThemes.Clear();
// Restore the original theme selection
if (_oriActiveTheme != null)
{
_themeManager.ActiveTheme = _oriActiveTheme;
// Reload the theme list to reflect the original state
cboTheme.Items.Clear();
cboTheme.Items.AddRange(_themeManager.LoadThemes().OrderBy(x => x.Name).ToArray());
cboTheme.SelectedItem = _oriActiveTheme;
cboTheme_SelectionChangeCommitted(this, new EventArgs());
}
}
#region Private Methods

View File

@@ -470,7 +470,7 @@ namespace mRemoteNG.UI.Forms
DialogResult result = CTaskDialog.MessageBox(this, Application.ProductName, Language.ConfirmExitMainInstruction, "", "", "", Language.CheckboxDoNotShowThisMessageAgain, ETaskDialogButtons.YesNo, ESysIcons.Question, ESysIcons.Question);
if (CTaskDialog.VerificationChecked)
{
Properties.Settings.Default.ConfirmCloseConnection--; //--?
Properties.Settings.Default.ConfirmCloseConnection = (int)ConfirmCloseEnum.Never;
}
if (result == DialogResult.No)

View File

@@ -22,6 +22,8 @@ namespace mRemoteNG.UI.Forms
private string _pageName;
private readonly DisplayProperties _display = new();
private readonly List<string> _optionPageObjectNames;
private bool _isLoading = true;
private bool _isInitialized = false; // Add this field to the FrmOptions class
public FrmOptions() : this(Language.StartupExit)
{
@@ -57,6 +59,13 @@ namespace mRemoteNG.UI.Forms
private void FrmOptions_Load(object sender, EventArgs e)
{
// Only initialize once to prevent multiple event subscriptions and page reloading
if (_isInitialized)
{
this.Visible = true;
return;
}
this.Visible = true;
FontOverrider.FontOverride(this);
SetActivatedPage();
@@ -71,6 +80,23 @@ namespace mRemoteNG.UI.Forms
//ThemeManager.getInstance().ThemeChanged += ApplyTheme;
lstOptionPages.SelectedIndexChanged += LstOptionPages_SelectedIndexChanged;
lstOptionPages.SelectedIndex = 0;
// Handle visibility changes to ensure panel is populated when form is shown
this.VisibleChanged += FrmOptions_VisibleChanged;
// Mark as initialized
_isInitialized = true;
}
private void FrmOptions_VisibleChanged(object sender, EventArgs e)
{
// When the form becomes visible, ensure the panel is populated with the selected page
if (this.Visible && pnlMain.Controls.Count == 0)
{
OptionsPage page = (OptionsPage)lstOptionPages.SelectedObject;
if (page != null)
pnlMain.Controls.Add(page);
}
}
private void ApplyTheme()
@@ -105,6 +131,8 @@ namespace mRemoteNG.UI.Forms
if (_currentIndex >= _optionPageObjectNames.Count)
{
Application.Idle -= new EventHandler(Application_Idle);
// All pages loaded, now start tracking changes
_isLoading = false;
}
else
{
@@ -210,6 +238,9 @@ namespace mRemoteNG.UI.Forms
page.LoadSettings();
_optionPages.Add(page);
lstOptionPages.AddObject(page);
// Track changes in all controls on the page
TrackChangesInControls(page);
}
private object ImageGetter(object rowobject)
@@ -238,12 +269,16 @@ namespace mRemoteNG.UI.Forms
private void BtnOK_Click(object sender, EventArgs e)
{
SaveOptions();
// Clear change flags after saving
ClearChangeFlags();
this.Visible = false;
}
private void BtnApply_Click(object sender, EventArgs e)
{
SaveOptions();
// Clear change flags after applying
ClearChangeFlags();
}
private void SaveOptions()
@@ -269,13 +304,113 @@ namespace mRemoteNG.UI.Forms
private void BtnCancel_Click(object sender, EventArgs e)
{
// When Cancel is clicked, we don't check for changes
// The user explicitly wants to cancel
this.Visible = false;
}
private void FrmOptions_FormClosing(object sender, FormClosingEventArgs e)
{
e.Cancel = true;
this.Visible = false;
// Check if any page has unsaved changes
bool hasChanges = _optionPages.Any(page => page.HasChanges);
if (hasChanges)
{
DialogResult result = MessageBox.Show(
Language.SaveOptionsBeforeClosing,
Language.Options,
MessageBoxButtons.YesNoCancel,
MessageBoxIcon.Question);
switch (result)
{
case DialogResult.Yes:
SaveOptions();
ClearChangeFlags();
e.Cancel = true;
this.Visible = false;
break;
case DialogResult.No:
// Discard changes
ClearChangeFlags();
e.Cancel = true;
this.Visible = false;
break;
case DialogResult.Cancel:
// Cancel closing - keep the dialog open
e.Cancel = true;
break;
}
}
else
{
e.Cancel = true;
this.Visible = false;
}
}
private void TrackChangesInControls(Control control)
{
foreach (Control childControl in control.Controls)
{
// Track changes for common input controls
if (childControl is TextBox textBox)
{
textBox.TextChanged += (s, e) => MarkPageAsChanged(control);
}
else if (childControl is CheckBox checkBox)
{
checkBox.CheckedChanged += (s, e) => MarkPageAsChanged(control);
}
else if (childControl is RadioButton radioButton)
{
radioButton.CheckedChanged += (s, e) => MarkPageAsChanged(control);
}
else if (childControl is ComboBox comboBox)
{
comboBox.SelectedIndexChanged += (s, e) => MarkPageAsChanged(control);
}
else if (childControl is NumericUpDown numericUpDown)
{
numericUpDown.ValueChanged += (s, e) => MarkPageAsChanged(control);
}
else if (childControl is ListBox listBox)
{
listBox.SelectedIndexChanged += (s, e) => MarkPageAsChanged(control);
}
// Recursively track changes in nested controls
if (childControl.Controls.Count > 0)
{
TrackChangesInControls(childControl);
}
}
}
private void MarkPageAsChanged(Control control)
{
// Don't track changes during initial loading
if (_isLoading) return;
// Find the parent OptionsPage
Control current = control;
while (current != null && !(current is OptionsPage))
{
current = current.Parent;
}
if (current is OptionsPage page)
{
page.HasChanges = true;
}
}
private void ClearChangeFlags()
{
foreach (OptionsPage page in _optionPages)
{
page.HasChanges = false;
}
}
}
}

View File

@@ -13,17 +13,19 @@ namespace mRemoteNG.UI.Menu
[SupportedOSPlatform("windows")]
public class HelpMenu : ToolStripMenuItem
{
private ToolStripMenuItem _mMenInfoHelp;
private ToolStripMenuItem _mMenInfoWebsite;
private ToolStripSeparator _mMenInfoSep1;
private ToolStripMenuItem _mMenInfoAbout;
private ToolStripMenuItem _mMenInfoDonate;
private ToolStripSeparator _mMenInfoSep2;
private ToolStripSeparator _mMenInfoSep3;
private ToolStripSeparator _mMenInfoSep4;
private ToolStripMenuItem _mMenInfoForum;
private ToolStripMenuItem _mMenInfoBug;
private ToolStripMenuItem _mMenToolsUpdate;
private ToolStripMenuItem _mMenInfoHelp = null!;
private ToolStripMenuItem _mMenInfoWebsite = null!;
private ToolStripSeparator _mMenInfoSep1 = null!;
private ToolStripMenuItem _mMenInfoAbout = null!;
private ToolStripMenuItem _mMenInfoDonate = null!;
private ToolStripSeparator _mMenInfoSep2 = null!;
private ToolStripSeparator _mMenInfoSep3 = null!;
private ToolStripSeparator _mMenInfoSep4 = null!;
private ToolStripMenuItem _mMenInfoForum = null!;
private ToolStripMenuItem _mMenInfoChat = null!;
private ToolStripMenuItem _mMenInfoCommunity = null!;
private ToolStripMenuItem _mMenInfoBug = null!;
private ToolStripMenuItem _mMenToolsUpdate = null!;
public HelpMenu()
{
@@ -37,6 +39,8 @@ namespace mRemoteNG.UI.Menu
_mMenInfoWebsite = new ToolStripMenuItem();
_mMenInfoDonate = new ToolStripMenuItem();
_mMenInfoForum = new ToolStripMenuItem();
_mMenInfoChat = new ToolStripMenuItem();
_mMenInfoCommunity = new ToolStripMenuItem();
_mMenInfoBug = new ToolStripMenuItem();
_mMenToolsUpdate = new ToolStripMenuItem();
_mMenInfoSep2 = new ToolStripSeparator();
@@ -53,6 +57,8 @@ namespace mRemoteNG.UI.Menu
_mMenInfoSep1,
_mMenInfoWebsite,
_mMenInfoForum,
_mMenInfoChat,
_mMenInfoCommunity,
_mMenInfoBug,
_mMenInfoSep2,
_mMenToolsUpdate,
@@ -72,7 +78,7 @@ namespace mRemoteNG.UI.Menu
_mMenInfoHelp.Name = "mMenInfoHelp";
_mMenInfoHelp.ShortcutKeys = Keys.F1;
_mMenInfoHelp.Size = new System.Drawing.Size(190, 22);
_mMenInfoHelp.Text = Language.HelpContents;
_mMenInfoHelp.Text = Language.MenuItem_HelpContents;
_mMenInfoHelp.Click += mMenInfoHelp_Click;
//
// mMenToolsUpdate
@@ -80,7 +86,7 @@ namespace mRemoteNG.UI.Menu
_mMenToolsUpdate.Image = Properties.Resources.RunUpdate_16x;
_mMenToolsUpdate.Name = "mMenToolsUpdate";
_mMenToolsUpdate.Size = new System.Drawing.Size(190, 22);
_mMenToolsUpdate.Text = Language.CheckForUpdates;
_mMenToolsUpdate.Text = Language.MenuItem_CheckForUpdates;
_mMenToolsUpdate.Click += mMenToolsUpdate_Click;
_mMenToolsUpdate.Enabled = CommonRegistrySettings.AllowCheckForUpdates
&& CommonRegistrySettings.AllowCheckForUpdatesManual;
@@ -94,28 +100,42 @@ namespace mRemoteNG.UI.Menu
//
_mMenInfoWebsite.Name = "mMenInfoWebsite";
_mMenInfoWebsite.Size = new System.Drawing.Size(190, 22);
_mMenInfoWebsite.Text = Language.Website;
_mMenInfoWebsite.Text = Language.MenuItem_Website;
_mMenInfoWebsite.Click += mMenInfoWebsite_Click;
//
// mMenInfoDonate
//
_mMenInfoDonate.Name = "mMenInfoDonate";
_mMenInfoDonate.Size = new System.Drawing.Size(190, 22);
_mMenInfoDonate.Text = Language.Donate;
_mMenInfoDonate.Text = Language.MenuItem_Donate;
_mMenInfoDonate.Click += mMenInfoDonate_Click;
//
// mMenInfoForum
//
_mMenInfoForum.Name = "mMenInfoForum";
_mMenInfoForum.Size = new System.Drawing.Size(190, 22);
_mMenInfoForum.Text = Language.SupportForum;
_mMenInfoForum.Text = Language.MenuItem_SupportForum;
_mMenInfoForum.Click += mMenInfoForum_Click;
//
// mMenInfoChat
//
_mMenInfoChat.Name = "mMenInfoChat";
_mMenInfoChat.Size = new System.Drawing.Size(190, 22);
_mMenInfoChat.Text = Language.MenuItem_Chat;
_mMenInfoChat.Click += mMenInfoChat_Click;
//
// mMenInfoCommunity
//
_mMenInfoCommunity.Name = "mMenInfoCommunity";
_mMenInfoCommunity.Size = new System.Drawing.Size(190, 22);
_mMenInfoCommunity.Text = Language.MenuItem_Community;
_mMenInfoCommunity.Click += mMenInfoCommunity_Click;
//
// mMenInfoBug
//
_mMenInfoBug.Name = "mMenInfoBug";
_mMenInfoBug.Size = new System.Drawing.Size(190, 22);
_mMenInfoBug.Text = Language.ReportBug;
_mMenInfoBug.Text = Language.MenuItem_ReportIssue;
_mMenInfoBug.Click += mMenInfoBug_Click;
//
// mMenInfoSep2
@@ -138,20 +158,22 @@ namespace mRemoteNG.UI.Menu
_mMenInfoAbout.Image = Properties.Resources.UIAboutBox_16x;
_mMenInfoAbout.Name = "mMenInfoAbout";
_mMenInfoAbout.Size = new System.Drawing.Size(190, 22);
_mMenInfoAbout.Text = Language.About;
_mMenInfoAbout.Text = Language.MenuItem_About;
_mMenInfoAbout.Click += mMenInfoAbout_Click;
}
public void ApplyLanguage()
{
Text = Language._Help;
_mMenInfoHelp.Text = Language.HelpContents;
_mMenInfoWebsite.Text = Language.Website;
_mMenInfoDonate.Text = Language.Donate;
_mMenInfoForum.Text = Language.SupportForum;
_mMenInfoBug.Text = Language.ReportBug;
_mMenInfoAbout.Text = Language.About;
_mMenToolsUpdate.Text = Language.CheckForUpdates;
_mMenInfoHelp.Text = Language.MenuItem_HelpContents;
_mMenInfoWebsite.Text = Language.MenuItem_Website;
_mMenInfoDonate.Text = Language.MenuItem_Donate;
_mMenInfoForum.Text = Language.MenuItem_SupportForum;
_mMenInfoChat.Text = Language.MenuItem_Chat;
_mMenInfoCommunity.Text = Language.MenuItem_Community;
_mMenInfoBug.Text = Language.MenuItem_ReportIssue;
_mMenInfoAbout.Text = Language.MenuItem_About;
_mMenToolsUpdate.Text = Language.MenuItem_CheckForUpdates;
}
#region Info
@@ -166,17 +188,26 @@ namespace mRemoteNG.UI.Menu
}
}
private void mMenInfoHelp_Click(object sender, EventArgs e) => Process.Start("explorer.exe", GeneralAppInfo.UrlDocumentation);
private void mMenInfoHelp_Click(object? sender, EventArgs e) => Process.Start("explorer.exe", GeneralAppInfo.UrlDocumentation);
private void mMenInfoForum_Click(object sender, EventArgs e) => Process.Start("explorer.exe", GeneralAppInfo.UrlForum);
private void mMenInfoForum_Click(object? sender, EventArgs e) => Process.Start("explorer.exe", GeneralAppInfo.UrlForum);
private void mMenInfoBug_Click(object sender, EventArgs e) => Process.Start("explorer.exe", GeneralAppInfo.UrlBugs);
private void mMenInfoChat_Click(object? sender, EventArgs e) => Process.Start("explorer.exe", GeneralAppInfo.UrlChat);
private void mMenInfoWebsite_Click(object sender, EventArgs e) => Process.Start("explorer.exe", GeneralAppInfo.UrlHome);
private void mMenInfoCommunity_Click(object? sender, EventArgs e) => Process.Start("explorer.exe", GeneralAppInfo.UrlCommunity);
private void mMenInfoDonate_Click(object sender, EventArgs e) => Process.Start("explorer.exe", GeneralAppInfo.UrlDonate);
private void mMenInfoBug_Click(object? sender, EventArgs e) => Process.Start("explorer.exe", GeneralAppInfo.UrlBugs);
private void mMenInfoAbout_Click(object sender, EventArgs e) => frmAbout.Instance.Show();
private void mMenInfoWebsite_Click(object? sender, EventArgs e) => Process.Start("explorer.exe", GeneralAppInfo.UrlHome);
private void mMenInfoDonate_Click(object? sender, EventArgs e) => Process.Start("explorer.exe", GeneralAppInfo.UrlDonate);
private void mMenInfoAbout_Click(object? sender, EventArgs e)
{
if (frmAbout.Instance == null || frmAbout.Instance.IsDisposed)
frmAbout.Instance = new frmAbout();
frmAbout.Instance.Show(FrmMain.Default.pnlDock);
}
#endregion
}

View File

@@ -15,14 +15,17 @@ namespace mRemoteNG.UI.Panels
[SupportedOSPlatform("windows")]
public class PanelAdder
{
public ConnectionWindow AddPanel(string title = "")
public ConnectionWindow AddPanel(string title = "", bool showImmediately = true)
{
try
{
ConnectionWindow connectionForm = new(new DockContent());
BuildConnectionWindowContextMenu(connectionForm);
SetConnectionWindowTitle(title, connectionForm);
ShowConnectionWindow(connectionForm);
// Only show immediately if requested (for user-created empty panels)
// When opening connections, we defer showing until first tab is added
if (showImmediately)
ShowConnectionWindow(connectionForm);
PrepareTabSupport(connectionForm);
return connectionForm;
}

View File

@@ -55,7 +55,8 @@ namespace mRemoteNG.UI.Tabs
ESysIcons.Question);
if (CTaskDialog.VerificationChecked)
{
Settings.Default.ConfirmCloseConnection--;
Settings.Default.ConfirmCloseConnection = (int)ConfirmCloseEnum.Never;
Settings.Default.Save();
}
if (result == DialogResult.No)

View File

@@ -143,6 +143,13 @@ namespace mRemoteNG.UI.Window
// TODO: See if we can make this work with DPS...
//TabController.HideTabsMode = TabControl.HideTabsModes.HideAlways;
// Ensure the ConnectionWindow is visible before adding the tab
// This prevents visibility issues when the window was created but not yet shown
// Check DockState instead of Visible to properly detect if window is shown in DockPanel
if (DockState == DockState.Unknown || DockState == DockState.Hidden || !Visible)
{
Show(FrmMain.Default.pnlDock, DockState.Document);
}
//Show the tab
conTab.Show(connDock, DockState.Document);
@@ -288,16 +295,11 @@ namespace mRemoteNG.UI.Window
Settings.Default.ConfirmCloseConnection == (int)ConfirmCloseEnum.Multiple &
connDock.Documents.Count() > 1))
{
DialogResult result = CTaskDialog.MessageBox(this, GeneralAppInfo.ProductName,
string
.Format(Language.ConfirmCloseConnectionPanelMainInstruction,
Text), "", "", "",
Language.CheckboxDoNotShowThisMessageAgain,
ETaskDialogButtons.YesNo, ESysIcons.Question,
ESysIcons.Question);
DialogResult result = CTaskDialog.MessageBox(this, GeneralAppInfo.ProductName, string.Format(Language.ConfirmCloseConnectionPanelMainInstruction, Text), "", "", "", Language.CheckboxDoNotShowThisMessageAgain, ETaskDialogButtons.YesNo, ESysIcons.Question, ESysIcons.Question);
if (CTaskDialog.VerificationChecked)
{
Settings.Default.ConfirmCloseConnection--;
Settings.Default.ConfirmCloseConnection = (int)ConfirmCloseEnum.Never;
Settings.Default.Save();
}
if (result == DialogResult.No)
@@ -662,7 +664,8 @@ namespace mRemoteNG.UI.Window
ESysIcons.Question);
if (CTaskDialog.VerificationChecked)
{
Settings.Default.ConfirmCloseConnection--;
Settings.Default.ConfirmCloseConnection = (int)ConfirmCloseEnum.Never;
Settings.Default.Save();
}
if (result == DialogResult.No)

View File

@@ -12,6 +12,7 @@ namespace mRemoteNG.UI.Window
public partial class OptionsWindow : BaseWindow
{
private FrmOptions _optionsForm;
private bool _isInitialized = false;
#region Public Methods
@@ -34,8 +35,14 @@ namespace mRemoteNG.UI.Window
private void Options_Load(object sender, EventArgs e)
{
// Only subscribe to ThemeChanged once to prevent multiple subscriptions
if (!_isInitialized)
{
ThemeManager.getInstance().ThemeChanged += ApplyTheme;
_isInitialized = true;
}
ApplyTheme();
ThemeManager.getInstance().ThemeChanged += ApplyTheme;
ApplyLanguage();
LoadOptionsForm();
}

View File

@@ -1,16 +1,18 @@
using System;
using mRemoteNG.App;
using mRemoteNG.App.Update;
using mRemoteNG.Messages;
using mRemoteNG.Resources.Language;
using mRemoteNG.Themes;
using System;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
using mRemoteNG.App;
using mRemoteNG.App.Update;
using mRemoteNG.Messages;
using mRemoteNG.Themes;
using WeifenLuo.WinFormsUI.Docking;
using mRemoteNG.Resources.Language;
using System.Threading.Tasks;
using System.Runtime.Versioning;
using System.Threading.Tasks;
using System.Windows.Forms;
using WeifenLuo.WinFormsUI.Docking;
namespace mRemoteNG.UI.Window
{
@@ -66,8 +68,8 @@ namespace mRemoteNG.UI.Window
private void ApplyLanguage()
{
Text = Language.CheckForUpdates;
TabText = Language.CheckForUpdates;
Text = Language.MenuItem_CheckForUpdates;
TabText = Language.MenuItem_CheckForUpdates;
btnCheckForUpdate.Text = Language.CheckAgain;
btnDownload.Text = Runtime.IsPortableEdition
? Language.Download
@@ -116,7 +118,7 @@ namespace mRemoteNG.UI.Window
return;
}
lblStatus.Text = Language.CheckForUpdates;
lblStatus.Text = Language.MenuItem_CheckForUpdates;
lblStatus.ForeColor = SystemColors.WindowText;
lblLatestVersionLabel.Visible = false;
lblInstalledVersion.Visible = false;
@@ -213,11 +215,11 @@ namespace mRemoteNG.UI.Window
prgbDownload.Visible = false;
if (Runtime.IsPortableEdition)
MessageBox.Show(Language.UpdatePortableDownloadComplete, Language.CheckForUpdates,
MessageBox.Show(Language.UpdatePortableDownloadComplete, Language.MenuItem_CheckForUpdates,
MessageBoxButtons.OK, MessageBoxIcon.Information);
else
{
if (MessageBox.Show(Language.UpdateDownloadComplete, Language.CheckForUpdates,
if (MessageBox.Show(Language.UpdateDownloadComplete, Language.MenuItem_CheckForUpdates,
MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.OK)
{
Shutdown.Quit(_appUpdate.CurrentUpdateInfo.UpdateFilePath);

View File

@@ -97,6 +97,36 @@ public class XmlRootNodeSerializerTests
Assert.That(attributeValuePlainText, Is.EqualTo(expectedPlainText));
}
[Test]
public void ProtectedStringSerializedWhenPasswordPropertySetDirectly()
{
// Simulate edge case where Password property is set to true directly
// without setting PasswordString (leaving _customPassword empty)
_rootNodeInfo.Password = true;
var element = _rootNodeSerializer.SerializeRootNodeInfo(_rootNodeInfo, _cryptographyProvider, _version);
var attributeValue = element.Attribute(XName.Get("Protected"))?.Value;
// Should use default password and serialize as "ThisIsNotProtected"
var attributeValuePlainText =
_cryptographyProvider.Decrypt(attributeValue, _rootNodeInfo.PasswordString.ConvertToSecureString());
Assert.That(attributeValuePlainText, Is.EqualTo("ThisIsNotProtected"));
}
[Test]
public void FullFileEncryptionWorksWithPasswordPropertySetDirectly()
{
// Simulate edge case where Password property is set to true directly
// This should not cause encryption to fail
_rootNodeInfo.Password = true;
var element = _rootNodeSerializer.SerializeRootNodeInfo(_rootNodeInfo, _cryptographyProvider, _version, fullFileEncryption: true);
var fullFileEncryptionValue = element.Attribute(XName.Get("FullFileEncryption"))?.Value;
Assert.That(bool.Parse(fullFileEncryptionValue), Is.True);
// Verify Protected attribute can be decrypted successfully
var protectedValue = element.Attribute(XName.Get("Protected"))?.Value;
Assert.That(protectedValue, Is.Not.Null.And.Not.Empty);
var decryptedProtected = _cryptographyProvider.Decrypt(protectedValue, _rootNodeInfo.PasswordString.ConvertToSecureString());
Assert.That(decryptedProtected, Is.EqualTo("ThisIsNotProtected"));
}
[Test]
public void ConfVersionSerialized()
{

View File

@@ -0,0 +1,115 @@
using System.Diagnostics;
using System.Reflection;
using mRemoteNG.Connection;
using mRemoteNG.Tools;
using NUnit.Framework;
namespace mRemoteNGTests.Tools
{
[TestFixture]
public class ExternalToolTests
{
[Test]
public void PasswordWithEqualsSignIsPassedCorrectly()
{
// Arrange
var connectionInfo = new ConnectionInfo
{
Password = "Z-3=Wv99/Aq",
Hostname = "testhost",
Username = "testuser"
};
var externalTool = new ExternalTool
{
DisplayName = "Test Tool",
FileName = "test.exe",
Arguments = "-u %USERNAME% -p %PASSWORD% -h %HOSTNAME%"
};
// Act
var process = new Process();
var setProcessPropertiesMethod = typeof(ExternalTool).GetMethod(
"SetProcessProperties",
BindingFlags.NonPublic | BindingFlags.Instance
);
setProcessPropertiesMethod?.Invoke(externalTool, new object[] { process, connectionInfo });
// Assert
// The arguments should contain the password with the equals sign
// It may be escaped (e.g., Z-3^=Wv99/Aq), but should not be split
Assert.That(process.StartInfo.Arguments, Does.Contain("Z-3"));
Assert.That(process.StartInfo.Arguments, Does.Contain("Wv99/Aq"));
// The equals sign should be present (possibly escaped as ^=)
Assert.That(process.StartInfo.Arguments, Does.Match("Z-3.=Wv99/Aq"));
}
[Test]
public void PasswordWithSpecialCharactersIsPassedCorrectly()
{
// Arrange
var connectionInfo = new ConnectionInfo
{
Password = "P@ss=W0rd!",
Hostname = "testhost",
Username = "testuser"
};
var externalTool = new ExternalTool
{
DisplayName = "Test Tool",
FileName = "test.exe",
Arguments = "-p %PASSWORD%"
};
// Act
var process = new Process();
var setProcessPropertiesMethod = typeof(ExternalTool).GetMethod(
"SetProcessProperties",
BindingFlags.NonPublic | BindingFlags.Instance
);
setProcessPropertiesMethod?.Invoke(externalTool, new object[] { process, connectionInfo });
// Assert
// The password should be present in the arguments (possibly escaped)
Assert.That(process.StartInfo.Arguments, Does.Contain("P@ss"));
Assert.That(process.StartInfo.Arguments, Does.Contain("W0rd"));
}
[Test]
public void MultipleArgumentsAreParsedCorrectly()
{
// Arrange
var connectionInfo = new ConnectionInfo
{
Password = "TestPass=123",
Hostname = "myhost.com",
Username = "admin",
Port = 8080
};
var externalTool = new ExternalTool
{
DisplayName = "Test Tool",
FileName = "app.exe",
Arguments = "--host %HOSTNAME% --port %PORT% --user %USERNAME% --pass %PASSWORD%"
};
// Act
var process = new Process();
var setProcessPropertiesMethod = typeof(ExternalTool).GetMethod(
"SetProcessProperties",
BindingFlags.NonPublic | BindingFlags.Instance
);
setProcessPropertiesMethod?.Invoke(externalTool, new object[] { process, connectionInfo });
// Assert
var arguments = process.StartInfo.Arguments;
Assert.That(arguments, Does.Contain("myhost.com"));
Assert.That(arguments, Does.Contain("8080"));
Assert.That(arguments, Does.Contain("admin"));
Assert.That(arguments, Does.Contain("TestPass"));
Assert.That(arguments, Does.Contain("123"));
}
}
}

View File

@@ -48,6 +48,14 @@ namespace mRemoteNGTests.Tree
Assert.That(_rootNodeInfo.PasswordString, Is.EqualTo(password));
}
[Test]
public void PasswordStringReturnsDefaultWhenPasswordPropertySetWithoutPasswordString()
{
// Edge case: Password property set to true directly without setting PasswordString
_rootNodeInfo.Password = true;
Assert.That(_rootNodeInfo.PasswordString, Is.EqualTo(_rootNodeInfo.DefaultPassword));
}
[TestCase(RootNodeType.Connection, TreeNodeType.Root)]
[TestCase(RootNodeType.PuttySessions, TreeNodeType.PuttyRoot)]
public void RootNodeHasCorrectTreeNodeType(RootNodeType rootNodeType, TreeNodeType expectedTreeNodeType)

View File

@@ -2,6 +2,7 @@
using System.Threading;
using System.Windows.Forms;
using mRemoteNGTests.TestHelpers;
using System.Linq;
namespace mRemoteNGTests.UI.Forms
{
@@ -33,5 +34,37 @@ namespace mRemoteNGTests.UI.Forms
ListViewTester listViewTester = new("lstOptionPages", _optionsForm);
Assert.That(listViewTester.Items.Count, Is.EqualTo(12));
}
[Test]
public void ChangingOptionMarksPageAsChanged()
{
// Wait for all pages to load
System.Threading.Thread.Sleep(500);
Application.DoEvents();
// Get the options panel
var pnlMain = _optionsForm.FindControl<Panel>("pnlMain");
Assert.That(pnlMain, Is.Not.Null);
if (pnlMain.Controls.Count > 0)
{
var optionsPage = pnlMain.Controls[0] as mRemoteNG.UI.Forms.OptionsPages.OptionsPage;
Assert.That(optionsPage, Is.Not.Null);
// Find a checkbox in the options page
var checkBoxes = optionsPage.Controls.Find("", true).OfType<CheckBox>().ToList();
if (checkBoxes.Count > 0)
{
var checkBox = checkBoxes[0];
bool originalValue = checkBox.Checked;
checkBox.Checked = !originalValue;
Application.DoEvents();
// Verify the page is marked as changed
Assert.That(optionsPage.HasChanges, Is.True);
}
}
}
}
}