mirror of
https://github.com/mRemoteNG/mRemoteNG.git
synced 2026-02-17 22:11:48 +08:00
Merge branch 'develop' into refactor_config_window
# Conflicts: # mRemoteV1/UI/Window/ConfigWindow.cs
This commit is contained in:
@@ -2,10 +2,13 @@
|
||||
|
||||
Features/Enhancements:
|
||||
----------------------
|
||||
#1414: Add "Remote Audio Capture" option for RDP
|
||||
#1336: Added ability to run External tools on folders
|
||||
#1320: Added ability to favorite items in the connection tree
|
||||
#1318: Added support for saving connections in MySQL
|
||||
#1293: Importing .rdp files now imports gateway settings
|
||||
#1246: Improved connections loading to tolerate missing attributes in the confCons xml file
|
||||
#1230: Added option to track the currently focused connection in the connection tree
|
||||
#1223: Open External Links in Default Web Browser
|
||||
#1220: Added an Apple/Mac connection icon
|
||||
#1218: A splashscreen has been added when mRemoteNG starts
|
||||
@@ -13,14 +16,18 @@ Features/Enhancements:
|
||||
#1201: The help files packaged with mRemoteNG have been rewritten
|
||||
#1186: Certain dialogs are not correctly using localized text for buttons
|
||||
#1170: The Options window no longer displays in the Windows taskbar when open
|
||||
#1159: Added a dialog that will display when unhandled exceptions occur
|
||||
#1141: 'Copy Hostname' option added to connection tree context menu
|
||||
#1129: Spanish translation improvements
|
||||
#1123: Added a dialog that will display when unhandled exceptions occur
|
||||
#1102: Added a button to clear connections searchbox
|
||||
#1072: Russian translation improvements
|
||||
#1042: Added a connection icon for OSX/MacOS
|
||||
#1016: Chinese (simplified) translation improvements
|
||||
#951: Added property to Enable/Disable Clipboard Sharing for RDP connections
|
||||
#929: Added the hostname to certain RDP error/disconnect messages where it was missing
|
||||
#928: Add context menu items to 'Close all but this' and 'Close all tabs to the right'
|
||||
#907: Added option to disable trimming whitespace from username field
|
||||
#896: Added a "view only" mode for RDP connections
|
||||
#765: Port Scan Issues (single port scan option now available)
|
||||
#416: Added ability to Enable/Disable Clipboard Sharing for RDP connections
|
||||
#321: Added support for displaying on HiDPI screens
|
||||
@@ -29,6 +36,7 @@ Features/Enhancements:
|
||||
|
||||
Fixes:
|
||||
------
|
||||
#1383: Fixed issue where default Computer OU was not showing up when importing from Active Directory
|
||||
#1248: RemoveMagicLib Bugs - various bugs that cropped up as a result of removing magiclib
|
||||
#1245: Options form takes nearly 3 seconds to appear when Theming is active
|
||||
#1240: Theming problem with NGNumericUpDown
|
||||
@@ -40,6 +48,20 @@ Fixes:
|
||||
#1044: Dragging (grabbing) the program window requires 2 clicks
|
||||
|
||||
|
||||
1.76.20 (2019-04-12):
|
||||
|
||||
Fixes:
|
||||
------
|
||||
#1401: Connections corrupted when importing RDC Manager files that are missing certain fields
|
||||
|
||||
|
||||
1.76.19 (2019-04-04):
|
||||
|
||||
Fixes:
|
||||
------
|
||||
#1374: Vertical Scroll Bar missing in PuTTYNG after 0.70.0.1 & 0.71 updates
|
||||
|
||||
|
||||
1.76.18 (2019-03-20):
|
||||
|
||||
Fixes:
|
||||
|
||||
@@ -29,6 +29,7 @@ Aleksey Reytsman (github.com/areytsman)
|
||||
Cristian Abelleira (github.com/CrAbelleira)
|
||||
github.com/MitchellBot
|
||||
github.com/mjbnz
|
||||
Bilal Korkmaz (github.com/bllkrkmz)
|
||||
|
||||
|
||||
Past Contributors
|
||||
|
||||
@@ -112,6 +112,7 @@ namespace mRemoteNGTests.Config.Serializers.ConnectionSerializers.Csv
|
||||
RedirectPrinters = true,
|
||||
RedirectSmartCards = true,
|
||||
RedirectSound = RdpProtocol.RDPSounds.LeaveAtRemoteComputer,
|
||||
RedirectAudioCapture = true,
|
||||
RedirectKeys = true,
|
||||
VNCCompression = ProtocolVNC.Compression.Comp4,
|
||||
VNCEncoding = ProtocolVNC.Encoding.EncRRE,
|
||||
|
||||
@@ -91,7 +91,7 @@ namespace mRemoteNGTests.Config.Serializers.MiscSerializers
|
||||
[TestCaseSource(nameof(NullPropertyValues))]
|
||||
public void PropertiesWithoutValuesAreIgnored(Func<ConnectionInfo, object> propSelector)
|
||||
{
|
||||
var connectionTreeModel = _deserializer.Deserialize(Resources.test_rdcman_v2_7_schema3_null_values);
|
||||
var connectionTreeModel = _deserializer.Deserialize(Resources.test_rdcman_v2_7_schema3_empty_values);
|
||||
|
||||
var importedConnection = connectionTreeModel
|
||||
.GetRecursiveChildList()
|
||||
@@ -103,7 +103,22 @@ namespace mRemoteNGTests.Config.Serializers.MiscSerializers
|
||||
Assert.That(propSelector(importedConnection), Is.EqualTo(propSelector(new ConnectionInfo())));
|
||||
}
|
||||
|
||||
[Test]
|
||||
[TestCaseSource(nameof(NullPropertyValues))]
|
||||
public void NonExistantPropertiesAreIgnored(Func<ConnectionInfo, object> propSelector)
|
||||
{
|
||||
var connectionTreeModel = _deserializer.Deserialize(Resources.test_rdcman_v2_7_schema3_null_values);
|
||||
|
||||
var importedConnection = connectionTreeModel
|
||||
.GetRecursiveChildList()
|
||||
.OfType<ContainerInfo>()
|
||||
.First(node => node.Name == "Group1")
|
||||
.Children
|
||||
.First();
|
||||
|
||||
Assert.That(propSelector(importedConnection), Is.EqualTo(propSelector(new ConnectionInfo())));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void ExceptionThrownOnBadSchemaVersion()
|
||||
{
|
||||
var badFileContents = Resources.test_rdcman_v2_2_badschemaversion;
|
||||
|
||||
26
mRemoteNGTests/Properties/Resources.Designer.cs
generated
26
mRemoteNGTests/Properties/Resources.Designer.cs
generated
@@ -298,6 +298,32 @@ namespace mRemoteNGTests.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to <?xml version="1.0" encoding="utf-8"?>
|
||||
///<RDCMan programVersion="2.7" schemaVersion="3">
|
||||
/// <file>
|
||||
/// <credentialsProfiles />
|
||||
/// <properties>
|
||||
/// <expanded>True</expanded>
|
||||
/// <name>test_RDCMan_connections</name>
|
||||
/// </properties>
|
||||
/// <smartGroup>
|
||||
/// <properties>
|
||||
/// <expanded>False</expanded>
|
||||
/// <name>AllServers</name>
|
||||
/// </properties>
|
||||
/// <ruleGroup operator="All">
|
||||
/// <rule>
|
||||
/// <property>DisplayName</property>
|
||||
/// <operator>Matches</operator>
|
||||
/// [rest of string was truncated]";.
|
||||
/// </summary>
|
||||
internal static string test_rdcman_v2_7_schema3_empty_values {
|
||||
get {
|
||||
return ResourceManager.GetString("test_rdcman_v2_7_schema3_empty_values", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to <?xml version="1.0" encoding="utf-8"?>
|
||||
///<RDCMan programVersion="2.7" schemaVersion="3">
|
||||
|
||||
@@ -175,6 +175,9 @@
|
||||
<data name="test_rdcman_v2_7_schema3" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\test_RDCMan_v2_7_schema3.rdg;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
|
||||
</data>
|
||||
<data name="test_rdcman_v2_7_schema3_empty_values" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\test_rdcman_v2_7_schema3_empty_values.rdg;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
|
||||
</data>
|
||||
<data name="test_rdcman_v2_7_schema3_null_values" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\test_rdcman_v2_7_schema3_null_values.rdg;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
|
||||
</data>
|
||||
|
||||
@@ -0,0 +1,95 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RDCMan programVersion="2.7" schemaVersion="3">
|
||||
<file>
|
||||
<credentialsProfiles />
|
||||
<properties>
|
||||
<expanded>True</expanded>
|
||||
<name>test_RDCMan_connections</name>
|
||||
</properties>
|
||||
<smartGroup>
|
||||
<properties>
|
||||
<expanded>False</expanded>
|
||||
<name>AllServers</name>
|
||||
</properties>
|
||||
<ruleGroup operator="All">
|
||||
<rule>
|
||||
<property>DisplayName</property>
|
||||
<operator>Matches</operator>
|
||||
<value>server</value>
|
||||
</rule>
|
||||
</ruleGroup>
|
||||
</smartGroup>
|
||||
<group>
|
||||
<properties>
|
||||
<expanded>True</expanded>
|
||||
<name>Group1</name>
|
||||
</properties>
|
||||
<server>
|
||||
<properties>
|
||||
<displayName></displayName>
|
||||
<name></name>
|
||||
<comment></comment>
|
||||
</properties>
|
||||
<logonCredentials inherit="None">
|
||||
<profileName scope="Local"></profileName>
|
||||
<userName></userName>
|
||||
<password></password>
|
||||
<domain></domain>
|
||||
</logonCredentials>
|
||||
<connectionSettings inherit="None">
|
||||
<connectToConsole></connectToConsole>
|
||||
<startProgram />
|
||||
<workingDir />
|
||||
<port></port>
|
||||
<loadBalanceInfo />
|
||||
</connectionSettings>
|
||||
<gatewaySettings inherit="None">
|
||||
<enabled></enabled>
|
||||
<hostName></hostName>
|
||||
<logonMethod></logonMethod>
|
||||
<localBypass></localBypass>
|
||||
<credSharing></credSharing>
|
||||
<profileName scope="Local"></profileName>
|
||||
<userName></userName>
|
||||
<password />
|
||||
<domain></domain>
|
||||
</gatewaySettings>
|
||||
<remoteDesktop inherit="None">
|
||||
<sameSizeAsClientArea></sameSizeAsClientArea>
|
||||
<fullScreen></fullScreen>
|
||||
<colorDepth></colorDepth>
|
||||
</remoteDesktop>
|
||||
<localResources inherit="None">
|
||||
<audioRedirection></audioRedirection>
|
||||
<audioRedirectionQuality></audioRedirectionQuality>
|
||||
<audioCaptureRedirection></audioCaptureRedirection>
|
||||
<keyboardHook></keyboardHook>
|
||||
<redirectClipboard></redirectClipboard>
|
||||
<redirectDrives></redirectDrives>
|
||||
<redirectDrivesList>
|
||||
<item></item>
|
||||
<item></item>
|
||||
<item></item>
|
||||
<item></item>
|
||||
<item></item>
|
||||
</redirectDrivesList>
|
||||
<redirectPrinters></redirectPrinters>
|
||||
<redirectPorts></redirectPorts>
|
||||
<redirectSmartCards></redirectSmartCards>
|
||||
<redirectPnpDevices></redirectPnpDevices>
|
||||
</localResources>
|
||||
<displaySettings inherit="None">
|
||||
<thumbnailScale></thumbnailScale>
|
||||
<smartSizeDockedWindows></smartSizeDockedWindows>
|
||||
<smartSizeUndockedWindows></smartSizeUndockedWindows>
|
||||
</displaySettings>
|
||||
<securitySettings inherit="None">
|
||||
<authentication></authentication>
|
||||
</securitySettings>
|
||||
</server>
|
||||
</group>
|
||||
</file>
|
||||
<connected />
|
||||
<favorites />
|
||||
<recentlyUsed />
|
||||
</RDCMan>
|
||||
@@ -26,65 +26,20 @@
|
||||
</properties>
|
||||
<server>
|
||||
<properties>
|
||||
<displayName></displayName>
|
||||
<name></name>
|
||||
<comment></comment>
|
||||
</properties>
|
||||
<logonCredentials inherit="None">
|
||||
<profileName scope="Local"></profileName>
|
||||
<userName></userName>
|
||||
<password></password>
|
||||
<domain></domain>
|
||||
</logonCredentials>
|
||||
<connectionSettings inherit="None">
|
||||
<connectToConsole></connectToConsole>
|
||||
<startProgram />
|
||||
<workingDir />
|
||||
<port></port>
|
||||
<loadBalanceInfo />
|
||||
</connectionSettings>
|
||||
<gatewaySettings inherit="None">
|
||||
<enabled></enabled>
|
||||
<hostName></hostName>
|
||||
<logonMethod></logonMethod>
|
||||
<localBypass></localBypass>
|
||||
<credSharing></credSharing>
|
||||
<profileName scope="Local"></profileName>
|
||||
<userName></userName>
|
||||
<password />
|
||||
<domain></domain>
|
||||
</gatewaySettings>
|
||||
<remoteDesktop inherit="None">
|
||||
<sameSizeAsClientArea></sameSizeAsClientArea>
|
||||
<fullScreen></fullScreen>
|
||||
<colorDepth></colorDepth>
|
||||
</remoteDesktop>
|
||||
<localResources inherit="None">
|
||||
<audioRedirection></audioRedirection>
|
||||
<audioRedirectionQuality></audioRedirectionQuality>
|
||||
<audioCaptureRedirection></audioCaptureRedirection>
|
||||
<keyboardHook></keyboardHook>
|
||||
<redirectClipboard></redirectClipboard>
|
||||
<redirectDrives></redirectDrives>
|
||||
<redirectDrivesList>
|
||||
<item></item>
|
||||
<item></item>
|
||||
<item></item>
|
||||
<item></item>
|
||||
<item></item>
|
||||
</redirectDrivesList>
|
||||
<redirectPrinters></redirectPrinters>
|
||||
<redirectPorts></redirectPorts>
|
||||
<redirectSmartCards></redirectSmartCards>
|
||||
<redirectPnpDevices></redirectPnpDevices>
|
||||
</localResources>
|
||||
<displaySettings inherit="None">
|
||||
<thumbnailScale></thumbnailScale>
|
||||
<smartSizeDockedWindows></smartSizeDockedWindows>
|
||||
<smartSizeUndockedWindows></smartSizeUndockedWindows>
|
||||
</displaySettings>
|
||||
<securitySettings inherit="None">
|
||||
<authentication></authentication>
|
||||
</securitySettings>
|
||||
</server>
|
||||
</group>
|
||||
|
||||
@@ -45,6 +45,7 @@
|
||||
public TType RedirectSmartCards { get; set; }
|
||||
public TType RedirectSound { get; set; }
|
||||
public TType SoundQuality { get; set; }
|
||||
public TType RedirectAudioCapture { get; set; }
|
||||
public TType PreExtApp { get; set; }
|
||||
public TType PostExtApp { get; set; }
|
||||
public TType MacAddress { get; set; }
|
||||
|
||||
@@ -286,6 +286,7 @@ namespace mRemoteNGTests.UI.Window.ConfigWindowTests
|
||||
nameof(ConnectionInfo.RedirectPorts),
|
||||
nameof(ConnectionInfo.RedirectSmartCards),
|
||||
nameof(ConnectionInfo.RedirectSound),
|
||||
nameof(ConnectionInfo.RedirectAudioCapture),
|
||||
});
|
||||
break;
|
||||
case ProtocolType.VNC:
|
||||
|
||||
@@ -277,6 +277,7 @@
|
||||
<None Include="Resources\test_rdcman_v2_2_badschemaversion.rdg" />
|
||||
<None Include="Resources\test_rdcman_v2_2_schema1.rdg" />
|
||||
<None Include="Resources\test_RDCMan_v2_7_schema3.rdg" />
|
||||
<None Include="Resources\test_rdcman_v2_7_schema3_empty_values.rdg" />
|
||||
<None Include="Resources\test_rdcman_v2_7_schema3_null_values.rdg" />
|
||||
<None Include="Resources\test_remotedesktopconnection.rdp" />
|
||||
</ItemGroup>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
using mRemoteNG.UI.Forms;
|
||||
using System;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Threading;
|
||||
using System.Windows.Forms;
|
||||
using mRemoteNG.UI.Forms;
|
||||
|
||||
namespace mRemoteNG.App
|
||||
{
|
||||
@@ -85,12 +85,18 @@ namespace mRemoteNG.App
|
||||
|
||||
private static void ApplicationOnThreadException(object sender, ThreadExceptionEventArgs e)
|
||||
{
|
||||
if (!FrmSplashScreen.getInstance().IsDisposed)
|
||||
FrmSplashScreen.getInstance().Close();
|
||||
|
||||
var window = new UnhandledExceptionWindow(e.Exception, false);
|
||||
window.ShowDialog(FrmMain.Default);
|
||||
}
|
||||
|
||||
private static void CurrentDomainOnUnhandledException(object sender, UnhandledExceptionEventArgs e)
|
||||
{
|
||||
if (!FrmSplashScreen.getInstance().IsDisposed)
|
||||
FrmSplashScreen.getInstance().Close();
|
||||
|
||||
var window = new UnhandledExceptionWindow(e.ExceptionObject as Exception, e.IsTerminating);
|
||||
window.ShowDialog(FrmMain.Default);
|
||||
}
|
||||
|
||||
@@ -277,6 +277,13 @@ namespace mRemoteNG.Config.Serializers.Csv
|
||||
connectionRecord.RedirectSound = value;
|
||||
}
|
||||
|
||||
if (headers.Contains("RedirectAudioCapture"))
|
||||
{
|
||||
bool value;
|
||||
if (bool.TryParse(connectionCsv[headers.IndexOf("RedirectAudioCapture")], out value))
|
||||
connectionRecord.RedirectAudioCapture = value;
|
||||
}
|
||||
|
||||
if (headers.Contains("RedirectKeys"))
|
||||
{
|
||||
bool value;
|
||||
@@ -756,6 +763,13 @@ namespace mRemoteNG.Config.Serializers.Csv
|
||||
connectionRecord.Inheritance.SoundQuality = value;
|
||||
}
|
||||
|
||||
if (headers.Contains("InheritRedirectAudioCapture"))
|
||||
{
|
||||
bool value;
|
||||
if (bool.TryParse(connectionCsv[headers.IndexOf("InheritRedirectAudioCapture")], out value))
|
||||
connectionRecord.Inheritance.RedirectAudioCapture = value;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
return connectionRecord;
|
||||
|
||||
@@ -56,10 +56,10 @@ namespace mRemoteNG.Config.Serializers.Csv
|
||||
if (_saveFilter.SaveDomain)
|
||||
sb.Append("Domain;");
|
||||
sb.Append(
|
||||
"Hostname;Protocol;PuttySession;Port;ConnectToConsole;UseCredSsp;RenderingEngine;ICAEncryptionStrength;RDPAuthenticationLevel;LoadBalanceInfo;Colors;Resolution;AutomaticResize;DisplayWallpaper;DisplayThemes;EnableFontSmoothing;EnableDesktopComposition;CacheBitmaps;RedirectDiskDrives;RedirectPorts;RedirectPrinters;RedirectClipboard;RedirectSmartCards;RedirectSound;RedirectKeys;PreExtApp;PostExtApp;MacAddress;UserField;ExtApp;Favorite;VNCCompression;VNCEncoding;VNCAuthMode;VNCProxyType;VNCProxyIP;VNCProxyPort;VNCProxyUsername;VNCProxyPassword;VNCColors;VNCSmartSizeMode;VNCViewOnly;RDGatewayUsageMethod;RDGatewayHostname;RDGatewayUseConnectionCredentials;RDGatewayUsername;RDGatewayPassword;RDGatewayDomain;");
|
||||
"Hostname;Protocol;PuttySession;Port;ConnectToConsole;UseCredSsp;RenderingEngine;ICAEncryptionStrength;RDPAuthenticationLevel;LoadBalanceInfo;Colors;Resolution;AutomaticResize;DisplayWallpaper;DisplayThemes;EnableFontSmoothing;EnableDesktopComposition;CacheBitmaps;RedirectDiskDrives;RedirectPorts;RedirectPrinters;RedirectClipboard;RedirectSmartCards;RedirectSound;RedirectKeys;PreExtApp;PostExtApp;MacAddress;UserField;ExtApp;Favorite;VNCCompression;VNCEncoding;VNCAuthMode;VNCProxyType;VNCProxyIP;VNCProxyPort;VNCProxyUsername;VNCProxyPassword;VNCColors;VNCSmartSizeMode;VNCViewOnly;RDGatewayUsageMethod;RDGatewayHostname;RDGatewayUseConnectionCredentials;RDGatewayUsername;RDGatewayPassword;RDGatewayDomain;RedirectAudioCapture;");
|
||||
if (_saveFilter.SaveInheritance)
|
||||
sb.Append(
|
||||
"InheritCacheBitmaps;InheritColors;InheritDescription;InheritDisplayThemes;InheritDisplayWallpaper;InheritEnableFontSmoothing;InheritEnableDesktopComposition;InheritDomain;InheritIcon;InheritPanel;InheritPassword;InheritPort;InheritProtocol;InheritPuttySession;InheritRedirectDiskDrives;InheritRedirectKeys;InheritRedirectPorts;InheritRedirectPrinters;InheritRedirectClipboard;InheritRedirectSmartCards;InheritRedirectSound;InheritResolution;InheritAutomaticResize;InheritUseConsoleSession;InheritUseCredSsp;InheritRenderingEngine;InheritUsername;InheritICAEncryptionStrength;InheritRDPAuthenticationLevel;InheritLoadBalanceInfo;InheritPreExtApp;InheritPostExtApp;InheritMacAddress;InheritUserField;InheritFavorite;InheritExtApp;InheritVNCCompression;InheritVNCEncoding;InheritVNCAuthMode;InheritVNCProxyType;InheritVNCProxyIP;InheritVNCProxyPort;InheritVNCProxyUsername;InheritVNCProxyPassword;InheritVNCColors;InheritVNCSmartSizeMode;InheritVNCViewOnly;InheritRDGatewayUsageMethod;InheritRDGatewayHostname;InheritRDGatewayUseConnectionCredentials;InheritRDGatewayUsername;InheritRDGatewayPassword;InheritRDGatewayDomain;InheritRDPAlertIdleTimeout;InheritRDPMinutesToIdleTimeout;InheritSoundQuality");
|
||||
"InheritCacheBitmaps;InheritColors;InheritDescription;InheritDisplayThemes;InheritDisplayWallpaper;InheritEnableFontSmoothing;InheritEnableDesktopComposition;InheritDomain;InheritIcon;InheritPanel;InheritPassword;InheritPort;InheritProtocol;InheritPuttySession;InheritRedirectDiskDrives;InheritRedirectKeys;InheritRedirectPorts;InheritRedirectPrinters;InheritRedirectClipboard;InheritRedirectSmartCards;InheritRedirectSound;InheritResolution;InheritAutomaticResize;InheritUseConsoleSession;InheritUseCredSsp;InheritRenderingEngine;InheritUsername;InheritICAEncryptionStrength;InheritRDPAuthenticationLevel;InheritLoadBalanceInfo;InheritPreExtApp;InheritPostExtApp;InheritMacAddress;InheritUserField;InheritFavorite;InheritExtApp;InheritVNCCompression;InheritVNCEncoding;InheritVNCAuthMode;InheritVNCProxyType;InheritVNCProxyIP;InheritVNCProxyPort;InheritVNCProxyUsername;InheritVNCProxyPassword;InheritVNCColors;InheritVNCSmartSizeMode;InheritVNCViewOnly;InheritRDGatewayUsageMethod;InheritRDGatewayHostname;InheritRDGatewayUseConnectionCredentials;InheritRDGatewayUsername;InheritRDGatewayPassword;InheritRDGatewayDomain;InheritRDPAlertIdleTimeout;InheritRDPMinutesToIdleTimeout;InheritSoundQuality;InheritRedirectAudioCapture;");
|
||||
}
|
||||
|
||||
private void SerializeNodesRecursive(ConnectionInfo node, StringBuilder sb)
|
||||
@@ -147,7 +147,8 @@ namespace mRemoteNG.Config.Serializers.Csv
|
||||
.Append(FormatForCsv(con.RDGatewayUseConnectionCredentials))
|
||||
.Append(FormatForCsv(con.RDGatewayUsername))
|
||||
.Append(FormatForCsv(con.RDGatewayPassword))
|
||||
.Append(FormatForCsv(con.RDGatewayDomain));
|
||||
.Append(FormatForCsv(con.RDGatewayDomain))
|
||||
.Append(FormatForCsv(con.RedirectAudioCapture));
|
||||
|
||||
|
||||
if (!_saveFilter.SaveInheritance)
|
||||
@@ -208,7 +209,8 @@ namespace mRemoteNG.Config.Serializers.Csv
|
||||
.Append(FormatForCsv(con.Inheritance.RDGatewayDomain))
|
||||
.Append(FormatForCsv(con.Inheritance.RDPAlertIdleTimeout))
|
||||
.Append(FormatForCsv(con.Inheritance.RDPMinutesToIdleTimeout))
|
||||
.Append(FormatForCsv(con.Inheritance.SoundQuality));
|
||||
.Append(FormatForCsv(con.Inheritance.SoundQuality))
|
||||
.Append(FormatForCsv(con.Inheritance.RedirectAudioCapture));
|
||||
}
|
||||
|
||||
private string FormatForCsv(object value)
|
||||
|
||||
@@ -125,6 +125,8 @@ namespace mRemoteNG.Config.Serializers.MsSql
|
||||
(RdpProtocol.RDPSounds)Enum.Parse(typeof(RdpProtocol.RDPSounds), (string)dataRow["RedirectSound"]);
|
||||
connectionInfo.SoundQuality = (RdpProtocol.RDPSoundQuality)Enum.Parse(typeof(RdpProtocol.RDPSoundQuality),
|
||||
(string)dataRow["SoundQuality"]);
|
||||
connectionInfo.RedirectAudioCapture = (bool)dataRow["RedirectAudioCapture"];
|
||||
|
||||
connectionInfo.RedirectKeys = (bool)dataRow["RedirectKeys"];
|
||||
connectionInfo.PreExtApp = (string)dataRow["PreExtApp"];
|
||||
connectionInfo.PostExtApp = (string)dataRow["PostExtApp"];
|
||||
@@ -185,6 +187,7 @@ namespace mRemoteNG.Config.Serializers.MsSql
|
||||
connectionInfo.Inheritance.RedirectSmartCards = (bool)dataRow["InheritRedirectSmartCards"];
|
||||
connectionInfo.Inheritance.RedirectSound = (bool)dataRow["InheritRedirectSound"];
|
||||
connectionInfo.Inheritance.SoundQuality = (bool)dataRow["InheritSoundQuality"];
|
||||
connectionInfo.Inheritance.RedirectAudioCapture = (bool)dataRow["InheritRedirectAudioCapture"];
|
||||
connectionInfo.Inheritance.Resolution = (bool)dataRow["InheritResolution"];
|
||||
connectionInfo.Inheritance.AutomaticResize = (bool)dataRow["InheritAutomaticResize"];
|
||||
connectionInfo.Inheritance.UseConsoleSession = (bool)dataRow["InheritUseConsoleSession"];
|
||||
|
||||
@@ -103,6 +103,7 @@ namespace mRemoteNG.Config.Serializers.MsSql
|
||||
dataTable.Columns.Add("RedirectClipboard", typeof(bool));
|
||||
dataTable.Columns.Add("RedirectSmartCards", typeof(bool));
|
||||
dataTable.Columns.Add("RedirectSound", typeof(string));
|
||||
dataTable.Columns.Add("RedirectAudioCapture", typeof(bool));
|
||||
dataTable.Columns.Add("RedirectKeys", typeof(bool));
|
||||
dataTable.Columns.Add("Connected", typeof(bool));
|
||||
dataTable.Columns.Add("PreExtApp", typeof(string));
|
||||
@@ -148,6 +149,7 @@ namespace mRemoteNG.Config.Serializers.MsSql
|
||||
dataTable.Columns.Add("InheritRedirectClipboard", typeof(bool));
|
||||
dataTable.Columns.Add("InheritRedirectSmartCards", typeof(bool));
|
||||
dataTable.Columns.Add("InheritRedirectSound", typeof(bool));
|
||||
dataTable.Columns.Add("InheritRedirectAudioCapture", typeof(bool));
|
||||
dataTable.Columns.Add("InheritResolution", typeof(bool));
|
||||
dataTable.Columns.Add("InheritUseConsoleSession", typeof(bool));
|
||||
dataTable.Columns.Add("InheritUseCredSsp", typeof(bool));
|
||||
@@ -252,6 +254,7 @@ namespace mRemoteNG.Config.Serializers.MsSql
|
||||
dataRow["RedirectSmartCards"] = connectionInfo.RedirectSmartCards;
|
||||
dataRow["RedirectSound"] = connectionInfo.RedirectSound;
|
||||
dataRow["SoundQuality"] = connectionInfo.SoundQuality;
|
||||
dataRow["RedirectAudioCapture"] = connectionInfo.RedirectAudioCapture;
|
||||
dataRow["RedirectKeys"] = connectionInfo.RedirectKeys;
|
||||
dataRow["Connected"] =
|
||||
false; // TODO: this column can eventually be removed. we now save this property locally
|
||||
@@ -302,6 +305,7 @@ namespace mRemoteNG.Config.Serializers.MsSql
|
||||
dataRow["InheritRedirectSmartCards"] = connectionInfo.Inheritance.RedirectSmartCards;
|
||||
dataRow["InheritRedirectSound"] = connectionInfo.Inheritance.RedirectSound;
|
||||
dataRow["InheritSoundQuality"] = connectionInfo.Inheritance.SoundQuality;
|
||||
dataRow["InheritRedirectAudioCapture"] = connectionInfo.Inheritance.RedirectAudioCapture;
|
||||
dataRow["InheritResolution"] = connectionInfo.Inheritance.Resolution;
|
||||
dataRow["InheritAutomaticResize"] = connectionInfo.Inheritance.AutomaticResize;
|
||||
dataRow["InheritUseConsoleSession"] = connectionInfo.Inheritance.UseConsoleSession;
|
||||
@@ -361,6 +365,7 @@ namespace mRemoteNG.Config.Serializers.MsSql
|
||||
dataRow["InheritRedirectSmartCards"] = false;
|
||||
dataRow["InheritRedirectSound"] = false;
|
||||
dataRow["InheritSoundQuality"] = false;
|
||||
dataRow["InheritRedirectAudioCapture"] = false;
|
||||
dataRow["InheritResolution"] = false;
|
||||
dataRow["InheritAutomaticResize"] = false;
|
||||
dataRow["InheritUseConsoleSession"] = false;
|
||||
|
||||
@@ -107,6 +107,7 @@ namespace mRemoteNG.Config.Serializers.Xml
|
||||
connectionInfo.RedirectSmartCards.ToString().ToLowerInvariant()));
|
||||
element.Add(new XAttribute("RedirectSound", connectionInfo.RedirectSound.ToString()));
|
||||
element.Add(new XAttribute("SoundQuality", connectionInfo.SoundQuality.ToString()));
|
||||
element.Add(new XAttribute("RedirectAudioCapture", connectionInfo.RedirectAudioCapture.ToString().ToLowerInvariant()));
|
||||
element.Add(new XAttribute("RedirectKeys", connectionInfo.RedirectKeys.ToString().ToLowerInvariant()));
|
||||
element.Add(new XAttribute("Connected",
|
||||
(connectionInfo.OpenConnections.Count > 0).ToString().ToLowerInvariant()));
|
||||
@@ -210,6 +211,8 @@ namespace mRemoteNG.Config.Serializers.Xml
|
||||
connectionInfo.Inheritance.RedirectSound.ToString().ToLowerInvariant()));
|
||||
element.Add(new XAttribute("InheritSoundQuality",
|
||||
connectionInfo.Inheritance.SoundQuality.ToString().ToLowerInvariant()));
|
||||
element.Add(new XAttribute("InheritRedirectAudioCapture",
|
||||
connectionInfo.Inheritance.RedirectAudioCapture.ToString().ToLowerInvariant()));
|
||||
element.Add(new XAttribute("InheritResolution",
|
||||
connectionInfo.Inheritance.Resolution.ToString().ToLowerInvariant()));
|
||||
element.Add(new XAttribute("InheritAutomaticResize",
|
||||
@@ -311,6 +314,7 @@ namespace mRemoteNG.Config.Serializers.Xml
|
||||
element.Add(new XAttribute("InheritRedirectSmartCards", falseString));
|
||||
element.Add(new XAttribute("InheritRedirectSound", falseString));
|
||||
element.Add(new XAttribute("InheritSoundQuality", falseString));
|
||||
element.Add(new XAttribute("InheritRedirectAudioCapture", falseString));
|
||||
element.Add(new XAttribute("InheritResolution", falseString));
|
||||
element.Add(new XAttribute("InheritAutomaticResize", falseString));
|
||||
element.Add(new XAttribute("InheritUseConsoleSession", falseString));
|
||||
|
||||
@@ -321,6 +321,7 @@ namespace mRemoteNG.Config.Serializers.Xml
|
||||
connectionInfo.Colors = xmlnode.GetAttributeAsEnum<RdpProtocol.RDPColors>("Colors");
|
||||
connectionInfo.Resolution = xmlnode.GetAttributeAsEnum<RdpProtocol.RDPResolutions>("Resolution");
|
||||
connectionInfo.RedirectSound = xmlnode.GetAttributeAsEnum<RdpProtocol.RDPSounds>("RedirectSound");
|
||||
connectionInfo.RedirectAudioCapture = xmlnode.GetAttributeAsBool("RedirectAudioCapture");
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -346,6 +347,7 @@ namespace mRemoteNG.Config.Serializers.Xml
|
||||
}
|
||||
|
||||
connectionInfo.RedirectSound = xmlnode.GetAttributeAsEnum<RdpProtocol.RDPSounds>("RedirectSound");
|
||||
connectionInfo.RedirectAudioCapture = xmlnode.GetAttributeAsBool("RedirectAudioCapture");
|
||||
}
|
||||
|
||||
if (_confVersion >= 1.3)
|
||||
@@ -368,6 +370,7 @@ namespace mRemoteNG.Config.Serializers.Xml
|
||||
connectionInfo.Inheritance.RedirectSmartCards =
|
||||
xmlnode.GetAttributeAsBool("InheritRedirectSmartCards");
|
||||
connectionInfo.Inheritance.RedirectSound = xmlnode.GetAttributeAsBool("InheritRedirectSound");
|
||||
connectionInfo.Inheritance.RedirectAudioCapture = xmlnode.GetAttributeAsBool("RedirectAudioCapture");
|
||||
connectionInfo.Inheritance.Resolution = xmlnode.GetAttributeAsBool("InheritResolution");
|
||||
connectionInfo.Inheritance.UseConsoleSession =
|
||||
xmlnode.GetAttributeAsBool("InheritUseConsoleSession");
|
||||
|
||||
@@ -128,6 +128,9 @@ namespace mRemoteNG.Config.Serializers
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case "redirectaudiocapture":
|
||||
connectionInfo.RedirectAudioCapture = value == "1";
|
||||
break;
|
||||
case "loadbalanceinfo":
|
||||
connectionInfo.LoadBalanceInfo = value;
|
||||
break;
|
||||
|
||||
@@ -153,7 +153,7 @@ namespace mRemoteNG.Config.Serializers
|
||||
var logonCredentialsNode = xmlNode.SelectSingleNode("./logonCredentials");
|
||||
if (logonCredentialsNode?.Attributes?["inherit"]?.Value == "None")
|
||||
{
|
||||
connectionInfo.Username = logonCredentialsNode.SelectSingleNode("userName")?.InnerText;
|
||||
connectionInfo.Username = logonCredentialsNode.SelectSingleNode("userName")?.InnerText ?? string.Empty;
|
||||
|
||||
var passwordNode = logonCredentialsNode.SelectSingleNode("./password");
|
||||
if (_schemaVersion == 1) // Version 2.2 allows clear text passwords
|
||||
@@ -167,7 +167,7 @@ namespace mRemoteNG.Config.Serializers
|
||||
connectionInfo.Password = DecryptRdcManPassword(passwordNode?.InnerText);
|
||||
}
|
||||
|
||||
connectionInfo.Domain = logonCredentialsNode.SelectSingleNode("./domain")?.InnerText;
|
||||
connectionInfo.Domain = logonCredentialsNode.SelectSingleNode("./domain")?.InnerText ?? string.Empty;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -199,15 +199,15 @@ namespace mRemoteNG.Config.Serializers
|
||||
gatewaySettingsNode.SelectSingleNode("./enabled")?.InnerText == "True"
|
||||
? RdpProtocol.RDGatewayUsageMethod.Always
|
||||
: RdpProtocol.RDGatewayUsageMethod.Never;
|
||||
connectionInfo.RDGatewayHostname = gatewaySettingsNode.SelectSingleNode("./hostName")?.InnerText;
|
||||
connectionInfo.RDGatewayUsername = gatewaySettingsNode.SelectSingleNode("./userName")?.InnerText;
|
||||
connectionInfo.RDGatewayHostname = gatewaySettingsNode.SelectSingleNode("./hostName")?.InnerText ?? string.Empty;
|
||||
connectionInfo.RDGatewayUsername = gatewaySettingsNode.SelectSingleNode("./userName")?.InnerText ?? string.Empty;
|
||||
|
||||
var passwordNode = gatewaySettingsNode.SelectSingleNode("./password");
|
||||
connectionInfo.RDGatewayPassword = passwordNode?.Attributes?["storeAsClearText"]?.Value == "True"
|
||||
? passwordNode.InnerText
|
||||
: DecryptRdcManPassword(passwordNode?.InnerText);
|
||||
|
||||
connectionInfo.RDGatewayDomain = gatewaySettingsNode.SelectSingleNode("./domain")?.InnerText;
|
||||
connectionInfo.RDGatewayDomain = gatewaySettingsNode.SelectSingleNode("./domain")?.InnerText ?? string.Empty;
|
||||
// ./logonMethod
|
||||
// ./localBypass
|
||||
// ./credSharing
|
||||
|
||||
@@ -62,6 +62,7 @@ namespace mRemoteNG.Connection
|
||||
private bool _redirectSmartCards;
|
||||
private RdpProtocol.RDPSounds _redirectSound;
|
||||
private RdpProtocol.RDPSoundQuality _soundQuality;
|
||||
private bool _redirectAudioCapture;
|
||||
|
||||
private string _preExtApp;
|
||||
private string _postExtApp;
|
||||
@@ -145,7 +146,7 @@ namespace mRemoteNG.Connection
|
||||
public virtual string Username
|
||||
{
|
||||
get => GetPropertyValue("Username", _username);
|
||||
set => SetField(ref _username, value?.Trim(), "Username");
|
||||
set => SetField(ref _username, Settings.Default.DoNotTrimUsername ? value : value?.Trim(), "Username");
|
||||
}
|
||||
|
||||
[LocalizedAttributes.LocalizedCategory("strCategoryConnection", 2),
|
||||
@@ -515,6 +516,7 @@ namespace mRemoteNG.Connection
|
||||
set { SetField(ref _redirectClipboard, value, "RedirectClipboard"); }
|
||||
}
|
||||
|
||||
|
||||
[LocalizedAttributes.LocalizedCategory("strCategoryRedirect", 6),
|
||||
LocalizedAttributes.LocalizedDisplayName("strPropertyNameRedirectPorts"),
|
||||
LocalizedAttributes.LocalizedDescription("strPropertyDescriptionRedirectPorts"),
|
||||
@@ -559,6 +561,17 @@ namespace mRemoteNG.Connection
|
||||
set => SetField(ref _soundQuality, value, "SoundQuality");
|
||||
}
|
||||
|
||||
[LocalizedAttributes.LocalizedCategory("strCategoryRedirect", 6),
|
||||
LocalizedAttributes.LocalizedDisplayName("strPropertyNameRedirectAudioCapture"),
|
||||
LocalizedAttributes.LocalizedDescription("strPropertyDescriptionRedirectAudioCapture"),
|
||||
TypeConverter(typeof(MiscTools.YesNoTypeConverter)),
|
||||
UsedInProtocol(ProtocolType.RDP)]
|
||||
public bool RedirectAudioCapture
|
||||
{
|
||||
get => GetPropertyValue(nameof(RedirectAudioCapture), _redirectAudioCapture);
|
||||
set => SetField(ref _redirectAudioCapture, value, nameof(RedirectAudioCapture));
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Misc
|
||||
|
||||
@@ -364,6 +364,7 @@ namespace mRemoteNG.Connection
|
||||
Settings.Default.ConDefaultRedirectSound);
|
||||
SoundQuality = (RdpProtocol.RDPSoundQuality)Enum.Parse(typeof(RdpProtocol.RDPSoundQuality),
|
||||
Settings.Default.ConDefaultSoundQuality);
|
||||
RedirectAudioCapture = Settings.Default.ConDefaultRedirectAudioCapture;
|
||||
}
|
||||
|
||||
private void SetMiscDefaults()
|
||||
|
||||
@@ -293,6 +293,12 @@ namespace mRemoteNG.Connection
|
||||
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]
|
||||
public bool SoundQuality { get; set; }
|
||||
|
||||
[LocalizedAttributes.LocalizedCategory("strCategoryRedirect", 7),
|
||||
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameRedirectAudioCapture"),
|
||||
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionRedirectAudioCapture"),
|
||||
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]
|
||||
public bool RedirectAudioCapture { get; set; }
|
||||
|
||||
#endregion
|
||||
|
||||
#region Misc
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using AxWFICALib;
|
||||
using AxWFICALib;
|
||||
using mRemoteNG.App;
|
||||
using mRemoteNG.Connection.Protocol.RDP;
|
||||
using mRemoteNG.Messages;
|
||||
|
||||
@@ -151,7 +151,7 @@ namespace mRemoteNG.Connection.Protocol.RDP
|
||||
_rdpClient.AdvancedSettings2.keepAliveInterval = 60000; //in milliseconds (10,000 = 10 seconds)
|
||||
_rdpClient.AdvancedSettings5.AuthenticationLevel = 0;
|
||||
_rdpClient.AdvancedSettings2.EncryptionEnabled = 1;
|
||||
|
||||
|
||||
_rdpClient.AdvancedSettings2.overallConnectionTimeout = Settings.Default.ConRDPOverallConnectionTimeout;
|
||||
|
||||
_rdpClient.AdvancedSettings2.BitmapPeristence = Convert.ToInt32(_connectionInfo.CacheBitmaps);
|
||||
@@ -635,6 +635,7 @@ namespace mRemoteNG.Connection.Protocol.RDP
|
||||
_rdpClient.AdvancedSettings2.RedirectSmartCards = _connectionInfo.RedirectSmartCards;
|
||||
_rdpClient.SecuredSettings2.AudioRedirectionMode = (int)_connectionInfo.RedirectSound;
|
||||
_rdpClient.AdvancedSettings.DisableRdpdr = _connectionInfo.RedirectClipboard ? 0 : 1;
|
||||
_rdpClient.AdvancedSettings8.AudioCaptureRedirectionMode = _connectionInfo.RedirectAudioCapture;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@@ -860,7 +861,6 @@ namespace mRemoteNG.Connection.Protocol.RDP
|
||||
High = 2
|
||||
}
|
||||
|
||||
|
||||
private enum RDPPerformanceFlags
|
||||
{
|
||||
[Description("strRDPDisableWallpaper")]
|
||||
|
||||
40
mRemoteV1/Properties/Settings.Designer.cs
generated
40
mRemoteV1/Properties/Settings.Designer.cs
generated
@@ -611,6 +611,18 @@ namespace mRemoteNG {
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
public bool ConDefaultRedirectAudioCapture {
|
||||
get {
|
||||
return ((bool)(this["ConDefaultRedirectAudioCapture"]));
|
||||
}
|
||||
set {
|
||||
this["ConDefaultRedirectAudioCapture"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("2")]
|
||||
@@ -1031,6 +1043,18 @@ namespace mRemoteNG {
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
public bool InhDefaultRedirectAudioCapture {
|
||||
get {
|
||||
return ((bool)(this["InhDefaultRedirectAudioCapture"]));
|
||||
}
|
||||
set {
|
||||
this["InhDefaultRedirectAudioCapture"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
@@ -2818,8 +2842,8 @@ namespace mRemoteNG {
|
||||
this["InhDefaultFavorite"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("mssql")]
|
||||
public string SQLServerType {
|
||||
@@ -2830,5 +2854,17 @@ namespace mRemoteNG {
|
||||
this["SQLServerType"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
public bool DoNotTrimUsername {
|
||||
get {
|
||||
return ((bool)(this["DoNotTrimUsername"]));
|
||||
}
|
||||
set {
|
||||
this["DoNotTrimUsername"] = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -148,6 +148,9 @@
|
||||
</Setting>
|
||||
<Setting Name="ConDefaultRedirectSound" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)">DoNotPlay</Value>
|
||||
</Setting>
|
||||
<Setting Name="ConDefaultRedirectAudioCapture" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="MaxPuttyWaitTime" Type="System.Int32" Scope="User">
|
||||
<Value Profile="(Default)">2</Value>
|
||||
@@ -253,6 +256,9 @@
|
||||
</Setting>
|
||||
<Setting Name="InhDefaultRedirectSound" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="InhDefaultRedirectAudioCapture" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="InhDefaultResolution" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
@@ -704,5 +710,8 @@
|
||||
<Setting Name="SQLServerType" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)">mssql</Value>
|
||||
</Setting>
|
||||
<Setting Name="DoNotTrimUsername" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
</Settings>
|
||||
</SettingsFile>
|
||||
@@ -27,6 +27,20 @@
|
||||
</applicationRequestMinimum>
|
||||
</security>
|
||||
</trustInfo>
|
||||
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
|
||||
<application>
|
||||
<!-- Windows 10 -->
|
||||
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
|
||||
<!-- Windows 8.1 -->
|
||||
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
|
||||
<!-- Windows Vista -->
|
||||
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
|
||||
<!-- Windows 7 -->
|
||||
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
|
||||
<!-- Windows 8 -->
|
||||
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
|
||||
</application>
|
||||
</compatibility>
|
||||
|
||||
<asmv3:application>
|
||||
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
|
||||
|
||||
Binary file not shown.
@@ -49,6 +49,7 @@ CREATE TABLE [dbo].[tblCons] (
|
||||
[RedirectSmartCards] [bit] NOT NULL ,
|
||||
[RedirectSound] [varchar] (64) NOT NULL ,
|
||||
[SoundQuality] [varchar] (20) NOT NULL,
|
||||
[RedirectAudioCapture] [bit] NOT NULL,
|
||||
[RedirectKeys] [bit] NOT NULL ,
|
||||
[Connected] [bit] NOT NULL ,
|
||||
[PreExtApp] [varchar] (256) NULL ,
|
||||
@@ -94,6 +95,7 @@ CREATE TABLE [dbo].[tblCons] (
|
||||
[InheritRedirectSmartCards] [bit] NOT NULL ,
|
||||
[InheritRedirectSound] [bit] NOT NULL ,
|
||||
[InheritSoundQuality] [bit] NOT NULL,
|
||||
[InheritRedirectAudioCapture] [bit] NOT NULL,
|
||||
[InheritResolution] [bit] NOT NULL ,
|
||||
[InheritUseConsoleSession] [bit] NOT NULL ,
|
||||
[InheritUseCredSsp] [bit] NOT NULL ,
|
||||
|
||||
@@ -54,8 +54,9 @@ CREATE TABLE `tblCons` (
|
||||
`RedirectPorts` tinyint(1) NOT NULL,
|
||||
`RedirectPrinters` tinyint(1) NOT NULL,
|
||||
`RedirectSmartCards` tinyint(1) NOT NULL,
|
||||
`RedirectSound` varchar(64) NOT NULL,
|
||||
`RedirectSound` varchar(64) NOT NULL,
|
||||
`SoundQuality` varchar(20) NOT NULL,
|
||||
`RedirectAudioCapture` tinyint(1) NOT NULL,
|
||||
`RedirectKeys` tinyint(1) NOT NULL,
|
||||
`Connected` tinyint(1) NOT NULL,
|
||||
`PreExtApp` varchar(256) DEFAULT NULL,
|
||||
@@ -101,6 +102,7 @@ CREATE TABLE `tblCons` (
|
||||
`InheritRedirectSmartCards` tinyint(1) NOT NULL,
|
||||
`InheritRedirectSound` tinyint(1) NOT NULL,
|
||||
`InheritSoundQuality` tinyint(1) NOT NULL,
|
||||
`InheritRedirectAudioCapture` tinyint(1) NOT NULL,
|
||||
`InheritResolution` tinyint(1) NOT NULL,
|
||||
`InheritUseConsoleSession` tinyint(1) NOT NULL,
|
||||
`InheritUseCredSsp` tinyint(1) NOT NULL,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html lang="en" dir="ltr">
|
||||
<head>
|
||||
<meta charset="utf-8"/>
|
||||
@@ -17,7 +17,7 @@
|
||||
<ul>
|
||||
<li>SSH File Transfer requires an SSH service to listen on an available network port (default 22) on a remote host.</li>
|
||||
<li>A username and password must be supplied to connect with the remote host.</li>
|
||||
<li>The remote host must have a writeable folder on its filesystem to place the transferred files.</li>
|
||||
<li>The remote host must have a writable folder on its filesystem to place the transferred files.</li>
|
||||
</ul>
|
||||
<!-- Prerequisites - #end -->
|
||||
<!-- Configuration - #start -->
|
||||
@@ -62,6 +62,5 @@
|
||||
<b>[14] ERROR- SSH background transfer failed!</b>
|
||||
<br/>This issue was likely encountered due to a permissions issue. Ensure you have appropriate access to write to the specified Remote File.
|
||||
</div>
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
38
mRemoteV1/Resources/Language/Language.Designer.cs
generated
38
mRemoteV1/Resources/Language/Language.Designer.cs
generated
@@ -177,6 +177,24 @@ namespace mRemoteNG {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Do not trim spaces from usernames.
|
||||
/// </summary>
|
||||
internal static string DoNotTrimUsername {
|
||||
get {
|
||||
return ResourceManager.GetString("DoNotTrimUsername", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Environment.
|
||||
/// </summary>
|
||||
internal static string Environment {
|
||||
get {
|
||||
return ResourceManager.GetString("Environment", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to This exception will force mRemoteNG to close.
|
||||
/// </summary>
|
||||
@@ -4984,7 +5002,16 @@ namespace mRemoteNG {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Select whether clipboard should be shared..
|
||||
/// Looks up a localized string similar to Select whether the default audio input device on the remote machine should be redirected to this computer..
|
||||
/// </summary>
|
||||
internal static string strPropertyDescriptionRedirectAudioCapture {
|
||||
get {
|
||||
return ResourceManager.GetString("strPropertyDescriptionRedirectAudioCapture", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Select whether the clipboard should be shared..
|
||||
/// </summary>
|
||||
internal static string strPropertyDescriptionRedirectClipboard {
|
||||
get {
|
||||
@@ -5505,6 +5532,15 @@ namespace mRemoteNG {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Audio Capture.
|
||||
/// </summary>
|
||||
internal static string strPropertyNameRedirectAudioCapture {
|
||||
get {
|
||||
return ResourceManager.GetString("strPropertyNameRedirectAudioCapture", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Clipboard.
|
||||
/// </summary>
|
||||
|
||||
@@ -2666,4 +2666,7 @@ Development umfasst Alphas, Betas und Release Candidates.</value>
|
||||
<data name="ConnectInViewOnlyMode" xml:space="preserve">
|
||||
<value>Im View-Only-Modus verbinden</value>
|
||||
</data>
|
||||
<data name="DoNotTrimUsername" xml:space="preserve">
|
||||
<value>Leerzeichen nicht aus Benutzernamen entfernen</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1473,7 +1473,7 @@ If you run into such an error, please create a new connection file!</value>
|
||||
<value>Select whether local printers should be shown on the remote host.</value>
|
||||
</data>
|
||||
<data name="strPropertyDescriptionRedirectClipboard" xml:space="preserve">
|
||||
<value>Select whether clipboard should be shared.</value>
|
||||
<value>Select whether the clipboard should be shared.</value>
|
||||
</data>
|
||||
<data name="strPropertyDescriptionRedirectSmartCards" xml:space="preserve">
|
||||
<value>Select whether local smart cards should be available on the remote host.</value>
|
||||
@@ -1481,6 +1481,9 @@ If you run into such an error, please create a new connection file!</value>
|
||||
<data name="strPropertyDescriptionRedirectSounds" xml:space="preserve">
|
||||
<value>Select how remote sound should be redirected.</value>
|
||||
</data>
|
||||
<data name="strPropertyDescriptionRedirectAudioCapture" xml:space="preserve">
|
||||
<value>Select whether the default audio input device on the remote machine should be redirected to this computer.</value>
|
||||
</data>
|
||||
<data name="strPropertyDescriptionRenderingEngine" xml:space="preserve">
|
||||
<value>Select one of the available rendering engines that will be used to display HTML.</value>
|
||||
</data>
|
||||
@@ -1643,6 +1646,9 @@ If you run into such an error, please create a new connection file!</value>
|
||||
<data name="strPropertyNameRedirectSounds" xml:space="preserve">
|
||||
<value>Sounds</value>
|
||||
</data>
|
||||
<data name="strPropertyNameRedirectAudioCapture" xml:space="preserve">
|
||||
<value>Audio Capture</value>
|
||||
</data>
|
||||
<data name="strPropertyNameRenderingEngine" xml:space="preserve">
|
||||
<value>Rendering Engine</value>
|
||||
</data>
|
||||
@@ -2781,4 +2787,10 @@ Development Channel includes Alphas, Betas & Release Candidates.</value>
|
||||
<data name="ConnectInViewOnlyMode" xml:space="preserve">
|
||||
<value>Connect in View Only mode</value>
|
||||
</data>
|
||||
<data name="DoNotTrimUsername" xml:space="preserve">
|
||||
<value>Do not trim spaces from usernames</value>
|
||||
</data>
|
||||
<data name="Environment" xml:space="preserve">
|
||||
<value>Environment</value>
|
||||
</data>
|
||||
</root>
|
||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -69,6 +69,7 @@
|
||||
<xs:attribute name="RedirectSmartCards" type="xs:boolean" use="required" />
|
||||
<xs:attribute name="RedirectSound" type="xs:string" use="required" />
|
||||
<xs:attribute name="SoundQuality" type="xs:string" use="required" />
|
||||
<xs:attribute name="RedirectAudioCapture" type="xs:boolean" use="required" />
|
||||
<xs:attribute name="RedirectKeys" type="xs:boolean" use="required" />
|
||||
<xs:attribute name="Connected" type="xs:boolean" use="required" />
|
||||
<xs:attribute name="PreExtApp" type="xs:string" use="required" />
|
||||
@@ -117,6 +118,7 @@
|
||||
<xs:attribute name="InheritRedirectSmartCards" type="xs:boolean" use="optional" />
|
||||
<xs:attribute name="InheritRedirectSound" type="xs:boolean" use="optional" />
|
||||
<xs:attribute name="InheritSoundQuality" type="xs:boolean" use="optional" />
|
||||
<xs:attribute name="InheritRedirectAudioCapture" type="xs:boolean" use="optional" />
|
||||
<xs:attribute name="InheritResolution" type="xs:boolean" use="optional" />
|
||||
<xs:attribute name="InheritAutomaticResize" type="xs:boolean" use="optional" />
|
||||
<xs:attribute name="InheritUseConsoleSession" type="xs:boolean" use="optional" />
|
||||
|
||||
@@ -49,13 +49,6 @@ namespace mRemoteNG.Tools
|
||||
return passwordForm.GetKey();
|
||||
}
|
||||
|
||||
|
||||
public static string CreateConstantID()
|
||||
{
|
||||
return Guid.NewGuid().ToString();
|
||||
}
|
||||
|
||||
|
||||
public static string LeadingZero(string Number)
|
||||
{
|
||||
if (Convert.ToInt32(Number) < 10)
|
||||
|
||||
@@ -9,6 +9,7 @@ using mRemoteNG.App;
|
||||
using mRemoteNG.Config.Putty;
|
||||
using mRemoteNG.Connection;
|
||||
using mRemoteNG.Container;
|
||||
using mRemoteNG.Themes;
|
||||
using mRemoteNG.Tools.Clipboard;
|
||||
using mRemoteNG.Tree;
|
||||
using mRemoteNG.Tree.Root;
|
||||
@@ -22,6 +23,7 @@ namespace mRemoteNG.UI.Controls
|
||||
private readonly ConnectionTreeDragAndDropHandler _dragAndDropHandler = new ConnectionTreeDragAndDropHandler();
|
||||
private readonly PuttySessionsManager _puttySessionsManager = PuttySessionsManager.Instance;
|
||||
private readonly StatusImageList _statusImageList = new StatusImageList();
|
||||
private ThemeManager _themeManager;
|
||||
|
||||
private readonly ConnectionTreeSearchTextFilter _connectionTreeSearchTextFilter =
|
||||
new ConnectionTreeSearchTextFilter();
|
||||
@@ -64,6 +66,29 @@ namespace mRemoteNG.UI.Controls
|
||||
InitializeComponent();
|
||||
SetupConnectionTreeView();
|
||||
UseOverlays = false;
|
||||
_themeManager = ThemeManager.getInstance();
|
||||
_themeManager.ThemeChanged += ThemeManagerOnThemeChanged;
|
||||
ApplyTheme();
|
||||
}
|
||||
|
||||
private void ThemeManagerOnThemeChanged()
|
||||
{
|
||||
ApplyTheme();
|
||||
}
|
||||
|
||||
private void ApplyTheme()
|
||||
{
|
||||
if (!_themeManager.ActiveAndExtended)
|
||||
return;
|
||||
|
||||
var themePalette = _themeManager.ActiveTheme.ExtendedPalette;
|
||||
|
||||
BackColor = themePalette.getColor("TreeView_Background");
|
||||
ForeColor = themePalette.getColor("TreeView_Foreground");
|
||||
SelectedBackColor = themePalette.getColor("Treeview_SelectedItem_Active_Background");
|
||||
SelectedForeColor = themePalette.getColor("Treeview_SelectedItem_Active_Foreground");
|
||||
UnfocusedSelectedBackColor = themePalette.getColor("Treeview_SelectedItem_Inactive_Background");
|
||||
UnfocusedSelectedForeColor = themePalette.getColor("Treeview_SelectedItem_Inactive_Foreground");
|
||||
}
|
||||
|
||||
protected override void Dispose(bool disposing)
|
||||
@@ -75,12 +100,13 @@ namespace mRemoteNG.UI.Controls
|
||||
|
||||
if(_statusImageList != null)
|
||||
_statusImageList.Dispose();
|
||||
|
||||
_themeManager.ThemeChanged -= ThemeManagerOnThemeChanged;
|
||||
}
|
||||
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
|
||||
#region ConnectionTree Setup
|
||||
|
||||
private void SetupConnectionTreeView()
|
||||
|
||||
@@ -50,6 +50,7 @@ namespace mRemoteNG.UI.Forms.OptionsPages
|
||||
this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.chkPlaceSearchBarAboveConnectionTree = new mRemoteNG.UI.Controls.Base.NGCheckBox();
|
||||
this.chkConnectionTreeTrackActiveConnection = new mRemoteNG.UI.Controls.Base.NGCheckBox();
|
||||
this.chkDoNotTrimUsername = new mRemoteNG.UI.Controls.Base.NGCheckBox();
|
||||
((System.ComponentModel.ISupportInitialize)(this.numRDPConTimeout)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.numRdpReconnectionCount)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.numAutoSave)).BeginInit();
|
||||
@@ -184,7 +185,7 @@ namespace mRemoteNG.UI.Forms.OptionsPages
|
||||
this.pnlConfirmCloseConnection.Controls.Add(this.radCloseWarnMultiple);
|
||||
this.pnlConfirmCloseConnection.Controls.Add(this.radCloseWarnExit);
|
||||
this.pnlConfirmCloseConnection.Controls.Add(this.radCloseWarnNever);
|
||||
this.pnlConfirmCloseConnection.Location = new System.Drawing.Point(3, 249);
|
||||
this.pnlConfirmCloseConnection.Location = new System.Drawing.Point(3, 270);
|
||||
this.pnlConfirmCloseConnection.Name = "pnlConfirmCloseConnection";
|
||||
this.pnlConfirmCloseConnection.Size = new System.Drawing.Size(604, 137);
|
||||
this.pnlConfirmCloseConnection.TabIndex = 6;
|
||||
@@ -281,7 +282,7 @@ namespace mRemoteNG.UI.Forms.OptionsPages
|
||||
this.tableLayoutPanel2.Controls.Add(this.lblAutoSave1, 0, 2);
|
||||
this.tableLayoutPanel2.Controls.Add(this.lblRDPConTimeout, 0, 1);
|
||||
this.tableLayoutPanel2.Controls.Add(this.numRDPConTimeout, 1, 1);
|
||||
this.tableLayoutPanel2.Location = new System.Drawing.Point(3, 164);
|
||||
this.tableLayoutPanel2.Location = new System.Drawing.Point(3, 185);
|
||||
this.tableLayoutPanel2.Name = "tableLayoutPanel2";
|
||||
this.tableLayoutPanel2.RowCount = 3;
|
||||
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 26F));
|
||||
@@ -314,10 +315,23 @@ namespace mRemoteNG.UI.Forms.OptionsPages
|
||||
this.chkConnectionTreeTrackActiveConnection.Text = "Track active connection in the connection tree";
|
||||
this.chkConnectionTreeTrackActiveConnection.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// chkDoNotTrimUsername
|
||||
//
|
||||
this.chkDoNotTrimUsername._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT;
|
||||
this.chkDoNotTrimUsername.AutoSize = true;
|
||||
this.chkDoNotTrimUsername.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.chkDoNotTrimUsername.Location = new System.Drawing.Point(3, 165);
|
||||
this.chkDoNotTrimUsername.Name = "chkDoNotTrimUsername";
|
||||
this.chkDoNotTrimUsername.Size = new System.Drawing.Size(143, 17);
|
||||
this.chkDoNotTrimUsername.TabIndex = 11;
|
||||
this.chkDoNotTrimUsername.Text = "Do not trim usernames";
|
||||
this.chkDoNotTrimUsername.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// ConnectionsPage
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
|
||||
this.Controls.Add(this.chkDoNotTrimUsername);
|
||||
this.Controls.Add(this.chkConnectionTreeTrackActiveConnection);
|
||||
this.Controls.Add(this.tableLayoutPanel2);
|
||||
this.Controls.Add(this.chkPlaceSearchBarAboveConnectionTree);
|
||||
@@ -359,5 +373,6 @@ namespace mRemoteNG.UI.Forms.OptionsPages
|
||||
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
|
||||
private Controls.Base.NGCheckBox chkPlaceSearchBarAboveConnectionTree;
|
||||
private Controls.Base.NGCheckBox chkConnectionTreeTrackActiveConnection;
|
||||
private Controls.Base.NGCheckBox chkDoNotTrimUsername;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using mRemoteNG.Config;
|
||||
using mRemoteNG.Config;
|
||||
using System;
|
||||
|
||||
namespace mRemoteNG.UI.Forms.OptionsPages
|
||||
@@ -31,6 +31,7 @@ namespace mRemoteNG.UI.Forms.OptionsPages
|
||||
chkSaveConnectionsAfterEveryEdit.Text = Language.SaveConnectionsAfterEveryEdit;
|
||||
chkUseFilterSearch.Text = Language.FilterSearchMatchesInConnectionTree;
|
||||
chkPlaceSearchBarAboveConnectionTree.Text = Language.PlaceSearchBarAboveConnectionTree;
|
||||
chkDoNotTrimUsername.Text = Language.DoNotTrimUsername;
|
||||
|
||||
lblRdpReconnectionCount.Text = Language.strRdpReconnectCount;
|
||||
lblRDPConTimeout.Text = Language.strRDPOverallConnectionTimeout;
|
||||
@@ -52,6 +53,7 @@ namespace mRemoteNG.UI.Forms.OptionsPages
|
||||
chkSaveConnectionsAfterEveryEdit.Checked = Settings.Default.SaveConnectionsAfterEveryEdit;
|
||||
chkUseFilterSearch.Checked = Settings.Default.UseFilterSearch;
|
||||
chkPlaceSearchBarAboveConnectionTree.Checked = Settings.Default.PlaceSearchBarAboveConnectionTree;
|
||||
chkDoNotTrimUsername.Checked = Settings.Default.DoNotTrimUsername;
|
||||
|
||||
numRdpReconnectionCount.Value = Convert.ToDecimal(Settings.Default.RdpReconnectionCount);
|
||||
numRDPConTimeout.Value = Convert.ToDecimal(Settings.Default.ConRDPOverallConnectionTimeout);
|
||||
@@ -83,6 +85,7 @@ namespace mRemoteNG.UI.Forms.OptionsPages
|
||||
Settings.Default.SaveConnectionsAfterEveryEdit = chkSaveConnectionsAfterEveryEdit.Checked;
|
||||
Settings.Default.UseFilterSearch = chkUseFilterSearch.Checked;
|
||||
Settings.Default.PlaceSearchBarAboveConnectionTree = chkPlaceSearchBarAboveConnectionTree.Checked;
|
||||
Settings.Default.DoNotTrimUsername = chkDoNotTrimUsername.Checked;
|
||||
|
||||
Settings.Default.RdpReconnectionCount = (int)numRdpReconnectionCount.Value;
|
||||
Settings.Default.ConRDPOverallConnectionTimeout = (int)numRDPConTimeout.Value;
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Security;
|
||||
using System.Windows.Forms;
|
||||
using mRemoteNG.Security;
|
||||
using mRemoteNG.Themes;
|
||||
using mRemoteNG.Tools;
|
||||
|
||||
namespace mRemoteNG.UI.Forms
|
||||
@@ -52,6 +53,7 @@ namespace mRemoteNG.UI.Forms
|
||||
private void frmPassword_Load(object sender, EventArgs e)
|
||||
{
|
||||
ApplyLanguage();
|
||||
ApplyTheme();
|
||||
var display = new DisplayProperties();
|
||||
pbLock.Image = display.ScaleImage(pbLock.Image);
|
||||
Height = tableLayoutPanel1.Height;
|
||||
@@ -103,6 +105,17 @@ namespace mRemoteNG.UI.Forms
|
||||
btnOK.Text = Language.strButtonOK;
|
||||
}
|
||||
|
||||
private void ApplyTheme()
|
||||
{
|
||||
if (!ThemeManager.getInstance().ActiveAndExtended)
|
||||
return;
|
||||
|
||||
var activeTheme = ThemeManager.getInstance().ActiveTheme;
|
||||
|
||||
BackColor = activeTheme.ExtendedPalette.getColor("Dialog_Background");
|
||||
ForeColor = activeTheme.ExtendedPalette.getColor("Dialog_Foreground");
|
||||
}
|
||||
|
||||
// ReSharper disable once UnusedMethodReturnValue.Local
|
||||
private bool VerifyNewPassword()
|
||||
{
|
||||
|
||||
344
mRemoteV1/UI/Forms/UnhandledExceptionWindow.Designer.cs
generated
344
mRemoteV1/UI/Forms/UnhandledExceptionWindow.Designer.cs
generated
@@ -28,154 +28,199 @@
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.labelExceptionCaught = new System.Windows.Forms.Label();
|
||||
this.buttonClose = new System.Windows.Forms.Button();
|
||||
this.textBoxStackTrace = new System.Windows.Forms.TextBox();
|
||||
this.labelStackTraceHeader = new System.Windows.Forms.Label();
|
||||
this.labelExceptionMessageHeader = new System.Windows.Forms.Label();
|
||||
this.textBoxExceptionMessage = new System.Windows.Forms.TextBox();
|
||||
this.buttonCopyAll = new System.Windows.Forms.Button();
|
||||
this.labelExceptionIsFatalHeader = new System.Windows.Forms.Label();
|
||||
this.tableLayoutPanel1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// tableLayoutPanel1
|
||||
//
|
||||
this.tableLayoutPanel1.ColumnCount = 4;
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 30F));
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 80F));
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 30F));
|
||||
this.tableLayoutPanel1.Controls.Add(this.labelExceptionCaught, 1, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.buttonClose, 2, 6);
|
||||
this.tableLayoutPanel1.Controls.Add(this.textBoxStackTrace, 1, 5);
|
||||
this.tableLayoutPanel1.Controls.Add(this.labelStackTraceHeader, 1, 4);
|
||||
this.tableLayoutPanel1.Controls.Add(this.labelExceptionMessageHeader, 1, 2);
|
||||
this.tableLayoutPanel1.Controls.Add(this.textBoxExceptionMessage, 1, 3);
|
||||
this.tableLayoutPanel1.Controls.Add(this.buttonCopyAll, 1, 6);
|
||||
this.tableLayoutPanel1.Controls.Add(this.labelExceptionIsFatalHeader, 1, 1);
|
||||
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
|
||||
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
|
||||
this.tableLayoutPanel1.RowCount = 7;
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 20F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 80F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F));
|
||||
this.tableLayoutPanel1.Size = new System.Drawing.Size(534, 334);
|
||||
this.tableLayoutPanel1.TabIndex = 0;
|
||||
//
|
||||
// labelExceptionCaught
|
||||
//
|
||||
this.labelExceptionCaught.AutoSize = true;
|
||||
this.tableLayoutPanel1.SetColumnSpan(this.labelExceptionCaught, 2);
|
||||
this.labelExceptionCaught.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.labelExceptionCaught.Location = new System.Drawing.Point(33, 0);
|
||||
this.labelExceptionCaught.Name = "labelExceptionCaught";
|
||||
this.labelExceptionCaught.Size = new System.Drawing.Size(311, 20);
|
||||
this.labelExceptionCaught.TabIndex = 3;
|
||||
this.labelExceptionCaught.Text = "An unhandled exception has occurred";
|
||||
//
|
||||
// buttonClose
|
||||
//
|
||||
this.buttonClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.buttonClose.Dock = System.Windows.Forms.DockStyle.Right;
|
||||
this.buttonClose.Location = new System.Drawing.Point(427, 306);
|
||||
this.buttonClose.Name = "buttonClose";
|
||||
this.buttonClose.Size = new System.Drawing.Size(74, 25);
|
||||
this.buttonClose.TabIndex = 1;
|
||||
this.buttonClose.Text = "Close";
|
||||
this.buttonClose.UseVisualStyleBackColor = true;
|
||||
this.buttonClose.Click += new System.EventHandler(this.buttonClose_Click);
|
||||
//
|
||||
// textBoxStackTrace
|
||||
//
|
||||
this.tableLayoutPanel1.SetColumnSpan(this.textBoxStackTrace, 2);
|
||||
this.textBoxStackTrace.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.textBoxStackTrace.Location = new System.Drawing.Point(33, 132);
|
||||
this.textBoxStackTrace.Multiline = true;
|
||||
this.textBoxStackTrace.Name = "textBoxStackTrace";
|
||||
this.textBoxStackTrace.ReadOnly = true;
|
||||
this.textBoxStackTrace.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
|
||||
this.textBoxStackTrace.Size = new System.Drawing.Size(468, 168);
|
||||
this.textBoxStackTrace.TabIndex = 0;
|
||||
//
|
||||
// labelStackTraceHeader
|
||||
//
|
||||
this.labelStackTraceHeader.AutoSize = true;
|
||||
this.labelStackTraceHeader.Dock = System.Windows.Forms.DockStyle.Bottom;
|
||||
this.labelStackTraceHeader.Location = new System.Drawing.Point(33, 116);
|
||||
this.labelStackTraceHeader.Name = "labelStackTraceHeader";
|
||||
this.labelStackTraceHeader.Size = new System.Drawing.Size(388, 13);
|
||||
this.labelStackTraceHeader.TabIndex = 4;
|
||||
this.labelStackTraceHeader.Text = "Stack trace";
|
||||
//
|
||||
// labelExceptionMessageHeader
|
||||
//
|
||||
this.labelExceptionMessageHeader.AutoSize = true;
|
||||
this.labelExceptionMessageHeader.Dock = System.Windows.Forms.DockStyle.Bottom;
|
||||
this.labelExceptionMessageHeader.Location = new System.Drawing.Point(33, 53);
|
||||
this.labelExceptionMessageHeader.Name = "labelExceptionMessageHeader";
|
||||
this.labelExceptionMessageHeader.Size = new System.Drawing.Size(388, 13);
|
||||
this.labelExceptionMessageHeader.TabIndex = 5;
|
||||
this.labelExceptionMessageHeader.Text = "Exception message";
|
||||
//
|
||||
// textBoxExceptionMessage
|
||||
//
|
||||
this.tableLayoutPanel1.SetColumnSpan(this.textBoxExceptionMessage, 2);
|
||||
this.textBoxExceptionMessage.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.textBoxExceptionMessage.Location = new System.Drawing.Point(33, 69);
|
||||
this.textBoxExceptionMessage.Multiline = true;
|
||||
this.textBoxExceptionMessage.Name = "textBoxExceptionMessage";
|
||||
this.textBoxExceptionMessage.ReadOnly = true;
|
||||
this.textBoxExceptionMessage.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
|
||||
this.textBoxExceptionMessage.Size = new System.Drawing.Size(468, 37);
|
||||
this.textBoxExceptionMessage.TabIndex = 6;
|
||||
//
|
||||
// buttonCopyAll
|
||||
//
|
||||
this.buttonCopyAll.Dock = System.Windows.Forms.DockStyle.Right;
|
||||
this.buttonCopyAll.Location = new System.Drawing.Point(346, 306);
|
||||
this.buttonCopyAll.Name = "buttonCopyAll";
|
||||
this.buttonCopyAll.Size = new System.Drawing.Size(75, 25);
|
||||
this.buttonCopyAll.TabIndex = 7;
|
||||
this.buttonCopyAll.Text = "Copy All";
|
||||
this.buttonCopyAll.UseVisualStyleBackColor = true;
|
||||
this.buttonCopyAll.Click += new System.EventHandler(this.buttonCopyAll_Click);
|
||||
//
|
||||
// labelExceptionIsFatalHeader
|
||||
//
|
||||
this.labelExceptionIsFatalHeader.AutoSize = true;
|
||||
this.tableLayoutPanel1.SetColumnSpan(this.labelExceptionIsFatalHeader, 2);
|
||||
this.labelExceptionIsFatalHeader.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.labelExceptionIsFatalHeader.Location = new System.Drawing.Point(33, 30);
|
||||
this.labelExceptionIsFatalHeader.Name = "labelExceptionIsFatalHeader";
|
||||
this.labelExceptionIsFatalHeader.Size = new System.Drawing.Size(281, 16);
|
||||
this.labelExceptionIsFatalHeader.TabIndex = 8;
|
||||
this.labelExceptionIsFatalHeader.Text = "This exception will force mRemoteNG to close";
|
||||
//
|
||||
// UnhandledExceptionWindow
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
|
||||
this.CancelButton = this.buttonClose;
|
||||
this.ClientSize = new System.Drawing.Size(534, 334);
|
||||
this.ControlBox = false;
|
||||
this.Controls.Add(this.tableLayoutPanel1);
|
||||
this.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.MinimumSize = new System.Drawing.Size(550, 350);
|
||||
this.Name = "UnhandledExceptionWindow";
|
||||
this.ShowInTaskbar = false;
|
||||
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||
this.Text = "mRemoteNG Unhandled Exception";
|
||||
this.tableLayoutPanel1.ResumeLayout(false);
|
||||
this.tableLayoutPanel1.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.labelExceptionCaught = new System.Windows.Forms.Label();
|
||||
this.buttonClose = new System.Windows.Forms.Button();
|
||||
this.textBoxStackTrace = new System.Windows.Forms.TextBox();
|
||||
this.labelStackTraceHeader = new System.Windows.Forms.Label();
|
||||
this.labelExceptionMessageHeader = new System.Windows.Forms.Label();
|
||||
this.textBoxExceptionMessage = new System.Windows.Forms.TextBox();
|
||||
this.buttonCopyAll = new System.Windows.Forms.Button();
|
||||
this.labelExceptionIsFatalHeader = new System.Windows.Forms.Label();
|
||||
this.labelEnvironment = new System.Windows.Forms.Label();
|
||||
this.textBoxEnvironment = new System.Windows.Forms.TextBox();
|
||||
this.buttonCreateBug = new System.Windows.Forms.Button();
|
||||
this.tableLayoutPanel1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// tableLayoutPanel1
|
||||
//
|
||||
this.tableLayoutPanel1.ColumnCount = 5;
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 30F));
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 30F));
|
||||
this.tableLayoutPanel1.Controls.Add(this.labelExceptionCaught, 1, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.buttonClose, 3, 8);
|
||||
this.tableLayoutPanel1.Controls.Add(this.textBoxStackTrace, 1, 5);
|
||||
this.tableLayoutPanel1.Controls.Add(this.labelStackTraceHeader, 1, 4);
|
||||
this.tableLayoutPanel1.Controls.Add(this.labelExceptionMessageHeader, 1, 2);
|
||||
this.tableLayoutPanel1.Controls.Add(this.textBoxExceptionMessage, 1, 3);
|
||||
this.tableLayoutPanel1.Controls.Add(this.buttonCopyAll, 2, 8);
|
||||
this.tableLayoutPanel1.Controls.Add(this.labelExceptionIsFatalHeader, 1, 1);
|
||||
this.tableLayoutPanel1.Controls.Add(this.labelEnvironment, 1, 6);
|
||||
this.tableLayoutPanel1.Controls.Add(this.textBoxEnvironment, 1, 7);
|
||||
this.tableLayoutPanel1.Controls.Add(this.buttonCreateBug, 1, 8);
|
||||
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
|
||||
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
|
||||
this.tableLayoutPanel1.RowCount = 9;
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 20F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 30F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F));
|
||||
this.tableLayoutPanel1.Size = new System.Drawing.Size(606, 442);
|
||||
this.tableLayoutPanel1.TabIndex = 0;
|
||||
//
|
||||
// labelExceptionCaught
|
||||
//
|
||||
this.labelExceptionCaught.AutoSize = true;
|
||||
this.tableLayoutPanel1.SetColumnSpan(this.labelExceptionCaught, 3);
|
||||
this.labelExceptionCaught.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.labelExceptionCaught.Location = new System.Drawing.Point(33, 0);
|
||||
this.labelExceptionCaught.Name = "labelExceptionCaught";
|
||||
this.labelExceptionCaught.Size = new System.Drawing.Size(311, 20);
|
||||
this.labelExceptionCaught.TabIndex = 3;
|
||||
this.labelExceptionCaught.Text = "An unhandled exception has occurred";
|
||||
//
|
||||
// buttonClose
|
||||
//
|
||||
this.buttonClose.AutoSize = true;
|
||||
this.buttonClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.buttonClose.Dock = System.Windows.Forms.DockStyle.Right;
|
||||
this.buttonClose.Location = new System.Drawing.Point(499, 414);
|
||||
this.buttonClose.Name = "buttonClose";
|
||||
this.buttonClose.Size = new System.Drawing.Size(74, 25);
|
||||
this.buttonClose.TabIndex = 1;
|
||||
this.buttonClose.Text = "Close";
|
||||
this.buttonClose.UseVisualStyleBackColor = true;
|
||||
this.buttonClose.Click += new System.EventHandler(this.buttonClose_Click);
|
||||
//
|
||||
// textBoxStackTrace
|
||||
//
|
||||
this.tableLayoutPanel1.SetColumnSpan(this.textBoxStackTrace, 3);
|
||||
this.textBoxStackTrace.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.textBoxStackTrace.Location = new System.Drawing.Point(33, 150);
|
||||
this.textBoxStackTrace.Multiline = true;
|
||||
this.textBoxStackTrace.Name = "textBoxStackTrace";
|
||||
this.textBoxStackTrace.ReadOnly = true;
|
||||
this.textBoxStackTrace.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
|
||||
this.textBoxStackTrace.Size = new System.Drawing.Size(540, 147);
|
||||
this.textBoxStackTrace.TabIndex = 0;
|
||||
//
|
||||
// labelStackTraceHeader
|
||||
//
|
||||
this.labelStackTraceHeader.AutoSize = true;
|
||||
this.labelStackTraceHeader.Dock = System.Windows.Forms.DockStyle.Bottom;
|
||||
this.labelStackTraceHeader.Location = new System.Drawing.Point(33, 134);
|
||||
this.labelStackTraceHeader.Name = "labelStackTraceHeader";
|
||||
this.labelStackTraceHeader.Size = new System.Drawing.Size(380, 13);
|
||||
this.labelStackTraceHeader.TabIndex = 4;
|
||||
this.labelStackTraceHeader.Text = "Stack trace";
|
||||
//
|
||||
// labelExceptionMessageHeader
|
||||
//
|
||||
this.labelExceptionMessageHeader.AutoSize = true;
|
||||
this.labelExceptionMessageHeader.Dock = System.Windows.Forms.DockStyle.Bottom;
|
||||
this.labelExceptionMessageHeader.Location = new System.Drawing.Point(33, 53);
|
||||
this.labelExceptionMessageHeader.Name = "labelExceptionMessageHeader";
|
||||
this.labelExceptionMessageHeader.Size = new System.Drawing.Size(380, 13);
|
||||
this.labelExceptionMessageHeader.TabIndex = 5;
|
||||
this.labelExceptionMessageHeader.Text = "Exception message";
|
||||
//
|
||||
// textBoxExceptionMessage
|
||||
//
|
||||
this.tableLayoutPanel1.SetColumnSpan(this.textBoxExceptionMessage, 3);
|
||||
this.textBoxExceptionMessage.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.textBoxExceptionMessage.Location = new System.Drawing.Point(33, 69);
|
||||
this.textBoxExceptionMessage.Multiline = true;
|
||||
this.textBoxExceptionMessage.Name = "textBoxExceptionMessage";
|
||||
this.textBoxExceptionMessage.ReadOnly = true;
|
||||
this.textBoxExceptionMessage.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
|
||||
this.textBoxExceptionMessage.Size = new System.Drawing.Size(540, 55);
|
||||
this.textBoxExceptionMessage.TabIndex = 6;
|
||||
//
|
||||
// buttonCopyAll
|
||||
//
|
||||
this.buttonCopyAll.AutoSize = true;
|
||||
this.buttonCopyAll.Dock = System.Windows.Forms.DockStyle.Right;
|
||||
this.buttonCopyAll.Location = new System.Drawing.Point(419, 414);
|
||||
this.buttonCopyAll.Name = "buttonCopyAll";
|
||||
this.buttonCopyAll.Size = new System.Drawing.Size(74, 25);
|
||||
this.buttonCopyAll.TabIndex = 7;
|
||||
this.buttonCopyAll.Text = "Copy All";
|
||||
this.buttonCopyAll.UseVisualStyleBackColor = true;
|
||||
this.buttonCopyAll.Click += new System.EventHandler(this.buttonCopyAll_Click);
|
||||
//
|
||||
// labelExceptionIsFatalHeader
|
||||
//
|
||||
this.labelExceptionIsFatalHeader.AutoSize = true;
|
||||
this.tableLayoutPanel1.SetColumnSpan(this.labelExceptionIsFatalHeader, 3);
|
||||
this.labelExceptionIsFatalHeader.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.labelExceptionIsFatalHeader.Location = new System.Drawing.Point(33, 30);
|
||||
this.labelExceptionIsFatalHeader.Name = "labelExceptionIsFatalHeader";
|
||||
this.labelExceptionIsFatalHeader.Size = new System.Drawing.Size(281, 16);
|
||||
this.labelExceptionIsFatalHeader.TabIndex = 8;
|
||||
this.labelExceptionIsFatalHeader.Text = "This exception will force mRemoteNG to close";
|
||||
//
|
||||
// labelEnvironment
|
||||
//
|
||||
this.labelEnvironment.AutoSize = true;
|
||||
this.labelEnvironment.Dock = System.Windows.Forms.DockStyle.Bottom;
|
||||
this.labelEnvironment.Location = new System.Drawing.Point(33, 307);
|
||||
this.labelEnvironment.Name = "labelEnvironment";
|
||||
this.labelEnvironment.Size = new System.Drawing.Size(380, 13);
|
||||
this.labelEnvironment.TabIndex = 9;
|
||||
this.labelEnvironment.Text = "Environment";
|
||||
//
|
||||
// textBoxEnvironment
|
||||
//
|
||||
this.tableLayoutPanel1.SetColumnSpan(this.textBoxEnvironment, 3);
|
||||
this.textBoxEnvironment.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.textBoxEnvironment.Location = new System.Drawing.Point(33, 323);
|
||||
this.textBoxEnvironment.Multiline = true;
|
||||
this.textBoxEnvironment.Name = "textBoxEnvironment";
|
||||
this.textBoxEnvironment.ReadOnly = true;
|
||||
this.textBoxEnvironment.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
|
||||
this.textBoxEnvironment.Size = new System.Drawing.Size(540, 85);
|
||||
this.textBoxEnvironment.TabIndex = 10;
|
||||
//
|
||||
// buttonCreateBug
|
||||
//
|
||||
this.buttonCreateBug.AutoSize = true;
|
||||
this.buttonCreateBug.Dock = System.Windows.Forms.DockStyle.Right;
|
||||
this.buttonCreateBug.Location = new System.Drawing.Point(328, 414);
|
||||
this.buttonCreateBug.Name = "buttonCreateBug";
|
||||
this.buttonCreateBug.Size = new System.Drawing.Size(85, 25);
|
||||
this.buttonCreateBug.TabIndex = 11;
|
||||
this.buttonCreateBug.Text = "Report a Bug";
|
||||
this.buttonCreateBug.UseVisualStyleBackColor = true;
|
||||
this.buttonCreateBug.Click += new System.EventHandler(this.buttonCreateBug_Click);
|
||||
//
|
||||
// UnhandledExceptionWindow
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
|
||||
this.CancelButton = this.buttonClose;
|
||||
this.ClientSize = new System.Drawing.Size(606, 442);
|
||||
this.ControlBox = false;
|
||||
this.Controls.Add(this.tableLayoutPanel1);
|
||||
this.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.MinimumSize = new System.Drawing.Size(550, 350);
|
||||
this.Name = "UnhandledExceptionWindow";
|
||||
this.ShowInTaskbar = false;
|
||||
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||
this.Text = "mRemoteNG Unhandled Exception";
|
||||
this.tableLayoutPanel1.ResumeLayout(false);
|
||||
this.tableLayoutPanel1.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
@@ -190,5 +235,8 @@
|
||||
private System.Windows.Forms.TextBox textBoxExceptionMessage;
|
||||
private System.Windows.Forms.Button buttonCopyAll;
|
||||
private System.Windows.Forms.Label labelExceptionIsFatalHeader;
|
||||
private System.Windows.Forms.Label labelEnvironment;
|
||||
private System.Windows.Forms.TextBox textBoxEnvironment;
|
||||
private System.Windows.Forms.Button buttonCreateBug;
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,10 @@
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using mRemoteNG.App;
|
||||
using mRemoteNG.App.Info;
|
||||
|
||||
namespace mRemoteNG.UI.Forms
|
||||
{
|
||||
@@ -25,6 +28,17 @@ namespace mRemoteNG.UI.Forms
|
||||
|
||||
textBoxExceptionMessage.Text = exception.Message;
|
||||
textBoxStackTrace.Text = exception.StackTrace;
|
||||
SetEnvironmentText();
|
||||
}
|
||||
|
||||
private void SetEnvironmentText()
|
||||
{
|
||||
textBoxEnvironment.Text = new StringBuilder()
|
||||
.AppendLine($"OS: {Environment.OSVersion}")
|
||||
.AppendLine($"{GeneralAppInfo.ProductName} Version: {GeneralAppInfo.ApplicationVersion}")
|
||||
.AppendLine("Edition: " + (Runtime.IsPortableEdition ? "Portable" : "MSI"))
|
||||
.AppendLine("Cmd line args: " + string.Join(" ", Environment.GetCommandLineArgs().Skip(1)))
|
||||
.ToString();
|
||||
}
|
||||
|
||||
private void SetLanguage()
|
||||
@@ -38,6 +52,8 @@ namespace mRemoteNG.UI.Forms
|
||||
|
||||
labelExceptionMessageHeader.Text = Language.ExceptionMessage;
|
||||
labelStackTraceHeader.Text = Language.StackTrace;
|
||||
labelEnvironment.Text = Language.Environment;
|
||||
buttonCreateBug.Text = Language.strMenuReportBug;
|
||||
buttonCopyAll.Text = Language.strMenuNotificationsCopyAll;
|
||||
buttonClose.Text = _isFatal
|
||||
? Language.strMenuExit
|
||||
@@ -47,12 +63,17 @@ namespace mRemoteNG.UI.Forms
|
||||
private void buttonCopyAll_Click(object sender, EventArgs e)
|
||||
{
|
||||
var text = new StringBuilder()
|
||||
.AppendLine(labelExceptionMessageHeader.Text)
|
||||
.AppendLine("\"" + textBoxExceptionMessage.Text + "\"")
|
||||
.AppendLine()
|
||||
.AppendLine(labelStackTraceHeader.Text)
|
||||
.AppendLine(textBoxStackTrace.Text)
|
||||
.ToString();
|
||||
.AppendLine("```")
|
||||
.AppendLine(labelExceptionMessageHeader.Text)
|
||||
.AppendLine("\"" + textBoxExceptionMessage.Text + "\"")
|
||||
.AppendLine()
|
||||
.AppendLine(labelStackTraceHeader.Text)
|
||||
.AppendLine(textBoxStackTrace.Text)
|
||||
.AppendLine()
|
||||
.AppendLine(labelEnvironment.Text)
|
||||
.AppendLine(textBoxEnvironment.Text)
|
||||
.AppendLine("```")
|
||||
.ToString();
|
||||
|
||||
Clipboard.SetText(text);
|
||||
}
|
||||
@@ -64,5 +85,10 @@ namespace mRemoteNG.UI.Forms
|
||||
|
||||
Close();
|
||||
}
|
||||
|
||||
private void buttonCreateBug_Click(object sender, EventArgs e)
|
||||
{
|
||||
Process.Start(GeneralAppInfo.UrlBugs);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
|
||||
|
||||
|
||||
using mRemoteNG.Themes;
|
||||
|
||||
@@ -64,7 +64,7 @@ namespace mRemoteNG.UI.Window
|
||||
//
|
||||
// ActiveDirectoryTree
|
||||
//
|
||||
this.ActiveDirectoryTree.ADPath = null;
|
||||
this.ActiveDirectoryTree.AdPath = null;
|
||||
this.ActiveDirectoryTree.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
@@ -76,7 +76,7 @@ namespace mRemoteNG.UI.Window
|
||||
this.ActiveDirectoryTree.SelectedNode = null;
|
||||
this.ActiveDirectoryTree.Size = new System.Drawing.Size(510, 285);
|
||||
this.ActiveDirectoryTree.TabIndex = 3;
|
||||
this.ActiveDirectoryTree.ADPathChanged += new ADTree.ADtree.ADPathChangedEventHandler(this.ActiveDirectoryTree_ADPathChanged);
|
||||
this.ActiveDirectoryTree.AdPathChanged += new ADTree.ADtree.AdPathChangedEventHandler(this.ActiveDirectoryTree_ADPathChanged);
|
||||
//
|
||||
// btnClose
|
||||
//
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
using WeifenLuo.WinFormsUI.Docking;
|
||||
@@ -57,7 +57,7 @@ namespace mRemoteNG.UI.Window
|
||||
else
|
||||
importDestination = Runtime.ConnectionsService.ConnectionTreeModel.RootNodes.First();
|
||||
|
||||
Import.ImportFromActiveDirectory(ActiveDirectoryTree.ADPath, importDestination, chkSubOU.Checked);
|
||||
Import.ImportFromActiveDirectory(ActiveDirectoryTree.AdPath, importDestination, chkSubOU.Checked);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -80,6 +80,7 @@ namespace mRemoteNG.UI.Window
|
||||
ChangeDomain();
|
||||
}
|
||||
|
||||
// ReSharper disable once UnusedParameter.Local
|
||||
private void ActiveDirectoryTree_ADPathChanged(object sender)
|
||||
{
|
||||
EnableDisableImportButton();
|
||||
@@ -105,7 +106,7 @@ namespace mRemoteNG.UI.Window
|
||||
|
||||
private void EnableDisableImportButton()
|
||||
{
|
||||
btnImport.Enabled = !string.IsNullOrEmpty(ActiveDirectoryTree.ADPath);
|
||||
btnImport.Enabled = !string.IsNullOrEmpty(ActiveDirectoryTree.AdPath);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
47
mRemoteV1/UI/Window/ConnectionTreeWindow.Designer.cs
generated
47
mRemoteV1/UI/Window/ConnectionTreeWindow.Designer.cs
generated
@@ -1,11 +1,6 @@
|
||||
|
||||
|
||||
using mRemoteNG.Connection;
|
||||
using mRemoteNG.Tree;
|
||||
|
||||
namespace mRemoteNG.UI.Window
|
||||
namespace mRemoteNG.UI.Window
|
||||
{
|
||||
public partial class ConnectionTreeWindow : BaseWindow
|
||||
public partial class ConnectionTreeWindow : BaseWindow
|
||||
{
|
||||
#region Windows Form Designer generated code
|
||||
internal System.Windows.Forms.MenuStrip msMain;
|
||||
@@ -33,11 +28,11 @@ namespace mRemoteNG.UI.Window
|
||||
this.vsToolStripExtender = new WeifenLuo.WinFormsUI.Docking.VisualStudioToolStripExtender(this.components);
|
||||
this.pbSearch = new mRemoteNG.UI.Controls.Base.NGPictureBox(this.components);
|
||||
this.txtSearch = new mRemoteNG.UI.Controls.Base.NGSearchBox();
|
||||
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.searchBoxLayoutPanel = new System.Windows.Forms.TableLayoutPanel();
|
||||
((System.ComponentModel.ISupportInitialize)(this.olvConnections)).BeginInit();
|
||||
this.msMain.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pbSearch)).BeginInit();
|
||||
this.tableLayoutPanel1.SuspendLayout();
|
||||
this.searchBoxLayoutPanel.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// olvConnections
|
||||
@@ -175,19 +170,19 @@ namespace mRemoteNG.UI.Window
|
||||
//
|
||||
// tableLayoutPanel1
|
||||
//
|
||||
this.tableLayoutPanel1.BackColor = System.Drawing.SystemColors.Control;
|
||||
this.tableLayoutPanel1.ColumnCount = 2;
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 26F));
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||
this.tableLayoutPanel1.Controls.Add(this.pbSearch, 0, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.txtSearch);
|
||||
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Bottom;
|
||||
this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 390);
|
||||
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
|
||||
this.tableLayoutPanel1.RowCount = 1;
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||
this.tableLayoutPanel1.Size = new System.Drawing.Size(204, 21);
|
||||
this.tableLayoutPanel1.TabIndex = 32;
|
||||
this.searchBoxLayoutPanel.BackColor = System.Drawing.SystemColors.Control;
|
||||
this.searchBoxLayoutPanel.ColumnCount = 2;
|
||||
this.searchBoxLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 26F));
|
||||
this.searchBoxLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||
this.searchBoxLayoutPanel.Controls.Add(this.pbSearch, 0, 0);
|
||||
this.searchBoxLayoutPanel.Controls.Add(this.txtSearch);
|
||||
this.searchBoxLayoutPanel.Dock = System.Windows.Forms.DockStyle.Bottom;
|
||||
this.searchBoxLayoutPanel.Location = new System.Drawing.Point(0, 390);
|
||||
this.searchBoxLayoutPanel.Name = "searchBoxLayoutPanel";
|
||||
this.searchBoxLayoutPanel.RowCount = 1;
|
||||
this.searchBoxLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||
this.searchBoxLayoutPanel.Size = new System.Drawing.Size(204, 21);
|
||||
this.searchBoxLayoutPanel.TabIndex = 32;
|
||||
//
|
||||
// ConnectionTreeWindow
|
||||
//
|
||||
@@ -195,7 +190,7 @@ namespace mRemoteNG.UI.Window
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
|
||||
this.ClientSize = new System.Drawing.Size(204, 411);
|
||||
this.Controls.Add(this.olvConnections);
|
||||
this.Controls.Add(this.tableLayoutPanel1);
|
||||
this.Controls.Add(this.searchBoxLayoutPanel);
|
||||
this.Controls.Add(this.msMain);
|
||||
this.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.HideOnClose = true;
|
||||
@@ -208,8 +203,8 @@ namespace mRemoteNG.UI.Window
|
||||
this.msMain.ResumeLayout(false);
|
||||
this.msMain.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pbSearch)).EndInit();
|
||||
this.tableLayoutPanel1.ResumeLayout(false);
|
||||
this.tableLayoutPanel1.PerformLayout();
|
||||
this.searchBoxLayoutPanel.ResumeLayout(false);
|
||||
this.searchBoxLayoutPanel.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
@@ -221,7 +216,7 @@ namespace mRemoteNG.UI.Window
|
||||
private WeifenLuo.WinFormsUI.Docking.VisualStudioToolStripExtender vsToolStripExtender;
|
||||
internal Controls.Base.NGPictureBox pbSearch;
|
||||
internal Controls.Base.NGSearchBox txtSearch;
|
||||
public System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
|
||||
public System.Windows.Forms.TableLayoutPanel searchBoxLayoutPanel;
|
||||
internal System.Windows.Forms.ToolStripMenuItem mMenFavorites;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
using mRemoteNG.App;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
using mRemoteNG.App;
|
||||
using mRemoteNG.Config.Connections;
|
||||
using mRemoteNG.Connection;
|
||||
using mRemoteNG.Container;
|
||||
@@ -7,12 +13,6 @@ using mRemoteNG.Tree;
|
||||
using mRemoteNG.Tree.Root;
|
||||
using mRemoteNG.UI.Controls;
|
||||
using mRemoteNG.UI.TaskDialog;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
using WeifenLuo.WinFormsUI.Docking;
|
||||
|
||||
// ReSharper disable ArrangeAccessorOwnerBody
|
||||
@@ -61,7 +61,7 @@ namespace mRemoteNG.UI.Window
|
||||
|
||||
private void PlaceSearchBar(bool placeSearchBarAboveConnectionTree)
|
||||
{
|
||||
tableLayoutPanel1.Dock = placeSearchBarAboveConnectionTree ? DockStyle.Top : DockStyle.Bottom;
|
||||
searchBoxLayoutPanel.Dock = placeSearchBarAboveConnectionTree ? DockStyle.Top : DockStyle.Bottom;
|
||||
}
|
||||
|
||||
|
||||
@@ -97,28 +97,24 @@ namespace mRemoteNG.UI.Window
|
||||
|
||||
private new void ApplyTheme()
|
||||
{
|
||||
if (!_themeManager.ThemingActive) return;
|
||||
vsToolStripExtender.SetStyle(msMain, _themeManager.ActiveTheme.Version, _themeManager.ActiveTheme.Theme);
|
||||
vsToolStripExtender.SetStyle(olvConnections.ContextMenuStrip, _themeManager.ActiveTheme.Version,
|
||||
_themeManager.ActiveTheme.Theme);
|
||||
if (!_themeManager.ThemingActive)
|
||||
return;
|
||||
|
||||
if (!_themeManager.ActiveAndExtended) return;
|
||||
//Treelistview needs to be manually themed
|
||||
olvConnections.BackColor = _themeManager.ActiveTheme.ExtendedPalette.getColor("TreeView_Background");
|
||||
olvConnections.ForeColor = _themeManager.ActiveTheme.ExtendedPalette.getColor("TreeView_Foreground");
|
||||
olvConnections.SelectedBackColor =
|
||||
_themeManager.ActiveTheme.ExtendedPalette.getColor("Treeview_SelectedItem_Active_Background");
|
||||
olvConnections.SelectedForeColor =
|
||||
_themeManager.ActiveTheme.ExtendedPalette.getColor("Treeview_SelectedItem_Active_Foreground");
|
||||
olvConnections.UnfocusedSelectedBackColor =
|
||||
_themeManager.ActiveTheme.ExtendedPalette.getColor("Treeview_SelectedItem_Inactive_Background");
|
||||
olvConnections.UnfocusedSelectedForeColor =
|
||||
_themeManager.ActiveTheme.ExtendedPalette.getColor("Treeview_SelectedItem_Inactive_Foreground");
|
||||
//There is a border around txtSearch that dont theme well
|
||||
txtSearch.BackColor = _themeManager.ActiveTheme.ExtendedPalette.getColor("TextBox_Background");
|
||||
txtSearch.ForeColor = _themeManager.ActiveTheme.ExtendedPalette.getColor("TextBox_Foreground");
|
||||
var activeTheme = _themeManager.ActiveTheme;
|
||||
vsToolStripExtender.SetStyle(msMain, activeTheme.Version, activeTheme.Theme);
|
||||
vsToolStripExtender.SetStyle(olvConnections.ContextMenuStrip, activeTheme.Version,
|
||||
activeTheme.Theme);
|
||||
|
||||
if (!_themeManager.ActiveAndExtended)
|
||||
return;
|
||||
|
||||
// connection search area
|
||||
searchBoxLayoutPanel.BackColor = activeTheme.ExtendedPalette.getColor("Dialog_Background");
|
||||
searchBoxLayoutPanel.ForeColor = activeTheme.ExtendedPalette.getColor("Dialog_Foreground");
|
||||
txtSearch.BackColor = activeTheme.ExtendedPalette.getColor("TextBox_Background");
|
||||
txtSearch.ForeColor = activeTheme.ExtendedPalette.getColor("TextBox_Foreground");
|
||||
//Picturebox needs to be manually themed
|
||||
pbSearch.BackColor = _themeManager.ActiveTheme.ExtendedPalette.getColor("TreeView_Background");
|
||||
pbSearch.BackColor = activeTheme.ExtendedPalette.getColor("TreeView_Background");
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -195,6 +195,9 @@
|
||||
<setting name="ConDefaultRedirectSound" serializeAs="String">
|
||||
<value>DoNotPlay</value>
|
||||
</setting>
|
||||
<setting name="ConDefaultRedirectAudioCapture" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="MaxPuttyWaitTime" serializeAs="String">
|
||||
<value>2</value>
|
||||
</setting>
|
||||
@@ -300,6 +303,9 @@
|
||||
<setting name="InhDefaultRedirectSound" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="InhDefaultRedirectAudioCapture" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="InhDefaultResolution" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
@@ -735,8 +741,11 @@
|
||||
<setting name="InhDefaultFavorite" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="SQLServerType" serializeAs="String">
|
||||
<value>mssql</value>
|
||||
<setting name="SQLServerType" serializeAs="String">
|
||||
<value>mssql</value>
|
||||
</setting>
|
||||
<setting name="DoNotTrimUsername" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
</mRemoteNG.Settings>
|
||||
</userSettings>
|
||||
|
||||
Reference in New Issue
Block a user