mirror of
https://github.com/mRemoteNG/mRemoteNG.git
synced 2026-02-26 03:58:45 +08:00
Merge branch 'csharp_conv' into MR-818_Create_new_installer
This commit is contained in:
@@ -38,7 +38,7 @@ namespace mRemoteNGTests.UI.Forms
|
||||
public void ListViewContainsOptionsPages()
|
||||
{
|
||||
ListViewTester listViewTester = new ListViewTester("PageListView", _optionsForm);
|
||||
Assert.That(listViewTester.Items.Count, Is.EqualTo(9));
|
||||
Assert.That(listViewTester.Items.Count, Is.EqualTo(8));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -12,14 +12,14 @@ namespace mRemoteNGTests.UI.Forms.OptionsPages
|
||||
public void AdvancedPageLinkExistsInListView()
|
||||
{
|
||||
ListViewTester listViewTester = new ListViewTester("PageListView", _optionsForm);
|
||||
Assert.That(listViewTester.Items[8].Text, Does.Match("Advanced"));
|
||||
Assert.That(listViewTester.Items[7].Text, Does.Match("Advanced"));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void AdvancedIconShownInListView()
|
||||
{
|
||||
ListViewTester listViewTester = new ListViewTester("PageListView", _optionsForm);
|
||||
Assert.That(listViewTester.Items[8].ImageList, Is.Not.Null);
|
||||
Assert.That(listViewTester.Items[7].ImageList, Is.Not.Null);
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
using System;
|
||||
using NUnit.Framework;
|
||||
using mRemoteNGTests.UI.Forms;
|
||||
using NUnit.Extensions.Forms;
|
||||
|
||||
namespace mRemoteNGTests.UI.Forms.OptionsPages
|
||||
{
|
||||
[TestFixture]
|
||||
public class OptionsKeyboardPageTests : OptionsFormSetupAndTeardown
|
||||
{
|
||||
[Test]
|
||||
public void KeyboardPageLinkExistsInListView()
|
||||
{
|
||||
ListViewTester listViewTester = new ListViewTester("PageListView", _optionsForm);
|
||||
Assert.That(listViewTester.Items[7].Text, Does.Match("Keyboard"));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void KeyboardIconShownInListView()
|
||||
{
|
||||
ListViewTester listViewTester = new ListViewTester("PageListView", _optionsForm);
|
||||
Assert.That(listViewTester.Items[7].ImageList, Is.Not.Null);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void SelectingKeyboardPageLoadsSettings()
|
||||
{
|
||||
ListViewTester listViewTester = new ListViewTester("PageListView", _optionsForm);
|
||||
listViewTester.Select("Keyboard");
|
||||
ButtonTester buttonTester = new ButtonTester("btnResetKeyboardShortcuts", _optionsForm);
|
||||
Assert.That(buttonTester.Text, Does.Match("Reset"));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -94,7 +94,6 @@
|
||||
<Compile Include="UI\Forms\OptionsPages\OptionsAdvancedPageTests.cs" />
|
||||
<Compile Include="UI\Forms\OptionsPages\OptionsAppearancePageTests.cs" />
|
||||
<Compile Include="UI\Forms\OptionsPages\OptionsConnectionsPageTests.cs" />
|
||||
<Compile Include="UI\Forms\OptionsPages\OptionsKeyboardPageTests.cs" />
|
||||
<Compile Include="UI\Forms\OptionsPages\OptionsSQLPageTests.cs" />
|
||||
<Compile Include="UI\Forms\OptionsPages\OptionsStartupExitPageTests.cs" />
|
||||
<Compile Include="UI\Forms\OptionsPages\OptionsTabsPanelPageTests.cs" />
|
||||
|
||||
@@ -6,10 +6,9 @@ using System.Windows.Forms;
|
||||
using mRemoteNG.Config.Import;
|
||||
using mRemoteNG.Connection.Protocol;
|
||||
using mRemoteNG.Container;
|
||||
using mRemoteNG.Tools;
|
||||
using mRemoteNG.Tree;
|
||||
using mRemoteNG.UI.TaskDialog;
|
||||
using Microsoft.VisualBasic;
|
||||
using PSTaskDialog;
|
||||
|
||||
namespace mRemoteNG.App
|
||||
{
|
||||
@@ -87,11 +86,9 @@ namespace mRemoteNG.App
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
cTaskDialog.ShowTaskDialogBox(Application.ProductName,
|
||||
Language.strImportFileFailedMainInstruction,
|
||||
string.Format(Language.strImportFileFailedContent, fileName),
|
||||
MiscTools.GetExceptionMessageRecursive(ex), "", "", "", "", eTaskDialogButtons.OK,
|
||||
eSysIcons.Error, eSysIcons.Error);
|
||||
MessageBox.Show(string.Format(Language.strImportFileFailedContent, fileName), Language.strImportFileFailedMainInstruction,
|
||||
MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
|
||||
Runtime.MessageCollector.AddExceptionMessage("App.Import.ImportFromFile() failed:1", ex, logOnly: true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -107,7 +104,7 @@ namespace mRemoteNG.App
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Runtime.MessageCollector.AddExceptionMessage("App.Import.ImportFromFile() failed.", ex, logOnly: true);
|
||||
Runtime.MessageCollector.AddExceptionMessage("App.Import.ImportFromFile() failed:2", ex, logOnly: true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -195,11 +192,11 @@ namespace mRemoteNG.App
|
||||
}
|
||||
else
|
||||
{
|
||||
cTaskDialog.ShowCommandBox(Application.ProductName, Language.strImportLocationMainInstruction,
|
||||
CTaskDialog.ShowCommandBox(Application.ProductName, Language.strImportLocationMainInstruction,
|
||||
Language.strImportLocationContent, "", "", "",
|
||||
string.Format(Language.strImportLocationCommandButtons, Constants.vbLf, rootTreeNode.Text,
|
||||
selectedTreeNode.Text), true, eSysIcons.Question, 0);
|
||||
switch (cTaskDialog.CommandButtonResult)
|
||||
selectedTreeNode.Text), true, ESysIcons.Question, 0);
|
||||
switch (CTaskDialog.CommandButtonResult)
|
||||
{
|
||||
case 0: // Root
|
||||
parentTreeNode = rootTreeNode;
|
||||
|
||||
@@ -12,7 +12,6 @@ using mRemoteNG.Messages;
|
||||
using mRemoteNG.Tools;
|
||||
using mRemoteNG.Tree;
|
||||
using mRemoteNG.UI.Window;
|
||||
using PSTaskDialog;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
@@ -23,6 +22,7 @@ using System.Windows.Forms;
|
||||
using System.Xml;
|
||||
using mRemoteNG.My;
|
||||
using mRemoteNG.UI.Forms;
|
||||
using mRemoteNG.UI.TaskDialog;
|
||||
using WeifenLuo.WinFormsUI.Docking;
|
||||
|
||||
|
||||
@@ -628,8 +628,8 @@ namespace mRemoteNG.App
|
||||
{
|
||||
MessageCollector.AddExceptionMessage(Language.strLoadFromSqlFailed, ex);
|
||||
string commandButtons = string.Join("|", new[] {Language.strCommandTryAgain, Language.strCommandOpenConnectionFile, string.Format(Language.strCommandExitProgram, Application.ProductName)});
|
||||
cTaskDialog.ShowCommandBox(Application.ProductName, Language.strLoadFromSqlFailed, Language.strLoadFromSqlFailedContent, MiscTools.GetExceptionMessageRecursive(ex), "", "", commandButtons, false, eSysIcons.Error, eSysIcons.Error);
|
||||
switch (cTaskDialog.CommandButtonResult)
|
||||
CTaskDialog.ShowCommandBox(Application.ProductName, Language.strLoadFromSqlFailed, Language.strLoadFromSqlFailedContent, MiscTools.GetExceptionMessageRecursive(ex), "", "", commandButtons, false, ESysIcons.Error, ESysIcons.Error);
|
||||
switch (CTaskDialog.CommandButtonResult)
|
||||
{
|
||||
case 0:
|
||||
LoadConnections(withDialog, update);
|
||||
@@ -653,7 +653,7 @@ namespace mRemoteNG.App
|
||||
}
|
||||
|
||||
MessageCollector.AddExceptionMessage(string.Format(Language.strConnectionsFileCouldNotBeLoaded, connectionsLoader.ConnectionFileName), ex);
|
||||
if (!(connectionsLoader.ConnectionFileName == GetStartupConnectionFileName()))
|
||||
if (connectionsLoader.ConnectionFileName != GetStartupConnectionFileName())
|
||||
{
|
||||
LoadConnections(withDialog, update);
|
||||
return ;
|
||||
|
||||
@@ -6,7 +6,6 @@ using mRemoteNG.My;
|
||||
using mRemoteNG.Tools;
|
||||
using mRemoteNG.Tree;
|
||||
using mRemoteNG.UI.Window;
|
||||
using PSTaskDialog;
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Diagnostics;
|
||||
@@ -18,6 +17,7 @@ using System.Windows.Forms;
|
||||
using WeifenLuo.WinFormsUI.Docking;
|
||||
using mRemoteNG.Config.Connections;
|
||||
using mRemoteNG.UI.Forms;
|
||||
using mRemoteNG.UI.TaskDialog;
|
||||
|
||||
namespace mRemoteNG.App
|
||||
{
|
||||
@@ -38,7 +38,7 @@ namespace mRemoteNG.App
|
||||
bool isFipsPolicyEnabled = false;
|
||||
|
||||
// Windows XP/Windows Server 2003
|
||||
regKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("System\\CurrentControlSet\\Control\\Lsa");
|
||||
regKey = Registry.LocalMachine.OpenSubKey("System\\CurrentControlSet\\Control\\Lsa");
|
||||
if (regKey != null)
|
||||
{
|
||||
if ((int)regKey.GetValue("FIPSAlgorithmPolicy") != 0)
|
||||
@@ -48,7 +48,7 @@ namespace mRemoteNG.App
|
||||
}
|
||||
|
||||
// Windows Vista/Windows Server 2008 and newer
|
||||
regKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("System\\CurrentControlSet\\Control\\Lsa\\FIPSAlgorithmPolicy");
|
||||
regKey = Registry.LocalMachine.OpenSubKey("System\\CurrentControlSet\\Control\\Lsa\\FIPSAlgorithmPolicy");
|
||||
if (regKey != null)
|
||||
{
|
||||
if ((int)regKey.GetValue("Enabled") != 0)
|
||||
@@ -60,12 +60,12 @@ namespace mRemoteNG.App
|
||||
if (isFipsPolicyEnabled)
|
||||
{
|
||||
MessageBox.Show(frmMain.Default, string.Format(Language.strErrorFipsPolicyIncompatible, (new Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase()).Info.ProductName), (new Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase()).Info.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
System.Environment.Exit(1);
|
||||
Environment.Exit(1);
|
||||
}
|
||||
}
|
||||
private static void CheckLenovoAutoScrollUtility()
|
||||
{
|
||||
if (!mRemoteNG.Settings.Default.CompatibilityWarnLenovoAutoScrollUtility)
|
||||
if (!Settings.Default.CompatibilityWarnLenovoAutoScrollUtility)
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -83,10 +83,10 @@ namespace mRemoteNG.App
|
||||
return;
|
||||
}
|
||||
|
||||
cTaskDialog.MessageBox(System.Windows.Forms.Application.ProductName, Language.strCompatibilityProblemDetected, string.Format(Language.strCompatibilityLenovoAutoScrollUtilityDetected, System.Windows.Forms.Application.ProductName), "", "", Language.strCheckboxDoNotShowThisMessageAgain, eTaskDialogButtons.OK, eSysIcons.Warning, eSysIcons.Warning);
|
||||
if (cTaskDialog.VerificationChecked)
|
||||
CTaskDialog.MessageBox(Application.ProductName, Language.strCompatibilityProblemDetected, string.Format(Language.strCompatibilityLenovoAutoScrollUtilityDetected, Application.ProductName), "", "", Language.strCheckboxDoNotShowThisMessageAgain, ETaskDialogButtons.Ok, ESysIcons.Warning, ESysIcons.Warning);
|
||||
if (CTaskDialog.VerificationChecked)
|
||||
{
|
||||
mRemoteNG.Settings.Default.CompatibilityWarnLenovoAutoScrollUtility = false;
|
||||
Settings.Default.CompatibilityWarnLenovoAutoScrollUtility = false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -152,7 +152,7 @@ namespace mRemoteNG.App
|
||||
}
|
||||
public static void LogStartupData()
|
||||
{
|
||||
if (mRemoteNG.Settings.Default.WriteLogFile)
|
||||
if (Settings.Default.WriteLogFile)
|
||||
{
|
||||
LogApplicationData();
|
||||
LogCmdLineArgs();
|
||||
@@ -224,7 +224,7 @@ namespace mRemoteNG.App
|
||||
#if !PORTABLE
|
||||
Runtime.Log.InfoFormat("{0} {1} starting.", System.Windows.Forms.Application.ProductName, System.Windows.Forms.Application.ProductVersion);
|
||||
#else
|
||||
Runtime.Log.InfoFormat("{0} {1} {2} starting.", System.Windows.Forms.Application.ProductName, System.Windows.Forms.Application.ProductVersion, Language.strLabelPortableEdition);
|
||||
Runtime.Log.InfoFormat("{0} {1} {2} starting.", Application.ProductName, Application.ProductVersion, Language.strLabelPortableEdition);
|
||||
#endif
|
||||
}
|
||||
private static void LogCmdLineArgs()
|
||||
@@ -233,7 +233,7 @@ namespace mRemoteNG.App
|
||||
}
|
||||
private static void LogCLRData()
|
||||
{
|
||||
Runtime.Log.InfoFormat("Microsoft .NET CLR {0}", System.Environment.Version.ToString());
|
||||
Runtime.Log.InfoFormat("Microsoft .NET CLR {0}", Environment.Version.ToString());
|
||||
}
|
||||
private static void LogCultureData()
|
||||
{
|
||||
@@ -243,7 +243,7 @@ namespace mRemoteNG.App
|
||||
|
||||
public static void CreateConnectionsProvider()
|
||||
{
|
||||
if (mRemoteNG.Settings.Default.UseSQLServer == true)
|
||||
if (Settings.Default.UseSQLServer == true)
|
||||
{
|
||||
SqlConnectionsProvider _sqlConnectionsProvider = new SqlConnectionsProvider();
|
||||
}
|
||||
@@ -260,8 +260,8 @@ namespace mRemoteNG.App
|
||||
return;
|
||||
}
|
||||
|
||||
DateTime nextUpdateCheck = Convert.ToDateTime(mRemoteNG.Settings.Default.CheckForUpdatesLastCheck.Add(TimeSpan.FromDays(Convert.ToDouble(mRemoteNG.Settings.Default.CheckForUpdatesFrequencyDays))));
|
||||
if (!mRemoteNG.Settings.Default.UpdatePending && DateTime.UtcNow < nextUpdateCheck)
|
||||
DateTime nextUpdateCheck = Convert.ToDateTime(Settings.Default.CheckForUpdatesLastCheck.Add(TimeSpan.FromDays(Convert.ToDouble(Settings.Default.CheckForUpdatesFrequencyDays))));
|
||||
if (!Settings.Default.UpdatePending && DateTime.UtcNow < nextUpdateCheck)
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -414,46 +414,46 @@ namespace mRemoteNG.App
|
||||
{
|
||||
if (File.Exists((new Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase()).Info.DirectoryPath + "\\" + cmd[ConsParam]))
|
||||
{
|
||||
mRemoteNG.Settings.Default.LoadConsFromCustomLocation = true;
|
||||
mRemoteNG.Settings.Default.CustomConsPath = (new Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase()).Info.DirectoryPath + "\\" + cmd[ConsParam];
|
||||
Settings.Default.LoadConsFromCustomLocation = true;
|
||||
Settings.Default.CustomConsPath = (new Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase()).Info.DirectoryPath + "\\" + cmd[ConsParam];
|
||||
return;
|
||||
}
|
||||
else if (File.Exists(App.Info.ConnectionsFileInfo.DefaultConnectionsPath + "\\" + cmd[ConsParam]))
|
||||
else if (File.Exists(Info.ConnectionsFileInfo.DefaultConnectionsPath + "\\" + cmd[ConsParam]))
|
||||
{
|
||||
mRemoteNG.Settings.Default.LoadConsFromCustomLocation = true;
|
||||
mRemoteNG.Settings.Default.CustomConsPath = App.Info.ConnectionsFileInfo.DefaultConnectionsPath + "\\" + cmd[ConsParam];
|
||||
Settings.Default.LoadConsFromCustomLocation = true;
|
||||
Settings.Default.CustomConsPath = Info.ConnectionsFileInfo.DefaultConnectionsPath + "\\" + cmd[ConsParam];
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
mRemoteNG.Settings.Default.LoadConsFromCustomLocation = true;
|
||||
mRemoteNG.Settings.Default.CustomConsPath = cmd[ConsParam];
|
||||
Settings.Default.LoadConsFromCustomLocation = true;
|
||||
Settings.Default.CustomConsPath = cmd[ConsParam];
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(ResetPosParam))
|
||||
{
|
||||
mRemoteNG.Settings.Default.MainFormKiosk = false;
|
||||
mRemoteNG.Settings.Default.MainFormLocation = new Point(999, 999);
|
||||
mRemoteNG.Settings.Default.MainFormSize = new Size(900, 600);
|
||||
mRemoteNG.Settings.Default.MainFormState = FormWindowState.Normal;
|
||||
Settings.Default.MainFormKiosk = false;
|
||||
Settings.Default.MainFormLocation = new Point(999, 999);
|
||||
Settings.Default.MainFormSize = new Size(900, 600);
|
||||
Settings.Default.MainFormState = FormWindowState.Normal;
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(ResetPanelsParam))
|
||||
{
|
||||
mRemoteNG.Settings.Default.ResetPanels = true;
|
||||
Settings.Default.ResetPanels = true;
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(NoReconnectParam))
|
||||
{
|
||||
mRemoteNG.Settings.Default.NoReconnect = true;
|
||||
Settings.Default.NoReconnect = true;
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(ResetToolbarsParam))
|
||||
{
|
||||
mRemoteNG.Settings.Default.ResetToolbars = true;
|
||||
Settings.Default.ResetToolbars = true;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
||||
@@ -4,7 +4,6 @@ using mRemoteNG.Connection.Protocol.ICA;
|
||||
using mRemoteNG.Connection.Protocol.VNC;
|
||||
using mRemoteNG.Connection.Protocol.RDP;
|
||||
using mRemoteNG.My;
|
||||
using PSTaskDialog;
|
||||
using System;
|
||||
using System.Data;
|
||||
using System.Data.SqlClient;
|
||||
@@ -19,6 +18,7 @@ using mRemoteNG.Connection.Protocol;
|
||||
using mRemoteNG.Images;
|
||||
using mRemoteNG.UI.Forms;
|
||||
using mRemoteNG.Tree.Root;
|
||||
using mRemoteNG.UI.TaskDialog;
|
||||
|
||||
namespace mRemoteNG.Config.Connections
|
||||
{
|
||||
@@ -90,8 +90,8 @@ namespace mRemoteNG.Config.Connections
|
||||
|
||||
public string ConnectionFileName
|
||||
{
|
||||
get { return this._ConnectionFileName; }
|
||||
set { this._ConnectionFileName = value; }
|
||||
get { return _ConnectionFileName; }
|
||||
set { _ConnectionFileName = value; }
|
||||
}
|
||||
|
||||
public TreeNode RootTreeNode {get; set;}
|
||||
@@ -100,8 +100,8 @@ namespace mRemoteNG.Config.Connections
|
||||
|
||||
public ContainerList ContainerList
|
||||
{
|
||||
get { return this._ContainerList; }
|
||||
set { this._ContainerList = value; }
|
||||
get { return _ContainerList; }
|
||||
set { _ContainerList = value; }
|
||||
}
|
||||
|
||||
public ConnectionList PreviousConnectionList
|
||||
@@ -188,19 +188,19 @@ namespace mRemoteNG.Config.Connections
|
||||
const double maxSupportedSchemaVersion = 2.5;
|
||||
if (confVersion > maxSupportedSchemaVersion)
|
||||
{
|
||||
cTaskDialog.ShowTaskDialogBox(
|
||||
CTaskDialog.ShowTaskDialogBox(
|
||||
frmMain.Default,
|
||||
System.Windows.Forms.Application.ProductName,
|
||||
Application.ProductName,
|
||||
"Incompatible database schema",
|
||||
$"The database schema on the server is not supported. Please upgrade to a newer version of {System.Windows.Forms.Application.ProductName}.",
|
||||
$"The database schema on the server is not supported. Please upgrade to a newer version of {Application.ProductName}.",
|
||||
string.Format("Schema Version: {1}{0}Highest Supported Version: {2}", Environment.NewLine, confVersion.ToString(), maxSupportedSchemaVersion.ToString()),
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
eTaskDialogButtons.OK,
|
||||
eSysIcons.Error,
|
||||
eSysIcons.Error
|
||||
ETaskDialogButtons.Ok,
|
||||
ESysIcons.Error,
|
||||
ESysIcons.Error
|
||||
);
|
||||
throw (new Exception($"Incompatible database schema (schema version {confVersion})."));
|
||||
}
|
||||
@@ -236,7 +236,7 @@ namespace mRemoteNG.Config.Connections
|
||||
RootTreeNode.Expand();
|
||||
|
||||
//expand containers
|
||||
foreach (ContainerInfo contI in this._ContainerList)
|
||||
foreach (ContainerInfo contI in _ContainerList)
|
||||
{
|
||||
if (contI.IsExpanded == true)
|
||||
{
|
||||
@@ -312,7 +312,7 @@ namespace mRemoteNG.Config.Connections
|
||||
conI.TreeNode = tNode;
|
||||
//conI.Parent = _previousContainer 'NEW
|
||||
|
||||
this.ConnectionList.Add(conI);
|
||||
ConnectionList.Add(conI);
|
||||
|
||||
tNode.Tag = conI;
|
||||
|
||||
@@ -322,7 +322,7 @@ namespace mRemoteNG.Config.Connections
|
||||
|
||||
if (prevCon != null)
|
||||
{
|
||||
foreach (Connection.Protocol.ProtocolBase prot in prevCon.OpenConnections)
|
||||
foreach (ProtocolBase prot in prevCon.OpenConnections)
|
||||
{
|
||||
prot.InterfaceControl.Info = conI;
|
||||
conI.OpenConnections.Add(prot);
|
||||
@@ -402,8 +402,8 @@ namespace mRemoteNG.Config.Connections
|
||||
}
|
||||
}
|
||||
|
||||
this._ContainerList.Add(contI);
|
||||
this.ConnectionList.Add(conI);
|
||||
_ContainerList.Add(contI);
|
||||
ConnectionList.Add(conI);
|
||||
|
||||
tNode.Tag = contI;
|
||||
tNode.ImageIndex = (int)TreeImageType.Container;
|
||||
@@ -501,7 +501,7 @@ namespace mRemoteNG.Config.Connections
|
||||
connectionInfo.Icon = Convert.ToString(sqlRd["Icon"]);
|
||||
connectionInfo.Panel = Convert.ToString(sqlRd["Panel"]);
|
||||
|
||||
if (this.confVersion > 1.5) //1.6
|
||||
if (confVersion > 1.5) //1.6
|
||||
{
|
||||
connectionInfo.ICAEncryption = (ProtocolICA.EncryptionStrength)Tools.MiscTools.StringToEnum(typeof(ProtocolICA.EncryptionStrength), Convert.ToString(sqlRd["ICAEncryptionStrength"]));
|
||||
connectionInfo.Inheritance.ICAEncryption = Convert.ToBoolean(sqlRd["InheritICAEncryptionStrength"]);
|
||||
@@ -511,7 +511,7 @@ namespace mRemoteNG.Config.Connections
|
||||
connectionInfo.Inheritance.PostExtApp = Convert.ToBoolean(sqlRd["InheritPostExtApp"]);
|
||||
}
|
||||
|
||||
if (this.confVersion > 1.6) //1.7
|
||||
if (confVersion > 1.6) //1.7
|
||||
{
|
||||
connectionInfo.VNCCompression = (ProtocolVNC.Compression)Tools.MiscTools.StringToEnum(typeof(ProtocolVNC.Compression), Convert.ToString(sqlRd["VNCCompression"]));
|
||||
connectionInfo.VNCEncoding = (ProtocolVNC.Encoding)Tools.MiscTools.StringToEnum(typeof(ProtocolVNC.Encoding), Convert.ToString(sqlRd["VNCEncoding"]));
|
||||
@@ -537,13 +537,13 @@ namespace mRemoteNG.Config.Connections
|
||||
connectionInfo.Inheritance.VNCViewOnly = Convert.ToBoolean(sqlRd["InheritVNCViewOnly"]);
|
||||
}
|
||||
|
||||
if (this.confVersion > 1.7) //1.8
|
||||
if (confVersion > 1.7) //1.8
|
||||
{
|
||||
connectionInfo.RDPAuthenticationLevel = (ProtocolRDP.AuthenticationLevel)Tools.MiscTools.StringToEnum(typeof(ProtocolRDP.AuthenticationLevel), Convert.ToString(sqlRd["RDPAuthenticationLevel"]));
|
||||
connectionInfo.Inheritance.RDPAuthenticationLevel = Convert.ToBoolean(sqlRd["InheritRDPAuthenticationLevel"]);
|
||||
}
|
||||
|
||||
if (this.confVersion > 1.8) //1.9
|
||||
if (confVersion > 1.8) //1.9
|
||||
{
|
||||
connectionInfo.RenderingEngine = (HTTPBase.RenderingEngine)Tools.MiscTools.StringToEnum(typeof(HTTPBase.RenderingEngine), Convert.ToString(sqlRd["RenderingEngine"]));
|
||||
connectionInfo.MacAddress = Convert.ToString(sqlRd["MacAddress"]);
|
||||
@@ -551,19 +551,19 @@ namespace mRemoteNG.Config.Connections
|
||||
connectionInfo.Inheritance.MacAddress = Convert.ToBoolean(sqlRd["InheritMacAddress"]);
|
||||
}
|
||||
|
||||
if (this.confVersion > 1.9) //2.0
|
||||
if (confVersion > 1.9) //2.0
|
||||
{
|
||||
connectionInfo.UserField = Convert.ToString(sqlRd["UserField"]);
|
||||
connectionInfo.Inheritance.UserField = Convert.ToBoolean(sqlRd["InheritUserField"]);
|
||||
}
|
||||
|
||||
if (this.confVersion > 2.0) //2.1
|
||||
if (confVersion > 2.0) //2.1
|
||||
{
|
||||
connectionInfo.ExtApp = Convert.ToString(sqlRd["ExtApp"]);
|
||||
connectionInfo.Inheritance.ExtApp = Convert.ToBoolean(sqlRd["InheritExtApp"]);
|
||||
}
|
||||
|
||||
if (this.confVersion >= 2.2)
|
||||
if (confVersion >= 2.2)
|
||||
{
|
||||
connectionInfo.RDGatewayUsageMethod = (ProtocolRDP.RDGatewayUsageMethod)Tools.MiscTools.StringToEnum(typeof(ProtocolRDP.RDGatewayUsageMethod), Convert.ToString(sqlRd["RDGatewayUsageMethod"]));
|
||||
connectionInfo.RDGatewayHostname = Convert.ToString(sqlRd["RDGatewayHostname"]);
|
||||
@@ -578,7 +578,7 @@ namespace mRemoteNG.Config.Connections
|
||||
connectionInfo.Inheritance.RDGatewayDomain = Convert.ToBoolean(sqlRd["InheritRDGatewayDomain"]);
|
||||
}
|
||||
|
||||
if (this.confVersion >= 2.3)
|
||||
if (confVersion >= 2.3)
|
||||
{
|
||||
connectionInfo.EnableFontSmoothing = Convert.ToBoolean(sqlRd["EnableFontSmoothing"]);
|
||||
connectionInfo.EnableDesktopComposition = Convert.ToBoolean(sqlRd["EnableDesktopComposition"]);
|
||||
@@ -619,7 +619,7 @@ namespace mRemoteNG.Config.Connections
|
||||
#region XML
|
||||
private string DecryptCompleteFile()
|
||||
{
|
||||
StreamReader sRd = new StreamReader(this._ConnectionFileName);
|
||||
StreamReader sRd = new StreamReader(_ConnectionFileName);
|
||||
|
||||
string strCons = "";
|
||||
strCons = sRd.ReadToEnd();
|
||||
@@ -686,19 +686,19 @@ namespace mRemoteNG.Config.Connections
|
||||
}
|
||||
|
||||
// SECTION 1. Create a DOM Document and load the XML data into it.
|
||||
this.xDom = new XmlDocument();
|
||||
xDom = new XmlDocument();
|
||||
if (cons != "")
|
||||
{
|
||||
xDom.LoadXml(cons);
|
||||
}
|
||||
else
|
||||
{
|
||||
xDom.Load(this._ConnectionFileName);
|
||||
xDom.Load(_ConnectionFileName);
|
||||
}
|
||||
|
||||
if (xDom.DocumentElement.HasAttribute("ConfVersion"))
|
||||
{
|
||||
this.confVersion = Convert.ToDouble(xDom.DocumentElement.Attributes["ConfVersion"].Value.Replace(",", "."), CultureInfo.InvariantCulture);
|
||||
confVersion = Convert.ToDouble(xDom.DocumentElement.Attributes["ConfVersion"].Value.Replace(",", "."), CultureInfo.InvariantCulture);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -708,19 +708,19 @@ namespace mRemoteNG.Config.Connections
|
||||
const double maxSupportedConfVersion = 2.5;
|
||||
if (confVersion > maxSupportedConfVersion)
|
||||
{
|
||||
cTaskDialog.ShowTaskDialogBox(
|
||||
CTaskDialog.ShowTaskDialogBox(
|
||||
frmMain.Default,
|
||||
System.Windows.Forms.Application.ProductName,
|
||||
Application.ProductName,
|
||||
"Incompatible connection file format",
|
||||
string.Format("The format of this connection file is not supported. Please upgrade to a newer version of {0}.", System.Windows.Forms.Application.ProductName),
|
||||
string.Format("The format of this connection file is not supported. Please upgrade to a newer version of {0}.", Application.ProductName),
|
||||
string.Format("{1}{0}File Format Version: {2}{0}Highest Supported Version: {3}", Environment.NewLine, ConnectionFileName, confVersion.ToString(), maxSupportedConfVersion.ToString()),
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
eTaskDialogButtons.OK,
|
||||
eSysIcons.Error,
|
||||
eSysIcons.Error
|
||||
ETaskDialogButtons.Ok,
|
||||
ESysIcons.Error,
|
||||
ESysIcons.Error
|
||||
);
|
||||
throw (new Exception(string.Format("Incompatible connection file format (file format version {0}).", confVersion)));
|
||||
}
|
||||
@@ -755,7 +755,7 @@ namespace mRemoteNG.Config.Connections
|
||||
RootTreeNode.Tag = rootInfo;
|
||||
}
|
||||
|
||||
if (this.confVersion > 1.3) //1.4
|
||||
if (confVersion > 1.3) //1.4
|
||||
{
|
||||
if (Security.Crypt.Decrypt(Convert.ToString(xDom.DocumentElement.Attributes["Protected"].Value), pW) != "ThisIsNotProtected")
|
||||
{
|
||||
@@ -798,7 +798,7 @@ namespace mRemoteNG.Config.Connections
|
||||
RootTreeNode.Expand();
|
||||
|
||||
//expand containers
|
||||
foreach (ContainerInfo contI in this._ContainerList)
|
||||
foreach (ContainerInfo contI in _ContainerList)
|
||||
{
|
||||
if (contI.IsExpanded == true)
|
||||
{
|
||||
@@ -831,7 +831,7 @@ namespace mRemoteNG.Config.Connections
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
App.Runtime.IsConnectionsFileLoaded = false;
|
||||
Runtime.IsConnectionsFileLoaded = false;
|
||||
Runtime.MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, Language.strLoadFromXmlFailed + Environment.NewLine + ex.Message + Environment.NewLine + ex.StackTrace, true);
|
||||
throw;
|
||||
}
|
||||
@@ -945,7 +945,7 @@ namespace mRemoteNG.Config.Connections
|
||||
try
|
||||
{
|
||||
XmlNode xmlnode = xxNode;
|
||||
if (this.confVersion > 0.1) //0.2
|
||||
if (confVersion > 0.1) //0.2
|
||||
{
|
||||
connectionInfo.Name = xmlnode.Attributes["Name"].Value;
|
||||
connectionInfo.Description = xmlnode.Attributes["Descr"].Value;
|
||||
@@ -957,7 +957,7 @@ namespace mRemoteNG.Config.Connections
|
||||
connectionInfo.DisplayThemes = bool.Parse(xmlnode.Attributes["DisplayThemes"].Value);
|
||||
connectionInfo.CacheBitmaps = bool.Parse(xmlnode.Attributes["CacheBitmaps"].Value);
|
||||
|
||||
if (this.confVersion < 1.1) //1.0 - 0.1
|
||||
if (confVersion < 1.1) //1.0 - 0.1
|
||||
{
|
||||
if (Convert.ToBoolean(xmlnode.Attributes["Fullscreen"].Value) == true)
|
||||
{
|
||||
@@ -970,9 +970,9 @@ namespace mRemoteNG.Config.Connections
|
||||
}
|
||||
}
|
||||
|
||||
if (this.confVersion > 0.2) //0.3
|
||||
if (confVersion > 0.2) //0.3
|
||||
{
|
||||
if (this.confVersion < 0.7)
|
||||
if (confVersion < 0.7)
|
||||
{
|
||||
if (Convert.ToBoolean(xmlnode.Attributes["UseVNC"].Value) == true)
|
||||
{
|
||||
@@ -991,9 +991,9 @@ namespace mRemoteNG.Config.Connections
|
||||
connectionInfo.Protocol = ProtocolType.RDP;
|
||||
}
|
||||
|
||||
if (this.confVersion > 0.3) //0.4
|
||||
if (confVersion > 0.3) //0.4
|
||||
{
|
||||
if (this.confVersion < 0.7)
|
||||
if (confVersion < 0.7)
|
||||
{
|
||||
if (Convert.ToBoolean(xmlnode.Attributes["UseVNC"].Value) == true)
|
||||
connectionInfo.Port = Convert.ToInt32(xmlnode.Attributes["VNCPort"].Value);
|
||||
@@ -1005,7 +1005,7 @@ namespace mRemoteNG.Config.Connections
|
||||
}
|
||||
else
|
||||
{
|
||||
if (this.confVersion < 0.7)
|
||||
if (confVersion < 0.7)
|
||||
{
|
||||
if (Convert.ToBoolean(xmlnode.Attributes["UseVNC"].Value) == true)
|
||||
connectionInfo.Port = (int)ProtocolVNC.Defaults.Port;
|
||||
@@ -1015,7 +1015,7 @@ namespace mRemoteNG.Config.Connections
|
||||
connectionInfo.UseConsoleSession = false;
|
||||
}
|
||||
|
||||
if (this.confVersion > 0.4) //0.5 and 0.6
|
||||
if (confVersion > 0.4) //0.5 and 0.6
|
||||
{
|
||||
connectionInfo.RedirectDiskDrives = bool.Parse(xmlnode.Attributes["RedirectDiskDrives"].Value);
|
||||
connectionInfo.RedirectPrinters = bool.Parse(xmlnode.Attributes["RedirectPrinters"].Value);
|
||||
@@ -1030,23 +1030,23 @@ namespace mRemoteNG.Config.Connections
|
||||
connectionInfo.RedirectSmartCards = false;
|
||||
}
|
||||
|
||||
if (this.confVersion > 0.6) //0.7
|
||||
if (confVersion > 0.6) //0.7
|
||||
{
|
||||
connectionInfo.Protocol = (ProtocolType)Tools.MiscTools.StringToEnum(typeof(ProtocolType), xmlnode.Attributes["Protocol"].Value);
|
||||
connectionInfo.Port = Convert.ToInt32(xmlnode.Attributes["Port"].Value);
|
||||
}
|
||||
|
||||
if (this.confVersion > 0.9) //1.0
|
||||
if (confVersion > 0.9) //1.0
|
||||
{
|
||||
connectionInfo.RedirectKeys = bool.Parse(xmlnode.Attributes["RedirectKeys"].Value);
|
||||
}
|
||||
|
||||
if (this.confVersion > 1.1) //1.2
|
||||
if (confVersion > 1.1) //1.2
|
||||
{
|
||||
connectionInfo.PuttySession = xmlnode.Attributes["PuttySession"].Value;
|
||||
}
|
||||
|
||||
if (this.confVersion > 1.2) //1.3
|
||||
if (confVersion > 1.2) //1.3
|
||||
{
|
||||
connectionInfo.Colors = (ProtocolRDP.RDPColors)Tools.MiscTools.StringToEnum(typeof(ProtocolRDP.RDPColors), xmlnode.Attributes["Colors"].Value);
|
||||
connectionInfo.Resolution = (ProtocolRDP.RDPResolutions)Tools.MiscTools.StringToEnum(typeof(ProtocolRDP.RDPResolutions), Convert.ToString(xmlnode.Attributes["Resolution"].Value));
|
||||
@@ -1076,7 +1076,7 @@ namespace mRemoteNG.Config.Connections
|
||||
connectionInfo.RedirectSound = (ProtocolRDP.RDPSounds) Convert.ToInt32(xmlnode.Attributes["RedirectSound"].Value);
|
||||
}
|
||||
|
||||
if (this.confVersion > 1.2) //1.3
|
||||
if (confVersion > 1.2) //1.3
|
||||
{
|
||||
connectionInfo.Inheritance = new ConnectionInfoInheritance(connectionInfo);
|
||||
connectionInfo.Inheritance.CacheBitmaps = bool.Parse(xmlnode.Attributes["InheritCacheBitmaps"].Value);
|
||||
@@ -1110,12 +1110,12 @@ namespace mRemoteNG.Config.Connections
|
||||
connectionInfo.Panel = Language.strGeneral;
|
||||
}
|
||||
|
||||
if (this.confVersion > 1.4) //1.5
|
||||
if (confVersion > 1.4) //1.5
|
||||
{
|
||||
connectionInfo.PleaseConnect = bool.Parse(xmlnode.Attributes["Connected"].Value);
|
||||
}
|
||||
|
||||
if (this.confVersion > 1.5) //1.6
|
||||
if (confVersion > 1.5) //1.6
|
||||
{
|
||||
connectionInfo.ICAEncryption = (ProtocolICA.EncryptionStrength)Tools.MiscTools.StringToEnum(typeof(ProtocolICA.EncryptionStrength), xmlnode.Attributes["ICAEncryptionStrength"].Value);
|
||||
connectionInfo.Inheritance.ICAEncryption = bool.Parse(xmlnode.Attributes["InheritICAEncryptionStrength"].Value);
|
||||
@@ -1125,7 +1125,7 @@ namespace mRemoteNG.Config.Connections
|
||||
connectionInfo.Inheritance.PostExtApp = bool.Parse(xmlnode.Attributes["InheritPostExtApp"].Value);
|
||||
}
|
||||
|
||||
if (this.confVersion > 1.6) //1.7
|
||||
if (confVersion > 1.6) //1.7
|
||||
{
|
||||
connectionInfo.VNCCompression = (ProtocolVNC.Compression)Tools.MiscTools.StringToEnum(typeof(ProtocolVNC.Compression), xmlnode.Attributes["VNCCompression"].Value);
|
||||
connectionInfo.VNCEncoding = (ProtocolVNC.Encoding)Tools.MiscTools.StringToEnum(typeof(ProtocolVNC.Encoding), Convert.ToString(xmlnode.Attributes["VNCEncoding"].Value));
|
||||
@@ -1151,13 +1151,13 @@ namespace mRemoteNG.Config.Connections
|
||||
connectionInfo.Inheritance.VNCViewOnly = bool.Parse(xmlnode.Attributes["InheritVNCViewOnly"].Value);
|
||||
}
|
||||
|
||||
if (this.confVersion > 1.7) //1.8
|
||||
if (confVersion > 1.7) //1.8
|
||||
{
|
||||
connectionInfo.RDPAuthenticationLevel = (ProtocolRDP.AuthenticationLevel)Tools.MiscTools.StringToEnum(typeof(ProtocolRDP.AuthenticationLevel), xmlnode.Attributes["RDPAuthenticationLevel"].Value);
|
||||
connectionInfo.Inheritance.RDPAuthenticationLevel = bool.Parse(xmlnode.Attributes["InheritRDPAuthenticationLevel"].Value);
|
||||
}
|
||||
|
||||
if (this.confVersion > 1.8) //1.9
|
||||
if (confVersion > 1.8) //1.9
|
||||
{
|
||||
connectionInfo.RenderingEngine = (HTTPBase.RenderingEngine)Tools.MiscTools.StringToEnum(typeof(HTTPBase.RenderingEngine), xmlnode.Attributes["RenderingEngine"].Value);
|
||||
connectionInfo.MacAddress = xmlnode.Attributes["MacAddress"].Value;
|
||||
@@ -1165,19 +1165,19 @@ namespace mRemoteNG.Config.Connections
|
||||
connectionInfo.Inheritance.MacAddress = bool.Parse(xmlnode.Attributes["InheritMacAddress"].Value);
|
||||
}
|
||||
|
||||
if (this.confVersion > 1.9) //2.0
|
||||
if (confVersion > 1.9) //2.0
|
||||
{
|
||||
connectionInfo.UserField = xmlnode.Attributes["UserField"].Value;
|
||||
connectionInfo.Inheritance.UserField = bool.Parse(xmlnode.Attributes["InheritUserField"].Value);
|
||||
}
|
||||
|
||||
if (this.confVersion > 2.0) //2.1
|
||||
if (confVersion > 2.0) //2.1
|
||||
{
|
||||
connectionInfo.ExtApp = xmlnode.Attributes["ExtApp"].Value;
|
||||
connectionInfo.Inheritance.ExtApp = bool.Parse(xmlnode.Attributes["InheritExtApp"].Value);
|
||||
}
|
||||
|
||||
if (this.confVersion > 2.1) //2.2
|
||||
if (confVersion > 2.1) //2.2
|
||||
{
|
||||
// Get settings
|
||||
connectionInfo.RDGatewayUsageMethod = (ProtocolRDP.RDGatewayUsageMethod)Tools.MiscTools.StringToEnum(typeof(ProtocolRDP.RDGatewayUsageMethod), Convert.ToString(xmlnode.Attributes["RDGatewayUsageMethod"].Value));
|
||||
@@ -1196,7 +1196,7 @@ namespace mRemoteNG.Config.Connections
|
||||
connectionInfo.Inheritance.RDGatewayDomain = bool.Parse(xmlnode.Attributes["InheritRDGatewayDomain"].Value);
|
||||
}
|
||||
|
||||
if (this.confVersion > 2.2) //2.3
|
||||
if (confVersion > 2.2) //2.3
|
||||
{
|
||||
// Get settings
|
||||
connectionInfo.EnableFontSmoothing = bool.Parse(xmlnode.Attributes["EnableFontSmoothing"].Value);
|
||||
@@ -1223,7 +1223,7 @@ namespace mRemoteNG.Config.Connections
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Runtime.MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, string.Format(Language.strGetConnectionInfoFromXmlFailed, connectionInfo.Name, this.ConnectionFileName, ex.Message), false);
|
||||
Runtime.MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, string.Format(Language.strGetConnectionInfoFromXmlFailed, connectionInfo.Name, ConnectionFileName, ex.Message), false);
|
||||
}
|
||||
return connectionInfo;
|
||||
}
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
using System;
|
||||
using Microsoft.VisualBasic;
|
||||
using System.Windows.Forms;
|
||||
using mRemoteNG.Tools;
|
||||
using mRemoteNG.App;
|
||||
using mRemoteNG.My;
|
||||
using TabPage = Crownwood.Magic.Controls.TabPage;
|
||||
|
||||
//using SHDocVw;
|
||||
|
||||
namespace mRemoteNG.Connection.Protocol.Http
|
||||
{
|
||||
@@ -23,12 +24,12 @@ namespace mRemoteNG.Connection.Protocol.Http
|
||||
{
|
||||
if (RenderingEngine == RenderingEngine.Gecko)
|
||||
{
|
||||
this.Control = new MiniGeckoBrowser.MiniGeckoBrowser();
|
||||
(this.Control as MiniGeckoBrowser.MiniGeckoBrowser).XULrunnerPath = Convert.ToString(mRemoteNG.Settings.Default.XULRunnerPath);
|
||||
Control = new MiniGeckoBrowser.MiniGeckoBrowser();
|
||||
((MiniGeckoBrowser.MiniGeckoBrowser)Control).XULrunnerPath = Convert.ToString(Settings.Default.XULRunnerPath);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.Control = new WebBrowser();
|
||||
Control = new WebBrowser();
|
||||
}
|
||||
|
||||
NewExtended();
|
||||
@@ -49,32 +50,40 @@ namespace mRemoteNG.Connection.Protocol.Http
|
||||
|
||||
try
|
||||
{
|
||||
Crownwood.Magic.Controls.TabPage objTabPage = this.InterfaceControl.Parent as Crownwood.Magic.Controls.TabPage;
|
||||
this.tabTitle = objTabPage.Title;
|
||||
TabPage objTabPage = InterfaceControl.Parent as TabPage;
|
||||
if (objTabPage != null) tabTitle = objTabPage.Title;
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
this.tabTitle = "";
|
||||
tabTitle = "";
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
this.wBrowser = this.Control;
|
||||
wBrowser = Control;
|
||||
|
||||
if (InterfaceControl.Info.RenderingEngine == RenderingEngine.Gecko)
|
||||
{
|
||||
MiniGeckoBrowser.MiniGeckoBrowser objMiniGeckoBrowser = wBrowser as MiniGeckoBrowser.MiniGeckoBrowser;
|
||||
objMiniGeckoBrowser.TitleChanged += geckoBrowser_DocumentTitleChanged;
|
||||
objMiniGeckoBrowser.LastTabRemoved += wBrowser_LastTabRemoved;
|
||||
if (objMiniGeckoBrowser != null)
|
||||
{
|
||||
objMiniGeckoBrowser.TitleChanged += geckoBrowser_DocumentTitleChanged;
|
||||
objMiniGeckoBrowser.LastTabRemoved += wBrowser_LastTabRemoved;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
WebBrowser objWebBrowser = (WebBrowser)wBrowser;
|
||||
SHDocVw.WebBrowserClass objAxWebBrowser = (SHDocVw.WebBrowserClass)objWebBrowser.ActiveXInstance;
|
||||
//SHDocVw.WebBrowserClass objAxWebBrowser = (SHDocVw.WebBrowserClass)objWebBrowser.ActiveXInstance;
|
||||
objWebBrowser.ScrollBarsEnabled = true;
|
||||
objWebBrowser.Navigated += wBrowser_Navigated;
|
||||
|
||||
// http://stackoverflow.com/questions/4655662/how-to-ignore-script-errors-in-webbrowser
|
||||
objWebBrowser.ScriptErrorsSuppressed = true;
|
||||
|
||||
objWebBrowser.Navigated += wBrowser_Navigated;
|
||||
objWebBrowser.DocumentTitleChanged += wBrowser_DocumentTitleChanged;
|
||||
objAxWebBrowser.NewWindow3 += wBrowser_NewWindow3;
|
||||
//objWebBrowser.NewWindow3 += wBrowser_NewWindow3;
|
||||
//objAxWebBrowser.NewWindow3 += wBrowser_NewWindow3;
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -90,15 +99,15 @@ namespace mRemoteNG.Connection.Protocol.Http
|
||||
{
|
||||
try
|
||||
{
|
||||
string strHost = Convert.ToString(this.InterfaceControl.Info.Hostname);
|
||||
string strHost = Convert.ToString(InterfaceControl.Info.Hostname);
|
||||
string strAuth = "";
|
||||
|
||||
if (!(((int)Force & (int)ConnectionInfo.Force.NoCredentials) == (int)ConnectionInfo.Force.NoCredentials) && !string.IsNullOrEmpty(InterfaceControl.Info.Username) && !string.IsNullOrEmpty(InterfaceControl.Info.Password))
|
||||
if (((int)Force & (int)ConnectionInfo.Force.NoCredentials) != (int)ConnectionInfo.Force.NoCredentials && !string.IsNullOrEmpty(InterfaceControl.Info.Username) && !string.IsNullOrEmpty(InterfaceControl.Info.Password))
|
||||
{
|
||||
strAuth = "Authorization: Basic " + Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes(this.InterfaceControl.Info.Username + ":" + this.InterfaceControl.Info.Password)) + Environment.NewLine;
|
||||
strAuth = "Authorization: Basic " + Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes(InterfaceControl.Info.Username + ":" + InterfaceControl.Info.Password)) + Environment.NewLine;
|
||||
}
|
||||
|
||||
if (this.InterfaceControl.Info.Port != defaultPort)
|
||||
if (InterfaceControl.Info.Port != defaultPort)
|
||||
{
|
||||
if (strHost.EndsWith("/"))
|
||||
{
|
||||
@@ -112,11 +121,11 @@ namespace mRemoteNG.Connection.Protocol.Http
|
||||
|
||||
if (InterfaceControl.Info.RenderingEngine == RenderingEngine.Gecko)
|
||||
{
|
||||
((MiniGeckoBrowser.MiniGeckoBrowser)wBrowser).Navigate(strHost + ":" + this.InterfaceControl.Info.Port);
|
||||
((MiniGeckoBrowser.MiniGeckoBrowser)wBrowser).Navigate(strHost + ":" + InterfaceControl.Info.Port);
|
||||
}
|
||||
else
|
||||
{
|
||||
((WebBrowser)wBrowser).Navigate(strHost + ":" + this.InterfaceControl.Info.Port);
|
||||
((WebBrowser)wBrowser).Navigate(strHost + ":" + InterfaceControl.Info.Port);
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -128,7 +137,7 @@ namespace mRemoteNG.Connection.Protocol.Http
|
||||
|
||||
if (InterfaceControl.Info.RenderingEngine == RenderingEngine.Gecko)
|
||||
{
|
||||
(wBrowser as MiniGeckoBrowser.MiniGeckoBrowser).Navigate(strHost);
|
||||
((MiniGeckoBrowser.MiniGeckoBrowser)wBrowser).Navigate(strHost);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -151,7 +160,7 @@ namespace mRemoteNG.Connection.Protocol.Http
|
||||
#endregion
|
||||
|
||||
#region Events
|
||||
private void wBrowser_Navigated(object sender, System.Windows.Forms.WebBrowserNavigatedEventArgs e)
|
||||
private void wBrowser_Navigated(object sender, WebBrowserNavigatedEventArgs e)
|
||||
{
|
||||
WebBrowser objWebBrowser = wBrowser as WebBrowser;
|
||||
if (objWebBrowser == null)
|
||||
@@ -179,44 +188,43 @@ namespace mRemoteNG.Connection.Protocol.Http
|
||||
|
||||
private void wBrowser_LastTabRemoved(object sender)
|
||||
{
|
||||
this.Close();
|
||||
Close();
|
||||
}
|
||||
|
||||
private void wBrowser_DocumentTitleChanged(System.Object sender, System.EventArgs e)
|
||||
private void wBrowser_DocumentTitleChanged(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
Crownwood.Magic.Controls.TabPage tabP = default(Crownwood.Magic.Controls.TabPage);
|
||||
tabP = InterfaceControl.Parent as Crownwood.Magic.Controls.TabPage;
|
||||
|
||||
if (tabP != null)
|
||||
var tabP = InterfaceControl.Parent as TabPage;
|
||||
|
||||
if (tabP != null)
|
||||
{
|
||||
string shortTitle = "";
|
||||
string shortTitle;
|
||||
|
||||
if (this.InterfaceControl.Info.RenderingEngine == RenderingEngine.Gecko)
|
||||
if (InterfaceControl.Info.RenderingEngine == RenderingEngine.Gecko)
|
||||
{
|
||||
if ((wBrowser as MiniGeckoBrowser.MiniGeckoBrowser).Title.Length >= 30)
|
||||
if (((MiniGeckoBrowser.MiniGeckoBrowser) wBrowser).Title.Length >= 30)
|
||||
{
|
||||
shortTitle = (wBrowser as MiniGeckoBrowser.MiniGeckoBrowser).Title.Substring(0, 29) + " ...";
|
||||
shortTitle = ((MiniGeckoBrowser.MiniGeckoBrowser) wBrowser).Title.Substring(0, 29) + " ...";
|
||||
}
|
||||
else
|
||||
{
|
||||
shortTitle = (wBrowser as MiniGeckoBrowser.MiniGeckoBrowser).Title;
|
||||
shortTitle = ((MiniGeckoBrowser.MiniGeckoBrowser) wBrowser).Title;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((wBrowser as WebBrowser).DocumentTitle.Length >= 30)
|
||||
if (((WebBrowser) wBrowser).DocumentTitle.Length >= 30)
|
||||
{
|
||||
shortTitle = (wBrowser as WebBrowser).DocumentTitle.Substring(0, 29) + " ...";
|
||||
shortTitle = ((WebBrowser) wBrowser).DocumentTitle.Substring(0, 29) + " ...";
|
||||
}
|
||||
else
|
||||
{
|
||||
shortTitle = (wBrowser as WebBrowser).DocumentTitle;
|
||||
shortTitle = ((WebBrowser) wBrowser).DocumentTitle;
|
||||
}
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(this.tabTitle))
|
||||
if (!string.IsNullOrEmpty(tabTitle))
|
||||
{
|
||||
tabP.Title = tabTitle + " - " + shortTitle;
|
||||
}
|
||||
@@ -233,41 +241,40 @@ namespace mRemoteNG.Connection.Protocol.Http
|
||||
}
|
||||
|
||||
|
||||
private void geckoBrowser_DocumentTitleChanged(System.Object sender, string e)
|
||||
private void geckoBrowser_DocumentTitleChanged(object sender, string e)
|
||||
{
|
||||
try
|
||||
{
|
||||
Crownwood.Magic.Controls.TabPage tabP = default(Crownwood.Magic.Controls.TabPage);
|
||||
tabP = InterfaceControl.Parent as Crownwood.Magic.Controls.TabPage;
|
||||
var tabP = InterfaceControl.Parent as TabPage;
|
||||
|
||||
if (tabP != null)
|
||||
{
|
||||
string shortTitle = "";
|
||||
string shortTitle;
|
||||
|
||||
if (this.InterfaceControl.Info.RenderingEngine == RenderingEngine.Gecko)
|
||||
if (InterfaceControl.Info.RenderingEngine == RenderingEngine.Gecko)
|
||||
{
|
||||
if ((wBrowser as MiniGeckoBrowser.MiniGeckoBrowser).Title.Length >= 30)
|
||||
if (((MiniGeckoBrowser.MiniGeckoBrowser) wBrowser).Title.Length >= 30)
|
||||
{
|
||||
shortTitle = (wBrowser as MiniGeckoBrowser.MiniGeckoBrowser).Title.Substring(0, 29) + " ...";
|
||||
shortTitle = ((MiniGeckoBrowser.MiniGeckoBrowser) wBrowser).Title.Substring(0, 29) + " ...";
|
||||
}
|
||||
else
|
||||
{
|
||||
shortTitle = (wBrowser as MiniGeckoBrowser.MiniGeckoBrowser).Title;
|
||||
shortTitle = ((MiniGeckoBrowser.MiniGeckoBrowser) wBrowser).Title;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((wBrowser as WebBrowser).DocumentTitle.Length >= 30)
|
||||
if (((WebBrowser) wBrowser).DocumentTitle.Length >= 30)
|
||||
{
|
||||
shortTitle = (wBrowser as WebBrowser).DocumentTitle.Substring(0, 29) + " ...";
|
||||
shortTitle = ((WebBrowser) wBrowser).DocumentTitle.Substring(0, 29) + " ...";
|
||||
}
|
||||
else
|
||||
{
|
||||
shortTitle = (wBrowser as WebBrowser).DocumentTitle;
|
||||
shortTitle = ((WebBrowser) wBrowser).DocumentTitle;
|
||||
}
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(this.tabTitle))
|
||||
if (!string.IsNullOrEmpty(tabTitle))
|
||||
{
|
||||
tabP.Title = tabTitle + " - " + shortTitle;
|
||||
}
|
||||
|
||||
@@ -1,65 +1,228 @@
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Security.AccessControl;
|
||||
using Microsoft.Win32;
|
||||
using mRemoteNG.App;
|
||||
|
||||
using mRemoteNG.Messages;
|
||||
|
||||
namespace mRemoteNG.Tools
|
||||
{
|
||||
public class IeBrowserEmulation
|
||||
{
|
||||
private const string BrowserEmulationKey = "Software\\Microsoft\\Internet Explorer\\Main\\FeatureControl\\FEATURE_BROWSER_EMULATION";
|
||||
private static int _previousIeBrowserEmulationValue = 0;
|
||||
public static void Register()
|
||||
{
|
||||
try
|
||||
{
|
||||
RegistryKey registryKey = Registry.CurrentUser.OpenSubKey(BrowserEmulationKey, true);
|
||||
if (registryKey == null)
|
||||
{
|
||||
Registry.CurrentUser.CreateSubKey(BrowserEmulationKey);
|
||||
registryKey = Registry.CurrentUser.OpenSubKey(BrowserEmulationKey, true);
|
||||
if (registryKey == null)
|
||||
{
|
||||
return ;
|
||||
}
|
||||
}
|
||||
string exeName = Path.GetFileName(Process.GetCurrentProcess().MainModule.FileName);
|
||||
_previousIeBrowserEmulationValue = Convert.ToInt32(registryKey.GetValue(exeName, 0));
|
||||
registryKey.SetValue(exeName, 11000, RegistryValueKind.DWord);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Runtime.MessageCollector.AddExceptionMessage(message: "IeBrowserEmulation.Register() failed.", ex: ex, logOnly: true);
|
||||
}
|
||||
}
|
||||
|
||||
public static void Unregister()
|
||||
{
|
||||
#if PORTABLE
|
||||
try
|
||||
{
|
||||
RegistryKey registryKey = Registry.CurrentUser.OpenSubKey(BrowserEmulationKey, true);
|
||||
if (registryKey == null)
|
||||
{
|
||||
return ;
|
||||
}
|
||||
string exeName = Path.GetFileName(Process.GetCurrentProcess().MainModule.FileName);
|
||||
if (_previousIeBrowserEmulationValue == 0)
|
||||
{
|
||||
registryKey.DeleteValue(exeName);
|
||||
}
|
||||
else
|
||||
{
|
||||
registryKey.SetValue(exeName, _previousIeBrowserEmulationValue, RegistryValueKind.DWord);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Runtime.MessageCollector.AddExceptionMessage(message: "IeBrowserEmulation.Unregister() failed.", ex: ex, logOnly: true);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
public class IeBrowserEmulation
|
||||
{
|
||||
// found this here:
|
||||
// http://www.neowin.net/forum/topic/1077469-vbnet-webbrowser-control-does-not-load-javascript/#comment-596755046
|
||||
|
||||
private static void SetBrowserFeatureControlKey(string feature, string appName, uint value)
|
||||
{
|
||||
|
||||
if (Environment.Is64BitOperatingSystem)
|
||||
{
|
||||
using (RegistryKey key = Registry.CurrentUser.CreateSubKey(string.Concat("Software\\Wow6432Node\\Microsoft\\Internet Explorer\\Main\\FeatureControl\\", feature), RegistryKeyPermissionCheck.ReadWriteSubTree))
|
||||
{
|
||||
key?.SetValue(appName, value, RegistryValueKind.DWord);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
using (RegistryKey key = Registry.CurrentUser.CreateSubKey(string.Concat("Software\\Microsoft\\Internet Explorer\\Main\\FeatureControl\\", feature), RegistryKeyPermissionCheck.ReadWriteSubTree))
|
||||
{
|
||||
key?.SetValue(appName, value, RegistryValueKind.DWord);
|
||||
}
|
||||
}
|
||||
|
||||
private static void DeleteBrowserFeatureControlKey(string feature, string appName)
|
||||
{
|
||||
|
||||
if (Environment.Is64BitOperatingSystem)
|
||||
{
|
||||
using (RegistryKey key = Registry.CurrentUser.OpenSubKey(string.Concat("Software\\Wow6432Node\\Microsoft\\Internet Explorer\\Main\\FeatureControl\\", feature), RegistryKeyPermissionCheck.ReadWriteSubTree))
|
||||
{
|
||||
key?.DeleteValue(appName);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
using (RegistryKey key = Registry.CurrentUser.CreateSubKey(string.Concat("Software\\Microsoft\\Internet Explorer\\Main\\FeatureControl\\", feature), RegistryKeyPermissionCheck.ReadWriteSubTree))
|
||||
{
|
||||
key?.DeleteValue(appName);
|
||||
}
|
||||
}
|
||||
|
||||
private static void SetBrowserFeatureControl()
|
||||
{
|
||||
// http://msdn.microsoft.com/en-us/library/ee330720(v=vs.85).aspx
|
||||
|
||||
// FeatureControl settings are per-process
|
||||
var fileName = Path.GetFileName(Process.GetCurrentProcess().MainModule.FileName);
|
||||
|
||||
// make the control is not running inside Visual Studio Designer
|
||||
if (string.Compare(fileName, "devenv.exe", StringComparison.OrdinalIgnoreCase) == 0 || string.Compare(fileName, "XDesProc.exe", StringComparison.OrdinalIgnoreCase) == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
SetBrowserFeatureControlKey("FEATURE_BROWSER_EMULATION", fileName, GetBrowserEmulationMode());
|
||||
// Webpages containing standards-based !DOCTYPE directives are displayed in IE10 Standards mode.
|
||||
SetBrowserFeatureControlKey("FEATURE_AJAX_CONNECTIONEVENTS", fileName, 1);
|
||||
SetBrowserFeatureControlKey("FEATURE_ENABLE_CLIPCHILDREN_OPTIMIZATION", fileName, 1);
|
||||
SetBrowserFeatureControlKey("FEATURE_MANAGE_SCRIPT_CIRCULAR_REFS", fileName, 1);
|
||||
SetBrowserFeatureControlKey("FEATURE_DOMSTORAGE", fileName, 1);
|
||||
SetBrowserFeatureControlKey("FEATURE_GPU_RENDERING", fileName, 1);
|
||||
SetBrowserFeatureControlKey("FEATURE_IVIEWOBJECTDRAW_DMLT9_WITH_GDI", fileName, 0);
|
||||
SetBrowserFeatureControlKey("FEATURE_DISABLE_LEGACY_COMPRESSION", fileName, 1);
|
||||
SetBrowserFeatureControlKey("FEATURE_LOCALMACHINE_LOCKDOWN", fileName, 0);
|
||||
SetBrowserFeatureControlKey("FEATURE_BLOCK_LMZ_OBJECT", fileName, 0);
|
||||
SetBrowserFeatureControlKey("FEATURE_BLOCK_LMZ_SCRIPT", fileName, 0);
|
||||
SetBrowserFeatureControlKey("FEATURE_DISABLE_NAVIGATION_SOUNDS", fileName, 1);
|
||||
SetBrowserFeatureControlKey("FEATURE_SCRIPTURL_MITIGATION", fileName, 1);
|
||||
SetBrowserFeatureControlKey("FEATURE_SPELLCHECKING", fileName, 0);
|
||||
SetBrowserFeatureControlKey("FEATURE_STATUS_BAR_THROTTLING", fileName, 1);
|
||||
SetBrowserFeatureControlKey("FEATURE_TABBED_BROWSING", fileName, 1);
|
||||
SetBrowserFeatureControlKey("FEATURE_VALIDATE_NAVIGATE_URL", fileName, 1);
|
||||
SetBrowserFeatureControlKey("FEATURE_WEBOC_DOCUMENT_ZOOM", fileName, 1);
|
||||
SetBrowserFeatureControlKey("FEATURE_WEBOC_POPUPMANAGEMENT", fileName, 0);
|
||||
SetBrowserFeatureControlKey("FEATURE_WEBOC_MOVESIZECHILD", fileName, 1);
|
||||
SetBrowserFeatureControlKey("FEATURE_ADDON_MANAGEMENT", fileName, 0);
|
||||
SetBrowserFeatureControlKey("FEATURE_WEBSOCKET", fileName, 1);
|
||||
SetBrowserFeatureControlKey("FEATURE_WINDOW_RESTRICTIONS", fileName, 0);
|
||||
SetBrowserFeatureControlKey("FEATURE_XMLHTTP", fileName, 1);
|
||||
}
|
||||
|
||||
private static void DeleteBrowserFeatureControl()
|
||||
{
|
||||
// http://msdn.microsoft.com/en-us/library/ee330720(v=vs.85).aspx
|
||||
|
||||
// FeatureControl settings are per-process
|
||||
var fileName = Path.GetFileName(Process.GetCurrentProcess().MainModule.FileName);
|
||||
|
||||
// make the control is not running inside Visual Studio Designer
|
||||
if (string.Compare(fileName, "devenv.exe", StringComparison.OrdinalIgnoreCase) == 0 || string.Compare(fileName, "XDesProc.exe", StringComparison.OrdinalIgnoreCase) == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
DeleteBrowserFeatureControlKey("FEATURE_BROWSER_EMULATION", fileName);
|
||||
// Webpages containing standards-based !DOCTYPE directives are displayed in IE10 Standards mode.
|
||||
DeleteBrowserFeatureControlKey("FEATURE_AJAX_CONNECTIONEVENTS", fileName);
|
||||
DeleteBrowserFeatureControlKey("FEATURE_ENABLE_CLIPCHILDREN_OPTIMIZATION", fileName);
|
||||
DeleteBrowserFeatureControlKey("FEATURE_MANAGE_SCRIPT_CIRCULAR_REFS", fileName);
|
||||
DeleteBrowserFeatureControlKey("FEATURE_DOMSTORAGE", fileName);
|
||||
DeleteBrowserFeatureControlKey("FEATURE_GPU_RENDERING", fileName);
|
||||
DeleteBrowserFeatureControlKey("FEATURE_IVIEWOBJECTDRAW_DMLT9_WITH_GDI", fileName);
|
||||
DeleteBrowserFeatureControlKey("FEATURE_DISABLE_LEGACY_COMPRESSION", fileName);
|
||||
DeleteBrowserFeatureControlKey("FEATURE_LOCALMACHINE_LOCKDOWN", fileName);
|
||||
DeleteBrowserFeatureControlKey("FEATURE_BLOCK_LMZ_OBJECT", fileName);
|
||||
DeleteBrowserFeatureControlKey("FEATURE_BLOCK_LMZ_SCRIPT", fileName);
|
||||
DeleteBrowserFeatureControlKey("FEATURE_DISABLE_NAVIGATION_SOUNDS", fileName);
|
||||
DeleteBrowserFeatureControlKey("FEATURE_SCRIPTURL_MITIGATION", fileName);
|
||||
DeleteBrowserFeatureControlKey("FEATURE_SPELLCHECKING", fileName);
|
||||
DeleteBrowserFeatureControlKey("FEATURE_STATUS_BAR_THROTTLING", fileName);
|
||||
DeleteBrowserFeatureControlKey("FEATURE_TABBED_BROWSING", fileName);
|
||||
DeleteBrowserFeatureControlKey("FEATURE_VALIDATE_NAVIGATE_URL", fileName);
|
||||
DeleteBrowserFeatureControlKey("FEATURE_WEBOC_DOCUMENT_ZOOM", fileName);
|
||||
DeleteBrowserFeatureControlKey("FEATURE_WEBOC_POPUPMANAGEMENT", fileName);
|
||||
DeleteBrowserFeatureControlKey("FEATURE_WEBOC_MOVESIZECHILD", fileName);
|
||||
DeleteBrowserFeatureControlKey("FEATURE_ADDON_MANAGEMENT", fileName);
|
||||
DeleteBrowserFeatureControlKey("FEATURE_WEBSOCKET", fileName);
|
||||
DeleteBrowserFeatureControlKey("FEATURE_WINDOW_RESTRICTIONS", fileName);
|
||||
DeleteBrowserFeatureControlKey("FEATURE_XMLHTTP", fileName);
|
||||
}
|
||||
|
||||
private static uint GetBrowserEmulationMode()
|
||||
{
|
||||
// https://msdn.microsoft.com/en-us/library/ee330730%28v=vs.85%29.aspx
|
||||
|
||||
var browserVersion = 9;
|
||||
// default to IE9.
|
||||
|
||||
using (RegistryKey ieKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Internet Explorer", RegistryKeyPermissionCheck.ReadSubTree, RegistryRights.QueryValues))
|
||||
{
|
||||
if (ieKey != null)
|
||||
{
|
||||
var version = ieKey.GetValue("svcVersion");
|
||||
if (null == version)
|
||||
{
|
||||
version = ieKey.GetValue("Version");
|
||||
if (version == null)
|
||||
{
|
||||
throw new ApplicationException("Microsoft Internet Explorer is required!");
|
||||
}
|
||||
}
|
||||
int.TryParse(version.ToString().Split('.')[0], out browserVersion);
|
||||
}
|
||||
}
|
||||
|
||||
uint mode;
|
||||
|
||||
switch (browserVersion)
|
||||
{
|
||||
// https://support.microsoft.com/en-us/lifecycle#gp/Microsoft-Internet-Explorer
|
||||
// IE 7 & 8 are basically not supported any more...
|
||||
#if OLD_BROWSERS
|
||||
// Webpages containing standards-based !DOCTYPE directives are displayed in IE7 Standards mode. Default value for applications hosting the WebBrowser Control.
|
||||
case 7:
|
||||
mode = 7000;
|
||||
break;
|
||||
|
||||
// Webpages containing standards-based !DOCTYPE directives are displayed in IE8 mode. Default value for Internet Explorer 8
|
||||
case 8:
|
||||
mode = 8000;
|
||||
break;
|
||||
#endif
|
||||
// Internet Explorer 9. Webpages containing standards-based !DOCTYPE directives are displayed in IE9 mode. Default value for Internet Explorer 9.
|
||||
case 9:
|
||||
mode = 9000;
|
||||
break;
|
||||
|
||||
// Internet Explorer 10. Webpages containing standards-based !DOCTYPE directives are displayed in IE10 Standards mode. Default value for Internet Explorer 10.
|
||||
case 10:
|
||||
mode = 10000;
|
||||
break;
|
||||
|
||||
// IE11. Webpages containing standards-based !DOCTYPE directives are displayed in IE11 edge mode. Default value for IE11.
|
||||
case 11:
|
||||
mode = 11000;
|
||||
break;
|
||||
|
||||
default:
|
||||
// use IE9 mode by default
|
||||
mode = 9000;
|
||||
break;
|
||||
}
|
||||
|
||||
return mode;
|
||||
}
|
||||
|
||||
public static void Register()
|
||||
{
|
||||
try
|
||||
{
|
||||
SetBrowserFeatureControl();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Runtime.MessageCollector.AddExceptionMessage("IeBrowserEmulation.Register() failed.", ex, MessageClass.ErrorMsg, true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static void Unregister()
|
||||
{
|
||||
#if PORTABLE
|
||||
try
|
||||
{
|
||||
DeleteBrowserFeatureControl();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Runtime.MessageCollector.AddExceptionMessage("IeBrowserEmulation.Unregister() failed.", ex, MessageClass.ErrorMsg, true);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
private IeBrowserEmulation()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +1,11 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Windows.Forms;
|
||||
using mRemoteNG.App;
|
||||
using mRemoteNG.App.Info;
|
||||
using mRemoteNG.Config.Putty;
|
||||
using mRemoteNG.Connection.Protocol;
|
||||
using mRemoteNG.My;
|
||||
using mRemoteNG.Tools;
|
||||
using PSTaskDialog;
|
||||
|
||||
namespace mRemoteNG.UI.Forms.OptionsPages
|
||||
{
|
||||
@@ -48,51 +47,51 @@ namespace mRemoteNG.UI.Forms.OptionsPages
|
||||
{
|
||||
base.SaveSettings();
|
||||
|
||||
chkWriteLogFile.Checked = mRemoteNG.Settings.Default.WriteLogFile;
|
||||
chkWriteLogFile.Checked = Settings.Default.WriteLogFile;
|
||||
|
||||
chkEncryptCompleteFile.Checked = mRemoteNG.Settings.Default.EncryptCompleteConnectionsFile;
|
||||
chkAutomaticallyGetSessionInfo.Checked = mRemoteNG.Settings.Default.AutomaticallyGetSessionInfo;
|
||||
chkAutomaticReconnect.Checked = mRemoteNG.Settings.Default.ReconnectOnDisconnect;
|
||||
numPuttyWaitTime.Value = mRemoteNG.Settings.Default.MaxPuttyWaitTime;
|
||||
chkEncryptCompleteFile.Checked = Settings.Default.EncryptCompleteConnectionsFile;
|
||||
chkAutomaticallyGetSessionInfo.Checked = Settings.Default.AutomaticallyGetSessionInfo;
|
||||
chkAutomaticReconnect.Checked = Settings.Default.ReconnectOnDisconnect;
|
||||
numPuttyWaitTime.Value = Settings.Default.MaxPuttyWaitTime;
|
||||
|
||||
chkUseCustomPuttyPath.Checked = mRemoteNG.Settings.Default.UseCustomPuttyPath;
|
||||
txtCustomPuttyPath.Text = mRemoteNG.Settings.Default.CustomPuttyPath;
|
||||
chkUseCustomPuttyPath.Checked = Settings.Default.UseCustomPuttyPath;
|
||||
txtCustomPuttyPath.Text = Settings.Default.CustomPuttyPath;
|
||||
SetPuttyLaunchButtonEnabled();
|
||||
|
||||
numUVNCSCPort.Value = mRemoteNG.Settings.Default.UVNCSCPort;
|
||||
numUVNCSCPort.Value = Settings.Default.UVNCSCPort;
|
||||
|
||||
txtXULrunnerPath.Text = mRemoteNG.Settings.Default.XULRunnerPath;
|
||||
txtXULrunnerPath.Text = Settings.Default.XULRunnerPath;
|
||||
}
|
||||
|
||||
public override void SaveSettings()
|
||||
{
|
||||
mRemoteNG.Settings.Default.WriteLogFile = chkWriteLogFile.Checked;
|
||||
mRemoteNG.Settings.Default.EncryptCompleteConnectionsFile = chkEncryptCompleteFile.Checked;
|
||||
mRemoteNG.Settings.Default.AutomaticallyGetSessionInfo = chkAutomaticallyGetSessionInfo.Checked;
|
||||
mRemoteNG.Settings.Default.ReconnectOnDisconnect = chkAutomaticReconnect.Checked;
|
||||
Settings.Default.WriteLogFile = chkWriteLogFile.Checked;
|
||||
Settings.Default.EncryptCompleteConnectionsFile = chkEncryptCompleteFile.Checked;
|
||||
Settings.Default.AutomaticallyGetSessionInfo = chkAutomaticallyGetSessionInfo.Checked;
|
||||
Settings.Default.ReconnectOnDisconnect = chkAutomaticReconnect.Checked;
|
||||
|
||||
var puttyPathChanged = false;
|
||||
if (mRemoteNG.Settings.Default.CustomPuttyPath != txtCustomPuttyPath.Text)
|
||||
if (Settings.Default.CustomPuttyPath != txtCustomPuttyPath.Text)
|
||||
{
|
||||
puttyPathChanged = true;
|
||||
mRemoteNG.Settings.Default.CustomPuttyPath = txtCustomPuttyPath.Text;
|
||||
Settings.Default.CustomPuttyPath = txtCustomPuttyPath.Text;
|
||||
}
|
||||
if (mRemoteNG.Settings.Default.UseCustomPuttyPath != chkUseCustomPuttyPath.Checked)
|
||||
if (Settings.Default.UseCustomPuttyPath != chkUseCustomPuttyPath.Checked)
|
||||
{
|
||||
puttyPathChanged = true;
|
||||
mRemoteNG.Settings.Default.UseCustomPuttyPath = chkUseCustomPuttyPath.Checked;
|
||||
Settings.Default.UseCustomPuttyPath = chkUseCustomPuttyPath.Checked;
|
||||
}
|
||||
if (puttyPathChanged)
|
||||
{
|
||||
PuttyBase.PuttyPath = mRemoteNG.Settings.Default.UseCustomPuttyPath ? mRemoteNG.Settings.Default.CustomPuttyPath : GeneralAppInfo.PuttyPath;
|
||||
PuttyBase.PuttyPath = Settings.Default.UseCustomPuttyPath ? Settings.Default.CustomPuttyPath : GeneralAppInfo.PuttyPath;
|
||||
Sessions.AddSessionsToTree();
|
||||
}
|
||||
|
||||
mRemoteNG.Settings.Default.MaxPuttyWaitTime = (int) numPuttyWaitTime.Value;
|
||||
mRemoteNG.Settings.Default.UVNCSCPort = (int) numUVNCSCPort.Value;
|
||||
mRemoteNG.Settings.Default.XULRunnerPath = txtXULrunnerPath.Text;
|
||||
Settings.Default.MaxPuttyWaitTime = (int) numPuttyWaitTime.Value;
|
||||
Settings.Default.UVNCSCPort = (int) numUVNCSCPort.Value;
|
||||
Settings.Default.XULRunnerPath = txtXULrunnerPath.Text;
|
||||
|
||||
mRemoteNG.Settings.Default.Save();
|
||||
Settings.Default.Save();
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -135,8 +134,7 @@ namespace mRemoteNG.UI.Forms.OptionsPages
|
||||
try
|
||||
{
|
||||
var puttyProcess = new PuttyProcessController();
|
||||
var fileName = "";
|
||||
fileName = chkUseCustomPuttyPath.Checked ? txtCustomPuttyPath.Text : GeneralAppInfo.PuttyPath;
|
||||
var fileName = chkUseCustomPuttyPath.Checked ? txtCustomPuttyPath.Text : GeneralAppInfo.PuttyPath;
|
||||
puttyProcess.Start(fileName);
|
||||
puttyProcess.SetControlText("Button", "&Cancel", "&Close");
|
||||
puttyProcess.SetControlVisible("Button", "&Open", false);
|
||||
@@ -144,8 +142,9 @@ namespace mRemoteNG.UI.Forms.OptionsPages
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
cTaskDialog.MessageBox(Convert.ToString(Application.ProductName), Language.strErrorCouldNotLaunchPutty,
|
||||
"", ex.Message, "", "", eTaskDialogButtons.OK, eSysIcons.Error, eSysIcons.Error);
|
||||
MessageBox.Show(Language.strErrorCouldNotLaunchPutty, Application.ProductName,
|
||||
MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
|
||||
Runtime.MessageCollector.AddExceptionMessage(Language.strErrorCouldNotLaunchPutty, ex, logOnly: true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -165,8 +164,7 @@ namespace mRemoteNG.UI.Forms.OptionsPages
|
||||
|
||||
private void SetPuttyLaunchButtonEnabled()
|
||||
{
|
||||
var puttyPath = "";
|
||||
puttyPath = chkUseCustomPuttyPath.Checked ? txtCustomPuttyPath.Text : GeneralAppInfo.PuttyPath;
|
||||
var puttyPath = chkUseCustomPuttyPath.Checked ? txtCustomPuttyPath.Text : GeneralAppInfo.PuttyPath;
|
||||
|
||||
var exists = false;
|
||||
try
|
||||
|
||||
@@ -7,8 +7,8 @@ using mRemoteNG.App.Update;
|
||||
using mRemoteNG.My;
|
||||
using mRemoteNG.Security;
|
||||
using mRemoteNG.Tools;
|
||||
using mRemoteNG.UI.TaskDialog;
|
||||
using mRemoteNG.UI.Window;
|
||||
using PSTaskDialog;
|
||||
|
||||
namespace mRemoteNG.UI.Forms.OptionsPages
|
||||
{
|
||||
@@ -246,13 +246,13 @@ namespace mRemoteNG.UI.Forms.OptionsPages
|
||||
throw e.Error;
|
||||
}
|
||||
|
||||
cTaskDialog.ShowCommandBox(this, Convert.ToString(Application.ProductName),
|
||||
CTaskDialog.ShowCommandBox(this, Convert.ToString(Application.ProductName),
|
||||
Language.strProxyTestSucceeded, "", Language.strButtonOK, false);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
cTaskDialog.ShowCommandBox(this, Convert.ToString(Application.ProductName), Language.strProxyTestFailed,
|
||||
MiscTools.GetExceptionMessageRecursive(ex), "", "", "", Language.strButtonOK, false, eSysIcons.Error,
|
||||
CTaskDialog.ShowCommandBox(this, Convert.ToString(Application.ProductName), Language.strProxyTestFailed,
|
||||
MiscTools.GetExceptionMessageRecursive(ex), "", "", "", Language.strButtonOK, false, ESysIcons.Error,
|
||||
0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,8 +15,8 @@ using mRemoteNG.Messages;
|
||||
using mRemoteNG.Themes;
|
||||
using mRemoteNG.Tools;
|
||||
using mRemoteNG.Tree;
|
||||
using mRemoteNG.UI.TaskDialog;
|
||||
using mRemoteNG.UI.Window;
|
||||
using PSTaskDialog;
|
||||
using WeifenLuo.WinFormsUI.Docking;
|
||||
|
||||
namespace mRemoteNG.UI.Forms
|
||||
@@ -300,13 +300,12 @@ namespace mRemoteNG.UI.Forms
|
||||
|
||||
private static void ApplyMenuColors(ToolStripItemCollection itemCollection)
|
||||
{
|
||||
var menuItem = default(ToolStripMenuItem);
|
||||
foreach (ToolStripItem item in itemCollection)
|
||||
foreach (ToolStripItem item in itemCollection)
|
||||
{
|
||||
item.BackColor = ThemeManager.ActiveTheme.MenuBackgroundColor;
|
||||
item.ForeColor = ThemeManager.ActiveTheme.MenuTextColor;
|
||||
|
||||
menuItem = item as ToolStripMenuItem;
|
||||
var menuItem = item as ToolStripMenuItem;
|
||||
if (menuItem != null)
|
||||
{
|
||||
ApplyMenuColors(menuItem.DropDownItems);
|
||||
@@ -365,8 +364,8 @@ namespace mRemoteNG.UI.Forms
|
||||
|
||||
if (openConnections > 0 && (Settings.Default.ConfirmCloseConnection == (int)ConfirmCloseEnum.All | (Settings.Default.ConfirmCloseConnection == (int)ConfirmCloseEnum.Multiple & openConnections > 1) || Settings.Default.ConfirmCloseConnection == (int)ConfirmCloseEnum.Exit))
|
||||
{
|
||||
var result = cTaskDialog.MessageBox(this, Application.ProductName, Language.strConfirmExitMainInstruction, "", "", "", Language.strCheckboxDoNotShowThisMessageAgain, eTaskDialogButtons.YesNo, eSysIcons.Question, eSysIcons.Question);
|
||||
if (cTaskDialog.VerificationChecked)
|
||||
var result = CTaskDialog.MessageBox(this, Application.ProductName, Language.strConfirmExitMainInstruction, "", "", "", Language.strCheckboxDoNotShowThisMessageAgain, ETaskDialogButtons.YesNo, ESysIcons.Question, ESysIcons.Question);
|
||||
if (CTaskDialog.VerificationChecked)
|
||||
{
|
||||
Settings.Default.ConfirmCloseConnection--;
|
||||
}
|
||||
|
||||
249
mRemoteV1/UI/TaskDialog/CommandButton.cs
Normal file
249
mRemoteV1/UI/TaskDialog/CommandButton.cs
Normal file
@@ -0,0 +1,249 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Drawing2D;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace mRemoteNG.UI.TaskDialog
|
||||
{
|
||||
public partial class CommandButton : Button
|
||||
{
|
||||
//--------------------------------------------------------------------------------
|
||||
#region PRIVATE MEMBERS
|
||||
//--------------------------------------------------------------------------------
|
||||
Image imgArrow1 = null;
|
||||
Image imgArrow2 = null;
|
||||
|
||||
const int LEFT_MARGIN = 10;
|
||||
const int TOP_MARGIN = 10;
|
||||
const int ARROW_WIDTH = 19;
|
||||
|
||||
enum eButtonState { Normal, MouseOver, Down }
|
||||
eButtonState m_State = eButtonState.Normal;
|
||||
|
||||
#endregion
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
#region PUBLIC PROPERTIES
|
||||
//--------------------------------------------------------------------------------
|
||||
// Override this to make sure the control is invalidated (repainted) when 'Text' is changed
|
||||
public override string Text
|
||||
{
|
||||
get { return base.Text; }
|
||||
set
|
||||
{
|
||||
base.Text = value;
|
||||
if (m_autoHeight)
|
||||
this.Height = GetBestHeight();
|
||||
this.Invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
// SmallFont is the font used for secondary lines
|
||||
Font m_smallFont;
|
||||
public Font SmallFont { get { return m_smallFont; } set { m_smallFont = value; } }
|
||||
|
||||
// AutoHeight determines whether the button automatically resizes itself to fit the Text
|
||||
bool m_autoHeight = true;
|
||||
[Browsable(true)]
|
||||
[Category("Behavior")]
|
||||
[DefaultValue(true)]
|
||||
public bool AutoHeight { get { return m_autoHeight; } set { m_autoHeight = value; if (m_autoHeight) this.Invalidate(); } }
|
||||
|
||||
#endregion
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
#region CONSTRUCTOR
|
||||
//--------------------------------------------------------------------------------
|
||||
public CommandButton()
|
||||
{
|
||||
InitializeComponent();
|
||||
base.Font = new Font("Arial", 11.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, (byte)0);
|
||||
m_smallFont = new Font("Arial", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, (byte)0);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
#region PUBLIC ROUTINES
|
||||
//--------------------------------------------------------------------------------
|
||||
public int GetBestHeight()
|
||||
{
|
||||
return (TOP_MARGIN * 2) + (int)GetSmallTextSizeF().Height + (int)GetLargeTextSizeF().Height;
|
||||
}
|
||||
#endregion
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
#region PRIVATE ROUTINES
|
||||
//--------------------------------------------------------------------------------
|
||||
string GetLargeText()
|
||||
{
|
||||
string[] lines = this.Text.Split(new char[] { '\n' });
|
||||
return lines[0];
|
||||
}
|
||||
|
||||
string GetSmallText()
|
||||
{
|
||||
if (this.Text.IndexOf('\n') < 0)
|
||||
return "";
|
||||
|
||||
string s = this.Text;
|
||||
string[] lines = s.Split(new char[] { '\n' });
|
||||
s = "";
|
||||
for (int i = 1; i < lines.Length; i++)
|
||||
s += lines[i] + "\n";
|
||||
return s.Trim(new char[] { '\n' });
|
||||
}
|
||||
|
||||
SizeF GetLargeTextSizeF()
|
||||
{
|
||||
int x = LEFT_MARGIN + ARROW_WIDTH + 5;
|
||||
SizeF mzSize = new SizeF(this.Width - x - LEFT_MARGIN, 5000.0F); // presume RIGHT_MARGIN = LEFT_MARGIN
|
||||
Graphics g = Graphics.FromHwnd(this.Handle);
|
||||
SizeF textSize = g.MeasureString(GetLargeText(), base.Font, mzSize);
|
||||
return textSize;
|
||||
}
|
||||
|
||||
SizeF GetSmallTextSizeF()
|
||||
{
|
||||
string s = GetSmallText();
|
||||
if (s == "") return new SizeF(0, 0);
|
||||
int x = LEFT_MARGIN + ARROW_WIDTH + 8; // <- indent small text slightly more
|
||||
SizeF mzSize = new SizeF(this.Width - x - LEFT_MARGIN, 5000.0F); // presume RIGHT_MARGIN = LEFT_MARGIN
|
||||
Graphics g = Graphics.FromHwnd(this.Handle);
|
||||
SizeF textSize = g.MeasureString(s, m_smallFont, mzSize);
|
||||
return textSize;
|
||||
}
|
||||
#endregion
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
#region OVERRIDEs
|
||||
//--------------------------------------------------------------------------------
|
||||
protected override void OnCreateControl()
|
||||
{
|
||||
base.OnCreateControl();
|
||||
imgArrow1 = new Bitmap(this.GetType(), "green_arrow1.png");
|
||||
imgArrow2 = new Bitmap(this.GetType(), "green_arrow2.png");
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
protected override void OnPaint(PaintEventArgs e)
|
||||
{
|
||||
e.Graphics.SmoothingMode = SmoothingMode.HighQuality;
|
||||
e.Graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit;
|
||||
|
||||
LinearGradientBrush brush;
|
||||
LinearGradientMode mode = LinearGradientMode.Vertical;
|
||||
|
||||
Rectangle newRect = new Rectangle(ClientRectangle.X, ClientRectangle.Y, ClientRectangle.Width - 1, ClientRectangle.Height - 1);
|
||||
Color text_color = SystemColors.WindowText;
|
||||
|
||||
Image img = imgArrow1;
|
||||
|
||||
if (Enabled)
|
||||
{
|
||||
switch (m_State)
|
||||
{
|
||||
case eButtonState.Normal:
|
||||
e.Graphics.FillRectangle(Brushes.White, newRect);
|
||||
if (base.Focused)
|
||||
e.Graphics.DrawRectangle(new Pen(Color.SkyBlue, 1), newRect);
|
||||
else
|
||||
e.Graphics.DrawRectangle(new Pen(Color.White, 1), newRect);
|
||||
text_color = Color.DarkBlue;
|
||||
break;
|
||||
|
||||
case eButtonState.MouseOver:
|
||||
brush = new LinearGradientBrush(newRect, Color.White, Color.WhiteSmoke, mode);
|
||||
e.Graphics.FillRectangle(brush, newRect);
|
||||
e.Graphics.DrawRectangle(new Pen(Color.Silver, 1), newRect);
|
||||
img = imgArrow2;
|
||||
text_color = Color.Blue;
|
||||
break;
|
||||
|
||||
case eButtonState.Down:
|
||||
brush = new LinearGradientBrush(newRect, Color.WhiteSmoke, Color.White, mode);
|
||||
e.Graphics.FillRectangle(brush, newRect);
|
||||
e.Graphics.DrawRectangle(new Pen(Color.DarkGray, 1), newRect);
|
||||
text_color = Color.DarkBlue;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
brush = new LinearGradientBrush(newRect, Color.WhiteSmoke, Color.Gainsboro, mode);
|
||||
e.Graphics.FillRectangle(brush, newRect);
|
||||
e.Graphics.DrawRectangle(new Pen(Color.DarkGray, 1), newRect);
|
||||
text_color = Color.DarkBlue;
|
||||
}
|
||||
|
||||
string largetext = this.GetLargeText();
|
||||
string smalltext = this.GetSmallText();
|
||||
|
||||
SizeF szL = GetLargeTextSizeF();
|
||||
//e.Graphics.DrawString(largetext, base.Font, new SolidBrush(text_color), new RectangleF(new PointF(LEFT_MARGIN + imgArrow1.Width + 5, TOP_MARGIN), szL));
|
||||
TextRenderer.DrawText(e.Graphics, largetext, base.Font, new Rectangle(LEFT_MARGIN + imgArrow1.Width + 5, TOP_MARGIN, (int)szL.Width, (int)szL.Height), text_color, TextFormatFlags.Default);
|
||||
|
||||
if (smalltext != "")
|
||||
{
|
||||
SizeF szS = GetSmallTextSizeF();
|
||||
e.Graphics.DrawString(smalltext, m_smallFont, new SolidBrush(text_color), new RectangleF(new PointF(LEFT_MARGIN + imgArrow1.Width + 8, TOP_MARGIN + (int)szL.Height), szS));
|
||||
}
|
||||
|
||||
e.Graphics.DrawImage(img, new Point(LEFT_MARGIN, TOP_MARGIN + (int)(szL.Height / 2) - (int)(img.Height / 2)));
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
protected override void OnMouseLeave(System.EventArgs e)
|
||||
{
|
||||
m_State = eButtonState.Normal;
|
||||
this.Invalidate();
|
||||
base.OnMouseLeave(e);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
protected override void OnMouseEnter(System.EventArgs e)
|
||||
{
|
||||
m_State = eButtonState.MouseOver;
|
||||
this.Invalidate();
|
||||
base.OnMouseEnter(e);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
protected override void OnMouseUp(System.Windows.Forms.MouseEventArgs e)
|
||||
{
|
||||
m_State = eButtonState.MouseOver;
|
||||
this.Invalidate();
|
||||
base.OnMouseUp(e);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
protected override void OnMouseDown(System.Windows.Forms.MouseEventArgs e)
|
||||
{
|
||||
m_State = eButtonState.Down;
|
||||
this.Invalidate();
|
||||
base.OnMouseDown(e);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
protected override void OnSizeChanged(EventArgs e)
|
||||
{
|
||||
if (m_autoHeight)
|
||||
{
|
||||
int h = GetBestHeight();
|
||||
if (this.Height != h)
|
||||
{
|
||||
this.Height = h;
|
||||
return;
|
||||
}
|
||||
}
|
||||
base.OnSizeChanged(e);
|
||||
}
|
||||
#endregion
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
}
|
||||
}
|
||||
36
mRemoteV1/UI/TaskDialog/CommandButton.designer.cs
generated
Normal file
36
mRemoteV1/UI/TaskDialog/CommandButton.designer.cs
generated
Normal file
@@ -0,0 +1,36 @@
|
||||
namespace mRemoteNG.UI.TaskDialog
|
||||
{
|
||||
partial class CommandButton
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
components = new System.ComponentModel.Container();
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
353
mRemoteV1/UI/TaskDialog/cTaskDialog.cs
Normal file
353
mRemoteV1/UI/TaskDialog/cTaskDialog.cs
Normal file
@@ -0,0 +1,353 @@
|
||||
using System;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace mRemoteNG.UI.TaskDialog
|
||||
{
|
||||
//--------------------------------------------------------------------------------
|
||||
|
||||
#region PUBLIC enums
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
public enum ESysIcons
|
||||
{
|
||||
Information,
|
||||
Question,
|
||||
Warning,
|
||||
Error
|
||||
}
|
||||
|
||||
public enum ETaskDialogButtons
|
||||
{
|
||||
YesNo,
|
||||
YesNoCancel,
|
||||
OkCancel,
|
||||
Ok,
|
||||
Close,
|
||||
Cancel,
|
||||
None
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
public static class CTaskDialog
|
||||
{
|
||||
// PUBLIC static values...
|
||||
public static bool VerificationChecked;
|
||||
public static int RadioButtonResult = -1;
|
||||
public static int CommandButtonResult = -1;
|
||||
public static int EmulatedFormWidth = 450;
|
||||
public static bool ForceEmulationMode = false;
|
||||
public static bool UseToolWindowOnXp = true;
|
||||
public static bool PlaySystemSounds = true;
|
||||
public static EventHandler OnTaskDialogShown = null;
|
||||
public static EventHandler OnTaskDialogClosed = null;
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
|
||||
#region ShowTaskDialogBox
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
public static DialogResult ShowTaskDialogBox(IWin32Window owner,
|
||||
string title,
|
||||
string mainInstruction,
|
||||
string content,
|
||||
string expandedInfo,
|
||||
string footer,
|
||||
string verificationText,
|
||||
string radioButtons,
|
||||
string commandButtons,
|
||||
ETaskDialogButtons buttons,
|
||||
ESysIcons mainIcon,
|
||||
ESysIcons footerIcon,
|
||||
int defaultIndex)
|
||||
|
||||
{
|
||||
DialogResult result;
|
||||
OnTaskDialogShown?.Invoke(null, EventArgs.Empty);
|
||||
|
||||
using (var td = new frmTaskDialog())
|
||||
{
|
||||
td.Title = title;
|
||||
td.MainInstruction = mainInstruction;
|
||||
td.Content = content;
|
||||
td.ExpandedInfo = expandedInfo;
|
||||
td.Footer = footer;
|
||||
td.RadioButtons = radioButtons;
|
||||
td.CommandButtons = commandButtons;
|
||||
td.Buttons = buttons;
|
||||
td.MainIcon = mainIcon;
|
||||
td.FooterIcon = footerIcon;
|
||||
td.VerificationText = verificationText;
|
||||
td.Width = EmulatedFormWidth;
|
||||
td.DefaultButtonIndex = defaultIndex;
|
||||
td.BuildForm();
|
||||
result = td.ShowDialog(owner);
|
||||
|
||||
RadioButtonResult = td.RadioButtonIndex;
|
||||
CommandButtonResult = td.CommandButtonClickedIndex;
|
||||
VerificationChecked = td.VerificationCheckBoxChecked;
|
||||
}
|
||||
|
||||
OnTaskDialogClosed?.Invoke(null, EventArgs.Empty);
|
||||
return result;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
// Overloaded versions...
|
||||
//--------------------------------------------------------------------------------
|
||||
public static DialogResult ShowTaskDialogBox(IWin32Window owner,
|
||||
string title,
|
||||
string mainInstruction,
|
||||
string content,
|
||||
string expandedInfo,
|
||||
string footer,
|
||||
string verificationText,
|
||||
string radioButtons,
|
||||
string commandButtons,
|
||||
ETaskDialogButtons buttons,
|
||||
ESysIcons mainIcon,
|
||||
ESysIcons footerIcon)
|
||||
{
|
||||
return ShowTaskDialogBox(owner, title, mainInstruction, content, expandedInfo, footer, verificationText,
|
||||
radioButtons, commandButtons, buttons, mainIcon, footerIcon, 0);
|
||||
}
|
||||
|
||||
public static DialogResult ShowTaskDialogBox(string title,
|
||||
string mainInstruction,
|
||||
string content,
|
||||
string expandedInfo,
|
||||
string footer,
|
||||
string verificationText,
|
||||
string radioButtons,
|
||||
string commandButtons,
|
||||
ETaskDialogButtons buttons,
|
||||
ESysIcons mainIcon,
|
||||
ESysIcons footerIcon)
|
||||
{
|
||||
return ShowTaskDialogBox(null, title, mainInstruction, content, expandedInfo, footer, verificationText,
|
||||
radioButtons, commandButtons, buttons, mainIcon, footerIcon, 0);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
|
||||
#region MessageBox
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
public static DialogResult MessageBox(IWin32Window owner,
|
||||
string title,
|
||||
string mainInstruction,
|
||||
string content,
|
||||
string expandedInfo,
|
||||
string footer,
|
||||
string verificationText,
|
||||
ETaskDialogButtons buttons,
|
||||
ESysIcons mainIcon,
|
||||
ESysIcons footerIcon)
|
||||
{
|
||||
return ShowTaskDialogBox(owner, title, mainInstruction, content, expandedInfo, footer, verificationText, "",
|
||||
"", buttons, mainIcon, footerIcon);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
// Overloaded versions...
|
||||
//--------------------------------------------------------------------------------
|
||||
public static DialogResult MessageBox(string title,
|
||||
string mainInstruction,
|
||||
string content,
|
||||
string expandedInfo,
|
||||
string footer,
|
||||
string verificationText,
|
||||
ETaskDialogButtons buttons,
|
||||
ESysIcons mainIcon,
|
||||
ESysIcons footerIcon)
|
||||
{
|
||||
return ShowTaskDialogBox(null, title, mainInstruction, content, expandedInfo, footer, verificationText, "",
|
||||
"", buttons, mainIcon, footerIcon);
|
||||
}
|
||||
|
||||
public static DialogResult MessageBox(IWin32Window owner,
|
||||
string title,
|
||||
string mainInstruction,
|
||||
string content,
|
||||
ETaskDialogButtons buttons,
|
||||
ESysIcons mainIcon)
|
||||
{
|
||||
return MessageBox(owner, title, mainInstruction, content, "", "", "", buttons, mainIcon,
|
||||
ESysIcons.Information);
|
||||
}
|
||||
|
||||
public static DialogResult MessageBox(string title,
|
||||
string mainInstruction,
|
||||
string content,
|
||||
ETaskDialogButtons buttons,
|
||||
ESysIcons mainIcon)
|
||||
{
|
||||
return MessageBox(null, title, mainInstruction, content, "", "", "", buttons, mainIcon,
|
||||
ESysIcons.Information);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
|
||||
#endregion
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
|
||||
#region ShowRadioBox
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
public static int ShowRadioBox(IWin32Window owner,
|
||||
string title,
|
||||
string mainInstruction,
|
||||
string content,
|
||||
string expandedInfo,
|
||||
string footer,
|
||||
string verificationText,
|
||||
string radioButtons,
|
||||
ESysIcons mainIcon,
|
||||
ESysIcons footerIcon,
|
||||
int defaultIndex)
|
||||
{
|
||||
var res = ShowTaskDialogBox(owner, title, mainInstruction, content, expandedInfo, footer, verificationText,
|
||||
radioButtons, "", ETaskDialogButtons.OkCancel, mainIcon, footerIcon, defaultIndex);
|
||||
if (res == DialogResult.OK)
|
||||
return RadioButtonResult;
|
||||
return -1;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
// Overloaded versions...
|
||||
//--------------------------------------------------------------------------------
|
||||
public static int ShowRadioBox(string title,
|
||||
string mainInstruction,
|
||||
string content,
|
||||
string expandedInfo,
|
||||
string footer,
|
||||
string verificationText,
|
||||
string radioButtons,
|
||||
ESysIcons mainIcon,
|
||||
ESysIcons footerIcon,
|
||||
int defaultIndex)
|
||||
{
|
||||
var res = ShowTaskDialogBox(null, title, mainInstruction, content, expandedInfo, footer, verificationText,
|
||||
radioButtons, "", ETaskDialogButtons.OkCancel, mainIcon, footerIcon, defaultIndex);
|
||||
if (res == DialogResult.OK)
|
||||
return RadioButtonResult;
|
||||
return -1;
|
||||
}
|
||||
|
||||
public static int ShowRadioBox(IWin32Window owner,
|
||||
string title,
|
||||
string mainInstruction,
|
||||
string content,
|
||||
string expandedInfo,
|
||||
string footer,
|
||||
string verificationText,
|
||||
string radioButtons,
|
||||
ESysIcons mainIcon,
|
||||
ESysIcons footerIcon)
|
||||
{
|
||||
return ShowRadioBox(owner, title, mainInstruction, content, expandedInfo, footer, verificationText,
|
||||
radioButtons, ESysIcons.Question, ESysIcons.Information, 0);
|
||||
}
|
||||
|
||||
public static int ShowRadioBox(IWin32Window owner,
|
||||
string title,
|
||||
string mainInstruction,
|
||||
string content,
|
||||
string radioButtons,
|
||||
int defaultIndex)
|
||||
{
|
||||
return ShowRadioBox(owner, title, mainInstruction, content, "", "", "", radioButtons, ESysIcons.Question,
|
||||
ESysIcons.Information, defaultIndex);
|
||||
}
|
||||
|
||||
public static int ShowRadioBox(IWin32Window owner,
|
||||
string title,
|
||||
string mainInstruction,
|
||||
string content,
|
||||
string radioButtons)
|
||||
{
|
||||
return ShowRadioBox(owner, title, mainInstruction, content, "", "", "", radioButtons, ESysIcons.Question,
|
||||
ESysIcons.Information, 0);
|
||||
}
|
||||
|
||||
public static int ShowRadioBox(string title,
|
||||
string mainInstruction,
|
||||
string content,
|
||||
string radioButtons)
|
||||
{
|
||||
return ShowRadioBox(null, title, mainInstruction, content, "", "", "", radioButtons, ESysIcons.Question,
|
||||
ESysIcons.Information, 0);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
|
||||
#region ShowCommandBox
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
public static int ShowCommandBox(IWin32Window owner,
|
||||
string title,
|
||||
string mainInstruction,
|
||||
string content,
|
||||
string expandedInfo,
|
||||
string footer,
|
||||
string verificationText,
|
||||
string commandButtons,
|
||||
bool showCancelButton,
|
||||
ESysIcons mainIcon,
|
||||
ESysIcons footerIcon)
|
||||
{
|
||||
var res = ShowTaskDialogBox(owner, title, mainInstruction, content, expandedInfo, footer, verificationText,
|
||||
"", commandButtons, showCancelButton ? ETaskDialogButtons.Cancel : ETaskDialogButtons.None,
|
||||
mainIcon, footerIcon);
|
||||
if (res == DialogResult.OK)
|
||||
return CommandButtonResult;
|
||||
return -1;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
// Overloaded versions...
|
||||
//--------------------------------------------------------------------------------
|
||||
public static int ShowCommandBox(string title,
|
||||
string mainInstruction,
|
||||
string content,
|
||||
string expandedInfo,
|
||||
string footer,
|
||||
string verificationText,
|
||||
string commandButtons,
|
||||
bool showCancelButton,
|
||||
ESysIcons mainIcon,
|
||||
ESysIcons footerIcon)
|
||||
{
|
||||
var res = ShowTaskDialogBox(null, title, mainInstruction, content, expandedInfo, footer, verificationText,
|
||||
"", commandButtons, showCancelButton ? ETaskDialogButtons.Cancel : ETaskDialogButtons.None,
|
||||
mainIcon, footerIcon);
|
||||
if (res == DialogResult.OK)
|
||||
return CommandButtonResult;
|
||||
return -1;
|
||||
}
|
||||
|
||||
public static int ShowCommandBox(IWin32Window owner, string title, string mainInstruction, string content,
|
||||
string commandButtons, bool showCancelButton)
|
||||
{
|
||||
return ShowCommandBox(owner, title, mainInstruction, content, "", "", "", commandButtons, showCancelButton,
|
||||
ESysIcons.Question, ESysIcons.Information);
|
||||
}
|
||||
|
||||
public static int ShowCommandBox(string title, string mainInstruction, string content, string commandButtons,
|
||||
bool showCancelButton)
|
||||
{
|
||||
return ShowCommandBox(null, title, mainInstruction, content, "", "", "", commandButtons, showCancelButton,
|
||||
ESysIcons.Question, ESysIcons.Information);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
440
mRemoteV1/UI/TaskDialog/frmTaskDialog.cs
Normal file
440
mRemoteV1/UI/TaskDialog/frmTaskDialog.cs
Normal file
@@ -0,0 +1,440 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace mRemoteNG.UI.TaskDialog
|
||||
{
|
||||
public partial class frmTaskDialog : Form
|
||||
{
|
||||
//--------------------------------------------------------------------------------
|
||||
#region PRIVATE members
|
||||
//--------------------------------------------------------------------------------
|
||||
ESysIcons _mainIcon = ESysIcons.Question;
|
||||
ESysIcons _footerIcon = ESysIcons.Warning;
|
||||
|
||||
string _mainInstruction = "Main Instruction Text";
|
||||
int _mainInstructionHeight = 0;
|
||||
Font _mainInstructionFont = new Font("Arial", 11.75F, FontStyle.Regular, GraphicsUnit.Point, (byte)0);
|
||||
|
||||
List<RadioButton> _radioButtonCtrls = new List<RadioButton>();
|
||||
string _radioButtons = "";
|
||||
int _initialRadioButtonIndex = 0;
|
||||
|
||||
List<Button> _cmdButtons = new List<Button>();
|
||||
string _commandButtons = "";
|
||||
int _commandButtonClicked = -1;
|
||||
|
||||
int _defaultButtonIndex = 0;
|
||||
Control _focusControl = null;
|
||||
|
||||
ETaskDialogButtons _buttons = ETaskDialogButtons.YesNoCancel;
|
||||
|
||||
bool _expanded = false;
|
||||
bool _isVista = false;
|
||||
#endregion
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
#region PROPERTIES
|
||||
//--------------------------------------------------------------------------------
|
||||
public ESysIcons MainIcon { get { return _mainIcon; } set { _mainIcon = value; } }
|
||||
public ESysIcons FooterIcon { get { return _footerIcon; } set { _footerIcon = value; } }
|
||||
|
||||
public string Title { get { return Text; } set { Text = value; } }
|
||||
public string MainInstruction { get { return _mainInstruction; } set { _mainInstruction = value; Invalidate(); } }
|
||||
public string Content { get { return lbContent.Text; } set { lbContent.Text = value; } }
|
||||
public string ExpandedInfo { get { return lbExpandedInfo.Text; } set { lbExpandedInfo.Text = value; } }
|
||||
public string Footer { get { return lbFooter.Text; } set { lbFooter.Text = value; } }
|
||||
public int DefaultButtonIndex { get { return _defaultButtonIndex; } set { _defaultButtonIndex = value; } }
|
||||
|
||||
public string RadioButtons { get { return _radioButtons; } set { _radioButtons = value; } }
|
||||
public int InitialRadioButtonIndex { get { return _initialRadioButtonIndex; } set { _initialRadioButtonIndex = value; } }
|
||||
public int RadioButtonIndex
|
||||
{
|
||||
get
|
||||
{
|
||||
foreach (RadioButton rb in _radioButtonCtrls)
|
||||
if (rb.Checked)
|
||||
return (int)rb.Tag;
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
public string CommandButtons { get { return _commandButtons; } set { _commandButtons = value; } }
|
||||
public int CommandButtonClickedIndex => _commandButtonClicked;
|
||||
|
||||
public ETaskDialogButtons Buttons { get { return _buttons; } set { _buttons = value; } }
|
||||
|
||||
public string VerificationText { get { return cbVerify.Text; } set { cbVerify.Text = value; } }
|
||||
public bool VerificationCheckBoxChecked { get { return cbVerify.Checked; } set { cbVerify.Checked = value; } }
|
||||
|
||||
public bool Expanded { get { return _expanded; } set { _expanded = value; } }
|
||||
#endregion
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
#region CONSTRUCTOR
|
||||
//--------------------------------------------------------------------------------
|
||||
public frmTaskDialog()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
// _isVista = VistaTaskDialog.IsAvailableOnThisOS;
|
||||
if (!_isVista && CTaskDialog.UseToolWindowOnXp) // <- shall we use the smaller toolbar?
|
||||
FormBorderStyle = FormBorderStyle.FixedToolWindow;
|
||||
|
||||
MainInstruction = "Main Instruction";
|
||||
Content = "";
|
||||
ExpandedInfo = "";
|
||||
Footer = "";
|
||||
VerificationText = "";
|
||||
}
|
||||
#endregion
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
#region BuildForm
|
||||
// This is the main routine that should be called before .ShowDialog()
|
||||
//--------------------------------------------------------------------------------
|
||||
bool _formBuilt = false;
|
||||
public void BuildForm()
|
||||
{
|
||||
int form_height = 0;
|
||||
|
||||
// Setup Main Instruction
|
||||
switch (_mainIcon)
|
||||
{
|
||||
case ESysIcons.Information: imgMain.Image = SystemIcons.Information.ToBitmap(); break;
|
||||
case ESysIcons.Question: imgMain.Image = SystemIcons.Question.ToBitmap(); break;
|
||||
case ESysIcons.Warning: imgMain.Image = SystemIcons.Warning.ToBitmap(); break;
|
||||
case ESysIcons.Error: imgMain.Image = SystemIcons.Error.ToBitmap(); break;
|
||||
}
|
||||
|
||||
//AdjustLabelHeight(lbMainInstruction);
|
||||
//pnlMainInstruction.Height = Math.Max(41, lbMainInstruction.Height + 16);
|
||||
if (_mainInstructionHeight == 0)
|
||||
GetMainInstructionTextSizeF();
|
||||
pnlMainInstruction.Height = Math.Max(41, _mainInstructionHeight + 16);
|
||||
|
||||
form_height += pnlMainInstruction.Height;
|
||||
|
||||
// Setup Content
|
||||
pnlContent.Visible = (Content != "");
|
||||
if (Content != "")
|
||||
{
|
||||
AdjustLabelHeight(lbContent);
|
||||
pnlContent.Height = lbContent.Height + 4;
|
||||
form_height += pnlContent.Height;
|
||||
}
|
||||
|
||||
bool show_verify_checkbox = (cbVerify.Text != "");
|
||||
cbVerify.Visible = show_verify_checkbox;
|
||||
|
||||
// Setup Expanded Info and Buttons panels
|
||||
if (ExpandedInfo == "")
|
||||
{
|
||||
pnlExpandedInfo.Visible = false;
|
||||
lbShowHideDetails.Visible = false;
|
||||
cbVerify.Top = 12;
|
||||
pnlButtons.Height = 40;
|
||||
}
|
||||
else
|
||||
{
|
||||
AdjustLabelHeight(lbExpandedInfo);
|
||||
pnlExpandedInfo.Height = lbExpandedInfo.Height + 4;
|
||||
pnlExpandedInfo.Visible = _expanded;
|
||||
lbShowHideDetails.Text = (_expanded ? " Hide details" : " Show details");
|
||||
lbShowHideDetails.ImageIndex = (_expanded ? 0 : 3);
|
||||
if (!show_verify_checkbox)
|
||||
pnlButtons.Height = 40;
|
||||
if (_expanded)
|
||||
form_height += pnlExpandedInfo.Height;
|
||||
}
|
||||
|
||||
// Setup RadioButtons
|
||||
pnlRadioButtons.Visible = (_radioButtons != "");
|
||||
if (_radioButtons != "")
|
||||
{
|
||||
string[] arr = _radioButtons.Split(new char[] { '|' });
|
||||
int pnl_height = 12;
|
||||
for (int i = 0; i < arr.Length; i++)
|
||||
{
|
||||
RadioButton rb = new RadioButton();
|
||||
rb.Parent = pnlRadioButtons;
|
||||
rb.Location = new Point(60, 4 + (i * rb.Height));
|
||||
rb.Text = arr[i];
|
||||
rb.Tag = i;
|
||||
rb.Checked = (_defaultButtonIndex == i);
|
||||
rb.Width = Width - rb.Left - 15;
|
||||
pnl_height += rb.Height;
|
||||
_radioButtonCtrls.Add(rb);
|
||||
}
|
||||
pnlRadioButtons.Height = pnl_height;
|
||||
form_height += pnlRadioButtons.Height;
|
||||
}
|
||||
|
||||
// Setup CommandButtons
|
||||
pnlCommandButtons.Visible = (_commandButtons != "");
|
||||
if (_commandButtons != "")
|
||||
{
|
||||
string[] arr = _commandButtons.Split(new char[] { '|' });
|
||||
int t = 8;
|
||||
int pnl_height = 16;
|
||||
for (int i = 0; i < arr.Length; i++)
|
||||
{
|
||||
CommandButton btn = new CommandButton();
|
||||
btn.Parent = pnlCommandButtons;
|
||||
btn.Location = new Point(50, t);
|
||||
if (_isVista) // <- tweak font if vista
|
||||
btn.Font = new Font(btn.Font, FontStyle.Regular);
|
||||
btn.Text = arr[i];
|
||||
btn.Size = new Size(Width - btn.Left - 15, btn.GetBestHeight());
|
||||
t += btn.Height;
|
||||
pnl_height += btn.Height;
|
||||
btn.Tag = i;
|
||||
btn.Click += new EventHandler(CommandButton_Click);
|
||||
if (i == _defaultButtonIndex)
|
||||
_focusControl = btn;
|
||||
}
|
||||
pnlCommandButtons.Height = pnl_height;
|
||||
form_height += pnlCommandButtons.Height;
|
||||
}
|
||||
|
||||
// Setup Buttons
|
||||
switch (_buttons)
|
||||
{
|
||||
case ETaskDialogButtons.YesNo:
|
||||
bt1.Visible = false;
|
||||
bt2.Text = "&Yes";
|
||||
bt2.DialogResult = DialogResult.Yes;
|
||||
bt3.Text = "&No";
|
||||
bt3.DialogResult = DialogResult.No;
|
||||
AcceptButton = bt2;
|
||||
CancelButton = bt3;
|
||||
break;
|
||||
case ETaskDialogButtons.YesNoCancel:
|
||||
bt1.Text = "&Yes";
|
||||
bt1.DialogResult = DialogResult.Yes;
|
||||
bt2.Text = "&No";
|
||||
bt2.DialogResult = DialogResult.No;
|
||||
bt3.Text = "&Cancel";
|
||||
bt3.DialogResult = DialogResult.Cancel;
|
||||
AcceptButton = bt1;
|
||||
CancelButton = bt3;
|
||||
break;
|
||||
case ETaskDialogButtons.OkCancel:
|
||||
bt1.Visible = false;
|
||||
bt2.Text = "&OK";
|
||||
bt2.DialogResult = DialogResult.OK;
|
||||
bt3.Text = "&Cancel";
|
||||
bt3.DialogResult = DialogResult.Cancel;
|
||||
AcceptButton = bt2;
|
||||
CancelButton = bt3;
|
||||
break;
|
||||
case ETaskDialogButtons.Ok:
|
||||
bt1.Visible = false;
|
||||
bt2.Visible = false;
|
||||
bt3.Text = "&OK";
|
||||
bt3.DialogResult = DialogResult.OK;
|
||||
AcceptButton = bt3;
|
||||
CancelButton = bt3;
|
||||
break;
|
||||
case ETaskDialogButtons.Close:
|
||||
bt1.Visible = false;
|
||||
bt2.Visible = false;
|
||||
bt3.Text = "&Close";
|
||||
bt3.DialogResult = DialogResult.Cancel;
|
||||
CancelButton = bt3;
|
||||
break;
|
||||
case ETaskDialogButtons.Cancel:
|
||||
bt1.Visible = false;
|
||||
bt2.Visible = false;
|
||||
bt3.Text = "&Cancel";
|
||||
bt3.DialogResult = DialogResult.Cancel;
|
||||
CancelButton = bt3;
|
||||
break;
|
||||
case ETaskDialogButtons.None:
|
||||
bt1.Visible = false;
|
||||
bt2.Visible = false;
|
||||
bt3.Visible = false;
|
||||
break;
|
||||
}
|
||||
|
||||
ControlBox = (Buttons == ETaskDialogButtons.Cancel ||
|
||||
Buttons == ETaskDialogButtons.Close ||
|
||||
Buttons == ETaskDialogButtons.OkCancel ||
|
||||
Buttons == ETaskDialogButtons.YesNoCancel);
|
||||
|
||||
if (!show_verify_checkbox && ExpandedInfo == "" && _buttons == ETaskDialogButtons.None)
|
||||
pnlButtons.Visible = false;
|
||||
else
|
||||
form_height += pnlButtons.Height;
|
||||
|
||||
pnlFooter.Visible = (Footer != "");
|
||||
if (Footer != "")
|
||||
{
|
||||
AdjustLabelHeight(lbFooter);
|
||||
pnlFooter.Height = Math.Max(28, lbFooter.Height + 16);
|
||||
switch (_footerIcon)
|
||||
{
|
||||
case ESysIcons.Information:
|
||||
// SystemIcons.Information.ToBitmap().GetThumbnailImage(16, 16, null, IntPtr.Zero);
|
||||
imgFooter.Image = ResizeBitmap(SystemIcons.Information.ToBitmap(), 16, 16);
|
||||
break;
|
||||
case ESysIcons.Question:
|
||||
// SystemIcons.Question.ToBitmap().GetThumbnailImage(16, 16, null, IntPtr.Zero);
|
||||
imgFooter.Image = ResizeBitmap(SystemIcons.Question.ToBitmap(), 16, 16);
|
||||
break;
|
||||
case ESysIcons.Warning:
|
||||
// SystemIcons.Warning.ToBitmap().GetThumbnailImage(16, 16, null, IntPtr.Zero);
|
||||
imgFooter.Image = ResizeBitmap(SystemIcons.Warning.ToBitmap(), 16, 16);
|
||||
break;
|
||||
case ESysIcons.Error:
|
||||
// SystemIcons.Error.ToBitmap().GetThumbnailImage(16, 16, null, IntPtr.Zero);
|
||||
imgFooter.Image = ResizeBitmap(SystemIcons.Error.ToBitmap(), 16, 16);
|
||||
break;
|
||||
}
|
||||
form_height += pnlFooter.Height;
|
||||
}
|
||||
|
||||
ClientSize = new Size(ClientSize.Width, form_height);
|
||||
|
||||
_formBuilt = true;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
Image ResizeBitmap(Image SrcImg, int NewWidth, int NewHeight)
|
||||
{
|
||||
float percent_width = (NewWidth / (float)SrcImg.Width);
|
||||
float percent_height = (NewHeight / (float)SrcImg.Height);
|
||||
|
||||
float resize_percent = (percent_height < percent_width ? percent_height : percent_width);
|
||||
|
||||
int w = (int)(SrcImg.Width * resize_percent);
|
||||
int h = (int)(SrcImg.Height * resize_percent);
|
||||
Bitmap b = new Bitmap(w, h);
|
||||
|
||||
using (Graphics g = Graphics.FromImage(b))
|
||||
{
|
||||
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
|
||||
g.DrawImage(SrcImg, 0, 0, w, h);
|
||||
}
|
||||
return b;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
// utility function for setting a Label's height
|
||||
void AdjustLabelHeight(Label lb)
|
||||
{
|
||||
string text = lb.Text;
|
||||
Font textFont = lb.Font;
|
||||
SizeF layoutSize = new SizeF(lb.ClientSize.Width, 5000.0F);
|
||||
Graphics g = Graphics.FromHwnd(lb.Handle);
|
||||
SizeF stringSize = g.MeasureString(text, textFont, layoutSize);
|
||||
lb.Height = (int)stringSize.Height + 4;
|
||||
g.Dispose();
|
||||
}
|
||||
#endregion
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
#region EVENTS
|
||||
//--------------------------------------------------------------------------------
|
||||
void CommandButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
_commandButtonClicked = (int)((CommandButton)sender).Tag;
|
||||
DialogResult = DialogResult.OK;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
protected override void OnLoad(EventArgs e)
|
||||
{
|
||||
base.OnLoad(e);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
protected override void OnShown(EventArgs e)
|
||||
{
|
||||
if (!_formBuilt)
|
||||
throw new Exception("frmTaskDialog : Please call .BuildForm() before showing the TaskDialog");
|
||||
base.OnShown(e);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
private void lbDetails_MouseEnter(object sender, EventArgs e)
|
||||
{
|
||||
lbShowHideDetails.ImageIndex = (_expanded ? 1 : 4);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
private void lbDetails_MouseLeave(object sender, EventArgs e)
|
||||
{
|
||||
lbShowHideDetails.ImageIndex = (_expanded ? 0 : 3);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
private void lbDetails_MouseUp(object sender, MouseEventArgs e)
|
||||
{
|
||||
lbShowHideDetails.ImageIndex = (_expanded ? 1 : 4);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
private void lbDetails_MouseDown(object sender, MouseEventArgs e)
|
||||
{
|
||||
lbShowHideDetails.ImageIndex =(_expanded ? 2 : 5);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
private void lbDetails_Click(object sender, EventArgs e)
|
||||
{
|
||||
_expanded = !_expanded;
|
||||
pnlExpandedInfo.Visible = _expanded;
|
||||
lbShowHideDetails.Text = (_expanded ? " Hide details" : " Show details");
|
||||
if (_expanded)
|
||||
Height += pnlExpandedInfo.Height;
|
||||
else
|
||||
Height -= pnlExpandedInfo.Height;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
const int MAIN_INSTRUCTION_LEFT_MARGIN = 46;
|
||||
const int MAIN_INSTRUCTION_RIGHT_MARGIN = 8;
|
||||
|
||||
SizeF GetMainInstructionTextSizeF()
|
||||
{
|
||||
SizeF mzSize = new SizeF(pnlMainInstruction.Width - MAIN_INSTRUCTION_LEFT_MARGIN - MAIN_INSTRUCTION_RIGHT_MARGIN, 5000.0F);
|
||||
Graphics g = Graphics.FromHwnd(Handle);
|
||||
SizeF textSize = g.MeasureString(_mainInstruction, _mainInstructionFont, mzSize);
|
||||
_mainInstructionHeight = (int)textSize.Height;
|
||||
return textSize;
|
||||
}
|
||||
|
||||
private void pnlMainInstruction_Paint(object sender, PaintEventArgs e)
|
||||
{
|
||||
SizeF szL = GetMainInstructionTextSizeF();
|
||||
e.Graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit;
|
||||
e.Graphics.DrawString(_mainInstruction, _mainInstructionFont, new SolidBrush(Color.DarkBlue), new RectangleF(new PointF(MAIN_INSTRUCTION_LEFT_MARGIN, 10), szL));
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
private void frmTaskDialog_Shown(object sender, EventArgs e)
|
||||
{
|
||||
if (CTaskDialog.PlaySystemSounds)
|
||||
{
|
||||
switch (_mainIcon)
|
||||
{
|
||||
case ESysIcons.Error: System.Media.SystemSounds.Hand.Play(); break;
|
||||
case ESysIcons.Information: System.Media.SystemSounds.Asterisk.Play(); break;
|
||||
case ESysIcons.Question: System.Media.SystemSounds.Asterisk.Play(); break;
|
||||
case ESysIcons.Warning: System.Media.SystemSounds.Exclamation.Play(); break;
|
||||
}
|
||||
}
|
||||
if (_focusControl != null)
|
||||
_focusControl.Focus();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
}
|
||||
}
|
||||
334
mRemoteV1/UI/TaskDialog/frmTaskDialog.designer.cs
generated
Normal file
334
mRemoteV1/UI/TaskDialog/frmTaskDialog.designer.cs
generated
Normal file
@@ -0,0 +1,334 @@
|
||||
namespace mRemoteNG.UI.TaskDialog
|
||||
{
|
||||
partial class frmTaskDialog
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmTaskDialog));
|
||||
this.imgMain = new System.Windows.Forms.PictureBox();
|
||||
this.lbContent = new System.Windows.Forms.Label();
|
||||
this.pnlButtons = new System.Windows.Forms.Panel();
|
||||
this.bt1 = new System.Windows.Forms.Button();
|
||||
this.bt2 = new System.Windows.Forms.Button();
|
||||
this.bt3 = new System.Windows.Forms.Button();
|
||||
this.cbVerify = new System.Windows.Forms.CheckBox();
|
||||
this.lbShowHideDetails = new System.Windows.Forms.Label();
|
||||
this.imageList1 = new System.Windows.Forms.ImageList(this.components);
|
||||
this.panel2 = new System.Windows.Forms.Panel();
|
||||
this.pnlFooter = new System.Windows.Forms.Panel();
|
||||
this.lbFooter = new System.Windows.Forms.Label();
|
||||
this.imgFooter = new System.Windows.Forms.PictureBox();
|
||||
this.panel5 = new System.Windows.Forms.Panel();
|
||||
this.panel3 = new System.Windows.Forms.Panel();
|
||||
this.pnlCommandButtons = new System.Windows.Forms.Panel();
|
||||
this.pnlMainInstruction = new System.Windows.Forms.Panel();
|
||||
this.pnlContent = new System.Windows.Forms.Panel();
|
||||
this.pnlExpandedInfo = new System.Windows.Forms.Panel();
|
||||
this.lbExpandedInfo = new System.Windows.Forms.Label();
|
||||
this.pnlRadioButtons = new System.Windows.Forms.Panel();
|
||||
((System.ComponentModel.ISupportInitialize)(this.imgMain)).BeginInit();
|
||||
this.pnlButtons.SuspendLayout();
|
||||
this.pnlFooter.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.imgFooter)).BeginInit();
|
||||
this.pnlMainInstruction.SuspendLayout();
|
||||
this.pnlContent.SuspendLayout();
|
||||
this.pnlExpandedInfo.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// imgMain
|
||||
//
|
||||
this.imgMain.Location = new System.Drawing.Point(8, 8);
|
||||
this.imgMain.Name = "imgMain";
|
||||
this.imgMain.Size = new System.Drawing.Size(32, 32);
|
||||
this.imgMain.TabIndex = 0;
|
||||
this.imgMain.TabStop = false;
|
||||
//
|
||||
// lbContent
|
||||
//
|
||||
this.lbContent.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.lbContent.Location = new System.Drawing.Point(50, 0);
|
||||
this.lbContent.Name = "lbContent";
|
||||
this.lbContent.Size = new System.Drawing.Size(389, 19);
|
||||
this.lbContent.TabIndex = 0;
|
||||
this.lbContent.Text = "lbContent";
|
||||
//
|
||||
// pnlButtons
|
||||
//
|
||||
this.pnlButtons.BackColor = System.Drawing.Color.WhiteSmoke;
|
||||
this.pnlButtons.Controls.Add(this.bt1);
|
||||
this.pnlButtons.Controls.Add(this.bt2);
|
||||
this.pnlButtons.Controls.Add(this.bt3);
|
||||
this.pnlButtons.Controls.Add(this.cbVerify);
|
||||
this.pnlButtons.Controls.Add(this.lbShowHideDetails);
|
||||
this.pnlButtons.Controls.Add(this.panel2);
|
||||
this.pnlButtons.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.pnlButtons.Location = new System.Drawing.Point(0, 301);
|
||||
this.pnlButtons.Name = "pnlButtons";
|
||||
this.pnlButtons.Size = new System.Drawing.Size(444, 58);
|
||||
this.pnlButtons.TabIndex = 0;
|
||||
//
|
||||
// bt1
|
||||
//
|
||||
this.bt1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.bt1.Location = new System.Drawing.Point(198, 8);
|
||||
this.bt1.Name = "bt1";
|
||||
this.bt1.Size = new System.Drawing.Size(75, 23);
|
||||
this.bt1.TabIndex = 0;
|
||||
this.bt1.Text = "bt1";
|
||||
this.bt1.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// bt2
|
||||
//
|
||||
this.bt2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.bt2.Location = new System.Drawing.Point(279, 8);
|
||||
this.bt2.Name = "bt2";
|
||||
this.bt2.Size = new System.Drawing.Size(75, 23);
|
||||
this.bt2.TabIndex = 1;
|
||||
this.bt2.Text = "bt2";
|
||||
this.bt2.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// bt3
|
||||
//
|
||||
this.bt3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.bt3.Location = new System.Drawing.Point(360, 8);
|
||||
this.bt3.Name = "bt3";
|
||||
this.bt3.Size = new System.Drawing.Size(75, 23);
|
||||
this.bt3.TabIndex = 2;
|
||||
this.bt3.Text = "bt3";
|
||||
this.bt3.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// cbVerify
|
||||
//
|
||||
this.cbVerify.AutoSize = true;
|
||||
this.cbVerify.Location = new System.Drawing.Point(13, 34);
|
||||
this.cbVerify.Name = "cbVerify";
|
||||
this.cbVerify.Size = new System.Drawing.Size(136, 17);
|
||||
this.cbVerify.TabIndex = 4;
|
||||
this.cbVerify.Text = "Don\'t ask me this again";
|
||||
this.cbVerify.UseVisualStyleBackColor = true;
|
||||
this.cbVerify.Visible = false;
|
||||
//
|
||||
// lbShowHideDetails
|
||||
//
|
||||
this.lbShowHideDetails.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
this.lbShowHideDetails.ImageIndex = 3;
|
||||
this.lbShowHideDetails.ImageList = this.imageList1;
|
||||
this.lbShowHideDetails.Location = new System.Drawing.Point(8, 6);
|
||||
this.lbShowHideDetails.Name = "lbShowHideDetails";
|
||||
this.lbShowHideDetails.Size = new System.Drawing.Size(94, 23);
|
||||
this.lbShowHideDetails.TabIndex = 3;
|
||||
this.lbShowHideDetails.Text = " Show details";
|
||||
this.lbShowHideDetails.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
this.lbShowHideDetails.MouseLeave += new System.EventHandler(this.lbDetails_MouseLeave);
|
||||
this.lbShowHideDetails.Click += new System.EventHandler(this.lbDetails_Click);
|
||||
this.lbShowHideDetails.MouseDown += new System.Windows.Forms.MouseEventHandler(this.lbDetails_MouseDown);
|
||||
this.lbShowHideDetails.MouseUp += new System.Windows.Forms.MouseEventHandler(this.lbDetails_MouseUp);
|
||||
this.lbShowHideDetails.MouseEnter += new System.EventHandler(this.lbDetails_MouseEnter);
|
||||
//
|
||||
// imageList1
|
||||
//
|
||||
this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList1.ImageStream")));
|
||||
this.imageList1.TransparentColor = System.Drawing.Color.Fuchsia;
|
||||
this.imageList1.Images.SetKeyName(0, "arrow_up_bw.bmp");
|
||||
this.imageList1.Images.SetKeyName(1, "arrow_up_color.bmp");
|
||||
this.imageList1.Images.SetKeyName(2, "arrow_up_color_pressed.bmp");
|
||||
this.imageList1.Images.SetKeyName(3, "arrow_down_bw.bmp");
|
||||
this.imageList1.Images.SetKeyName(4, "arrow_down_color.bmp");
|
||||
this.imageList1.Images.SetKeyName(5, "arrow_down_color_pressed.bmp");
|
||||
this.imageList1.Images.SetKeyName(6, "green_arrow.bmp");
|
||||
//
|
||||
// panel2
|
||||
//
|
||||
this.panel2.BackColor = System.Drawing.Color.Gainsboro;
|
||||
this.panel2.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.panel2.Location = new System.Drawing.Point(0, 0);
|
||||
this.panel2.Name = "panel2";
|
||||
this.panel2.Size = new System.Drawing.Size(444, 1);
|
||||
this.panel2.TabIndex = 0;
|
||||
//
|
||||
// pnlFooter
|
||||
//
|
||||
this.pnlFooter.BackColor = System.Drawing.Color.WhiteSmoke;
|
||||
this.pnlFooter.Controls.Add(this.lbFooter);
|
||||
this.pnlFooter.Controls.Add(this.imgFooter);
|
||||
this.pnlFooter.Controls.Add(this.panel5);
|
||||
this.pnlFooter.Controls.Add(this.panel3);
|
||||
this.pnlFooter.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.pnlFooter.Location = new System.Drawing.Point(0, 359);
|
||||
this.pnlFooter.Name = "pnlFooter";
|
||||
this.pnlFooter.Size = new System.Drawing.Size(444, 36);
|
||||
this.pnlFooter.TabIndex = 2;
|
||||
//
|
||||
// lbFooter
|
||||
//
|
||||
this.lbFooter.Location = new System.Drawing.Point(30, 11);
|
||||
this.lbFooter.Name = "lbFooter";
|
||||
this.lbFooter.Size = new System.Drawing.Size(409, 15);
|
||||
this.lbFooter.TabIndex = 4;
|
||||
this.lbFooter.Text = "lbFooter";
|
||||
//
|
||||
// imgFooter
|
||||
//
|
||||
this.imgFooter.Location = new System.Drawing.Point(8, 10);
|
||||
this.imgFooter.Name = "imgFooter";
|
||||
this.imgFooter.Size = new System.Drawing.Size(16, 16);
|
||||
this.imgFooter.TabIndex = 4;
|
||||
this.imgFooter.TabStop = false;
|
||||
//
|
||||
// panel5
|
||||
//
|
||||
this.panel5.BackColor = System.Drawing.Color.White;
|
||||
this.panel5.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.panel5.Location = new System.Drawing.Point(0, 1);
|
||||
this.panel5.Name = "panel5";
|
||||
this.panel5.Size = new System.Drawing.Size(444, 1);
|
||||
this.panel5.TabIndex = 2;
|
||||
//
|
||||
// panel3
|
||||
//
|
||||
this.panel3.BackColor = System.Drawing.Color.Gainsboro;
|
||||
this.panel3.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.panel3.Location = new System.Drawing.Point(0, 0);
|
||||
this.panel3.Name = "panel3";
|
||||
this.panel3.Size = new System.Drawing.Size(444, 1);
|
||||
this.panel3.TabIndex = 1;
|
||||
//
|
||||
// pnlCommandButtons
|
||||
//
|
||||
this.pnlCommandButtons.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.pnlCommandButtons.Location = new System.Drawing.Point(0, 202);
|
||||
this.pnlCommandButtons.Name = "pnlCommandButtons";
|
||||
this.pnlCommandButtons.Size = new System.Drawing.Size(444, 99);
|
||||
this.pnlCommandButtons.TabIndex = 4;
|
||||
//
|
||||
// pnlMainInstruction
|
||||
//
|
||||
this.pnlMainInstruction.Controls.Add(this.imgMain);
|
||||
this.pnlMainInstruction.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.pnlMainInstruction.Location = new System.Drawing.Point(0, 0);
|
||||
this.pnlMainInstruction.Name = "pnlMainInstruction";
|
||||
this.pnlMainInstruction.Size = new System.Drawing.Size(444, 41);
|
||||
this.pnlMainInstruction.TabIndex = 1;
|
||||
this.pnlMainInstruction.Paint += new System.Windows.Forms.PaintEventHandler(this.pnlMainInstruction_Paint);
|
||||
//
|
||||
// pnlContent
|
||||
//
|
||||
this.pnlContent.Controls.Add(this.lbContent);
|
||||
this.pnlContent.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.pnlContent.Location = new System.Drawing.Point(0, 41);
|
||||
this.pnlContent.Name = "pnlContent";
|
||||
this.pnlContent.Size = new System.Drawing.Size(444, 30);
|
||||
this.pnlContent.TabIndex = 2;
|
||||
//
|
||||
// pnlExpandedInfo
|
||||
//
|
||||
this.pnlExpandedInfo.Controls.Add(this.lbExpandedInfo);
|
||||
this.pnlExpandedInfo.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.pnlExpandedInfo.Location = new System.Drawing.Point(0, 71);
|
||||
this.pnlExpandedInfo.Name = "pnlExpandedInfo";
|
||||
this.pnlExpandedInfo.Size = new System.Drawing.Size(444, 30);
|
||||
this.pnlExpandedInfo.TabIndex = 10;
|
||||
//
|
||||
// lbExpandedInfo
|
||||
//
|
||||
this.lbExpandedInfo.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.lbExpandedInfo.Location = new System.Drawing.Point(50, 0);
|
||||
this.lbExpandedInfo.Name = "lbExpandedInfo";
|
||||
this.lbExpandedInfo.Size = new System.Drawing.Size(389, 19);
|
||||
this.lbExpandedInfo.TabIndex = 0;
|
||||
this.lbExpandedInfo.Text = "lbExpandedInfo";
|
||||
//
|
||||
// pnlRadioButtons
|
||||
//
|
||||
this.pnlRadioButtons.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.pnlRadioButtons.Location = new System.Drawing.Point(0, 101);
|
||||
this.pnlRadioButtons.Name = "pnlRadioButtons";
|
||||
this.pnlRadioButtons.Size = new System.Drawing.Size(444, 101);
|
||||
this.pnlRadioButtons.TabIndex = 3;
|
||||
//
|
||||
// frmTaskDialog
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = System.Drawing.Color.White;
|
||||
this.ClientSize = new System.Drawing.Size(444, 459);
|
||||
this.Controls.Add(this.pnlFooter);
|
||||
this.Controls.Add(this.pnlButtons);
|
||||
this.Controls.Add(this.pnlCommandButtons);
|
||||
this.Controls.Add(this.pnlRadioButtons);
|
||||
this.Controls.Add(this.pnlExpandedInfo);
|
||||
this.Controls.Add(this.pnlContent);
|
||||
this.Controls.Add(this.pnlMainInstruction);
|
||||
this.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "frmTaskDialog";
|
||||
this.ShowInTaskbar = false;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "frmTaskDialog";
|
||||
this.Shown += new System.EventHandler(this.frmTaskDialog_Shown);
|
||||
((System.ComponentModel.ISupportInitialize)(this.imgMain)).EndInit();
|
||||
this.pnlButtons.ResumeLayout(false);
|
||||
this.pnlButtons.PerformLayout();
|
||||
this.pnlFooter.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.imgFooter)).EndInit();
|
||||
this.pnlMainInstruction.ResumeLayout(false);
|
||||
this.pnlContent.ResumeLayout(false);
|
||||
this.pnlExpandedInfo.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.PictureBox imgMain;
|
||||
private System.Windows.Forms.Label lbContent;
|
||||
private System.Windows.Forms.Panel pnlButtons;
|
||||
private System.Windows.Forms.Panel panel2;
|
||||
private System.Windows.Forms.Panel pnlFooter;
|
||||
private System.Windows.Forms.Panel panel3;
|
||||
private System.Windows.Forms.Panel panel5;
|
||||
private System.Windows.Forms.PictureBox imgFooter;
|
||||
private System.Windows.Forms.Label lbFooter;
|
||||
private System.Windows.Forms.ImageList imageList1;
|
||||
private System.Windows.Forms.Label lbShowHideDetails;
|
||||
private System.Windows.Forms.Panel pnlCommandButtons;
|
||||
private System.Windows.Forms.CheckBox cbVerify;
|
||||
private System.Windows.Forms.Panel pnlMainInstruction;
|
||||
private System.Windows.Forms.Panel pnlContent;
|
||||
private System.Windows.Forms.Panel pnlExpandedInfo;
|
||||
private System.Windows.Forms.Label lbExpandedInfo;
|
||||
private System.Windows.Forms.Panel pnlRadioButtons;
|
||||
private System.Windows.Forms.Button bt1;
|
||||
private System.Windows.Forms.Button bt2;
|
||||
private System.Windows.Forms.Button bt3;
|
||||
}
|
||||
}
|
||||
344
mRemoteV1/UI/TaskDialog/frmTaskDialog.resx
Normal file
344
mRemoteV1/UI/TaskDialog/frmTaskDialog.resx
Normal file
@@ -0,0 +1,344 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="imageList1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<data name="imageList1.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
|
||||
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
|
||||
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAC
|
||||
MgAAAk1TRnQBSQFMAgEBBwEAAQkBAAEEAQABEwEAARMBAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFM
|
||||
AwABJgMAAQEBAAEgBQABIAEtKgAB1QG/AaIB/wHCAZ4BgQH/AbcBigFpAf8BsQGBAVgB/wG3AYoBaQH/
|
||||
AcIBngGBAf8B1QG/AaIB/zAAAcUBswGbAf8BpgGIAX0B/wGVAYEBWwH/AYsBfgFIAf8BlQGBAVsB/wGm
|
||||
AYgBfQH/AcUBswGbAf/AAAHRAbcBlQH/AbQBhAFgAf8BzgGuAYMB/wHgAc0BsgH/AeoB3wHOAf8B7wHp
|
||||
AdwB/wHpAd8BzQH/Ad4BzAGxAf8BzAGtAYIB/wG0AYQBYAH/AdEBtwGVAf8gAAG9AakBjQH/AYwBfwFJ
|
||||
Af8BnAGBAVkB/wGzAY4BagH/AcQBngF2Af8BzQGoAX0B/wHJAaIBeQH/AbsBlQFvAf8BpgGBAV4B/wGO
|
||||
AYEBSgH/Ab0BqQGNAf+0AAHLAa4BhgH/AcgBpAGBAf8B7wHlAdUB/wH0Ae0B4gH/AfAB4gHIAf8B7AHV
|
||||
Aa0B/wHpAc8BnwH/AeoB1AGsAf8B7QHfAcUB/wHvAekB3QH/AeoB4AHQAf8BxQGiAYEB/wHLAa4BhgH/
|
||||
GAABtQGdAYEB/wGTAYEBUgH/Ab0BmQF1Af8B0QGrAYEB/wHTAa4BgQH/AdMBrgGBAf8B0wGtAYEB/wHS
|
||||
Aa0BgQH/AdIBrQGBAf8B0gGtAYEB/wHLAaYBfwH/AaEBgQFbAf8BtQGdAYEB/6wAAcsBrgGGAf8B1AG3
|
||||
AY4B/wH5AfIB5gH/AfQB5QHKAf8B7wHVAaUB/wHvAdUBpQH/Ae4B1AGlAf8B7QHTAaQB/wHrAdIBowH/
|
||||
AekB0AGhAf8B6QHQAaEB/wHtAd8BxAH/AfAB6QHeAf8BzwGyAYoB/wHLAa4BhgH/EAABtQGdAYEB/wGW
|
||||
AYEBVwH/AcYBpAGAAf8B2AG0AYEB/wHaAbYBgQH/AdoBtgGBAf8B2QG1AYEB/wHYAbQBgQH/AdYBswGB
|
||||
Af8B1QGxAYEB/wHVAbEBgQH/AdUBsQGBAf8B1QGxAYEB/wGtAYcBZwH/AbUBnQGBAf+kAAHQAbgBlwH/
|
||||
AcsBpwGBAf8B+wH0AegB/wH1AeABuQH/AfMB2gGqAf8B8wHaAaoB/wHyAdkBqgH/AfIB2QGqAf8B8QHY
|
||||
AakB/wHwAdcBqAH/Ae4B1QGnAf8B6wHTAaUB/wHqAdIBpAH/AesB1wGxAf8B8AHpAd4B/wHGAaMBgQH/
|
||||
AdABuAGXAf8IAAG+AakBjwH/AY4BgQFRAf8BvwGeAX8B/wHbAbgBgQH/AeABvAGBAf8B4AG8AYEB/wHg
|
||||
AbsBgQH/AeABuwGBAf8B3wG7AYEB/wHeAboBgQH/AdwBuAGBAf8B2QG2AYEB/wHYAbUBgQH/AdgBtQGB
|
||||
Af8B2AG1AYEB/wGkAYEBYAH/Ab4BqQGPAf8kAAGBAeMBWAH/AYEB5AFaAf8B8AH8AewB/3AAAbUBhQFg
|
||||
Af8B9gHsAdsB/wH7AewB0QH/AfgB3gGwAf8B+AHeAbAB/wH3Ad0BsAH/AfcB3QGwAf8B+wHrAdAB/wH8
|
||||
AfQB5gH/AfkB6gHPAf8B9AHbAa4B/wHxAdgBqwH/Ae0B1QGpAf8B7AHUAagB/wHuAeABxgH/AeoB4AHQ
|
||||
Af8BtAGEAWAB/wgAAYsBfwFJAf8BqgGMAXQB/wHVAbQBgQH/AeUBwgGCAf8B5gHDAYIB/wHlAcIBggH/
|
||||
AeUBwgGCAf8B8AHbAbUB/wH3AewB2AH/Ae4B2gG0Af8B4gHAAYEB/wHgAb4BgQH/AdwBuwGBAf8B2wG6
|
||||
AYEB/wHbAboBgQH/AdMBsQGBAf8BjgGBAUsB/yAAAbIB8QGcAf8BVQHbARwB/wFVAdsBHAH/AXIB4AFB
|
||||
Af8B8gH9Ae4B/2gAAdYBwQGmAf8B0QGxAYUB/wH+AfgB7gH/AfoB4wG5Af8B+gHiAbgB/wH6AeIBtQH/
|
||||
AfoB4QG0Af8B/AHtAdMB/wH9AfYB6AH/A08B/wH9AfUB5wH/AfsB7AHSAf8B9gHdAbEB/wHyAdoBrgH/
|
||||
Ae4B1gGsAf8B7QHWAasB/wHxAeoB4AH/AcsBqwGBAf8B1gHBAaYB/wHGAbUBnwH/AZIBgQFcAf8BxAGo
|
||||
AYEB/wHjAcUBjAH/AesBzAGQAf8B6gHKAYwB/wHqAckBigH/AfIB3wG6Af8B+AHuAdsB/wNPAf8B+AHu
|
||||
AdoB/wHxAd4BuQH/AeYBxgGIAf8B4wHDAYYB/wHfAcABhAH/Ad4BvwGDAf8B3gG/AYMB/wGqAYUBaQH/
|
||||
AcYBtQGfAf8gAAFnAd4BMwH/AVUB2wEcAf8BVQHbARwB/wF2AeEBRgH/Ae8B/AHrAf9kAAHCAZ4BgQH/
|
||||
AekB2AG/Af8B/QHyAd8B/wH8AecBwQH/AfsB5gHAAf8B+wHlAbwB/wH9Ae4B1QH/Af4B9gHpAf8DTwH/
|
||||
A08B/wNPAf8B/QH2AekB/wH7Ae0B1AH/AfYB3wG0Af8B8gHbAbIB/wHuAdcBrwH/AfAB4wHMAf8B4AHP
|
||||
AbYB/wHBAZwBgQH/AaYBiAF9Af8BoQGGAXkB/wHTAboBjQH/AewB0QGeAf8B7wHSAZ4B/wHuAdABmAH/
|
||||
AfQB4gG/Af8B+QHwAd0B/wNPAf8DTwH/A08B/wH5Ae8B3QH/AfMB4AG+Af8B6AHJAY8B/wHlAcYBjQH/
|
||||
AeEBwwGLAf8B4QHDAYsB/wHIAagBgQH/AaUBhwF7Af8kAAFhAdcBMwH/AU8B0wEcAf8BTwHTARwB/wFx
|
||||
AdoBRgH/AfMB/AHwAf9gAAG3AYoBaQH/AfcB7gHhAf8B/QHuAdIB/wH9AeoByAH/AfwB6QHFAf8B/QHx
|
||||
AdkB/wH+AfcB6gH/A08B/wNPAf8DTwH/A08B/wNPAf8B/gH3AeoB/wH7Ae0B1QH/AfUB3wG2Af8B8QHb
|
||||
AbMB/wHvAd0BvAH/AesB4QHSAf8BtwGKAWkB/wGVAYEBWwH/Aa0BlwGBAf8B2QHDAZsB/wHxAdkBqwH/
|
||||
AfEB2AGnAf8B9gHmAccB/wH6AfEB4AH/A08B/wNPAf8DTwH/A08B/wNPAf8B+gHwAd8B/wHzAeIBwAH/
|
||||
AegBywGUAf8B5QHIAZEB/wHjAcYBkAH/AdoBvAGGAf8BlQGBAVsB/xAAAYEB2QFsAf8BgQHdAX0B/wGB
|
||||
Ad4BgQH/AYwB4QGBAf8BmAHkAYMB/wFlAdABQQH/AUcByAEdAf8BRwHIAR0B/wFHAcgBHQH/AWwB0gFK
|
||||
Af8B7gH7AesB/1wAAbMBggFdAf8B/AH4AfAB/wH+Ae0B0gH/Af0B7AHOAf8B/gHzAeAB/wH+AfgB7QH/
|
||||
A08B/wNPAf8DTwH/Af4B9wHrAf8DTwH/A08B/wNPAf8B/QH2AeoB/wH7Ae0B1gH/AfQB3gG3Af8B8QHc
|
||||
AbgB/wHvAekB3wH/AbMBggFdAf8BjgGBAU0B/wG3AaoBlAH/Ad8B0gG6Af8B9QHoAc8B/wH7AfIB4gH/
|
||||
Af0B+AHvAf8DTwH/A08B/wNPAf8B/AH3Ae0B/wNPAf8DTwH/A08B/wH7AfYB7AH/AfYB7AHZAf8B7QHd
|
||||
Ab0B/wHqAdoBuwH/AeQB0wGzAf8BjgGBAU0B/wwAAT4BuwEdAf8BPgG7AR0B/wE+AbsBHQH/AT4BuwEd
|
||||
Af8BPgG7AR0B/wE+AbsBHQH/AT4BuwEdAf8BPgG7AR0B/wE+AbsBHQH/AT4BuwEdAf8BPgG7AR0B/wFT
|
||||
AcEBNQH/A/sB/1gAAbcBigFpAf8B9wHwAeYB/wH9AfYB6QH/Af0B9AHkAf8B/gH7AfYB/wNPAf8DTwH/
|
||||
A08B/wH+AfoB8wH/Af0B9gHoAf8B/gH6AfMB/wNPAf8DTwH/A08B/wH9AfkB8gH/AfQB6AHSAf8B8QHo
|
||||
AdUB/wHsAeQB2QH/AbcBigFpAf8BlQGBAVsB/wG1AacBkQH/AdoBzwG7Af8B8wHoAdMB/wH9AfkB8gH/
|
||||
A08B/wNPAf8DTwH/Af0B+AHvAf8B+wHxAeAB/wH9AfgB7wH/A08B/wNPAf8DTwH/AfsB9gHtAf8B7wHh
|
||||
AcQB/wHsAd4BwQH/AdsBygGrAf8BlQGBAVsB/wwAATIBqwEeAf8BMgGrAR4B/wEyAasBHgH/ATIBqwEe
|
||||
Af8BMgGrAR4B/wEyAasBHgH/ATIBqwEeAf8BMgGrAR4B/wEyAasBHgH/ATIBqwEeAf8BMgGrAR4B/wFH
|
||||
AbMBNQH/A/sB/1gAAcIBngGBAf8B6QHaAcYB/wH+AfoB8wH/Af0B9gHoAf8B/gH8AfcB/wNPAf8DTwH/
|
||||
Af4B+wH0Af8B/QH3AeoB/wH8AfEB3AH/Af0B9wHqAf8B/gH7AfQB/wNPAf8DTwH/Af0B+QHzAf8B9QHq
|
||||
AdYB/wHzAe0B4wH/AeEB0QG8Af8BwgGeAYEB/wGmAYgBfQH/AawBmQGBAf8B0gHIAbcB/wHuAeQB0wH/
|
||||
Af0B+gH0Af8DTwH/A08B/wH9AfkB8AH/AfsB8gHiAf8B+AHqAc8B/wH7AfIB4gH/Af0B+AHwAf8DTwH/
|
||||
A08B/wH7AfcB7wH/AfEB5AHJAf8B7QHgAcYB/wHFAbEBjwH/AaYBiAF9Af8QAAFuAbcBagH/AXwBvQF4
|
||||
Af8BgQG/AX0B/wGBAcYBgQH/AYUBzQGCAf8BSQGoAUQB/wElAZkBHwH/ASUBmQEfAf8BJQGZAR8B/wFN
|
||||
AakBSAH/AeQB9AHjAf9cAAHWAcEBpgH/AdEBswGKAf8B/gH9AfoB/wH9AfcB6wH/Af4B+gHyAf8B/gH8
|
||||
AfgB/wH+AfwB9wH/Af0B+AHuAf8B/AHzAeAB/wH8AfIB4AH/AfwB8gHgAf8B/QH3AewB/wH+AfsB9QH/
|
||||
Af0B+gH0Af8B+wH1AeoB/wH1AesB2QH/AfYB9AHvAf8BzQGvAYUB/wHWAcEBpgH/AcYBtQGfAf8BnQGB
|
||||
AXcB/wHIAb8BsAH/AeQB3AHNAf8B+wH1AewB/wH+AfsB9QH/Af0B+gH0Af8B+wH1AegB/wH5Ae4B1wH/
|
||||
AfkB7QHWAf8B+QHtAdYB/wH7AfQB5gH/Af0B+QHyAf8B/QH5AfEB/wH5AfIB5AH/AfIB5gHPAf8B6wHg
|
||||
AckB/wGmAYgBewH/AcYBtQGfAf8kAAEyAZcBNQH/ARwBjQEfAf8BHAGNAR8B/wFFAZ8BSAH/AewB9wHs
|
||||
Af9kAAG1AYUBYQH/AfYB8AHnAf8B/gH7AfUB/wH9AfgB7QH/Af0B9wHsAf8B/QH2AekB/wH9AfUB5wH/
|
||||
AfwB9QHmAf8B/AH0AeUB/wH8AfQB5AH/AfwB9AHkAf8B/AHzAeMB/wH7AfIB4QH/AfgB7wHeAf8B9wHy
|
||||
AekB/wHwAekB3gH/AbQBhQFgAf8IAAGNAYEBTQH/AboBrgGdAf8B1QHNAcAB/wHsAeUB2AH/AfkB8gHk
|
||||
Af8B+wHzAeMB/wH7AfIB4QH/AfsB8QHfAf8B+gHxAd0B/wH6AfAB3QH/AfoB8AHcAf8B+gHvAdsB/wH5
|
||||
Ae4B2QH/AfYB6wHXAf8B8AHlAdEB/wHSAcMBqgH/AY0BgQFNAf8kAAEnAZIBKgH/ARwBjQEfAf8BHAGN
|
||||
AR8B/wFAAZ0BQwH/AeoB9gHqAf9oAAHRAbkBmQH/AcsBqgGBAf8B/gH9AfsB/wH+AfoB8wH/Af4B+AHv
|
||||
Af8B/gH4Ae4B/wH+AfcB7AH/Af0B9gHrAf8B/QH2AeoB/wH9AfYB6QH/Af0B9QHoAf8B/QH1AeYB/wH8
|
||||
AfMB5AH/AfoB8wHnAf8B+gH4AfQB/wHIAaYBgQH/AdEBuQGZAf8IAAG/AasBkQH/AZwBgQFyAf8BxgG/
|
||||
AbIB/wHZAdMBxwH/Ae0B5wHbAf8B+AHyAeYB/wH7AfUB6AH/AfwB9QHnAf8B/AH0AeYB/wH8AfQB5AH/
|
||||
AfsB8wHjAf8B+wHzAeEB/wH5AfAB3gH/AfIB6QHWAf8B3QHUAcAB/wGaAYEBbAH/Ab8BqwGRAf8gAAGd
|
||||
AdMBngH/ARwBjQEfAf8BHAGNAR8B/wE9AZwBQAH/AfEB+QHxAf9wAAHLAa4BhgH/AdUBugGWAf8B/gH9
|
||||
AfwB/wH+AfwB+AH/Af4B+QHxAf8B/gH4AfAB/wH+AfgB7wH/Af0B9wHuAf8B/QH3AewB/wH9AfYB6wH/
|
||||
Af0B9gHqAf8B/gH6AfMB/wH8AfoB9wH/AdUBugGWAf8BywGuAYYB/xAAAbUBnQGBAf8BowGKAYEB/wHG
|
||||
AcABswH/AdUBzwHDAf8B5QHgAdQB/wHwAeoB3wH/AfYB8AHlAf8B+gH0AecB/wH7AfQB5wH/AfkB8gHk
|
||||
Af8B9AHrAdwB/wHpAeABzwH/AdMBygG4Af8BnwGEAXsB/wG1AZ0BgQH/KAABVAGmAVYB/wFXAacBWQH/
|
||||
AfQB+gH0Af94AAHLAa4BhgH/AckBpwGBAf8B9wHyAeoB/wL+AfwB/wH+AfwB+AH/Af4B+gHzAf8B/gH4
|
||||
AfAB/wH9AfoB8gH/Af4B+wH2Af8B/gH9AfoB/wH3AfEB6AH/AckBpwGBAf8BywGuAYYB/xgAAbUBnQGB
|
||||
Af8BmwGBAXAB/wG8AbIBogH/AckBwgG3Af8B0wHNAcIB/wHcAdYBywH/AeIB2wHQAf8B4wHcAdAB/wHd
|
||||
AdUByAH/AdAByAG5Af8BtwGqAZUB/wGTAYEBZAH/AbUBnQGBAf+0AAHQAbgBlwH/AbUBhQFhAf8B0gG1
|
||||
AY0B/wHoAdoBxgH/AfUB7wHlAf8C/gH7Af8B9QHuAeUB/wHoAdkBxQH/AdIBtAGNAf8BtQGFAWEB/wHQ
|
||||
AbgBlwH/IAABvgGpAY8B/wGNAYEBTgH/AZ4BgwF7Af8BrQGcAYQB/wG2AaoBmAH/AbsBswGlAf8BswGm
|
||||
AZIB/wGmAZQBgQH/AZYBgQFwAf8BjAGAAUwB/wG+AakBjwH/wAAB1QHAAaMB/wHDAZ8BgQH/AbgBjAFt
|
||||
Af8BsQGBAVgB/wG4AYwBbQH/AcMBnwGBAf8B1QHAAaMB/zAAAcUBtAGdAf8BqAGKAYAB/wGXAYEBXwH/
|
||||
AYsBfgFIAf8BlwGBAV8B/wGoAYoBgAH/AcUBtAGdAf/IAAPFAf8DpwH/A5YB/wOMAf8DlgH/A6cB/wPF
|
||||
Af8wAAHVAb8BogH/AcIBngGBAf8BtwGKAWkB/wGxAYEBWAH/AbcBigFpAf8BwgGeAYEB/wHVAb8BogH/
|
||||
MAABxQGzAZsB/wGmAYgBfQH/AZUBgQFbAf8BiwF+AUgB/wGVAYEBWwH/AaYBiAF9Af8BxQGzAZsB/zAA
|
||||
A8UB/wOnAf8DlgH/A4wB/wOWAf8DpwH/A8UB/ygAA74B/wOQAf8DtQH/A9AB/wPfAf8D5wH/A94B/wPO
|
||||
Af8DtAH/A5AB/wO+Af8gAAHRAbcBlQH/AbQBhAFgAf8BzgGuAYMB/wHgAc0BsgH/AeoB3wHOAf8B7wHp
|
||||
AdwB/wHpAd8BzQH/Ad4BzAGxAf8BzAGtAYIB/wG0AYQBYAH/AdEBtwGVAf8gAAG9AakBjQH/AYwBfwFJ
|
||||
Af8BnAGBAVkB/wGzAY4BagH/AcQBngF2Af8BzQGoAX0B/wHJAaIBeQH/AbsBlQFvAf8BpgGBAV4B/wGO
|
||||
AYEBSgH/Ab0BqQGNAf8gAAO+Af8DkAH/A7UB/wPQAf8D3wH/A+cB/wPeAf8DzgH/A7QB/wOQAf8DvgH/
|
||||
HAADtQH/A6wB/wPkAf8D6wH/A90B/wPPAf8DxgH/A80B/wPaAf8D5wH/A+AB/wOqAf8DtQH/GAABywGu
|
||||
AYYB/wHIAaQBgQH/Ae8B5QHVAf8B9AHtAeIB/wHwAeIByAH/AewB1QGtAf8B6QHPAZ8B/wHqAdQBrAH/
|
||||
Ae0B3wHFAf8B7wHpAd0B/wHqAeAB0AH/AcUBogGBAf8BywGuAYYB/xgAAbUBnQGBAf8BkwGBAVIB/wG9
|
||||
AZkBdQH/AdEBqwGBAf8B0wGuAYEB/wHTAa4BgQH/AdMBrQGBAf8B0gGtAYEB/wHSAa0BgQH/AdIBrQGB
|
||||
Af8BywGmAX8B/wGhAYEBWwH/AbUBnQGBAf8YAAO1Af8DrAH/A+QB/wPrAf8D3QH/A88B/wPGAf8DzQH/
|
||||
A9oB/wPnAf8D4AH/A6oB/wO1Af8UAAO1Af8DvAH/A+8B/wPgAf8DywH/A8sB/wPKAf8DygH/A8gB/wPG
|
||||
Af8DxgH/A9kB/wPnAf8DuAH/A7UB/xAAAcsBrgGGAf8B1AG3AY4B/wH5AfIB5gH/AfQB5QHKAf8B7wHV
|
||||
AaUB/wHvAdUBpQH/Ae4B1AGlAf8B7QHTAaQB/wHrAdIBowH/AekB0AGhAf8B6QHQAaEB/wHtAd8BxAH/
|
||||
AfAB6QHeAf8BzwGyAYoB/wHLAa4BhgH/EAABtQGdAYEB/wGWAYEBVwH/AcYBpAGAAf8B2AG0AYEB/wHa
|
||||
AbYBgQH/AdoBtgGBAf8B2QG1AYEB/wHYAbQBgQH/AdYBswGBAf8B1QGxAYEB/wHVAbEBgQH/AdUBsQGB
|
||||
Af8B1QGxAYEB/wGtAYcBZwH/AbUBnQGBAf8QAAO1Af8DvAH/A+8B/wPgAf8DywH/A8sB/wPKAf8DygH/
|
||||
A8gB/wPGAf8DxgH/A9kB/wPnAf8DuAH/A7UB/wwAA74B/wOvAf8D8gH/A9gB/wPQAf8D0AH/A88B/wPP
|
||||
Af8DzgH/A80B/wPMAf8DyQH/A8gB/wPQAf8D6AH/A6sB/wO+Af8IAAHQAbgBlwH/AcsBpwGBAf8B+wH0
|
||||
AegB/wH1AeABuQH/AfMB2gGqAf8B8wHaAaoB/wHyAdkBqgH/AfIB2QGqAf8B8QHYAakB/wHwAdcBqAH/
|
||||
Ae4B1QGnAf8B6wHTAaUB/wHqAdIBpAH/AesB1wGxAf8B8AHpAd4B/wHGAaMBgQH/AdABuAGXAf8IAAG+
|
||||
AakBjwH/AY4BgQFRAf8BvwGeAX8B/wHbAbgBgQH/AeABvAGBAf8B4AG8AYEB/wHgAbsBgQH/AeABuwGB
|
||||
Af8B3wG7AYEB/wHeAboBgQH/AdwBuAGBAf8B2QG2AYEB/wHYAbUBgQH/AdgBtQGBAf8B2AG1AYEB/wGk
|
||||
AYEBYAH/Ab4BqQGPAf8IAAO+Af8DrwH/A/IB/wPYAf8D0AH/A9AB/wPPAf8DzwH/A84B/wPNAf8DzAH/
|
||||
A8kB/wPIAf8D0AH/A+gB/wOrAf8DvgH/CAADkQH/A+oB/wPmAf8D1AH/A9QB/wPTAf8D0wH/A9MB/wPS
|
||||
Af8D0gH/A9EB/wPOAf8DywH/A8oB/wPaAf8D3wH/A5AB/wgAAbUBhQFgAf8B9gHsAdsB/wH7AewB0QH/
|
||||
AfgB3gGwAf8B+AHeAbAB/wH3Ad0BsAH/AfcB3QGwAf8B9wHdAbAB/wH2AdwBrwH/AfUB3AGuAf8B9AHb
|
||||
Aa4B/wHxAdgBqwH/Ae0B1QGpAf8B7AHUAagB/wHuAeABxgH/AeoB4AHQAf8BtAGEAWAB/wgAAYsBfwFJ
|
||||
Af8BqgGMAXQB/wHVAbQBgQH/AeUBwgGCAf8B5gHDAYIB/wHlAcIBggH/AeUBwgGCAf8B5QHCAYIB/wHk
|
||||
AcIBgQH/AeMBwQGBAf8B4gHAAYEB/wHgAb4BgQH/AdwBuwGBAf8B2wG6AYEB/wHbAboBgQH/AdMBsQGB
|
||||
Af8BjgGBAUsB/wgAA5EB/wPqAf8D5gH/A9QB/wPUAf8D0wH/A9MB/wPlAf8D8QH/A+QB/wPRAf8DzgH/
|
||||
A8sB/wPKAf8D2gH/A98B/wOQAf8EAAPHAf8DuAH/A/YB/wPaAf8D6AH/A/MB/wPzAf8D5wH/A9cB/wPW
|
||||
Af8D1gH/A+YB/wPyAf8D8AH/A+IB/wPMAf8D6QH/A7IB/wPHAf8B1gHBAaYB/wHRAbEBhQH/Af4B+AHu
|
||||
Af8B+gHjAbkB/wH8Ae4B1QH/Af0B9gHoAf8B/QH2AegB/wH8Ae0B0wH/AfoB4QG0Af8B+QHgAbMB/wH5
|
||||
AeABswH/AfsB7AHSAf8B/AH0AecB/wH7AfQB5gH/AfUB5gHOAf8B7QHWAasB/wHxAeoB4AH/AcsBqwGB
|
||||
Af8B1gHBAaYB/wHGAbUBnwH/AZIBgQFcAf8BxAGoAYEB/wHjAcUBjAH/AfMB4QG9Af8B+AHvAdsB/wH4
|
||||
Ae4B2wH/AfIB3wG6Af8B6gHJAYoB/wHpAcgBiQH/AekByAGJAf8B8QHeAbkB/wH3Ae0B2gH/AfYB7AHa
|
||||
Af8B7AHZAbYB/wHeAb8BgwH/Ad4BvwGDAf8BqgGFAWkB/wHGAbUBnwH/A8cB/wO4Af8D9gH/A9oB/wPZ
|
||||
Af8D2AH/A9cB/wPnAf8D8wH/A08B/wPyAf8D5gH/A9QB/wPQAf8DzQH/A8wB/wPpAf8DsgH/A8cB/wOn
|
||||
Af8D2gH/A+4B/wPeAf8D9AH/A08B/wNPAf8D8wH/A+gB/wPZAf8D6AH/A/MB/wNPAf8DTwH/A/EB/wPO
|
||||
Af8D3gH/A9EB/wOmAf8BwgGeAYEB/wHpAdgBvwH/Af0B8gHfAf8B/AHnAcEB/wH+AfcB6wH/A08B/wNP
|
||||
Af8B/gH2AekB/wH9Ae4B1QH/AfsB4wG4Af8B/QHuAdUB/wH9AfYB6QH/A08B/wNPAf8B+wH0AecB/wHu
|
||||
AdcBrwH/AfAB4wHMAf8B4AHPAbYB/wHBAZwBgQH/AaYBiAF9Af8BoQGGAXkB/wHTAboBjQH/AewB0QGe
|
||||
Af8B+gHxAeEB/wNPAf8DTwH/AfkB8AHdAf8B9AHiAb4B/wHtAc0BkgH/AfQB4gG+Af8B+QHvAd0B/wNP
|
||||
Af8DTwH/AfcB7QHcAf8B4QHDAYsB/wHhAcMBiwH/AcgBqAGBAf8BpQGHAXsB/wOnAf8D2gH/A+4B/wPe
|
||||
Af8D3QH/A9sB/wPoAf8D8wH/A08B/wNPAf8DTwH/A/MB/wPnAf8D1QH/A9EB/wPOAf8D3gH/A9EB/wOm
|
||||
Af8DlgH/A+4B/wPnAf8D4gH/A/UB/wNPAf8DTwH/A08B/wP0Af8D6gH/A/QB/wNPAf8DTwH/A08B/wPy
|
||||
Af8D0gH/A9YB/wPgAf8DlgH/AbcBigFpAf8B9wHuAeEB/wH9Ae4B0gH/Af0B6gHIAf8B/gH4Ae0B/wNP
|
||||
Af8DTwH/A08B/wH+AfcB6gH/Af0B8AHXAf8B/gH3AeoB/wNPAf8DTwH/A08B/wH8AfUB6AH/AfEB2wGz
|
||||
Af8B7wHdAbwB/wHrAeEB0gH/AbcBigFpAf8BlQGBAVsB/wGtAZcBgQH/AdkBwwGbAf8B8QHZAasB/wH7
|
||||
AfMB5AH/A08B/wNPAf8DTwH/AfoB8QHfAf8B9QHkAcIB/wH6AfEB3wH/A08B/wNPAf8DTwH/AfgB7wHe
|
||||
Af8B5QHIAZEB/wHjAcYBkAH/AdoBvAGGAf8BlQGBAVsB/wOWAf8D7gH/A+cB/wPiAf8D4AH/A+wB/wP0
|
||||
Af8DTwH/A08B/wNPAf8DTwH/A08B/wP0Af8D6AH/A9UB/wPSAf8D1gH/A+AB/wOWAf8DjwH/A/YB/wPn
|
||||
Af8D5QH/A+4B/wP1Af8DTwH/A08B/wNPAf8D9AH/A08B/wNPAf8DTwH/A/QB/wPoAf8D1QH/A9QB/wPn
|
||||
Af8DjwH/AbMBggFdAf8B/AH4AfAB/wH+Ae0B0gH/Af0B7AHOAf8B/gHzAeAB/wH+AfgB7QH/A08B/wNP
|
||||
Af8DTwH/Af4B9wHrAf8DTwH/A08B/wNPAf8B/QH2AeoB/wH7Ae0B1gH/AfQB3gG3Af8B8QHcAbgB/wHv
|
||||
AekB3wH/AbMBggFdAf8BjgGBAU0B/wG3AaoBlAH/Ad8B0gG6Af8B9QHoAc8B/wH7AfIB4gH/Af0B+AHv
|
||||
Af8DTwH/A08B/wNPAf8B/AH3Ae0B/wNPAf8DTwH/A08B/wH7AfYB7AH/AfYB7AHZAf8B7QHdAb0B/wHq
|
||||
AdoBuwH/AeQB0wGzAf8BjgGBAU0B/wOPAf8D9gH/A+cB/wPlAf8D7gH/A/UB/wNPAf8DTwH/A08B/wP0
|
||||
Af8DTwH/A08B/wNPAf8D9AH/A+gB/wPVAf8D1AH/A+cB/wOPAf8DlgH/A/EB/wPzAf8D8QH/A+8B/wP1
|
||||
Af8D+QH/A08B/wNPAf8DTwH/A08B/wNPAf8D+QH/A/IB/wPmAf8D5AH/A+QB/wPlAf8DlgH/AbcBigFp
|
||||
Af8B9wHwAeYB/wH9AfYB6QH/Af0B9AHkAf8B/QHzAeEB/wH9AfcB7AH/Af4B+wH0Af8DTwH/A08B/wNP
|
||||
Af8DTwH/A08B/wH+AfoB8wH/AfwB9QHnAf8B9wHrAdUB/wH0AegB0gH/AfEB6AHVAf8B7AHkAdkB/wG3
|
||||
AYoBaQH/AZUBgQFbAf8BtQGnAZEB/wHaAc8BuwH/AfMB6AHTAf8B+QHtAdYB/wH7AfMB5AH/Af0B+AHv
|
||||
Af8DTwH/A08B/wNPAf8DTwH/A08B/wH9AfgB7wH/AfkB8AHeAf8B8gHjAcYB/wHvAeEBxAH/AewB3gHB
|
||||
Af8B2wHKAasB/wGVAYEBWwH/A5YB/wPxAf8D8wH/A/EB/wP6Af8DTwH/A08B/wNPAf8D+QH/A/MB/wP5
|
||||
Af8DTwH/A08B/wNPAf8D9wH/A+QB/wPkAf8D5QH/A5YB/wOnAf8D3gH/A/kB/wPzAf8D8gH/A/AB/wP1
|
||||
Af8D+QH/A08B/wNPAf8DTwH/A/kB/wP0Af8D6wH/A+gB/wPmAf8D6wH/A9QB/wOnAf8BwgGeAYEB/wHp
|
||||
AdoBxgH/Af4B+gHzAf8B/QH2AegB/wH9AfUB5gH/Af0B8wHiAf8B/QH3AewB/wH+AfsB9AH/A08B/wNP
|
||||
Af8DTwH/Af4B+wH0Af8B/QH3AeoB/wH6Ae8B2gH/AfcB7AHYAf8B9QHqAdYB/wHzAe0B4wH/AeEB0QG8
|
||||
Af8BwgGeAYEB/wGmAYgBfQH/AawBmQGBAf8B0gHIAbcB/wHuAeQB0wH/AfkB7wHcAf8B+QHuAdcB/wH7
|
||||
AfQB5QH/Af0B+QHwAf8DTwH/A08B/wNPAf8B/QH4AfAB/wH7AfIB4gH/AfYB6AHNAf8B8wHlAcsB/wHx
|
||||
AeQByQH/Ae0B4AHGAf8BxQGxAY8B/wGmAYgBfQH/A6cB/wPeAf8D+QH/A/MB/wP7Af8DTwH/A08B/wP5
|
||||
Af8D9AH/A+0B/wP0Af8D+QH/A08B/wNPAf8D+AH/A+YB/wPrAf8D1AH/A6cB/wPHAf8DuwH/A/0B/wP1
|
||||
Af8D9AH/A/IB/wPxAf8D9QH/A/oB/wNPAf8D+gH/A/UB/wPuAf8D7AH/A+oB/wPnAf8D8wH/A7YB/wPH
|
||||
Af8B1gHBAaYB/wHRAbMBigH/Af4B/QH6Af8B/QH3AesB/wH9AfYB6gH/Af0B9QHnAf8B/AH0AeQB/wH9
|
||||
AfgB7gH/Af4B+wH1Af8DTwH/Af4B+wH1Af8B/QH3AewB/wH8AfIB3wH/AfoB8AHdAf8B+AHuAdwB/wH1
|
||||
AesB2QH/AfYB9AHvAf8BzQGvAYUB/wHWAcEBpgH/AcYBtQGfAf8BnQGBAXcB/wHIAb8BsAH/AeQB3AHN
|
||||
Af8B9wHvAd8B/wH7AfIB4AH/AfoB8AHbAf8B+wH1AegB/wH9AfoB8wH/A08B/wH9AfkB8gH/AfsB9AHm
|
||||
Af8B+QHtAdUB/wH3AesB0wH/AfUB6QHSAf8B8gHmAc8B/wHrAeAByQH/AaYBiAF7Af8BxgG1AZ8B/wPH
|
||||
Af8DuwH/A/0B/wP1Af8D+QH/A/sB/wP7Af8D9QH/A+8B/wPuAf8D7gH/A/UB/wP6Af8D+QH/A/IB/wPn
|
||||
Af8D8wH/A7YB/wPHAf8EAAORAf8D8QH/A/oB/wP1Af8D9AH/A/MB/wPyAf8D9wH/A/sB/wP2Af8D8AH/
|
||||
A+8B/wPuAf8D6wH/A/AB/wPpAf8DkQH/CAABtQGFAWEB/wH2AfAB5wH/Af4B+wH1Af8B/QH4Ae0B/wH9
|
||||
AfcB7AH/Af0B9gHpAf8B/QH1AecB/wH9AfkB8AH/Af4B/AH3Af8B/QH5Ae8B/wH8AfQB5AH/AfwB8wHj
|
||||
Af8B+wHyAeEB/wH4Ae8B3gH/AfcB8gHpAf8B8AHpAd4B/wG0AYUBYAH/CAABjQGBAU0B/wG6Aa4BnQH/
|
||||
AdUBzQHAAf8B7AHlAdgB/wH5AfIB5AH/AfsB8wHjAf8B+wHyAeEB/wH9AfcB7AH/Af0B+wH0Af8B/AH2
|
||||
AesB/wH6AfAB3AH/AfoB7wHbAf8B+QHuAdkB/wH2AesB1wH/AfAB5QHRAf8B0gHDAaoB/wGNAYEBTQH/
|
||||
CAADkQH/A/EB/wP6Af8D9QH/A/QB/wPzAf8D8gH/A/EB/wPxAf8D8AH/A/AB/wPvAf8D7gH/A+sB/wPw
|
||||
Af8D6QH/A5EB/wgAA8AB/wOzAf8D/QH/A/gB/wP2Af8D9QH/A/QB/wPzAf8D8wH/A/IB/wPyAf8D8QH/
|
||||
A+8B/wPwAf8D9wH/A68B/wPAAf8IAAHRAbkBmQH/AcsBqgGBAf8B/gH9AfsB/wH+AfoB8wH/Af4B+AHv
|
||||
Af8B/gH4Ae4B/wH+AfcB7AH/Af0B9gHrAf8B/QH2AeoB/wH9AfYB6QH/Af0B9QHoAf8B/QH1AeYB/wH8
|
||||
AfMB5AH/AfoB8wHnAf8B+gH4AfQB/wHIAaYBgQH/AdEBuQGZAf8IAAG/AasBkQH/AZwBgQFyAf8BxgG/
|
||||
AbIB/wHZAdMBxwH/Ae0B5wHbAf8B+AHyAeYB/wH7AfUB6AH/AfwB9QHnAf8B/AH0AeYB/wH8AfQB5AH/
|
||||
AfsB8wHjAf8B+wHzAeEB/wH5AfAB3gH/AfIB6QHWAf8B3QHUAcAB/wGaAYEBbAH/Ab8BqwGRAf8IAAPA
|
||||
Af8DswH/A/0B/wP4Af8D9gH/A/UB/wP0Af8D8wH/A/MB/wPyAf8D8gH/A/EB/wPvAf8D8AH/A/cB/wOv
|
||||
Af8DwAH/DAADtQH/A8EB/wP9Af8D+gH/A/YB/wP2Af8D9QH/A/QB/wP0Af8D8wH/A/IB/wP3Af8D+QH/
|
||||
A8AB/wO1Af8QAAHLAa4BhgH/AdUBugGWAf8B/gH9AfwB/wH+AfwB+AH/Af4B+QHxAf8B/gH4AfAB/wH+
|
||||
AfgB7wH/Af0B9wHuAf8B/QH3AewB/wH9AfYB6wH/Af0B9gHqAf8B/gH6AfMB/wH8AfoB9wH/AdUBugGW
|
||||
Af8BywGuAYYB/xAAAbUBnQGBAf8BowGKAYEB/wHGAcABswH/AdUBzwHDAf8B5QHgAdQB/wHwAeoB3wH/
|
||||
AfYB8AHlAf8B+gH0AecB/wH7AfQB5wH/AfkB8gHkAf8B9AHrAdwB/wHpAeABzwH/AdMBygG4Af8BnwGE
|
||||
AXsB/wG1AZ0BgQH/EAADtQH/A8EB/wP9Af8D+gH/A/YB/wP2Af8D9QH/A/QB/wP0Af8D8wH/A/IB/wP3
|
||||
Af8D+QH/A8AB/wO1Af8UAAO1Af8DsAH/A/IB/wP9Af8D+wH/A/gB/wP2Af8D9wH/A/kB/wP8Af8D8QH/
|
||||
A68B/wO1Af8YAAHLAa4BhgH/AckBpwGBAf8B9wHyAeoB/wL+AfwB/wH+AfwB+AH/Af4B+gHzAf8B/gH4
|
||||
AfAB/wH9AfoB8gH/Af4B+wH2Af8B/gH9AfoB/wH3AfEB6AH/AckBpwGBAf8BywGuAYYB/xgAAbUBnQGB
|
||||
Af8BmwGBAXAB/wG8AbIBogH/AckBwgG3Af8B0wHNAcIB/wHcAdYBywH/AeIB2wHQAf8B4wHcAdAB/wHd
|
||||
AdUByAH/AdAByAG5Af8BtwGqAZUB/wGTAYEBZAH/AbUBnQGBAf8YAAO1Af8DsAH/A/IB/wP9Af8D+wH/
|
||||
A/gB/wP2Af8D9wH/A/kB/wP8Af8D8QH/A68B/wO1Af8cAAO+Af8DkQH/A7wB/wPdAf8D8AH/A/0B/wPw
|
||||
Af8D3QH/A7sB/wORAf8DvgH/IAAB0AG4AZcB/wG1AYUBYQH/AdIBtQGNAf8B6AHaAcYB/wH1Ae8B5QH/
|
||||
Av4B+wH/AfUB7gHlAf8B6AHZAcUB/wHSAbQBjQH/AbUBhQFhAf8B0AG4AZcB/yAAAb4BqQGPAf8BjQGB
|
||||
AU4B/wGeAYMBewH/Aa0BnAGEAf8BtgGqAZgB/wG7AbMBpQH/AbMBpgGSAf8BpgGUAYEB/wGWAYEBcAH/
|
||||
AYwBgAFMAf8BvgGpAY8B/yAAA74B/wORAf8DvAH/A90B/wPwAf8D/QH/A/AB/wPdAf8DuwH/A5EB/wO+
|
||||
Af8oAAPFAf8DqAH/A5gB/wOMAf8DmAH/A6gB/wPFAf8wAAHVAcABowH/AcMBnwGBAf8BuAGMAW0B/wGx
|
||||
AYEBWAH/AbgBjAFtAf8BwwGfAYEB/wHVAcABowH/MAABxQG0AZ0B/wGoAYoBgAH/AZcBgQFfAf8BiwF+
|
||||
AUgB/wGXAYEBXwH/AagBigGAAf8BxQG0AZ0B/zAAA8UB/wOoAf8DmAH/A4wB/wOYAf8DqAH/A8UB/xgA
|
||||
AUIBTQE+BwABPgMAASgDAAFMAwABJgMAAQEBAAEBBQAByAEBFgAD/wEAAfwBBwH/AYAD/wGABAAB8AEB
|
||||
Af4BAAE/Av8BgAQAAeABAAH8AQABHwL/AYAEAAHAAQABeAEAAQ8C/wGABAABgAEAATABAAEHAfwBfwGA
|
||||
BAABgAEAATABAAEHAfgBPwGACAABAwH8AR8BgAgAAQMB/gEPAYAIAAEDAcABBwGACAABAwGAAQMBgAgA
|
||||
AQMBgAEDAYAIAAEDAcABBwGACAABAwH+AQ8BgAQAAYABAAEwAQABBwH8AR8BgAQAAYABAAEwAQABBwH4
|
||||
AT8BgAQAAcABAAF4AQABDwH8AX8BgAQAAeABAAH8AQABHwL/AYAEAAHwAQEB/gEAAT8C/wGABAAB/AEH
|
||||
Af8BgAP/AYAEAAH8AQcB/wGAAf8B8AEfAf4BAwHwAgAB8AEBAf4BAAE/AcABBwH4AQAB8AIAAeABAAH8
|
||||
AQABHwGAAQMB8AEAAXACAAHAAQABeAEAAQ8BAAEBAeABAAEwAgABgAEAATABAAEGAgABwAEAARACAAGA
|
||||
AQABMAEAAQYCAAHAAQABEFYAAYABAAEwAQABBgIAAcABAAEQAgABgAEAATABAAEGAgABwAEAARACAAHA
|
||||
AQABeAEAAQ8BAAEBAeABAAEwAgAB4AEAAfwBAAEfAYABAwHwAQABcAIAAfABAQH+AQABPwHAAQcB+AEA
|
||||
AfACAAH8AQcB/wGAAf8B8AEfAf4BAwHwAgAL
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
BIN
mRemoteV1/UI/TaskDialog/green_arrow1.png
Normal file
BIN
mRemoteV1/UI/TaskDialog/green_arrow1.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 511 B |
BIN
mRemoteV1/UI/TaskDialog/green_arrow2.png
Normal file
BIN
mRemoteV1/UI/TaskDialog/green_arrow2.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 501 B |
File diff suppressed because it is too large
Load Diff
@@ -89,6 +89,7 @@
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<DefineConstants>DEBUG;PORTABLE</DefineConstants>
|
||||
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="mscorlib" />
|
||||
@@ -125,10 +126,6 @@
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>References\Org.Mentalis.Security.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="PSTaskDialog, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>References\PSTaskDialog.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Skybound.Gecko, Version=1.8.1.4, Culture=neutral, PublicKeyToken=3209ac31600d1857, processorArchitecture=x86">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>References\Skybound.Gecko.dll</HintPath>
|
||||
@@ -413,6 +410,19 @@
|
||||
<Compile Include="UI\Forms\SplashPage.Designer.cs">
|
||||
<DependentUpon>SplashPage.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="UI\TaskDialog\CommandButton.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="UI\TaskDialog\CommandButton.designer.cs">
|
||||
<DependentUpon>CommandButton.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="UI\TaskDialog\cTaskDialog.cs" />
|
||||
<Compile Include="UI\TaskDialog\frmTaskDialog.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="UI\TaskDialog\frmTaskDialog.designer.cs">
|
||||
<DependentUpon>frmTaskDialog.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="UI\Window\AboutWindow.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
@@ -594,6 +604,9 @@
|
||||
<EmbeddedResource Include="UI\Forms\SplashPage.resx">
|
||||
<DependentUpon>SplashPage.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="UI\TaskDialog\frmTaskDialog.resx">
|
||||
<DependentUpon>frmTaskDialog.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="UI\Window\AboutWindow.resx">
|
||||
<DependentUpon>AboutWindow.cs</DependentUpon>
|
||||
<SubType>Designer</SubType>
|
||||
@@ -837,6 +850,8 @@
|
||||
<Content Include="Resources\Images_FamFamFam\database.png" />
|
||||
<Content Include="Resources\Images_FamFamFam\Link.png" />
|
||||
<Content Include="Resources\Images_FamFamFam\page_copy.png" />
|
||||
<Content Include="UI\TaskDialog\green_arrow1.png" />
|
||||
<Content Include="UI\TaskDialog\green_arrow2.png" />
|
||||
<None Include="Resources\Images\puttycm.png" />
|
||||
<None Include="Resources\Images_FamFamFam\monitor_go.png" />
|
||||
<None Include="Resources\Images_FamFamFam\monitor_delete.png" />
|
||||
|
||||
Reference in New Issue
Block a user