Merge branch 'develop' into refactor_config_window

# Conflicts:
#	mRemoteV1/UI/Window/ConfigWindow.cs
This commit is contained in:
David Sparer
2019-04-24 10:27:27 -05:00
50 changed files with 1785 additions and 1261 deletions

View File

@@ -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:

View File

@@ -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

View File

@@ -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,

View File

@@ -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;

View File

@@ -298,6 +298,32 @@ namespace mRemoteNGTests.Properties {
}
}
/// <summary>
/// Looks up a localized string similar to &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
///&lt;RDCMan programVersion=&quot;2.7&quot; schemaVersion=&quot;3&quot;&gt;
/// &lt;file&gt;
/// &lt;credentialsProfiles /&gt;
/// &lt;properties&gt;
/// &lt;expanded&gt;True&lt;/expanded&gt;
/// &lt;name&gt;test_RDCMan_connections&lt;/name&gt;
/// &lt;/properties&gt;
/// &lt;smartGroup&gt;
/// &lt;properties&gt;
/// &lt;expanded&gt;False&lt;/expanded&gt;
/// &lt;name&gt;AllServers&lt;/name&gt;
/// &lt;/properties&gt;
/// &lt;ruleGroup operator=&quot;All&quot;&gt;
/// &lt;rule&gt;
/// &lt;property&gt;DisplayName&lt;/property&gt;
/// &lt;operator&gt;Matches&lt;/operator&gt;
/// [rest of string was truncated]&quot;;.
/// </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 &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
///&lt;RDCMan programVersion=&quot;2.7&quot; schemaVersion=&quot;3&quot;&gt;

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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; }

View File

@@ -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:

View File

@@ -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>

View File

@@ -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);
}

View File

@@ -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;

View File

@@ -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)

View File

@@ -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"];

View File

@@ -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;

View File

@@ -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));

View File

@@ -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");

View File

@@ -128,6 +128,9 @@ namespace mRemoteNG.Config.Serializers
break;
}
break;
case "redirectaudiocapture":
connectionInfo.RedirectAudioCapture = value == "1";
break;
case "loadbalanceinfo":
connectionInfo.LoadBalanceInfo = value;
break;

View File

@@ -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

View File

@@ -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

View File

@@ -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()

View File

@@ -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

View File

@@ -1,4 +1,4 @@
using AxWFICALib;
using AxWFICALib;
using mRemoteNG.App;
using mRemoteNG.Connection.Protocol.RDP;
using mRemoteNG.Messages;

View File

@@ -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")]

View File

@@ -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;
}
}
}
}

View File

@@ -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>

View File

@@ -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.

View File

@@ -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 ,

View File

@@ -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,

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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 &amp; 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.

View File

@@ -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" />

View File

@@ -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)

View File

@@ -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()

View File

@@ -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;
}
}

View File

@@ -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;

View File

@@ -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()
{

View File

@@ -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;
}
}

View File

@@ -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);
}
}
}

View File

@@ -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
//

View File

@@ -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

View File

@@ -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;
}
}

View File

@@ -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

View File

@@ -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>